Menu

COBOL - Condição-Nome


Uma condição de nome de condição testa uma variável condicional para determinar se seu valor é igual a quaisquer valores associados ao nome de condição.

Format:

IF Condition-name

Se condition-name tiver sido associado a um intervalo de valores (ou a vários intervalos de valores), a variável condicional será testada para determinar se seu valor está dentro dos intervalos, incluindo os valores finais.

O resultado do teste é verdadeiro se um dos valores que corresponde ao nome da condição for igual ao valor de sua variável condicional associada.

Os nomes de condição são permitidos para itens de dados alfanuméricos, DBCS, nacionais e de ponto flutuante, bem como outros, conforme definido para o formato de nome de condição da cláusula VALUE.

O exemplo a seguir ilustra o uso de variáveis ​​condicionais e nomes de condições:

01  AGE-GROUP         PIC  99.
    88  INFANT        VALUE 0.
    88  BABY          VALUE 1, 2.
    88  CHILD         VALUE 3 THRU 12.
    88  TEENAGER      VALUE 13 THRU 19.

AGE-GROUP é a variável condicional; INFANT, BEBÊ, CRIANÇA e ADOLESCENTE são nomes de condição. Para registros individuais no arquivo, apenas um dos valores especificados nas entradas de nome da condição pode estar presente.

As seguintes instruções IF podem ser adicionadas ao exemplo acima para determinar a faixa etária de um registro específico:

IF INFANT...         (Tests for value 0)
IF BABY...           (Tests for values 1, 2)
IF CHILD...          (Tests for values 3 through 12)
IF TEENAGER...       (Tests for values 13 through 19)

Condições de nome de condição e comparações de campo de data em janela:

Se a variável condicional for um campo de data em janela, os valores associados a seus nomes de condição serão tratados como valores do campo de data em janela. Ou seja, eles são tratados como se tivessem sido convertidos para o formato de data expandido, conforme descrito
Por exemplo, dado YEARWINDOW(1945), uma janela de século de 1945-2044 e a seguinte definição:

05 DATE-FIELD PIC 9(6) DATE FORMAT YYXXXX.
	88 DATE-TARGET VALUE 051220.

um valor de 051220 em DATE-FIELD faria com que a seguinte condição fosse verdadeira:

IF DATE-TARGET...	

porque o valor associado a DATE-TARGET e o valor de DATE-FIELD seriam tratados como se fossem prefixados por '20' antes da comparação.
No entanto, a seguinte condição seria falsa:

IF DATE-FIELD = 051220...

porque em uma comparação com um campo de data em janela, os literais são tratados como se fossem prefixados por '19', independentemente da janela do século. Assim, a condição acima efetivamente se torna:

IF 20051220 = 19051220...

Vamos ver outro exemplo simples para a instrução de condição IF:

IDENTIFICATION DIVISION.
PROGRAM-ID. COBCONDN.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 CHECK-GENDER.
   05 GENDER PIC X(1).
      88 MALE VALUE 'M'.
      88 FEMALE VALUE 'F'.

PROCEDURE DIVISION.
MAIN-PARA.
     SET FEMALE TO TRUE.
     IF MALE
          DISPLAY "GENDER - MALE"
     ELSE
          DISPLAY "GENDER - FEMALE"
     END-IF.
     STOP RUN.

Quando você compila e executa o programa acima, ele produz o seguinte resultado −

FEMALE