Ana içeriğe geç
Modül 3 · Ders 2 ders 2Kurstaki 6/10~15 min
Modül dersleri (2/2)

Döngüler ve Yinelemeler

COBOL'deki döngüler ve yinelemeli yapılar, for veya while gibi anahtar sözcüklerle tanımlanmaz; bunun yerine aynı PERFORM ifadesinin sözdizimsel varyasyonlarını kullanır.

Sabit Sayısal Döngüler (PERFORM TIMES)

Bir paragrafın yürütülmesini sabit sayıda tekrarlamamız gerekirse, TIMES değiştiricisini PERFORM komutuna ekleyebiliriz.

COBOL
PERFORM PROCESS-LINE 10 TIMES.

Bu durumda derleyici PROCESS-LINE paragrafını tam olarak 10 kez çalıştıracak, ardından kodun doğrusal yürütülmesine devam edecektir.

Koşullu Döngüler (KADAR YAPILACAK)

Belirli bir koşul doğru olana kadar yinelemek için (tersine çevrilmiş bir while döngüsüne eşdeğer), PERFORM ... UNTIL ifadesini kullanırız.

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."
/>