CL

63. OS Ver6.1 CLP で試すソースのインクルード

CLP でも RPG の /COPY を使えたら、と思ったことはないだろうか ?
OS Ver6.1 からは INCLUDE コマンドというソースをインクルードするためのコマンドが IBM によって提供されている。
使用方法はカンタンであり、頻繁に使用する CLP のソース・ステートメントをメンバーとして登録して、
これらを INCLUDE コマンドによって参照するようにすれば作成するソースは大幅に短くてシンプルな
見やすいものとなる。
ここではその使用方法の例をサンプルとして紹介する。

【 参照する CPY_ERR メンバー 】
----------------------------------------------------------------------------------
0001.00              DCL        VAR(&MSG) TYPE(*CHAR) LEN(132)            
0002.00              DCL        VAR(&MSGID) TYPE(*CHAR) LEN(7)            
0003.00              DCL        VAR(&MSGF) TYPE(*CHAR) LEN(10)            
0004.00              DCL        VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)         
0005.00              DCL        VAR(&MSGDTA) TYPE(*CHAR) LEN(512)         
0006.00              DCL        VAR(&TYPE) TYPE(*CHAR) LEN(1)             
0007.00              MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))   
0008.00                                                                   
0009.00              RTVJOBA    TYPE(&TYPE)                               
----------------------------------------------------------------------------------
【 参照する CPY_ERR2 メンバー 】
----------------------------------------------------------------------------------
0001.00  ERROR:      RCVMSG     MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) +                 
0002.00                           MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) +       
0003.00                           MSGFLIB(&MSGFLIB)                                 
0004.00  SNDMSG:                                                                    
0005.00              IF         COND(&TYPE *EQ '0') THEN(DO)                        
0006.00              SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +                
0007.00                           MSGDTA(&MSGDTA) TOMSGQ(*SYSOPR) +                 
0008.00                           MSGTYPE(*ESCAPE)                                  
0009.00              MONMSG     CPF0000                                             
0010.00              ENDDO                                                          
0011.00              ELSE       CMD(DO)                                             
0012.00              SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +                
0013.00                           MSGDTA(&MSGDTA) TOMSGQ(*TOPGMQ) +                 
0014.00                           MSGTYPE(*ESCAPE)                                  
0015.00              MONMSG     CPF0000                                             
0016.00              ENDDO                                                          
----------------------------------------------------------------------------------
【 CPY_ERR と CPY_ERR2 を参照するサンプル CLP : TEST_ERR 】
-----------------------------------------------------------------------------------------
0001.00              PGM                                     
0002.00              INCLUDE    SRCMBR(CPY_ERR)              
0003.00                                                      
0004.00              CHKOBJ     OBJ(AAA) OBJTYPE(*FILE)      
0005.00              RETURN                                  
0006.00                                                      
0007.00              INCLUDE    SRCMBR(CPY_ERR2)             
0008.00              ENDPGM                                  
-----------------------------------------------------------------------------------------
【 解説 】

コンパイルはいつもと同じ CRTCLPGM でよい。
ただしソース・ライブラリーもライブラリー・リストに存在している必要がある。
また INCLUDE コマンドは明示的にライブラリーやインクルードするソース・ファイルを指定することもできる。

INCLUDE コマンド