次に 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(ファイル名)として
ファイル名を指定して記述することもできる。
