условными заявлениями используются для изменения потока команд в зависимости от определенных условий, оговоренных в средстве программирования страниц. Условиями заявления всегда будет true или false. Условия используются в если, оценку и выполнить с заявлениями. различных типов необходимы следующие условия:
Если заявление проверяет условия. Если условие верно в том случае, если блок цилиндров выполняется; и если условие не выполняется, то ELSE выполняется.
Конец если используется для завершения если блок цилиндров. Положить конец если блок, в период могут быть использованы вместо конец если. Но она всегда предпочтительнее использовать - если для нескольких если блоки.
Вложенные-если : если блоки отображаются внутри другого если блок цилиндров. Не существует ограничения на глубину вложенные если заявления.
В синтаксисе если состояние с заявлениями выступили:
IF [condition] THEN [COBOL statements] ELSE [COBOL statements] END-IF.
Пример
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM1 PIC 9(9). 01 WS-NUM2 PIC 9(9). 01 WS-NUM3 PIC 9(5). 01 WS-NUM4 PIC 9(6). PROCEDURE DIVISION. A000-FIRST-PARA. MOVE 25 TO WS-NUM1 WS-NUM3. MOVE 15 TO WS-NUM2 WS-NUM4. IF WS-NUM1 > WS-NUM2 THEN DISPLAY 'IN LOOP 1 - IF BLOCK' IF WS-NUM3 = WS-NUM4 THEN DISPLAY 'IN LOOP 2 - IF BLOCK' ELSE DISPLAY 'IN LOOP 2 - ELSE BLOCK' END-IF ELSE DISPLAY 'IN LOOP 1 - ELSE BLOCK' END-IF. STOP RUN.
JCL для выполнения выше COBOL программы:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
При компиляции и выполнения этой программы, она производит следующие результаты:
IN LOOP 1 - IF BLOCK IN LOOP 2 - ELSE BLOCK
Связи с состояние сравнивает двух операндов, любой из которых может быть идентификатор, буквальное, или арифметические выражения. алгебраических сопоставления числовых полей осуществляется независимо от их размера и использования оговорки.
Для нечисловых операндов
Если два не числовое операндов одинакового размера, по сравнению с затем символы, по сравнению с левой с соответствующей позиции до конца. Значение операнда содержащие большее число символов определяется как более.
Если два не числовое операндов неравных размеров, по сравнению с, а затем в короткие элемента данных добавляется пробелов в конце до размеров операндов становится равной и затем по сравнению с в соответствии с правила, упомянутые в предыдущем пункте.
Ниже приводятся ниже синтаксис связи с состояние с заявлениями выступили:
[Data Name/Arithmetic Operation] [IS] [NOT] [Equal to (=),Greater than (>), Less than (<), Greater than or Equal (>=), Less than or equal (<=) ] [Data Name/Arithmetic Operation]
Пример
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM1 PIC 9(9). 01 WS-NUM2 PIC 9(9). PROCEDURE DIVISION. A000-FIRST-PARA. MOVE 25 TO WS-NUM1. MOVE 15 TO WS-NUM2. IF WS-NUM1 IS GREATER THAN OR EQUAL TO WS-NUM2 THEN DISPLAY 'WS-NUM1 IS GREATER THAN WS-NUM2' ELSE DISPLAY 'WS-NUM1 IS LESS THAN WS-NUM2' END-IF. STOP RUN.
JCL для выполнения выше COBOL программы.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
При компиляции и выполнения этой программы он производит следующие результаты:
WS-NUM1 IS GREATER THAN WS-NUM2
Вход состояние используется для проверки знак числовое значение операнда. Она определяет, следует ли с учетом числовое значение больше, меньше или равна нулю.
В синтаксисе подписать состояние с заявлениями выступили:
[Data Name/Arithmetic Operation] [IS] [NOT] [Positive, Negative or Zero] [Data Name/Arithmetic Operation]
Пример
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM1 PIC S9(9) VALUE -1234. 01 WS-NUM2 PIC S9(9) VALUE 123456. PROCEDURE DIVISION. A000-FIRST-PARA. IF WS-NUM1 IS POSITIVE THEN DISPLAY 'WS-NUM1 IS POSITIVE'. IF WS-NUM1 IS NEGATIVE THEN DISPLAY 'WS-NUM1 IS NEGATIVE'. IF WS-NUM1 IS ZERO THEN DISPLAY 'WS-NUM1 IS ZERO'. IF WS-NUM2 IS POSITIVE THEN DISPLAY 'WS-NUM2 IS POSITIVE'. STOP RUN.
JCL для выполнения выше COBOL программы:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
При компиляции и выполнения этой программы он производит следующие результаты:
WS-NUM1 IS NEGATIVE WS-NUM2 IS POSITIVE
Класс состояние используется для проверки если операнд содержится только буквы или числовых данных. пробелами рассматриваются в алфавитном порядке, в алфавитном порядке - нижний, и букв - верхний.
Ниже синтаксис Class состояние с заявлениями выступили:
[Data Name/Arithmetic Operation>] [IS] [NOT] [NUMERIC, ALPHABETIC, ALPHABETIC-LOWER, ALPHABETIC-UPPER] [Data Name/Arithmetic Operation]
Пример
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM1 PIC X(9) VALUE 'ABCD '. 01 WS-NUM2 PIC 9(9) VALUE 123456789. PROCEDURE DIVISION. A000-FIRST-PARA. IF WS-NUM1 IS ALPHABETIC THEN DISPLAY 'WS-NUM1 IS ALPHABETIC'. IF WS-NUM1 IS NUMERIC THEN DISPLAY 'WS-NUM1 IS NUMERIC'. IF WS-NUM2 IS NUMERIC THEN DISPLAY 'WS-NUM1 IS NUMERIC'. STOP RUN.
JCL для выполнения выше COBOL программы.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
При компиляции и выполнения этой программы, она производит следующие результаты:
WS-NUM1 IS ALPHABETIC WS-NUM1 IS NUMERIC
Состояние - это имя определенной пользователем имя. Он содержит набор значений, указанных пользователем. Оно ведет себя как булевых переменных. Они определены с уровня 88. Она не будет предложение пос.
Ниже синтаксис пользователем состояние с заявлениями выступили:
88 [Condition-Name] VALUE [IS, ARE] [LITERAL] [THRU LITERAL].
Пример
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM PIC 9(3). 88 PASS VALUES ARE 041 THRU 100. 88 FAIL VALUES ARE 000 THRU 40. PROCEDURE DIVISION. A000-FIRST-PARA. MOVE 65 TO WS-NUM. IF PASS DISPLAY 'Passed with ' WS-NUM ' marks'. IF FAIL DISPLAY 'FAILED with ' WS-NUM 'marks'. STOP RUN.
JCL для выполнения выше COBOL программы:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
При компиляции и выполнения этой программы, она производит следующие результаты:
Passed with 065 marks
отрицаются состояние, с помощью не ключевое слово. Если условие верно, мы должны уделять внимание не только в передней части, а затем его окончательной стоимости будет false.
Ниже приводится синтаксис для заметное состояние с заявлениями выступили:
IF NOT [CONDITION] COBOL Statements END-IF.
Пример
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM1 PIC 9(2) VALUE 20. 01 WS-NUM2 PIC 9(9) VALUE 25. PROCEDURE DIVISION. A000-FIRST-PARA. IF NOT WS-NUM1 IS LESS THAN WS-NUM2 THEN DISPLAY 'IF-BLOCK' ELSE DISPLAY 'ELSE-BLOCK' END-IF. STOP RUN.
JCL для выполнения выше COBOL программы.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
При компиляции и выполнения этой программы, она производит следующие результаты:
ELSE-BLOCK
Комбинированный условие содержит два или более условий, связанных с использованием логических операторов и или или.
В синтаксисе комбинированный условие с заявлениями выступили:
IF [CONDITION] AND [CONDITION] COBOL Statements END-IF.
Пример
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM1 PIC 9(2) VALUE 20. 01 WS-NUM2 PIC 9(2) VALUE 25. 01 WS-NUM3 PIC 9(2) VALUE 20. PROCEDURE DIVISION. A000-FIRST-PARA. IF WS-NUM1 IS LESS THAN WS-NUM2 AND WS-NUM1=WS-NUM3 THEN DISPLAY 'Both condition OK' ELSE DISPLAY 'Error' END-IF. STOP RUN.
JCL для выполнения выше COBOL программы.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
При компиляции и выполнения этой программы, она производит следующие результаты:
Both condition OK
Оценить глагол является замена серии если-ELSE. Она может быть использована для оценки более чем одно условие. Он похож на переключатель заявление в C программ.
Пример
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-A PIC 9 VALUE 0. PROCEDURE DIVISION. MOVE 3 TO WS-A. EVALUATE TRUE WHEN WS-A > 2 DISPLAY 'WS-A GREATER THAN 2' WHEN WS-A < 0 DISPLAY 'WS-A LESS THAN 0' WHEN OTHER DISPLAY 'INVALID VALUE OF WS-A' END-EVALUATE. STOP RUN.
JCL для выполнения выше COBOL программы:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
При компиляции и выполнения этой программы, она производит следующие результаты:
WS-A GREATER THAN 2