RPG

446. 標識を使わないCHAIN命令

ILE-RPGでは標識を使わない記述をすることができる。
まず最初に標識を使わないCHAIN命令の使用方法を紹介する。

■ 標識を使うCHAIN命令

CHAIN命令で 54桁目に標識を定義しておくと
CHAIN できなかったときはこの標識がオンになるので
CHAIN の失敗としての演算を記述する。

■ 標識は使わない CHAIN命令

%FOUND という組込み関数が用意されていて
CHAIN 命令が成功したときはオンにセットされる。

またフリー・フォーマットの場合も標識は定義しないで
%FOUND を使ってCHAIN命令の結果を記述する。

■ 標識を使わないCHAINのTESTCHN

ソースはこちらから

0001.00 H DFTNAME(TESTCHN) DATEDIT(*YMD/) BNDDIR('QC2LE')                                      
0002.00 F**********  商品マスターの読取り **************************************               
0003.00 FSHOHIN    IF   E           K DISK                                                     
0004.00 F**********************************************************************                
0005.00                                                                                        
0006.00  * CRTBNDRPG PGM(OBJLIB/TESTCHN) 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) 標識を使った CHAIN 命令                                                          
0011.00 C                   SETOFF                                       99                    
0012.00 C     SHCODE        CHAIN     SHOHIN                             99                    
0013.00 C   99'NOT CHAIN'   DSPLY                   ANS               1                        
0014.00 C  N99'CHAIN SUCCES'DSPLY                   ANS                                        
0015.00                                                                                        
0016.00  *(2) 標識を使わない CHAIN 命令                                                        
0017.00 C     SHCODE        CHAIN     SHOHIN                                                   
0018.00 C                   IF        NOT %FOUND                                   NOT CHAIN   
0019.00 C     'NOT CHAIN'   DSPLY                   ANS                                        
0020.00 C                   ELSE                                                   SUCCECS     
0021.00 C     'CHAIN SUCCES'DSPLY                   ANS                                        
0022.00 C                   ENDIF                                                  SUCCESS     
0023.00  /FREE                                                                                 
0024.00        CHAIN SHCODE SHOHIN;                                         
0025.00        IF NOT %FOUND;                                               
0026.00          DSPLY 'NOT CHAIN' '' ANS;                                  
0027.00        ELSE;                                                        
0028.00          DSPLY 'CHAIN SUCCESS' '' ANS;                              
0029.00        ENDIF;                                                       
0030.00  /END-FREE                                                          
0031.00 C                   SETON                                        LR 
0032.00 C                   RETURN                                          
0033.00   


                                                                  

[解説]

CHAIN命令をフリー・フォーマットで書くと従来の固定式の技術より
大幅に変更されてしまうのでまだ小職は違和感がある。
CHAIN命令はフリー・フォーマットではなく
固定式記述でつかも標識を使って記述していることが多い。