Você está na página 1de 9

11/10/2021 23:48 COBOL - Condição Declarações

COBOL - Condição Declarações

Instruções condicionais são usadas para alterar a execução fluxo dependendo de certas
condições especificadas pelo programador. Instruções condicionais serão sempre avaliar para
true ou false. As condições são utilizadas no CASO, avaliar e executar as declarações. Os
diferentes tipos de condições são as seguintes:
Se a condição Declaração
Relação Estado
Assinar Estado
Classe Estado
Condição Condition-Name
Estado nega
Condição combinada

Se a condição Declaração
Instrução IF verifica as condições. Se uma condição é verdadeira, a se o bloco é executado; e
se a condição for falsa, o outro bloco é executado.
FINAL - SE é usado para terminar a SE bloquear. Ao final a se o bloco, um período podem ser
usados em vez de FINAL-SE. Mas é sempre preferível a utilização FINAL-SE para vários SE
bloqueia.

Nested-SE: SE os blocos aparecem dentro de outro se o bloco. Não há limite para a


profundidade de "nested" se as declarações.

Sintaxe

Sintaxe é a seguinte, se instruções de condição:

IF [condition] THEN

[COBOL statements]

ELSE

[COBOL statements]

END-IF.

Exemplo

IDENTIFICATION DIVISION.

PROGRAM-ID. HELLO.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 WS-NUM1 PIC 9(9).

https://www.tutorialspoint.com/pg/cobol/cobol_condition_statements.htm 1/9
11/10/2021 23:48 COBOL - Condição Declarações

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 para executar o programa em COBOL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C

//STEP1 EXEC PGM=HELLO

Quando você compilar e executar o programa acima referido, que produz o seguinte resultado:

IN LOOP 1 - IF BLOCK

IN LOOP 2 - ELSE BLOCK

Relação Estado
Relação estado compara dois operandos, um dos quais pode ser um identificador, literal, ou
expressão aritmética. Algebraic comparação de campos numéricos é feito independentemente
do tamanho e do uso cláusula.

A não-numérico operandos
Se os dois não-numérica os operandos de igual tamanho são comparadas, em seguida, as
personagens são comparados da esquerda com as posições correspondentes até o fim é
alcançado. O operando com maior número de caracteres é declarada maior.
Se os dois não-numérico operandos de tamanho desigual são comparados, em seguida, o
menor item de dados é anexado com espaços no final até o tamanho dos operandos torna-se
igual e, em seguida, comparados de acordo com as regras mencionadas no ponto anterior.

https://www.tutorialspoint.com/pg/cobol/cobol_condition_statements.htm 2/9
11/10/2021 23:48 COBOL - Condição Declarações

Sintaxe

Abaixo segue-se a sintaxe da relação estado declarações:

[Data Name/Arithmetic Operation]

[IS] [NOT]

[Equal to (=),Greater than (>), Less than (<),

Greater than or Equal (>=), Less than or equal (<=) ]

[Data Name/Arithmetic Operation]

Exemplo

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 para executar o programa em COBOL.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C

//STEP1 EXEC PGM=HELLO

Quando você compilar e executar o programa acima referido que produz o seguinte resultado:

WS-NUM1 IS GREATER THAN WS-NUM2

Assinar Estado

Assinar condição é utilizado para verificar o sinal de um valor numérico operando. Ele
determina se um determinado valor numérico é maior que, menor que ou igual a zero.
https://www.tutorialspoint.com/pg/cobol/cobol_condition_statements.htm 3/9
11/10/2021 23:48 COBOL - Condição Declarações

Sintaxe

Sintaxe é a seguinte condição de assinar declarações:

[Data Name/Arithmetic Operation]

[IS] [NOT]

[Positive, Negative or Zero]

[Data Name/Arithmetic Operation]

Exemplo

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 para executar o programa em COBOL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C

//STEP1 EXEC PGM=HELLO

Quando você compilar e executar o programa acima referido que produz o seguinte resultado:

WS-NUM1 IS NEGATIVE

WS-NUM2 IS POSITIVE

https://www.tutorialspoint.com/pg/cobol/cobol_condition_statements.htm 4/9
11/10/2021 23:48 COBOL - Condição Declarações

Classe Estado

Classe estado é utilizado para verificar se um operando contém apenas letras ou dados
numéricos. Os espaços são considerados em ordem alfabética, ALFABÉTICO-MENOR, e
alfabético-SUPERIOR.

Sintaxe

Sintaxe é a seguinte da classe estado declarações:

[Data Name/Arithmetic Operation>]

[IS] [NOT]

[NUMERIC, ALPHABETIC, ALPHABETIC-LOWER, ALPHABETIC-UPPER]

[Data Name/Arithmetic Operation]

Exemplo

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 para executar o programa em COBOL.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C

//STEP1 EXEC PGM=HELLO

Quando você compilar e executar o programa acima referido, que produz o seguinte resultado:

https://www.tutorialspoint.com/pg/cobol/cobol_condition_statements.htm 5/9
11/10/2021 23:48 COBOL - Condição Declarações

WS-NUM1 IS ALPHABETIC

WS-NUM1 IS NUMERIC

Estado-nome Estado

O nome da condição é um nome definido pelo usuário. Ele contém um conjunto de valores
especificados pelo usuário. Ele comporta-se como variáveis Booleanas. Elas são definidas com
número do nível 88. Ele não terá uma PIC cláusula.

Sintaxe

Sintaxe é a seguinte de condição definida pelo usuário declarações:

88 [Condition-Name] VALUE [IS, ARE] [LITERAL] [THRU LITERAL].

Exemplo

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 para executar o programa em COBOL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C

//STEP1 EXEC PGM=HELLO

Quando você compilar e executar o programa acima referido, que produz o seguinte resultado:

Passed with 065 marks

https://www.tutorialspoint.com/pg/cobol/cobol_condition_statements.htm 6/9
11/10/2021 23:48 COBOL - Condição Declarações

Estado nega
Negava condição é dada por NÃO usar a palavra-chave. Se a condição for verdadeira, temos
dado não na frente dele, então seu valor final será falso.

Sintaxe

Sintaxe é a seguinte para Negada desde declarações:

IF NOT [CONDITION]

COBOL Statements

END-IF.

Exemplo

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 para executar o programa em COBOL.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C

//STEP1 EXEC PGM=HELLO

Quando você compilar e executar o programa acima referido, que produz o seguinte resultado:

ELSE-BLOCK

Condição combinada
UM combinado estado contém duas ou mais condições conectado usando os operadores
lógicos AND ou OR.

https://www.tutorialspoint.com/pg/cobol/cobol_condition_statements.htm 7/9
11/10/2021 23:48 COBOL - Condição Declarações

Sintaxe

Sintaxe é a seguinte condição combinada de declarações:

IF [CONDITION] AND [CONDITION]

COBOL Statements

END-IF.

Exemplo

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 para executar o programa em COBOL.

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C

//STEP1 EXEC PGM=HELLO

Quando você compilar e executar o programa acima referido, que produz o seguinte resultado:

Both condition OK

Avaliar Verbo

Avaliar verbo não é um substituto de uma série de IF-ELSE. Ela pode ser usada para avaliar
mais de uma condição. É semelhante a instrução SWITCH em C os programas.
Exemplo

IDENTIFICATION DIVISION.

PROGRAM-ID. HELLO.

https://www.tutorialspoint.com/pg/cobol/cobol_condition_statements.htm 8/9
11/10/2021 23:48 COBOL - Condição Declarações

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 para executar o programa em COBOL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C

//STEP1 EXEC PGM=HELLO

Quando você compilar e executar o programa acima referido, que produz o seguinte resultado:

WS-A GREATER THAN 2

https://www.tutorialspoint.com/pg/cobol/cobol_condition_statements.htm 9/9

Você também pode gostar