RPG

447. 標識を使わない READ命令

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