>

COBOL - DATA DIVISION - www.cadcobol.com.br




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

DATA DIVISION

A DATA DIVISION

é voltada única e exclusivamente à definição de estruturas de registros, variáveis e constantes do programa, ou seja, uma área de alocação de memória para todo o espaço necessário ao seu programa.

As duas principais seções são: a FILE SECTION e a WORKING-STORAGE SECTION.

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.



Estrutura da DATA DIVISION
FILE SECTION
define todos os arquivos de entrada e saída
FILE-DESCRIPTION - FD [ DESCRIÇÃO DOS REGISTROS ]
SORT-MERGE-FILE-DESCRIPTION - SD [ DESCRIÇÃO DOS REGISTROS ]

file-description-entry

  • Representa o mais alto nível de organização na FILE SECTION.
  • Ele fornece informações sobre a estrutura física e identificação de um arquivo e fornece os nomes de registro associados a esse arquivo.
  • Deve seguir o indicador de nível FD ou SD (SORT ou MERGE) e deve ser o mesmo que especificado na cláusula SELECT associada.

record-description-entry

  • Um conjunto de entradas de descrição de dados que descrevem os registros particulares contidos em um determinado arquivo.
  • Um registro na FILE SECTION deve ser descrito como um item de grupo alfanumérico, um item de grupo national ou um item de dados elementares de classe alfabética, alfanumérica, DBCS, national ou numérica.
  • Mais de um record-description-entry pode ser especificado; cada uma é uma descrição alternativa da mesma área de armazenamento de registros.
  • As áreas de dados descritas na FILE SECTION não estão disponíveis para processamento, a menos que o arquivo que contém a área de dados esteja aberto.
  • Um método FILE SECTION pode definir apenas arquivos externos.
  • Um único conector de arquivo de nível de unidade de execução é compartilhado por todos os programas e métodos que contêm uma definição de um determinado arquivo externo.

WORKING-STORAGE SECTION
Área para campos que não sejam parte da entrada e saída mas que serão exigidos no transcorrer do processamento. Incluem constantes, indicadores e áreas de trabalho.

Procure utilizar o mínimo de níveis 01 (zero hum) nesta seção, agrupando o máximo suas variáveis.

Os nomes associados a itens de grupo ou elementares devem respeitar as regras de formação de nomes de dados ou seja procure realmente colocar nomes significativos nestas variáveis.

Normalmente, WS- é usado como prefixo para indicar os campos definidos na WORKING-STORAGE SECTION.
[ 77-DESCRIÇÃO DO NÍVEL ]
WORKING-STORAGE SECTION [ CONSTANTES ]
[ DESCRIÇÃO DOS REGISTROS ]

LOCAL-STORAGE SECTION
Nesta seção procure definir todos os INCLUDE das tabelas (SQLCA, DCLGEN's) e seus CURSORES, faça um teste e veja se seu processamento não vai ficar mais rápido.

É semelhante à Working-Storage section.
A única diferença é que as variáveis aqui alocadas são inicializadas, automaticamente, sempre que um programa iniciar a execução.
[ 77-DESCRIÇÃO DO NÍVEL ]
LOCAL-STORAGE SECTION [ CONSTANTES ]
[ DESCRIÇÃO DOS REGISTROS ]

LINKAGE-STORAGE SECTION
Descreve os parâmetros formais de entrada e de retorno de dados

Qualquer cláusula de descrição de dados pode ser usada para descrever itens na LINKAGE SECTION com as seguintes exceções:
  • Você não pode especificar a cláusula VALUE para itens que não sejam itens de nível 88.
  • Não é possível especificar a cláusula EXTERNAL.
  • Você pode especificar a cláusula GLOBAL na LINKAGE SECTION.
  • No entanto, a cláusula GLOBAL não tem efeito para os métodos.
[ 77-DESCRIÇÃO DO NÍVEL ]
LINKAGE-STORAGE SECTION [ CONSTANTES ]
[ DESCRIÇÃO DOS REGISTROS ]

COMMUNICATION SECTION
Esta seção iremos dar mais detalhes futuramente
[ DESCRIÇÃO DA COMUNICAÇÃO ]
COMMUNICATION SECTION [ CONSTANTES ]
[ DESCRIÇÃO DOS REGISTROS ]

REPORT SECTION
Descreve os relatórios a serem gerados. A descrição de cada relatório começa com um RD (REPORT DESCRIPTION) e é seguido por um ou mais grupo de descrição dos mesmos
[ DESCRIÇÃO DO RELATÓRIO ]
REPORT SECTION [ CONSTANTES ]
[ DESCRIÇÃO DO GRUPO DE RELATÓRIO ]


SCREEN SECTION
Descreve as telas a serem exibidas durante a execução do programa
SCREEN SECTION [ CONSTANTES ]
[ DESCRIÇÃO DAS TELAS ]