COBOL - Pernyataan Loop

Ada beberapa tugas yang perlu dilakukan berulang kali seperti membaca setiap catatan file hingga akhirnya. Pernyataan loop yang digunakan dalam COBOL adalah -

  • Lakukan Melalui
  • Lakukan Sampai
  • Lakukan Kali
  • Lakukan Variasi

Lakukan Melalui

Perform Thru digunakan untuk mengeksekusi rangkaian paragraf dengan memberikan nama paragraf pertama dan terakhir secara berurutan. Setelah menjalankan paragraf terakhir, kontrol dikembalikan.

Performa In-line

Pernyataan di dalam PERFORM akan dijalankan hingga END-PERFORM tercapai.

Sintaksis

Berikut adalah sintaks In-line perform -

PERFORM 
   DISPLAY 'HELLO WORLD'
END-PERFORM.

Performa Out-of-line

Di sini, pernyataan dieksekusi dalam satu paragraf dan kemudian kontrol dipindahkan ke paragraf atau bagian lain.

Sintaksis

Berikut ini adalah sintaks dari Out-of-line perform -

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 untuk menjalankan program COBOL di atas.

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

Ketika Anda mengkompilasi dan menjalankan program di atas, ini menghasilkan hasil sebagai berikut -

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

Lakukan Sampai

Dalam 'perform sampai', sebuah paragraf dieksekusi hingga kondisi yang diberikan menjadi true. 'With test before' adalah kondisi default dan ini menunjukkan bahwa kondisi tersebut diperiksa sebelum eksekusi pernyataan dalam paragraf.

Sintaksis

Berikut ini adalah sintaks perform hingga -

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 untuk menjalankan program COBOL di atas -

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

Ketika Anda mengkompilasi dan menjalankan program di atas, ini menghasilkan hasil sebagai berikut -

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

Lakukan Kali

Dalam 'perform times', paragraf akan dieksekusi sesuai jumlah yang ditentukan.

Sintaksis

Berikut ini adalah sintaks waktu kinerja -

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 untuk menjalankan program COBOL di atas -

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

Ketika Anda mengkompilasi dan menjalankan program di atas, ini menghasilkan hasil sebagai berikut -

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

Lakukan Variasi

Dalam melakukan variasi, sebuah paragraf akan dieksekusi hingga kondisi di frase sampai menjadi benar.

Sintaksis

Berikut ini adalah sintaks performa yang bervariasi -

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 untuk menjalankan program COBOL di atas -

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

Ketika Anda mengkompilasi dan menjalankan program di atas, ini menghasilkan hasil sebagai berikut -

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

Pernyataan GO TO

Pernyataan GO TO digunakan untuk mengubah aliran eksekusi dalam suatu program. Dalam pernyataan GO TO, transfer hanya berjalan ke arah depan. Ini digunakan untuk keluar dari paragraf. Berbagai jenis pernyataan GO TO yang digunakan adalah sebagai berikut -

PERGI tanpa syarat

GO TO para-name.

PERGI bersyarat

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

Jika 'x' sama dengan 1, maka kontrol akan dialihkan ke paragraf pertama; dan jika 'x' sama dengan 2, maka kontrol akan dialihkan ke paragraf kedua, begitu seterusnya.

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 untuk menjalankan program COBOL di atas:

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

Ketika Anda mengkompilasi dan menjalankan program di atas, ini menghasilkan hasil sebagai berikut:

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