COBOL - Döngü İfadeleri

Bir dosyanın her kaydını sonuna kadar okumak gibi tekrar tekrar yapılması gereken bazı görevler vardır. COBOL'de kullanılan döngü ifadeleri şunlardır:

  • Thru Gerçekleştir
  • Kadar Gerçekleştir
  • Gerçek Zamanlar
  • Değişken Yap

Thru Gerçekleştir

Perform Thru, dizideki ilk ve son paragraf adlarını vererek bir dizi paragrafı yürütmek için kullanılır. Son paragrafı yürüttükten sonra kontrol geri döndürülür.

Hat İçi Gerçekleştirme

PERFORM içindeki ifadeler, SON PERFORM'a ulaşılıncaya kadar yürütülecektir.

Sözdizimi

Satır içi performans sözdizimi aşağıdadır -

PERFORM 
   DISPLAY 'HELLO WORLD'
END-PERFORM.

Hat dışı Performans

Burada, bir paragrafta bir ifade çalıştırılır ve ardından kontrol başka bir paragrafa veya bölüme aktarılır.

Sözdizimi

Hat dışı performans sözdizimi aşağıdadır -

PERFORM PARAGRAPH1 THRU PARAGRAPH2

Example

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

PROCEDURE DIVISION.
   A-PARA.
   PERFORM DISPLAY 'IN A-PARA'
   END-PERFORM.
   PERFORM C-PARA THRU E-PARA.
   
   B-PARA.
   DISPLAY 'IN B-PARA'.
   STOP RUN.
   
   C-PARA.
   DISPLAY 'IN C-PARA'.
   
   D-PARA.
   DISPLAY 'IN D-PARA'.
   
   E-PARA.
   DISPLAY 'IN E-PARA'.

JCL Yukarıdaki COBOL programını yürütmek için.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO

Yukarıdaki programı derleyip çalıştırdığınızda, aşağıdaki sonucu verir -

IN A-PARA
IN C-PARA
IN D-PARA
IN E-PARA
IN B-PARA

Kadar Gerçekleştir

'Şu tarihe kadar gerçekleştir' seçeneğinde, verilen koşul gerçekleşene kadar bir paragraf yürütülür. 'Önceden test ile' varsayılan koşuldur ve bir paragraftaki ifadelerin yürütülmesinden önce koşulun kontrol edildiğini belirtir.

Sözdizimi

Aşağıdakilere kadar performans sözdizimi -

PERFORM A-PARA UNTIL COUNT=5

PERFORM A-PARA WITH TEST BEFORE UNTIL COUNT=5

PERFORM A-PARA WITH TEST AFTER UNTIL COUNT=5

Example

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-CNT PIC 9(1) VALUE 0. 

PROCEDURE DIVISION.
   A-PARA.
   PERFORM B-PARA WITH TEST AFTER UNTIL WS-CNT>3.
   STOP RUN.
   
   B-PARA.
   DISPLAY 'WS-CNT : 'WS-CNT.
   ADD 1 TO WS-CNT.

JCL yukarıdaki COBOL programını yürütmek için -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO

Yukarıdaki programı derleyip çalıştırdığınızda, aşağıdaki sonucu verir -

WS-CNT : 0
WS-CNT : 1
WS-CNT : 2
WS-CNT : 3

Gerçek Zamanlar

'Gerçekleştirme sürelerinde', bir paragraf belirtilen sayıda çalıştırılacaktır.

Sözdizimi

Aşağıda, gerçekleştirme sürelerinin sözdizimi verilmiştir -

PERFORM A-PARA 5 TIMES.

Example

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

PROCEDURE DIVISION.
   A-PARA.
   PERFORM B-PARA 3 TIMES.
   STOP RUN.
   
   B-PARA.
   DISPLAY 'IN B-PARA'.

JCL yukarıdaki COBOL programını yürütmek için -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO

Yukarıdaki programı derleyip çalıştırdığınızda, aşağıdaki sonucu verir -

IN B-PARA
IN B-PARA
IN B-PARA

Değişken Yap

Değişken gerçekleştirmede, tümcecik gerçekleşene kadar bir paragraf yürütülür.

Sözdizimi

Farklı performans sözdizimi aşağıdadır -

PERFORM A-PARA VARYING A FROM 1 BY 1 UNTIL A = 5.

Example

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-A PIC 9 VALUE 0.

PROCEDURE DIVISION.
   A-PARA.
   PERFORM B-PARA VARYING WS-A FROM 1 BY 1 UNTIL WS-A=5
   STOP RUN.
   
   B-PARA.
   DISPLAY 'IN B-PARA ' WS-A.

JCL yukarıdaki COBOL programını yürütmek için -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO

Yukarıdaki programı derleyip çalıştırdığınızda, aşağıdaki sonucu verir -

IN B-PARA 1
IN B-PARA 2
IN B-PARA 3
IN B-PARA 4

İfadeye Git

GO TO deyimi, bir programdaki yürütme akışını değiştirmek için kullanılır. GO TO ifadelerinde, aktarım yalnızca ileri yönde gider. Bir paragraftan çıkmak için kullanılır. Kullanılan farklı GO TO deyimi türleri aşağıdaki gibidir -

Koşulsuz GİT

GO TO para-name.

Koşullu GİT

GO TO para-1 para-2 para-3 DEPENDING ON x.

'X' 1'e eşitse, kontrol ilk paragrafa aktarılacaktır; ve 'x' 2'ye eşitse, kontrol ikinci paragrafa aktarılır ve böyle devam eder.

Example

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-A PIC 9 VALUE 2.
   
PROCEDURE DIVISION.
   A-PARA.
   DISPLAY 'IN A-PARA'
   GO TO B-PARA.
   
   B-PARA.
   DISPLAY 'IN B-PARA '.
   GO TO C-PARA D-PARA DEPENDING ON WS-A.
   
   C-PARA.
   DISPLAY 'IN C-PARA '.
   
   D-PARA.
   DISPLAY 'IN D-PARA '.
   STOP RUN.

JCL yukarıdaki COBOL programını yürütmek için:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO

Yukarıdaki programı derleyip çalıştırdığınızda, aşağıdaki sonucu verir:

IN A-PARA
IN B-PARA 
IN D-PARA