RPG

207. レコードを読まずに終わりを知るには ?

READ 命令によってレコードを読めば、それ以上レコードがない、

つまりファイルの終わりに達したということが判明するが、これを

レコードを読まずに判定できる方法はないものだろうか ?

実は、実際にレコードを読まなくても SETGT によって

キーを位置付けるだけで判定することができるのである。

SETGT (上限のセット) ・・・・・・ キーをセットした後ろにレコードが存在しない場合は

54桁目の標識がオンになり、NOT %FOUND となる。
【例】
C     'NV-CF1    '  SETGT     SHOHIN                             50
C                   IF        NOT %FOUND
C     'NOT FOUND'   DSPLY                   ANS               1
C                   ELSE
C     'FOUND'       DSPLY                   ANS               1
C                   ENDIF

【解説】

商品マスター(SHOHIN) に対して NV-CF1 という商品コードで SETGT でセット

した場合に NV-CF1 の次のレコードが存在しない場合は

標識 50 がオンになり、NOT FOUND と表示される。

レコードを読まずに EOF を知ることができるようにするのは意味がある。

READ 命令でレコードを実際に読んだのでは、レコードが存在したしたときには

読まれたレコードのフィール値が書き換えられたしまうからである。

フィールド値を更新せずら、あらかじめ次のレコードは、もはや存在しない、ということを

知ることができれば Web アプリケーションで HTML に、そのことを非表示(HIDDEN) で

記述したおけば、エンド・ユーザーが「次へ」ボタンを押したときに

JavaScript の alert によって「レコードがありません。」のようなエラー・メッセージを

直ちに出すことができる。