COBOL - instrukcje pętli

Jest kilka zadań, które trzeba wykonywać w kółko, na przykład czytanie każdego rekordu pliku do końca. Instrukcje pętli używane w języku COBOL to -

  • Perform Thru
  • Wykonuj do
  • Perform Times
  • Wykonuj zmienne

Perform Thru

Perform Thru służy do wykonywania serii akapitów przez podanie nazwy pierwszego i ostatniego akapitu w sekwencji. Po wykonaniu ostatniego akapitu kontrola jest zwracana.

In-line Perform

Instrukcje wewnątrz PERFORM będą wykonywane do osiągnięcia END-PERFORM.

Składnia

Poniżej znajduje się składnia wykonania In-line -

PERFORM 
   DISPLAY 'HELLO WORLD'
END-PERFORM.

Wydajność poza linią

Tutaj instrukcja jest wykonywana w jednym akapicie, a następnie sterowanie jest przenoszone do innego akapitu lub sekcji.

Składnia

Poniżej znajduje się składnia wykonania Out-of-line -

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 aby wykonać powyższy program w języku COBOL.

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

Kiedy kompilujesz i wykonujesz powyższy program, daje on następujący wynik -

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

Wykonuj do

W „wykonuj do” akapit jest wykonywany, dopóki dany warunek nie stanie się prawdziwy. „Z testem przed” jest warunkiem domyślnym i wskazuje, że warunek jest sprawdzany przed wykonaniem instrukcji w akapicie.

Składnia

Poniżej znajduje się składnia wykonywania do -

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 aby wykonać powyższy program w języku COBOL -

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

Kiedy kompilujesz i wykonujesz powyższy program, daje on następujący wynik -

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

Perform Times

W „czasie wykonania” akapit zostanie wykonany określoną liczbę razy.

Składnia

Poniżej znajduje się składnia czasów wykonania -

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 aby wykonać powyższy program w języku COBOL -

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

Kiedy kompilujesz i wykonujesz powyższy program, daje on następujący wynik -

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

Wykonuj zmienne

W przypadku dokonywania zmian, akapit będzie wykonywany, dopóki warunek w frazie Dopóki nie stanie się prawdziwy.

Składnia

Poniżej znajduje się składnia wykonywania zmiennych -

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 aby wykonać powyższy program w języku COBOL -

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

Kiedy kompilujesz i wykonujesz powyższy program, daje on następujący wynik -

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

GO TO Oświadczenie

Instrukcja GO TO służy do zmiany przepływu wykonywania w programie. W wyciągach GO TO przelew odbywa się tylko w kierunku do przodu. Służy do zamykania akapitu. Poniżej przedstawiono różne typy instrukcji GO TO -

Bezwarunkowe PRZEJDŹ DO

GO TO para-name.

Warunkowe PRZEJDŹ DO

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

Jeśli „x” jest równe 1, to kontrola zostanie przeniesiona do pierwszego akapitu; a jeśli „x” jest równe 2, to kontrola zostanie przeniesiona do drugiego akapitu i tak dalej.

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 aby wykonać powyższy program w języku COBOL:

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

Kiedy kompilujesz i wykonujesz powyższy program, daje on następujący wynik:

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