COBOL - DATA DIVISION - data description entry - OCCURS DEPENDING ON clause



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

COBOL - DATA DIVISION - data description entry - OCCURS DEPENDING ON clause
Enterprise COBOL for z/OS, V4.2, Language Reference

A cláusula OCCURS DEPENDING ON especifica tabelas de tamanho variável.

data-name-1
Identifica o objeto da cláusula OCCURS DEPENDING ON; ou seja, o item de dados cujo valor atual representa o número atual de ocorrências do item em questão.
O conteúdo dos itens cujos números de ocorrência excedem o valor do objeto é indefinido.

O objeto da cláusula OCCURS DEPENDING ON (data-name-1) deve descrever um item de dados inteiro.
O objeto não pode ser um campo de data em janela.

O objeto da cláusula OCCURS DEPENDING ON não deve ocupar nenhuma posição de armazenamento dentro do intervalo da tabela (ou seja, qualquer posição de armazenamento da posição do primeiro caractere na tabela até a posição do último caractere na tabela).

O objeto da cláusula OCCURS DEPENDING ON não pode ser localizado de forma variável; o objeto não pode seguir um item que contém uma cláusula OCCURS DEPENDING ON.

Se a cláusula OCCURS for especificada em uma entrada de descrição de dados incluída em uma entrada de descrição de registro que contenha a cláusula EXTERNAL, data-name-1, se especificado, deverá fazer referência a um item de dados que possua o atributo externo.
data-name-1 deve ser descrito na mesma divisão de dados que o assunto da entrada.

Se a cláusula OCCURS for especificada em uma entrada de descrição de dados subordinada a uma que contenha a cláusula GLOBAL, data-name-1, se especificado, deverá ser um nome global.
data-name-1 deve ser descrito na mesma DATA DIVISION que o assunto da entrada.

Todos os nomes de dados usados ??na cláusula OCCURS podem ser qualificados; eles não podem ser subscritos ou indexados.

No momento em que o item de grupo ou qualquer item de dados que contém um item OCCURS DEPENDING ON subordinado ou que segue, mas não está subordinado ao item OCCURS DEPENDING ON, é referenciado, o valor do objeto da cláusula OCCURS DEPENDING ON deve cair dentro do intervalo integer-1 a integer-2.

Quando um item de grupo que contém um item OCCURS DEPENDING ON subordinado é mencionado, a parte da área da tabela usada na operação é determinada da seguinte maneira:

  • Se o objeto estiver fora do grupo, apenas a parte da área da tabela especificada pelo objeto no início da operação será usada.
  • Se o objeto for incluído no mesmo grupo e o item de dados do grupo for referenciado como um item de envio, apenas a parte da área da tabela especificada pelo valor do objeto no início da operação será usada na operação.
  • Se o objeto for incluído no mesmo grupo e o item de dados do grupo for referenciado como um item de recebimento, o comprimento máximo do item de grupo será usado na operação.

As seguintes instruções são afetadas pela regra de comprimento máximo:

  • ACCEPT identifier (format 1 and 2)
  • CALL ... USING BY REFERENCE identifier
  • INVOKE ... USING BY REFERENCE identifier
  • MOVE ... TO identifier
  • READ ... INTO identifier
  • RELEASE identifier FROM ...
  • RETURN ... INTO identifier
  • REWRITE identifier FROM ...
  • STRING ... INTO identifier
  • UNSTRING ... INTO identifier DELIMITER IN identifier
  • WRITE identifier FROM ...

Se um item de grupo de comprimento variável não for seguido por um item não subordinado, o comprimento máximo do grupo será usado quando ele aparecer como o identificador no identificador CALL ... USING BY REFERENCE.
Portanto, o objeto da cláusula OCCURS DEPENDING ON não precisa ser definido, a menos que o grupo esteja localizado de forma variável.

Se o item de grupo for seguido por um item não subordinado, o comprimento real, em vez do comprimento máximo, será usado.
No momento em que o assunto da entrada é referenciado ou qualquer item de dados subordinado ou superordenado ao assunto da entrada é referenciado, o objeto da cláusula OCCURS DEPENDING ON deve estar dentro do intervalo integer-1 a integer-2.

Certos usos da cláusula OCCURS DEPENDING ON resultam em itens complexos de OCCURS DEPENDING ON (ODO).
Os itens a seguir constituem itens ODO complexos:

  • Um item de dados descrito com uma cláusula OCCURS DEPENDING ON que é seguido por um item de dados elementar não subordinado, descrito com ou sem uma cláusula OCCURS
  • Um item de dados descrito com uma cláusula OCCURS DEPENDING ON que é seguida por um item de grupo não subordinado
  • Um item de grupo que contém um ou mais itens subordinados descritos com uma cláusula OCCURS DEPENDING ON
  • Um item de dados descrito com uma cláusula OCCURS ou uma cláusula OCCURS DEPENDING ON que contém um item de dados subordinado descrito com uma cláusula OCCURS DEPENDING ON (uma tabela que contém elementos de comprimento variável)
  • Um nome de índice associado a uma tabela que contém elementos de comprimento variável

O objeto de uma cláusula OCCURS DEPENDING ON não pode ser um item não subordinado que segue um item ODO complexo.

Qualquer item não subordinado que segue um item descrito com uma cláusula OCCURS DEPENDING ON é um item localizado de maneira variável.
Ou seja, sua localização é afetada pelo valor do objeto OCCURS DEPENDING ON.

Quando a redefinição implícita é usada em uma entrada Descrição do Arquivo (FD), os itens de nível subordinado podem conter cláusulas OCCURS DEPENDING ON.

A frase INDEXED BY pode ser especificada para uma tabela que possui um item subordinado que contém uma cláusula OCCURS DEPENDING ON.

A frase ASCENDING KEY, a frase DESCENDING KEY e a cláusula INDEXED BY são descritas Fixed-length tables.



© Copyright IBM Corp.