מודול 3 · שיעור 2 מתוך 26/10 בקורס~15 min
שיעורי מודול (2/2)
לולאות ואיטרציות
לולאות ומבנים איטרטיביים ב-COBOL אינם מוגדרים על ידי מילות מפתח כמו for או while, אלא משתמשים בגרסאות תחביריות של אותה משפט PERFORM.
לולאות מספריות קבועות (ביצוע פעמים)
אם נצטרך לחזור על ביצוע פסקה מספר קבוע של פעמים, נוכל להוסיף את המשנה TIMES לפקודה PERFORM.
COBOL
PERFORM PROCESS-LINE 10 TIMES.במקרה זה, המהדר יבצע את הפסקה PROCESS-LINE בדיוק 10 פעמים, ולאחר מכן יחדש את הביצוע הליניארי של הקוד.
לולאות מותנות (ביצוע עד)
כדי לחזור על עד שתנאי מסוים הופך להיות אמיתי (שווה ערך ללולאה הפוכה 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."
/>