COBOL - DATA DIVISION - DDE - VALUE clause - Format 2



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

COBOL - DATA DIVISION - DDE - VALUE clause - Format 2
Enterprise COBOL for z/OS, V4.2, Language Reference

Esse formato associa um valor, valores ou intervalos de valores a um condition-name.
Cada um desses nomes de condições requer uma entrada de nível 88 separada.
O número de nível 88 e o condition-name não fazem parte da própria cláusula format-2 VALUE.
Eles estão incluídos no formato apenas para maior clareza.

condition-name-1
Um nome especificado pelo usuário que associa um valor a uma variável condicional.
Se a variável condicional associada exigir subscritos ou índices, cada referência de procedimento ao condition-name deve ser subscrita ou indexada conforme necessário para a variável condicional.

Os nomes de condição são testados proceduralmente nas condições de condition-name (consulte Conditional expressions).

literal-1
Associa o condition-name a um único valor.

A classe do literal-1 deve ser uma classe válida para atribuição à variável condicional associada.

literal-1 THROUGH literal-2
Associa o condition-name (nome da condição) a pelo menos um intervalo de valores.
Quando a frase THROUGH é usada, o literal-1 deve ser menor que o literal-2, a menos que o item de dados associado seja um campo de data em janela que não seja o último ano.
Para detalhes, consulte Rules for condition-name entries.

literal-1 e literal-2 devem ser da mesma classe.
A classe literal-1 e literal-2 deve ser uma classe válida para atribuição à variável condicional associada.

Quando literal-1 e literal-2 são literais DBCS, o intervalo de valores DBCS especificado pela frase THROUGH é baseado na sequência de intercalação binária dos valores hexadecimais dos caracteres DBCS.

Quando literal-1 e literal-2 são literais nacionais, o intervalo de valores de caracteres nacionais especificado pela frase THROUGH é baseado na seqüência de classificação binária dos valores hexadecimais dos caracteres nacionais representados pelos literais.

Se a variável condicional associada for da classe DBCS, o literal-1 e o literal-2 deverão ser literais do DBCS.
A constante figurativa SPACE ou a constante figurativa ALL DBCS-literal podem ser especificadas.

Se a variável condicional associada for da classe nacional, o literal-1 e o literal-2 devem ser literais nacionais ou literais alfanuméricos para um determinado condition-name.
As constantes figurativas ZERO, SPACE, QUOTE, HIGH-VALUE, LOW-VALUE, symbolic-character, ALL literal nacional ou ALL literal podem ser especificadas.

Rules for condition-name entries

  • A cláusula VALUE é necessária em uma entrada de condition-name e deve ser a única cláusula na entrada.
    Cada entrada de condition-name está associada a uma variável condicional anterior.
    Assim, toda entrada de nível 88 sempre deve ser precedida pela entrada da variável condicional ou por outra entrada de nível 88 quando vários condition-names se aplicam a uma variável condicional.
    Cada entrada de nível 88 implica implicitamente as características PICTURE da variável condicional.

  • Um espaço, uma vírgula separadora ou um ponto e vírgula separadora devem separar operandos sucessivos.

    Cada entrada deve terminar com um período separador.

  • As palavras-chave THROUGH e THRU são equivalentes.

  • As entradas de condition-name associadas a uma variável condicional específica devem seguir imediatamente a entrada da variável condicional.
    A variável condicional pode ser qualquer entrada de descrição de dados elementar, exceto o seguinte:
    • Outro nome da condição
    • Uma cláusula RENAMES (item de nível 66)
    • Um item descrito com USAGE IS INDEX
    • Um item descrito com USAGE POINTER, USAGE PROCEDURE-POINTER, USAGE FUNCTION-POINTER ou USAGE OBJECT REFERENCE

  • Os Condition-names podem ser especificados no nível do grupo e nos níveis subordinados dentro de um grupo alfanumérico ou nacional.

  • Quando o condition-name é especificado para uma entrada de descrição de dados do grupo alfanumérico:
    • O valor de literal-1 (ou literal-1 e literal-2) deve ser especificado como uma constante literal ou figurativa alfanumérica.
    • O grupo pode conter itens de qualquer uso.

  • Quando o condition-name é especificado para uma entrada de descrição de dados do grupo nacional:
    • O valor de literal-1 (ou literal-1 e literal-2) deve ser especificado como literal alfanumérico, literal nacional ou constante figurativa.
    • O grupo pode conter apenas itens nacionais de uso, conforme especificado na GROUP-USAGE clause.

  • Quando o condition-name está associado a uma entrada de descrição de dados do grupo alfanumérico ou a uma entrada de descrição de dados do grupo nacional:
    • O tamanho de cada valor literal não deve exceder a soma dos tamanhos de todos os itens elementares dentro do grupo.
    • Nenhum elemento dentro do grupo pode conter uma cláusula JUSTIFIED ou SYNCHRONIZED.

  • Os testes de relação implícitos na definição de um nome de condição são realizados de acordo com as regras referenciadas na tabela abaixo.

    Table 1. Relation test references for condition-names - Referências de Teste de Relação para Nomes de Condição

    Type of conditional variable Regras de condição de relação
    Alphanumeric group item Group comparisons
    National group item (treated as elementary data item of class national) National comparisons
    Elementary data item of class alphanumeric Alphanumeric comparisons
    Elementary data item of class national National comparisons
    Elementary data item of class numeric Numeric comparisons
    Elementary data item of class DBCS DBCS comparisons

  • Uma cláusula VALUE que especifica um literal nacional pode ser associada a um condition-name definido apenas para um item de dados da classe nacional.
  • Uma cláusula VALUE que especifica um literal DBCS pode ser associada a um nome de condition-name apenas para um item de dados da classe DBCS.
  • Os literais em uma entrada de condition-name para um item de dados elementar da classe nacional ou um item de grupo nacional devem ser literais nacionais ou literais alfanuméricos, e literal-1 e literal-2 devem ser da mesma classe.
    Para grupos alfanuméricos ou itens de dados elementares de outras classes, o tipo de literal deve ser consistente com o tipo de dados da variável condicional.
    No exemplo a seguir:
    • CITY-COUNTY-INFO, COUNTY-NO, e CITY são variáveis condicionais.

      A PICTURE associada ao COUNTY-NO limita o valor do condition-name a um literal numérico de dois dígitos.

      O PICTURE associado ao CITY limita o valor do condition-name a um literal alfanumérico de três caracteres.

    • Os nomes de condição associados são entradas de nível 88.

      Quaisquer valores para os condition-names associados a CITY-COUNTY-INFO não podem exceder cinco caracteres.

      Como este é um item de grupo alfanumérico, o literal deve ser alfanumérico.

               05  CITY-COUNTY-INFO.
                   88  BRONX                    VALUE "03NYC".
                   88  BROOKLYN                 VALUE "24NYC".
                   88  MANHATTAN                VALUE "31NYC".
                   88  QUEENS                   VALUE "41NYC".
                   88  STATEN-ISLAND            VALUE "43NYC".
                 10  COUNTY-NO                  PICTURE 99.
                     88  DUTCHESS               VALUE 14.
                     88  KINGS                  VALUE 24.
                     88  NEW-YORK               VALUE 31.
                     88  RICHMOND               VALUE 43.
                 10  CITY                       PICTURE X(3).
                     88  BUFFALO                VALUE "BUF".
                     88  NEW-YORK-CITY          VALUE "NYC".
                     88  POUGHKEEPSIE           VALUE "POK".
                05  POPULATION...
  • Se o item for um campo de data em janela, as seguintes restrições serão aplicadas:
    • Para variáveis condicionais alfanuméricas:
      • O literal-1 e o literal-2 (se especificado) devem ser literais alfanuméricos do mesmo tamanho que a variável condicional.
      • Os literais não devem ser especificados como constantes figurativas.
      • Se literal-2 for especificado, ambos os literais deverão conter apenas dígitos decimais.
    • Se a opção do compilador YEARWINDOW for especificada como um número inteiro negativo, o literal-2 não deverá ser especificado.
    • Se o literal-2 for especificado, o literal-1 deverá ser menor que o literal-2 após aplicar a janela do século especificada pela opção do compilador YEARWINDOW.
      Ou seja, o valor da data expandida do literal-1 deve ser menor que o valor da data expandida do literal-2.

    Para obter mais informações sobre o uso de condition-names com campos de data em janela, consulte Condition-name conditions and windowed date field comparisons.



© Copyright IBM Corp.