Enterprise COBOL for z/OS, V4.2, Language Reference
A subscrição é um método de fornecer referências de tabela através do uso de subscritos.
Um subscrito é um número inteiro positivo cujo valor especifica o número de ocorrência de um elemento da tabela.
- condition-name-1
- A variável condicional para o condition-name-1 deve conter uma cláusula OCCURS ou deve estar subordinada a uma entrada de descrição de dados que contém uma
cláusula OCCURS.
- data-name-1
- Deve conter uma cláusula OCCURS ou deve estar subordinado a uma entrada de descrição de dados que contém uma cláusula OCCURS.
- data-name-2, file-name-1
- Deve nomear itens de dados ou registros que contenham data-name-1.
- integer-1
- Pode ser com sinal. Se com sinal, deve ser positivo.
- data-name-3
- Deve ser um item elementar numérico que representa um número inteiro.
data-name-3 pode ser qualificado.
data-name-3 não pode ser um campo de data em janela.
- index-name-1
- Corresponde a uma entrada de descrição de dados na hierarquia da tabela que está sendo referenciada que contém uma frase INDEXED BY que especifica esse nome.
- integer-2, integer-3
- Não pode conter sinal.
Os subscritos, entre parênteses, são gravados imediatamente após qualquer qualificação para o nome do elemento da tabela.
O número de subscritos nessa referência deve ser igual ao número de dimensões na tabela cujo elemento está sendo referenciado.
Ou seja, deve haver um subscrito para cada cláusula OCCURS na hierarquia que contém o nome dos dados, incluindo o próprio nome dos dados.
Quando mais de um subscrito é necessário, eles são gravados na ordem das dimensões sucessivamente menos inclusivas da organização de dados.
Se uma tabela multidimensional for considerada uma série de tabelas aninhadas e a tabela mais inclusiva ou mais externa do ninho for considerada a tabela
principal, com a tabela mais interna ou menos inclusiva sendo a tabela menor, os subscritos serão gravados da esquerda para a direita na ordem principal,
intermediária e secundária.
Por exemplo, se TABLE-THREE estiver definido como:
For example, if TABLE-THREE is defined as:
01 TABLE-THREE.
05 ELEMENT-ONE OCCURS 3 TIMES.
10 ELEMENT-TWO OCCURS 3 TIMES.
15 ELEMENT-THREE OCCURS 2 TIMES PIC X(8).
uma referência subscrita válida para TABLE-THREE é:
ELEMENT-THREE (2 2 1)
Referências subscritas também podem ser modificadas por referência.
Veja o terceiro exemplo em Reference modification examples.
Uma referência a um item não deve ser subscrita, a menos que o item seja um elemento da tabela ou um nome de item ou condição associado a um elemento da tabela.
Cada referência de elemento da tabela deve ser subscrita, exceto quando essa referência aparecer:
- Em uma instrução USE FOR DEBUGGING
- Como assunto de uma declaração SEARCH
- Numa cláusula REDEFINES
- Na KEY é a frase de uma cláusula OCCURS
O número de ocorrência mais baixo permitido, representado por um subscrito, é 1.
O número de ocorrência mais alto permitido em qualquer caso específico é o número máximo de ocorrências do item, conforme especificado na cláusula OCCURS.
Subscripting using data-names
Quando um nome de dados é usado para representar um subscrito, ele pode ser usado para fazer referência a itens em diferentes tabelas.
Essas tabelas não precisam ter elementos do mesmo tamanho.
O mesmo nome de dados pode aparecer como o único subscrito com um item e como um dos dois ou mais subscritos com outro item.
Um subscrito de nome de dados pode ser qualificado; não pode ser subscrito ou indexado.
Por exemplo, referências válidas e subscritas para TABLE-THREE, assumindo que SUB1, SUB2 e SUB3 são todos itens subordinados a SUBSCRIPT-ITEM, incluem:
ELEMENT-THREE (SUB1 SUB2 SUB3)
ELEMENT-THREE IN TABLE-THREE (SUB1 OF SUBSCRIPT-ITEM,
SUB2 OF SUBSCRIPT-ITEM, SUB3 OF SUBSCRIPT-ITEM)
Subscripting using index-names (indexing)
A indexação permite operações como pesquisar em tabela e manipular itens específicos.
Para usar a indexação, você associa um ou mais nomes de índice a um item cuja entrada de descrição de dados contém uma cláusula OCCURS.
Um índice associado a um nome de índice atua como um subscrito e seu valor corresponde a um número de ocorrência para o item ao qual o nome de índice está associado.
A frase INDEXED BY, pela qual o nome do índice é identificado e associado à sua tabela, é uma parte opcional da cláusula OCCURS.
Não há entrada separada para descrever o índice associado ao nome do índice.
No tempo de execução, o conteúdo do índice corresponde a um número de ocorrência para a dimensão específica da tabela à qual o índice está associado.
O valor inicial de um índice em tempo de execução é indefinido e o índice deve ser inicializado antes de ser usado como um subscrito.
Um valor inicial é atribuído a um índice com um dos seguintes:
- A instrução PERFORM com a frase VARYING
- A instrução SEARCH com a frase ALL
- A instrução SET
O uso de um número inteiro ou nome de dados como um subscrito que faça referência a um elemento da tabela ou a um item dentro de um elemento da tabela não causa
a alteração de nenhum índice associado a essa tabela.
Um nome de índice pode ser usado para fazer referência a qualquer tabela.
No entanto, o comprimento do elemento da tabela que está sendo referenciada e da tabela à qual o nome do índice está associado deve corresponder.
Caso contrário, a referência não será para o mesmo elemento da tabela em cada tabela e você poderá obter erros de tempo de execução.
Os dados organizados na forma de uma tabela são frequentemente pesquisados.
A instrução SEARCH fornece recursos para a produção de pesquisas em série e não seriais.
É usado para procurar um elemento da tabela que atenda a uma condição específica e para ajustar o valor do índice associado para indicar esse elemento da tabela.
Para ser válido durante a execução, um valor de índice deve corresponder a uma ocorrência de elemento de tabela que não seja menor que um, nem maior que o número
de ocorrência mais alto permitido.
Para obter mais informações sobre nomes de índices, consulte
Index-name and INDEXED BY phrase.
Relative subscripting
Na assinatura relativa, o nome de um elemento da tabela é seguido por um subscrito do formulário data-name ou index-name seguido pelo operador + ou - e um literal
inteiro positivo ou não assinado.
Os operadores + e - devem ser precedidos e seguidos por um espaço.
O valor do subscrito usado é o mesmo que se o nome do índice ou o nome dos dados tivesse sido configurado ou diminuído pelo valor do número inteiro.
O uso da indexação relativa não faz com que o programa altere o valor do índice.
© Copyright IBM Corp.