COBOL - DATA DIVISION - DDE - OCCURS clause - ASCENDING KEY and DESCENDING KEY phrases



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

COBOL - DATA DIVISION - data description entry - OCCURS clause - ASCENDING KEY and DESCENDING KEY phrases
Enterprise COBOL for z/OS, V4.2, Language Reference

Os dados são organizados em ordem crescente ou decrescente, dependendo da palavra-chave especificada, de acordo com os valores contidos em data-name-2.
Os nomes dos dados são listados em sua ordem decrescente de significância.

A ordem é determinada pelas regras de comparação de operandos (consulte Relation conditions - Condições de relação ).
Os itens de dados ASCENDING KEY e DESCENDING KEY são usados nas cláusulas OCCURS e na instrução SEARCH ALL para uma pesquisa binária do elemento da tabela.

data-name-2
Deve ser o nome da entrada do assunto ou o nome de uma entrada subordinada à entrada do assunto.
data-name-2 não pode ser um campo de data em janela.Se data-name-2 nomear a entrada do assunto, essa entrada inteira se tornará a ASCENDING KEY ou DESCENDING KEY e será a única chave que pode ser especificada para este elemento da tabela.

Se data-name-2 não nomear a entrada do assunto, data-name-2 então:

  • Deve estar subordinado ao assunto da própria entrada da tabela
  • Não deve estar subordinado a, ou seguir, qualquer outra entrada que contenha uma cláusula OCCURS
  • Não deve conter uma cláusula OCCURS

data-name-2 não deve ter itens subordinados que contenham cláusulas OCCURS DEPENDING ON.

Quando a frase ASCENDING KEY ou DESCENDING KEY é especificada, as seguintes regras se aplicam:

  • As chaves devem ser listadas em ordem decrescente de significância.
  • O número total de chaves para um determinado elemento da tabela não deve exceder 12.
  • Os dados na tabela devem ser organizados em sequência ascendente ou descendente de acordo com a sequência de intercalação em uso.
  • The key must be described with one of the following usages:

    • BINARY
    • DISPLAY
    • DISPLAY-1
    • NATIONAL
    • PACKED-DECIMAL
    • COMPUTATIONAL
    • COMPUTATIONAL-1
    • COMPUTATIONAL-2
    • COMPUTATIONAL-3
    • COMPUTATIONAL-4
    • COMPUTATIONAL-5

  • Uma chave descrita com o uso NATIONAL pode ter uma das seguintes categorias: ponto flutuante nacional, editado nacional, editado numérico, numérico ou externo.
  • A soma dos comprimentos de todas as chaves associadas a um elemento da tabela não deve exceder 256.
  • Se uma chave for especificada sem qualificadores e não for um nome exclusivo, a chave será implicitamente qualificada com o assunto da cláusula OCCURS e todos os qualificadores do assunto da cláusula OCCURS.

O exemplo a seguir ilustra a especificação dos itens de dados ASCENDING KEY:

       WORKING-STORAGE SECTION.

       01  TABLE-RECORD.
           05  EMPLOYEE-TABLE OCCURS 100 TIMES
               ASCENDING KEY IS WAGE-RATE EMPLOYEE-NO
               INDEXED BY A, B.
             10  EMPLOYEE-NAME                     PIC X(20).
             10  EMPLOYEE-NO                       PIC 9(6).
             10  WAGE-RATE                         PIC 9999V99.
             10  WEEK-RECORD OCCURS 52 TIMES
                 ASCENDING KEY IS WEEK-NO INDEXED BY C.
               15  WEEK-NO                         PIC 99.
               15  AUTHORIZED-ABSENCES             PIC  9.
               15  UNAUTHORIZED-ABSENCES           PIC  9.
               15  LATE-ARRIVALS                   PIC  9.

As chaves para EMPLOYEE-TABLE estão subordinadas a essa entrada e a chave para WEEK-RECORD está subordinada a essa entrada subordinada.

No exemplo anterior, os registros em EMPLOYEE-TABLE devem ser organizados em ordem crescente de WAGE-RATE e em ordem crescente de EMPLOYEE-NO dentro de WAGE-RATE.
Os registros em WEEK-RECORD devem ser organizados em ordem crescente de WEEK-NO.
Caso contrário, os resultados de qualquer instrução SEARCH ALL são imprevisíveis.



© Copyright IBM Corp.