次に ILE-RPGで標識を使わない READ命令の使用方法を紹介する。
■ 標識を使う READ 命令
READ命令で58桁目に標識を定義しておくと
READ命令が失敗した、すなわちレコードを読取りことができなかった
= ファイルの終わり(= END OF FILE) のときには定義した標識がオンになる。
■ 標識を使わない READ 命令
%EOFという組込み関数を使うとREAD命令が失敗したときは %EOFが真になることで
EOFであることを判断することができるようになる。
フリー・フォーマットの場合、標識は使えないので %EOFを使って記述する。
■ 標識を使わないREAD TESTRED
ソースはこちらから
0001.00 H DFTNAME(TESTRED) DATEDIT(*YMD/) BNDDIR('QC2LE') 0002.00 F********** 標識を使わない READ 命令 ********************************* 0003.00 FSHOHIN IF E K DISK 0004.00 F********************************************************************** 0005.00 0006.00 * CRTBNDRPG PGM(OBJLIB/TESTRED) SRCFILE(SRCLIB/QRPGLESRC) DFTACTGRP(*NO) 0007.00 * ACTGRP(*NEW) DBGVIEW(*SOURCE) AUT(*ALL) 0008.00 0009.00 C MOVEL(P) 'NV-CF1' SHCODE 0010.00 *(1) 標識を使った READ 命令 0011.00 C *LOVAL SETLL SHOHIN 0012.00 C DO *HIVAL DO-*HIVAL 0013.00 C SETOFF 50 0014.00 C READ SHOHIN 50 0015.00 C 50 LEAVE 0016.00 C ENDDO DO-*HIVAL 0017.00 0018.00 *(2) 標識を使わない READ 命令 0019.00 C *LOVAL SETLL SHOHIN 0020.00 C DO *HIVAL DO-*HIVAL 0021.00 C READ SHOHIN 0022.00 C IF %EOF(SHOHIN) EOF 0023.00 C LEAVE 0024.00 C ENDIF EOF 0025.00 C ENDDO DO-*HIVAL 0026.00 /FREE 0027.00 SETLL *LOVAL SHOHIN; 0028.00 DOW *INLR = *OFF; 0029.00 READ SHOHIN; 0030.00 IF %EOF; 0031.00 LEAVE; 0032.00 ENDIF; 0033.00 ENDDO; 0034.00 /END-FREE 0035.00 C SETON LR 0036.00 C RETURN 0037.00
[解説]
%EOF は %EOF として記述することもできるし %EOF(ファイル名)として
ファイル名を指定して記述することもできる。