COBOL - Conditional expressions - Condition-name condition



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

COBOL - Conditional expressions - Condition-name condition
Enterprise COBOL for z/OS, V4.2, Language Reference

Uma condição de nome da condição testa uma variável condicional para determinar se seu valor é igual a qualquer valor associado ao nome da condição.

Um nome de condição é usado em condições como uma abreviação para a condição de relação.
As regras para comparar uma variável condicional com um valor de nome da condição são as mesmas especificadas para as condições de relação.

Se ocondition-name-1 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 Condition-names são permitidos para itens de dados alfanuméricos, DBCS, nationais e floating-point (de ponto flutuante), além de outros, conforme definido para o formato de nome da 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, BABY, CHILD e TEENAGER (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)

Dependendo da avaliação da condição condition-name, caminhos alternativos de execução são utilizados pelo programa de objetos.

Comparação de Condition-name da condição e campo de windowed (data em janelas)

Se a variável condicional for um campo de data em janela, os valores associados aos 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 expandida, conforme descrito em Semantics of windowed date fields - Semântica dos campos de data em janelas

Por exemplo, dado YEARWINDOW (1945), uma janela de 1945 do século - 2044, e a seguinte definição:


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

um valor 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.
Portanto, a condição acima se torna efetivamente:

           IF  20051220 = 19051220...

Para obter mais informações sobre o uso de campos de data em janelas em expressões condicionais, consulte Comparison of date fields - Comparação de campos de data.



© Copyright IBM Corp.