RPG Ⅲ, ILE-RPG を問わず READC ( =Read Change ) は RPG の非常に
便利な命令である。
何をする命令かと言うと 入力や変更のあった SFL レコードだけを選んで読取る
命令である。
時々 READC は知らなかった、いつできたのですか?と問われることがあるが
RPG Ⅲ の当初から存在している。
リリースの途中で追加されたのではない。
COBOL では READ-SUBFILE-NEXT-MODIFIED が READC に相当する。
READC をご存知ない開発者が結構多いのでここに紹介することにした。
さて READC を使うと変更のあった SFL レコードだけを読取ることができるので
SFL レコードの入力画面で
-
READC で読取った SFL レコードだけを処理の対象とすれば
パフォーマンスに優れた処理プログラムとすることができる。
入力や変更のなかったレコードを読み取る必要はない。 -
READC によって読取られた SFL レコードが何もなかった場合は
エンド・ユーザーが何もせずにただ実行キーを押しただけであると
判定することができる。 -
エラーのあった SFL レコードは次回の READC による読取りで
必ず読取るように指示することができる。
これによってエラー・レコードが補正されずに処理されてしまうことを
防ぐことができる。( SFLNXTCHG )
このような処理をできる利点がある。
もし READC を使わなければ、
-
出力前の SFL レコードを配列に保管しておいて SFL レコードを
読取ったら出力前の保管済みの SFL レコードといちいち比較して
変更を検知しなければならない。 -
従って配列数の数以上のレコードの SFL レコードを出力することが
できない。 -
エラーのあった SFL レコードは次回には必ず再読取りするような
ロジックを自分で組み立てる必要がある。
READC を知らない開発者は、このような複雑な処理をしているはずである。
おおよそ不便を感じたら何か良い方法は用意されていないかと
疑ってみる必要がある。
IBM i にはかなりの便利な命令が用意されているので
面倒な処理を行うことがテクニックであると思わないほうがよい。
それでは次回は READC の使い方について説明する。