1
resposta

Não entendi o que faz o REDEFINES

Simplesmente não entendi ao certo como funciona o REDEFINES. Poderiam explicar melhor a sua função?

1 resposta

Rodrigo,

O redefines é utilizado para redefinir um campo com uma configuração diferente da original. Importante: O campo redefinido não pode ser maior que o original. Ambos devem ter o mesmo número de nível. Entre eles não pode haver a definição de outro campo com número de nível menor ou igual ao deles.

Exemplo

03 WS-ANO PIC X(36) VALUE ‘JANFEVMARABRMAIJUNJULAGOSETOUTNOVDEZ’. /// A variavel WS-ANO tem 36 posicoes ocupadas, onde de tres em tres estãos os meses do ano.

03 FILLER REDEFINES WS-ANO. 05 WS-MESES PIC X(03) OCCURS 12 TIMES. /// A variavel WS-MESES terá 12 ocorrencias, onde cada uma terá o tamanho de 03 posicoes e irá herdar o conjunto de tres em tres da variavel WS-ANO

Então , WS-MESES(02) terá o valor FEV

Supondo que o seu programa busca no sistema o mes atual, o mesmo vira em formato de numero. Considere que estamos em Maio e voltou 05. Então WS-MESES(mes-recebidodo sistema) trará MAI.

Obs:

  • No campo redefinido não é permitido o uso da cláusula VALUE ou OCCURS. No caso WS_MESES.
  • Não é permitido redefinir um campo de nível 77 ou 88.
  • São permitidas múltiplas redefinições de um mesmo campo. No caso podemos redefir o WS-ANO varias vezes; Ex: 03 FILLER REDEFINES WS-ANO.
       05  WS-SEMESTRE     PIC X(18) OCCURS 02 TIMES.
  • Campos subordinados a um campo redefinido podem ter a cláusula OCCURS.

Blz ? Ivan