COBOL - состояние с заявлениями выступили


Advertisements

условными заявлениями используются для изменения потока команд в зависимости от определенных условий, оговоренных в средстве программирования страниц. Условиями заявления всегда будет true или false. Условия используются в если, оценку и выполнить с заявлениями. различных типов необходимы следующие условия:

  • Если состояние заявление
  • Связи с состояние
  • Вход состояние
  • Класс состояние
  • Condition-Name состояние
  • отрицаются состояние
  • Комбинированный условие

Если состояние заявление

Если заявление проверяет условия. Если условие верно в том случае, если блок цилиндров выполняется; и если условие не выполняется, то 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
Advertisements