Есть некоторые задачи, которые нужно выполнять снова и снова, например, чтение каждой записи файла до конца. Операторы цикла, используемые в COBOL:
- Выполнить через
- Выполнять до
- Выполнить раз
- Выполнить изменение
Выполнить через
Perform Thru используется для выполнения серии абзацев, давая имена первого и последнего абзаца в последовательности. После выполнения последнего абзаца элемент управления возвращается обратно.
In-line Perform
Заявления внутри PERFORM будут выполняться до достижения END-PERFORM.
Синтаксис
Ниже приводится синтаксис In-line выполнения —
PERFORM DISPLAY 'HELLO WORLD' END-PERFORM.
Вне линии Выполнить
Здесь оператор выполняется в одном абзаце, а затем элемент управления переносится в другой абзац или раздел.
Синтаксис
Ниже приводится синтаксис Out-of-line выполнения —
PERFORM PARAGRAPH1 THRU PARAGRAPH2
пример
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 для выполнения вышеуказанной программы на языке COBOL.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
IN A-PARA IN C-PARA IN D-PARA IN E-PARA IN B-PARA
Выполнять до
В «выполнить до» абзац выполняется до тех пор, пока данное условие не станет истинным. «С проверкой перед» является условием по умолчанию и указывает, что условие проверяется перед выполнением операторов в абзаце.
Синтаксис
Ниже приведен синтаксис выполнения до —
PERFORM A-PARA UNTIL COUNT=5 PERFORM A-PARA WITH TEST BEFORE UNTIL COUNT=5 PERFORM A-PARA WITH TEST AFTER UNTIL COUNT=5
пример
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 для выполнения вышеуказанной программы COBOL —
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
WS-CNT : 0 WS-CNT : 1 WS-CNT : 2 WS-CNT : 3
Выполнить раз
В «временах выполнения» абзац будет выполнен указанное количество раз.
Синтаксис
Ниже приводится синтаксис времени выполнения —
PERFORM A-PARA 5 TIMES.
пример
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. PROCEDURE DIVISION. A-PARA. PERFORM B-PARA 3 TIMES. STOP RUN. B-PARA. DISPLAY 'IN B-PARA'.
JCL для выполнения вышеуказанной программы COBOL —
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
IN B-PARA IN B-PARA IN B-PARA
Выполнить изменение
При изменении исполнения абзац будет выполняться до тех пор, пока условие в фразе Пока не станет истинным.
Синтаксис
Ниже приводится синтаксис выполнения варьирования —
PERFORM A-PARA VARYING A FROM 1 BY 1 UNTIL A = 5.
пример
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 для выполнения вышеуказанной программы COBOL —
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —
IN B-PARA 1 IN B-PARA 2 IN B-PARA 3 IN B-PARA 4
Перейти к заявлению
Оператор GO TO используется для изменения последовательности выполнения в программе. В операторах GO TO передача идет только в прямом направлении. Используется для выхода из абзаца. Используются следующие типы операторов GO TO:
Безусловный GO TO
GO TO para-name.
Условно GO TO
GO TO para-1 para-2 para-3 DEPENDING ON x.
Если «х» равен 1, то управление будет перенесено в первый абзац; и если ‘x’ равно 2, то управление будет перенесено во второй абзац и так далее.
пример
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 для выполнения вышеуказанной программы COBOL:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат: