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 *

関連記事

WordPressで作ったブログにアイコンをつける

私のブログのアイコンはこの方法でつけました。 アイコンを付けたい箇所は3ヶ所。 ブラウザのタイトル左の小さいアイコン YouTubeのチャンネルページに貼るリンク左のアイコン iPhoneお気に入りの …

AS400/IBMi 文字列の並び順AAA~999まで

ITの世界では同じだと思いますが、3桁の文字列はどういう並び順になるのか調べました。   物理ファイルに3桁のカラムを1つ用意してテスト文字列を登録する。 登場人物は、 000 999 ZZ …

AS400/IBMi 無料でWeb化 GUI化 オープン化 Linuxサーバ構築編 2/3

1/3でグダグダと説明してまいりましたが、構築作業の事前準備として2/3を設けました。   さっそく初めて行きます。   準備するもの Linux用Access_Client_So …

AS400/IBMi ファイルの簡単編集 UPDDTA

STRDFUなど使って事細かく設定DFUファイルを作らなくても、深く考えずに編集するだけなら UPDDTA ライブラリ名/ファイル名 を使えば、すぐ編集画面に飛ぶ。編集方法はDFUと同じ。

ドットインストールのLaravelレッスン環境構築

ドットインストールでLaravelを勉強しようと思ったら開発環境の構築がよくわからない。 VagrantやLaravelのバージョンの違いのせいか、その通りにやっても動かない。 問い合わせをしようも絶 …

Adsense広告




文字で検索

人気記事

なぜだか人気記事

読んでほしい順に