COBOL - DATA DIVISION - Reference modification



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

COBOL - DATA DIVISION - Reference modification
Enterprise COBOL for z/OS, V4.2, Language Reference

A modificação de referência define um item de dados especificando um caractere mais à esquerda e um comprimento opcional para o item de dados.

data-name-1
Deve fazer referência a um item de dados descrito explícita ou implicitamente com o uso DISPLAY, DISPLAY-1 ou NATIONAL.
Um item de grupo nacional é processado como um item de dados elementar da categoria nacional.

data-name-1 pode ser qualificado ou inscrito.
data-name-1 não pode ser um campo de data em janela.

function-name-1
Deve fazer referência a uma função alfanumérica ou nacional.

leftmost-character-position
Deve ser uma expressão aritmética.
A avaliação da posição do caractere mais à esquerda deve resultar em um número inteiro positivo diferente de zero que seja menor ou igual ao número de caracteres no item de dados referenciado por data-name-1.

A avaliação da posição do caractere mais à esquerda não deve resultar em um campo de data em janela.

length
Deve ser uma expressão aritmética.

A avaliação do comprimento deve resultar em um número inteiro diferente de zero positivo.

A avaliação do comprimento não deve resultar em um campo de data em janela.

A soma da leftmost-character-position menos o valor 1 deve ser menor ou igual ao número de posições de caracteres no data-name-1.
Se o comprimento for omitido, o comprimento usado será igual ao número de posições de caracteres em data-name-1 mais 1, menos a leftmost-character-position.

Para usos DISPLAY-1 e NATIONAL, cada posição de caractere ocupa 2 bytes.
A modificação de referência opera em posições inteiras dos caracteres e não nos bytes individuais dos caracteres nos usos DISPLAY-1 e NATIONAL.
Para o uso do DISPLAY, a modificação de referência opera como se cada caractere fosse um caractere de byte único.

A menos que especificado de outra forma, a modificação de referência é permitida em qualquer lugar em que seja permitido um identificador ou identificador de função que faça referência a um item ou função de dados com o mesmo uso que o item de dados modificado por referência.

Cada posição de caractere referenciada por data-name-1 ou function-name-1 recebe um número ordinal incrementado em um da posição mais à esquerda para a posição mais à direita.
A posição mais à esquerda recebe o número ordinal um.
Se a entrada de descrição de dados para data-name-1 contiver uma cláusula SIGN IS SEPARATE, a posição do sinal receberá um número ordinal dentro desse item de dados.

Se o data-name-1 for descrito com o uso DISPLAY e o ponto flutuante externo numérico, editado numérico, alfabético, editado alfanumérico ou externo, o data-name-1 será operado para fins de modificação de referência, como se tivesse sido redefinido como um item de dados da categoria alfanumérica com o mesmo tamanho que o item de dados referenciado por data-name-1.

Se data-name-1 for descrito com o uso de NATIONAL e categoria numérico, edição numérica, edição nacional ou ponto flutuante externo, data-name-1 será operado para fins de modificação de referência, como se fosse redefinido como um dado. item da categoria nacional com o mesmo tamanho que o item de dados referenciado por data-name-1.

Se data-name-1 for um item de grupo nacional, data-name-1 será processado como um item de dados elementar da categoria national.

Se data-name-1 for um campo de data expandida, o resultado da modificação de referência será uma não data.

A modificação de referência cria um item de dados exclusivo que é um subconjunto de data-name-1 ou um subconjunto do valor referenciado pela function-name-1 e seus argumentos, se houver.
Este item de dados exclusivo é considerado um item de dados elementar sem a cláusula JUSTIFIED.

Quando uma função é modificada por referência, o item de dados exclusivo possui classe, categoria e uso nacional se o tipo da função for nacional; caso contrário, ele terá exibição alfanumérica e de uso de classe e categoria.

Quando data-name-1 é modificado por referência, o item de dados exclusivo tem a mesma classe, categoria e uso definidos para o item de dados referenciado por data-name-1, exceto pelo seguinte:

  • Se data-name-1 tiver a categoria editada nacionalmente, o item de dados exclusivo terá a categoria nacional.
  • Se data-name-1 tiver uso NATIONAL e categoria editada numérica, numérica ou ponto flutuante externo, o item de dados exclusivo terá a categoria nacional.
  • Se data-name-1 tiver uso DISPLAY, e categoria flutuante, edição alfanumérica, número alfanumérico ou externo, o item de dados exclusivo terá a categoria alfanumérica.
  • Se data-name-1 referenciar um item de grupo alfanumérico, o item de dados exclusivo será considerado como tendo DISPLAY e categoria alfanumérica.
  • Se data-name-1 fizer referência a um item de grupo nacional, o item de dados exclusivo utilizará NATIONAL e categoria national.

Se o comprimento não for especificado, o item de dados exclusivo criado se estenderá e incluirá a posição do caractere identificado pela leftmost-character-position até a posição de caractere mais à direita do item de dados referenciado pelo data-name-1.

Evaluation of operands - Avaliação de operandos

A modificação de referência para um operando é avaliada da seguinte maneira:

  • Se a subscrição for especificada para o operando, a modificação da referência será avaliada imediatamente após a avaliação do subscrito.
  • Se a subscrição não for especificada para o operando, a modificação de referência será avaliada no momento em que a subscrição seria avaliada se os subscritos tivessem sido especificados.

Reference modification examples - Exemplos de modificação de referência

A instrução a seguir transfere os 10 primeiros caracteres do item de dados referenciado por WHOLE-NAME para o item de dados referenciado por FIRST-NAME.


       77  WHOLE-NAME  PIC X(25).
       77  FIRST-NAME  PIC X(10).
       ...
           MOVE WHOLE-NAME(1:10) TO FIRST-NAME.

A instrução a seguir transfere os últimos 15 caracteres do item de dados referenciado por WHOLE-NAME para o item de dados referenciado por LAST-NAME.


       77  WHOLE-NAME  PIC X(25).
       77  LAST-NAME   PIC X(15).
       ...
           MOVE WHOLE-NAME(11:) TO LAST-NAME.

A instrução a seguir transfere o quarto e o quinto caracteres da terceira ocorrência de TAB para a variável SUFFIX.


       01  TABLE-1.
           02  TAB  OCCURS 10 TIMES  PICTURE X(5).

       77  SUFFIX                    PICTURE X(2).
       ...
           MOVE TAB OF TABLE-1 (3) (4:2) TO SUFFIX.


© Copyright IBM Corp.