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.