Mô-đun 3 · Bài học 2 trong tổng số 26/10 trong khóa học~15 min
Bài học theo mô-đun (2/2)
Vòng lặp và lặp lại
Vòng lặp và cấu trúc lặp trong COBOL không được xác định bằng các từ khóa như for hoặc while mà thay vào đó sử dụng các biến thể cú pháp của cùng một câu lệnh PERFORM.
Đã sửa lỗi vòng lặp số (PERFORM TIMES)
Nếu cần lặp lại việc thực hiện một đoạn văn với số lần cố định, chúng ta có thể thêm công cụ sửa đổi TIMES vào lệnh PERFORM.
COBOL
PERFORM PROCESS-LINE 10 TIMES.Trong trường hợp này, trình biên dịch sẽ thực thi đoạn PROCESS-LINE chính xác 10 lần, sau đó tiếp tục thực thi tuyến tính mã.
Vòng lặp có điều kiện (PERFORM UNTIL)
Để lặp lại cho đến khi một điều kiện nhất định trở thành đúng (tương đương với vòng lặp while đảo ngược), chúng tôi sử dụng câu lệnh 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."
/>