COBOL - DATA DIVISION - data description entry - Level-numbers



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

COBOL - DATA DIVISION - data description entry - Level-numbers
Enterprise COBOL for z/OS, V4.2, Language Reference

O número do nível especifica a hierarquia de dados em um registro e identifica entradas de dados para fins especiais.
Um número de nível inicia uma data description entry (entrada de descrição de dados), um item renomeado ou redefinido ou uma entrada de condition-name (nome de condição).
Um número de nível tem um valor inteiro entre 1 e 49, inclusive, ou um dos valores especiais de level-number (número de nível) 66, 77 ou 88.

level-number
01 e 77 devem começar na Área A e ser seguidos por um período separador ou por um espaço seguido por seu data-name (nome de dados) associado, FILLER ou cláusula de descrição de dados apropriada.

Os números de nível 02 a 49 podem começar nas áreas A ou B e devem ser seguidos por um espaço ou um período separador.

Os números de nível 66 e 88 podem começar nas áreas A ou B e devem ser seguidos por um espaço.

Os Single-digit level-numbers (números de nível de um dígito) 1 a 9 podem ser substituídos pelos números de nível 01 a 09.

Entradas sucessivas de descrição de dados podem começar na mesma coluna que a primeira entrada ou podem ser recuadas de acordo com o número do nível.
O recuo não afeta a magnitude de um level-number (número de nível).

Quando os level-numbers (números de nível) são recuados, cada novo número de nível pode começar qualquer número de espaços à direita da Área A.
A extensão da indentação à direita é limitada apenas pela largura da Área B.

Para mais informações, consulte Levels of data - Níveis de dados.

data-name-1
Identifica explicitamente os dados que estão sendo descritos.

data-name-1, se especificado, identifica um item de dados usado no programa.
data-name-1 deve ser a primeira palavra após o número do nível.

O item de dados pode ser alterado durante a execução do programa.

data-name-1 deve ser especificado para os itens de nível 66 e 88.
Também deve ser especificado para qualquer entrada que contenha a cláusula GLOBAL ou EXTERNAL e para as entradas de descrição de registro associadas às entradas de descrição de arquivo que possuem as cláusulas GLOBAL ou EXTERNAL.

FILLER
Um item de dados que não é mencionado explicitamente em um programa.
A palavra-chave FILLER é opcional.A palavra-chave FILLER pode ser usada com uma variável condicional se nunca for feita referência explícita à variável condicional, mas apenas aos valores que ela pode assumir.
O FILLER não pode ser usado com um condition-name (nome de condição).

Em uma instrução MOVE CORRESPONDING ou ADD CORRESPONDING ou SUBTRACT CORRESPONDING, os itens FILLER são ignorados.
Em uma instrução INITIALIZE, itens elementares do FILLER são ignorados.

Se o data-name-1 ou a cláusula FILLER for omitida, o item de dados descrito será tratado como se o FILLER tivesse sido especificado.

Níveis de dados em uma entrada de descrição de registro (record-description-entry)

Cada grupo e item elementar em uma gravação requer uma entrada separada, e cada um deve receber um número de nível.
Um número de nível é um inteiro de um ou dois dígitos entre 01 e 49, ou um dos três números de nível especiais: 66, 77 ou 88.

Os seguintes números de nível são usados para estruturar registros:

  • 01
    Esse nível - O número especifica a própria gravação, e é o número de nível mais inclusivo possível.
    Uma entrada de nível 01 pode ser um item de grupo alfanumérico, um item de grupo nacional ou um item elementar.
    O número de nível deve começar na Área A.
  • 02 a 49
    Estes números de nível especificam itens de grupo e elementos elementares dentro de um registro.
    Eles podem começar na Área A ou Área B.
    Os itens de dados menos inclusivos recebem números de nível superiores (não necessariamente consecutivos) nesta série.
    A relação entre números de nível dentro de um item de grupo define a hierarquia de dados dentro desse grupo.

    Um item de grupo inclui todos os itens grupais e elementares que o seguem até um número de nível menor ou igual ao número de nível desse grupo que é encontrado.
      ******************************************************************
      * COBOL DECLARATION FOR TABLE CAD.ARQUIVO                        *
      ******************************************************************

       01  CAD-ARQUIVO.                                                    
           10  NU-MATRICULA         PIC S9(16)V     USAGE COMP-3.            
           10  CODIGO-IDENT         PIC X(16).                           
           10  NU-CPF-CNPJ          PIC S9(14)V     USAGE COMP-3.            
           10  SIGLA-SIT            PIC X(4).                            
           10  NU-FAIXA             PIC S9(4)       USAGE COMP.                
           10  TS-PARAMETRO         PIC X(26).                           
           10  CO-TIPO              PIC X(1).                            
           10  TS-INCLUSAO          PIC X(26).                           
           10  VALOR-DOCUMENTO      PIC S9(16)V9(2) USAGE COMP-3.        
           10  QT-DIA-PRAZO         PIC S9(4)       USAGE COMP.                
           10  DESCRICAO.                                            
               49 DESCRICAO-PROCURACAO-LEN                                      
                                    PIC S9(4)       USAGE COMP.                                  
               49 DESCRICAO-PROCURACAO-TEXT                                     
                                    PIC X(500).                                            
           10  DATA-EMISSAO         PIC X(10).                           
           10  DATA-VENCIMENTO      PIC X(10).                           

Números de nível especiais identificam itens que não estruturam um registro.

Os números de nível especiais são:

  • 66 Identifica itens que devem conter uma cláusula RENAMES; esses itens agrupam itens de dados previamente definidos.
           01  REGISTRO.
               03 RUA                  PIC X(25).
               03 NUM                  PIC 9(05).
               03 APTO                 PIC 9(04).
               03 BAIRRO               PIC X(15).
               03 CIDADE               PIC X(25).
               03 ESTADO               PIC A(02).
               03 CEP                  PIC 9(08).
           66  ENDERECO                RENAMES RUA      THRU APTO.
           66  CIDADE-ESTADO           RENAMES CIDADE   THRU ESTADO.
           66  BAIRRO-CIDADE           RENAMES BAIRRO   THRU CIDADE.
           66  NUMERO                  RENAMES NUM.
           66  IND-COMPLETO            RENAMES RUA      THRU CEP.
           66  END-QUASE               RENAMES ENDERECO THRU CIDADE-ESTADO.
    
  • 77 Identifica as entradas de descrição do item de dados que são itens independentes de WORKING-STORAGE, LOCAL-STORAGE ou LINKAGE SECTION ;
    eles não são subdivisões de outros itens e não estão subdivididos.
    Os itens de nível 77 devem começar na área A.
           77  ANTERIOR                PIC S9(04) VALUE -1.
           77  ATUAL                   PIC S9(04) VALUE  1.
           77  PROXIMO                 PIC S9(04).
    

  • 88 Identifica qualquer entrada de condição-nome associada a um valor específico de uma variável condicional.
           01  REGISTRO
               03  NOME                PIC A(36).
               03  SEXO                PIC A(01).
                   88  SEXO-VALIDO     VALUE "M" "F".
          * Campo do nível 88 está associado ao ÚLTIMO campo declarado:
    
               03  CEP                 PIC 9(8).
                   88  CEP-VALIDO      VALUE 90000000 THRU 99000000.
    
               03  CONCEITO            PIC A(01).
                   88  CONC            VALUE "A" "B" "C" "D" "E".
                   88  CONC-2          VALUE "A" "THRU "E".
    
               03  ESTADO              PIC A(02).
                   88  EST-VALIDO      VALUE "AC" "AL" "AM" "AP" "BA" "CE"    
                                             "DF" "ES" "GO" "MA" "MG" "MS"
                                             "MT" "PA" "PB" "PE" "PI" "PR"   
                                             "RJ" "RO" "RN" "RR" "RS" "SC" 
                                             "SE" "SP" "TO".   
    
               03  NIVEL-RISCO         PIC A(01).
                   88  N-RISCO-VALIDO  VALUE "A" THRU "H".
    
               03  FONE                PIC X(08).
                   88  FONE-CELULAR    VALUE "80000000" THRU "99999999".
                   88  FONE-FIXO       VALUE "20000000" THRU "79999999".
    
               03  ESCOLARIDADE        PIC 9(02).
                   88  ESCOL-VALIDO    VALUE 01 THRU 12.
    
               03  ESTADO-CIVIL        PIC 9(02).
                   88  E-CIVIL-VALIDO  VALUE 01 THRU 08.
    
          * ESCOLARIDADE (ESCOL-VALIDO)
          * 01 = Analfabeto                      
          * 02 = Ensino Fundamental incompleto
          * 03 = Ensino Fundamental completo 
          * 04 = Ensino Médio incompleto
          * 05 = Ensino Médio completo
          * 06 = Técnico
          * 07 = Superior incompleto
          * 08 = Superior completo
          * 09 = Especialização
          * 10 = Mestrado
          * 11 = Doutorado(=PhD)
          * 12 = Pós-doutorado
    
          * ESTADO CIVIL (E-CIVIL-VALIDO)
          * 01 = Solteiro
          * 02 = Casado
          * 03 = Viúvo
          * 04 = Desquitado
          * 05 = Divorciado
          * 06 = Separado
          * 07 = Amasiado
          * 08 = Outros
    
          * Depois, o teste fica super simples:
    
               IF  SEXO-VALIDO ...
    
               IF  CEP-VALIDO ...
    
               IF  CONC ...
    
               IF  CONC-2 ...
    
               IF  EST-VALIDO ...
    
               IF  N-RISCO-VALIDO ...
    
               IF  FONE-CELULAR ...
    
               IF  FONE-FIXO ...
    
               IF  ESCOL-VALIDO ...
    
               IF  E-CIVIL-VALIDO ...  
    

As entradas de nível 77 e nível 01 na seção WORKING-STORAGE, LOCAL-STORAGE ou LINKAGE SECTION que são referenciadas em um programa ou método devem receber nomes de dados exclusivos porque as entradas do nível 77 e do nível 01 não podem ser qualificadas.

Os nomes de dados subordinados que são referenciados no programa ou no método devem ser definidos de forma exclusiva ou feitos de forma única através da qualificação.
Os nomes de dados não referenciados não precisam ser definidos de forma exclusiva.

FILLER
Um item de dados que não é explicitamente referido em um programa.
A palavra-chave FILLER é opcional.
Se especificado, FILLER deve ser a primeira palavra que segue o número de nível.
A palavra-chave FILLER pode ser usada com uma variável condicional se a referência explícita nunca for feita para a variável condicional, mas apenas para os valores que ela pode assumir.
FILLER não pode ser usado com um nome de condição.

Em uma declaração MOVE CORRESPONDING ou em uma instrução ADD CORRESPONDING ou SUBTRACT CORRESPONDING, os itens FILLER são ignorados.
Em uma instrução INITIALIZE, os itens elementares FILLER são ignorados.

Se o nome do campo ou a cláusula FILLER forem omitidos, o item de dados que está sendo descrito é tratado como se FULLER tivesse sido especificado.



© Copyright IBM Corp.