CL

42. SUBR を使わないCLPのサプルーチン

V5R4M0 未満の開発環境でも少しの工夫で CLP でのサブ・ルーチンを実現することができる。

以下のそのサンプルを紹介する。

ソースコード
 0001.00              PGM                                                   
 0002.00              DCL        VAR(&N) TYPE(*DEC) LEN(4 0) VALUE(1)       
 0003.00              DCL        VAR(&RTN_POINT) TYPE(*CHAR) LEN(10)        
 0004.00                                                                    
 0005.00              CHGVAR     VAR(&RTN_POINT) VALUE('RTN001')            
 0006.00              GOTO       MYSUBR                                     
 0007.00 RTN001:                                                            
 0008.00              RETURN                                                
 0009.00                                                                    
 0010.00 MYSUBR:                                                            
 0011.00              CHGVAR     VAR(&N) VALUE(&N + 1)                      
 0012.00              IF         COND(&RTN_POINT *EQ 'RTN001') THEN(GOTO +  
 0013.00                           CMDLBL(RTN001))                          
 0014.00              ENDPGM