Enterprise COBOL for z/OS, V4.2, Language Reference
A cláusula REDEFINES permite usar diferentes entradas de descrição de dados para descrever a mesma área de armazenamento do computador.
(level-number, data-name-1 e FILLER não fazem parte da cláusula REDEFINES e são incluídos no formato apenas para fins de clareza.)
Quando especificada, a cláusula REDEFINES deve ser a primeira entrada a seguir data-name-1 ou FILLER.
Se data-name-1 ou FILLER não for especificado, a cláusula REDEFINES deverá ser a primeira entrada após o número do nível (level-number).
- data-name-1, FILLER
- Identifica uma descrição alternativa para a área de dados identificada por data-name-2; data-name-1 é o item de redefinição ou o assunto REDEFINES.
Nem data-name-1 nem nenhuma de suas entradas subordinadas podem conter uma cláusula VALUE.
- data-name-2
- Identifica o item redefinido ou o objeto REDEFINES.
A entrada de descrição de dados para data-name-2 pode conter uma cláusula REDEFINES.
A entrada de descrição de dados para data-name-2 não pode conter uma cláusula OCCURS.
No entanto, data-name-2 pode estar subordinado a um item cuja entrada de descrição de dados contenha uma cláusula OCCURS; nesse caso, a referência ao
data-name-2 na cláusula REDEFINES não deve ser subscrita.
Nem data-name-1 nem data-name-2 podem conter uma cláusula OCCURS DEPENDING ON.
data-name-1 e data-name-2 devem ter o mesmo nível na hierarquia; no entanto, os números dos níveis não precisam ser os mesmos.
Nem data-name-1 nem data-name-2 podem ser definidos com o número de nível 66 ou 88.
data-name-1 e data-name-2 podem ser descritos com qualquer uso.
A redefinição começa em data-name-1 e termina quando um número de nível menor ou igual ao de data-name-1 é encontrado.
Nenhuma entrada que possua um número de nível numericamente inferior ao data-name-1 e data-name-2 pode ocorrer entre essas entradas.
No exemplo a seguir:
05 A PICTURE X(6).
05 B REDEFINES A.
10 B-1 PICTURE X(2).
10 B-2 PICTURE 9(4).
05 C PICTURE 99V99.
A é o item a ser redefinido e B é o item redefinido.
A redefinição começa com B e inclui os dois itens subordinados B-1 e B-2.
A redefinição termina quando o item C de nível 05 é encontrado.
Se a cláusula GLOBAL for usada na entrada de descrição de dados que contém a cláusula REDEFINES, apenas data-name-1 (o item de redefinição) possui o atributo
global.
Por exemplo, na descrição a seguir, apenas o item B possui o atributo GLOBAL:
05 A PICTURE X(6).
05 B REDEFINES A GLOBAL PICTURE X(4).
A cláusula EXTERNAL não deve ser especificada na mesma entrada de descrição de dados que uma cláusula REDEFINES.
Se o item de dados redefinido (data-name-2) for declarado como um registro de dados externo, o tamanho do item de dados redefinido (data-name-1) não deverá
ser maior que o tamanho do item de dados redefinido.
Se o item de dados redefinido não for declarado como um registro de dados externo, não haverá essa restrição.
O exemplo a seguir mostra que o item redefinidor, B, pode ocupar mais armazenamento que o item redefinido, A.
O tamanho do armazenamento da cláusula REDEFINED é determinado em número de bytes.
O item A ocupa 6 bytes de armazenamento e o item B, um item de dados da categoria nacional, ocupa 8 bytes de armazenamento.
05 A PICTURE X(6).
05 B REDEFINES A GLOBAL PICTURE N(4).
Uma ou mais redefinições da mesma área de armazenamento são permitidas.
As entradas que fornecem as novas descrições da área de armazenamento devem seguir imediatamente a descrição da área redefinida sem entradas intermediárias que
definam novas posições de caracteres.
Várias redefinições podem, mas não precisam, todos usam o nome de dados da entrada original que definiu essa área de armazenamento.
Por exemplo:
05 A PICTURE 9999.
05 B REDEFINES A PICTURE 9V999.
05 C REDEFINES A PICTURE 99V99.
Além disso, várias redefinições podem usar o nome da definição anterior, conforme mostrado no exemplo a seguir:
05 A PICTURE 9999.
05 B REDEFINES A PICTURE 9V999.
05 C REDEFINES B PICTURE 99V99.
Quando mais de uma entrada de nível 01 é gravada subordinada a uma entrada FD, ocorre uma condição conhecida como redefinição implícita.
Ou seja, a segunda entrada de nível 01 redefine implicitamente o armazenamento alocado para a primeira entrada.
Nessas entradas de nível 01, a cláusula REDEFINES não deve ser especificada.
Quando o item de dados redefine implicitamente vários registros de nível 01 em uma entrada de descrição de arquivo (FD), os itens subordinados ao item redefinido
ou redefinido podem conter uma cláusula OCCURS DEPENDING ON.
Veja também - Clique na opção desejada:
© Copyright IBM Corp.