IT関連

AS400/IBMi DDSのCAとCFの違いを超わかりやすく

投稿日:2019年3月15日 更新日:

本記事は私の備忘録なので間違いがあればご容赦ください。

 

今回は、DDSに指定するCAとCAの違いについてです。

 

結論から言うと、指定したファンクションキーを押した後、画面にある入力値を

  • プログラム側に渡すのがCF
  • プログラム側に渡さないのがCA

です。

ちょっとない言ってるかわからない・・・ですよね。

わかりやすくご説明します。

 

プログラム例

こういうプログラムがあったとします。

F3を打鍵すれば終了、F5を打鍵すれば更新、実行キー打鍵でループを経てEXFMTに戻る。

古来よりIBMiに伝わるよくあるプログラムだと思います。

 

このプログラム、WORKと言う名前の入出力フィールドが1つだけ存在するとして下さい。

 

そこに入力した文字を、F5更新することによって@UPDATサブルーチンの先でデータベースを直すという段取りです。

 

このプログラムに1行だけ追加します。7行目に挿入したWORK変数の内容を表示するDSPLY命令です。

 

プログラムを起動して下記の操作をやってみます。

  1. WORKにAAAと文字を入力する
  2. F5を打鍵する

こうですね。ここでF5キーを打鍵です。

 

DDSのFMT01に指定した*IN05がCF05だった場合、DSPLYにはAAAが表示されます。

WORKという変数の中身が表示されたということです。

これは当たり前ですよね。

 

でも、DDSのFMT01に指定した*IN05がCA05だった場合、DSPLYには何も表示されません。

WORKという変数に何も入っていなかかったということです。

ゆえにその直下にある@UPDATでデータベースに書き込まれることもありません。

 

これがCAとCFの違いです。

入力した値がプログラム側に渡っていないということです。

 

プログラム自体としてはバグになります。

ユーザーはきちんとAAAと打鍵したわけですから、正しく反映されないのはおかしいです。

 

ただし、CAでも正しく反映されるパターンがあります。

 

それが、

  1. WORKにAAAと文字を入力する
  2. 実行キーを打鍵する
  3. F5を打鍵する

の場合です。

 

違いは実行キーの有無ですが、ループを経て辿り着くEXFMTがキモです。

 

プログラムを止めてユーザーにコントロールを渡すことで有名なEXFMTには、実は別の機能があります。

それが画面に入力した文字をプログラム側に渡すという機能です。

 

実は、WORKという入出力フィールドに打ち込んだ文字は、打ち込んだだけでは画面表示されているタダの文字。

絵にかいた餅なのです。

だからプログラムでDSPLY命令をかけて変数の中を見ようとしても「何も来てません(*´Д`)」になるのです。

 

それをEXFMTという命令で読んでいるのです。

EXFMTはREADとWRITEという命令の合わせ技なので、READで読み取っているということです。

 

といっても、実行キーを押さなければ入力した値が生きないのなら結局はバグになります。

ちゃんとCFで指定してあげて下さい。

 

結論

ゆえにファンクションキーを押したあと

  • 終了するならCA
  • 同一プログラム内で入力値を使うならCF

ということでいいと思います。

 

記事は以上になります。

スポンサーリンク




スポンサーリンク




-IT関連
-,

執筆者:


comment

Your email address will not be published. Required fields are marked *

関連記事

MySQLのrootパスワードを変更したらphpMyAdminに入れない

XAMPPとはいえ、MySQLのRootのパスワードは無防備すぎて変更したくなる衝動にかられるが、変更したらphpMyAdminに入れなくなったという話。 phpMyAdminはrootでログインして …

色々ショートカットキーまとめ Win/Mac/ブラウザ/Excel他

ショートカットのまとめです。随時追記していきます。   ちなみに実際に使っている動画はこちらです。Vol.1/5~1/5までございます。 覚え方等も説明しています。   Windo …

Dockerの備忘録・自分メモです

Docker意味わからん。Docker知らないとヤバいとか言うけど、いつの間にそんな話になったの。 自分の備忘録です。間違いがあればお許しを。   Imageを探す – dock …

MacからWindowsにリモートするとVSCodeのカーソルが見えない

VSCodeのバグなのか、背景色をダークにしてコードエリアにカーソルを当てると、背景も黒でアイ型のカーソルも黒なので見えなくなる。   VSCodeの設定を見てもそれらしいものはないので、W …

Mac MacBookPro FaceTime 内蔵カメラのフレームレートfpsは?

公式サイトには記載がありませんが20fpsだそうです。 これはアップルサポートに聞きました。   アップルの担当者はわざわざ動画編集アプリで動画を作って、そのフレームレートを調べてくれたそう …

Adsense広告




文字で検索

人気記事

なぜだか人気記事

読んでほしい順に