モジュール 3 · レッスン 2 / 2コース内の 6/10~15 min
モジュールのレッスン (2/2)
ループと反復
COBOL のループと反復構造は、for や while などのキーワードによって定義されず、同じ PERFORM ステートメントの構文上のバリエーションを使用します。
固定数値ループ (実行時間)
段落の実行を固定回数繰り返す必要がある場合は、TIMES 修飾子を PERFORM コマンドに追加できます。
COBOL
PERFORM PROCESS-LINE 10 TIMES.この場合、コンパイラーは PROCESS-LINE 段落を正確に 10 回実行し、その後コードの線形実行を再開します。
条件付きループ (PERFORM UNTIL)
特定の条件が true になるまで反復するには (while ループを逆にしたものと同等)、PERFORM ... UNTIL ステートメントを使用します。
COBOL
PERFORM INCR-COUNTER UNTIL WS-COUNTER > 5.COBOL
PROCEDURE DIVISION.
MAIN-PROCEDURE.
PERFORM PROCESS-ITEM UNTIL WS-COUNTER > 3.
STOP RUN.
PROCESS-ITEM.
DISPLAY "Counter: " WS-COUNTER.
ADD 1 TO WS-COUNTER.
---
## Try it yourself
<CobolExercise
id="cobol.m3.l2.e1"
prompt="Write a statement inside MAIN-PROCEDURE to execute the PROCESS-ITEM paragraph exactly 10 times."
starter={` PROCEDURE DIVISION.\n MAIN-PROCEDURE.\n * WRITE CODE HERE\n STOP RUN.\n`}
solution={` PROCEDURE DIVISION.\n MAIN-PROCEDURE.\n PERFORM PROCESS-ITEM 10 TIMES.\n STOP RUN.\n`}
rules={{
requiredKeywords: ['PERFORM PROCESS-ITEM', '10', 'TIMES.', 'STOP RUN.'],
}}
hint="Use the syntax: PERFORM PROCESS-ITEM 10 TIMES."
/>
<CobolExercise
id="cobol.m3.l2.e2"
prompt="Repeatedly execute the PROCESS-STEP paragraph until the WS-COUNTER variable becomes greater than 5."
starter={` PROCEDURE DIVISION.\n MAIN-PROCEDURE.\n * WRITE CODE HERE\n STOP RUN.\n`}
solution={` PROCEDURE DIVISION.\n MAIN-PROCEDURE.\n PERFORM PROCESS-STEP UNTIL WS-COUNTER > 5.\n STOP RUN.\n`}
rules={{
requiredKeywords: ['PERFORM PROCESS-STEP', 'UNTIL', 'WS-COUNTER', '>', '5', 'STOP RUN.'],
}}
hint="Use the syntax: PERFORM PROCESS-STEP UNTIL WS-COUNTER > 5."
/>