繰り返し処理を行いたい場合は、PERFORM文を使用します。
下記はPERFORM UNTILにより繰り返しを行うサンプルソースです。
000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. SAMPLE-09. 000030* 000040 ENVIRONMENT DIVISION. 000050* 000060 DATA DIVISION. 000070 WORKING-STORAGE SECTION. 000080 77 WRK-COUNTER PIC 9(3). 000090* 000100 PROCEDURE DIVISION. 000110 MAIN. 000120 MOVE 1 TO WRK-COUNTER. 000130 PERFORM UNTIL WRK-COUNTER > 10 000140 DISPLAY "WRK-COUNTERは " WRK-COUNTER UPON CONSOLE 000150 ADD 1 TO WRK-COUNTER 000160 END-PERFORM. 000170 STOP RUN.
UNTILに指定した「WRK-COUNTERが10より大きくなるまで」という条件が成立するまで、END-PERFORMまでの範囲に記述した命令文が繰り返し実行されます。
- PERFORM UNTIL 書式
- PERFORM [WITH TEST 判定のタイミング] UNTIL 論理式
:
命令文1
命令文2
:
END-PERFORM.
※EXIT PERFORM文を実行すると、そのタイミングで繰り返し処理から抜ける。
※PERFORMからEND-PERFORMまでの間に記述する命令文にはピリオド不要。
判定のタイミング
※WITH TESTを省略した場合、BEFOREが指定されたものとみなされる。BEFORE PERFORMを実行する前に論理式の条件を判定する(前判定型)
C言語でのwhile文に相当AFTER PERFORMを実行した後に論理式の条件を判定する(後判定型)
C言語でのdo-while文に相当
PERFORM文では、上記サンプルのようにUNTILで指定した条件になるまで繰り返す方法以外に、カウンタを用いた方法もあります。