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はどこまでできるのか次回はそれをさぐってみよう。
