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