Учебники

COBOL — Loop Заявления

Есть некоторые задачи, которые нужно выполнять снова и снова, например, чтение каждой записи файла до конца. Операторы цикла, используемые в COBOL:

  • Выполнить через
  • Выполнять до
  • Выполнить раз
  • Выполнить изменение

Выполнить через

Perform Thru используется для выполнения серии абзацев, давая имена первого и последнего абзаца в последовательности. После выполнения последнего абзаца элемент управления возвращается обратно.

In-line Perform

Заявления внутри PERFORM будут выполняться до достижения END-PERFORM.

Синтаксис

Ниже приводится синтаксис In-line выполнения —

PERFORM 
   DISPLAY 'HELLO WORLD'
END-PERFORM.

Вне линии Выполнить

Здесь оператор выполняется в одном абзаце, а затем элемент управления переносится в другой абзац или раздел.

Синтаксис

Ниже приводится синтаксис Out-of-line выполнения —

PERFORM PARAGRAPH1 THRU PARAGRAPH2

пример

Live Demo

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

пример

Live Demo

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.

пример

Live Demo

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.

пример

Live Demo

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, то управление будет перенесено во второй абзац и так далее.

пример

Live Demo

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

Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат: