CL

192. CLPでもLOOP演算

CLPでも今ではLOOP演算もできるようになっている。
 
 

(1) DOFOR によるカウント・アップLOOP

カウント・アップによる一般的なLOOPである。

[ TESTLOOP ]

ソースはこちらから

0001.00              PGM                                                         
0002.00              DCL        VAR(&N) TYPE(*INT) LEN(4)                        
0003.00              DCL        VAR(&COUNT) TYPE(*DEC) LEN(4 0) VALUE(0)         
0004.00              DCL        VAR(&FLD4) TYPE(*CHAR) LEN(4)                    
0005.00                                                                          
0006.00              DOFOR      VAR(&N) FROM(1) TO(4)                            
0007.00              CHGVAR     VAR(&COUNT) VALUE(&COUNT + 1)                    
0008.00              ENDDO                                                       
0009.00              CHGVAR     VAR(&FLD4) VALUE(&COUNT)                         
0010.00              SNDPGMMSG  MSG('COUNT=' *CAT &FLD4) MSGTYPE(*DIAG)          
0011.00              ENDPGM     


                                                     

[実行結果]

COUNT=4

(2) DOWHILE によるLOOP

~の条件が整っているあいだはというLOOPである。

[ TESTWHL ]

ソースはこちらから

0001.00              PGM                                                 
0002.00              DCL        VAR(&N) TYPE(*INT) LEN(4)                
0003.00              DCL        VAR(&COUNT) TYPE(*DEC) LEN(4 0) VALUE(0) 
0004.00              DCL        VAR(&FLD4) TYPE(*CHAR) LEN(4)            
0005.00                                                                  
0006.00              DOWHILE    COND(&COUNT < 4)                         
0007.00              CHGVAR     VAR(&COUNT) VALUE(&COUNT + 1)            
0008.00              ENDDO                                               
0009.00              CHGVAR     VAR(&FLD4) VALUE(&COUNT)                 
0010.00              SNDPGMMSG  MSG('COUNT=' *CAT &FLD4) MSGTYPE(*DIAG)  
0011.00              ENDPGM     


                                             

[実行結果]

COUNT=4

(3) DOUNTIL によるLOOP

~の条件になるまではというLOOPである。

[ TESTLOOP ]

ソースはこちらから

0001.00              PGM                                                   
0002.00              DCL        VAR(&N) TYPE(*INT) LEN(4)                  
0003.00              DCL        VAR(&COUNT) TYPE(*DEC) LEN(4 0) VALUE(0)   
0004.00              DCL        VAR(&FLD4) TYPE(*CHAR) LEN(4)              
0005.00                                                                    
0006.00              DOUNTIL    COND(&COUNT = 4)                           
0007.00              CHGVAR     VAR(&COUNT) VALUE(&COUNT + 1)              
0008.00              ENDDO                                                 
0009.00              CHGVAR     VAR(&FLD4) VALUE(&COUNT)                   
0010.00              SNDPGMMSG  MSG('COUNT=' *CAT &FLD4) MSGTYPE(*DIAG)    
0011.00              ENDPGM    


                                                

[実行結果]

COUNT=4

ここでCLPでLOOPする方法をいくつか紹介してきたがLOOPに関連する使途コマンドはどうなのだろうか?
LEAVEコマンド—>使用可能。LOOPを終了してLOOP構造の外側に抜ける。
ITERコマンド—->使えない。LOOPを継続する。
 
 
… このように今ではCLPでもLOOP演算ができるようになっているので大いに利用して頂きたい。
CLPの進化は目覚ましくてほとんどRPGやCOBOLと変わらない。
データ・ベースの読取りや更新までできるようになっている。
RPGやCOBOLがわからなくてもCLPでほとんどのことはできてしまう。
  一体、CLPはどこまでできるのか次回はそれをさぐってみよう。