Neste artigo, tentaremos entender a redefinência de COBOL. Isso é usado para explicar o mesmo armazenamento de campo de várias maneiras.
Isso significa que a definição e a redefinição do campo se referem aos mesmos bytes de armazenamento. Redefines de COBOL não podem ter uma cláusula de valor e não pode ser usada no nível 1 na seção de arquivo ou relatório.
O fundamental da cláusula de redefinição
Você escreve um programa para gerar um relatório e sabe que o relatório tem três seções diferentes. A primeira seção é o cabeçalho, a segunda seção é o registro de detalhes e a terceira seção é o trailer. Existem duas maneiras pelas quais você pode definir a estrutura em seu programa. O primeiro é definir cada seção na seção de divisão de arquivos ou pode estar em sua seção de armazenamento de trabalho. Outra opção é que você pode definir os 132 bytes para o seu registro de cabeçalho. Da mesma forma, você pode redefinir o registro de detalhes e o registro do trailer novamente.
Em resumo, você pode usar a cláusula de redefinição para se referir ao mesmo local de memória. Se você quiser escrever no cabeçalho, mova os registros para os arquivos de cabeçalho específicos e você pode escrever esse relatório. Você está se referindo ao mesmo local de memória para os mesmos bytes de armazenamento que são 132 bytes.
Detalhes da sintaxe:
Alguns exemplos de redefinir de COBOL
Exemplo 1:
Divisão de Identificação.
Programa-ID. redefinir.
Divisão de dados.
Seção de arquivo.
Seção de armazenamento de trabalho.
01 WS-REDEFINES-EX.
05 PIC 9 (08) Valor "2020717".
05 WS-CURR-DTE REDEFENS.
10 cc pic 9 (02).
10 yy pic 9 (02).
10 mm Pic 9 (02).
10 DD Pic 9 (02).
Divisão de procedimentos.
A000-K-Seção.
Exibir "date ws-todays:" ws-todays-data.
Exibir "ws-curr-dte:" ws-curr-dte.
Pare de corrida.
Saída:
Papan@papan -virtualbox: ~/desktop/pp/novo $ cobc -xjf um.cbl
um.CBL: 11: Aviso: o valor numérico é esperado
WS-Todays-data: 2020717
WS-CURR-DTE: 2020717
Papan@papan-virtualbox: ~/desktop/pp/novo $
Explicação:
Neste exemplo, redefinimos a data de hoje na data atual, que é na verdade uma variável de grupo de século, ano, mês e dia. Na verdade, dividimos a data de hoje em quatro campos diferentes. Portanto, a primeira linha é definir o nível número 05, que é uma variável chamada data de hoje e o tamanho da variável é 9 de 8. Agora, a data atual é a nova variável que é realmente a redefinição da data de hoje e do grupo de quatro campos. O tamanho combinado de todos os campos é de 8 bytes.
Exemplo 2:
Divisão de Identificação.
Programa-ID. FUNCIONÁRIO.
Divisão de dados.
Seção de arquivo.
Seção de armazenamento de trabalho.
01 EMP-REC.
05 EMP-REC-LY PIC X (30) Valor "David Martinez Gomes".
05 EMP-NAME-DTL REDEFENS.
10 PIC EMP-FNAME PIC X (15).
10 EMP-Lname Pic X (15).
05 EMP-DPT-NAME REDEFINAS EMP-REC-LY.
10 Emp-dpt pic x (10).
10 PIC EMP-ADD PIC X (15).
Divisão de procedimentos.
A000-K-Seção.
Exibir "emp-rec-ly:" EMP-REC-LY.
Exibir "EMP-NAME-DTL:" EMP-NAME-DTL.
Exibir "EMP-FNAME:" EMP-FNAME.
Exibir "EMP-Lname:" EMP-Lname.
Exibir "EMP-DPT-NAME:" EMP-DPT-NAME.
Exibir "emp-add:" emp-add.
Pare de corrida.
Saída:
Papan@papan -virtualbox: ~/desktop/pp/novo $ cobc -xjf dois.cbl
EMP-REC-LY: David Martinez Gomes
EMP-NAME-DTL: David Martinez Gomes
EMP-FNAME: David Martinez
EMP-Lname: Gomes
EMP-DPT-NAME: David Martinez Gomes
EMP-ADD: Inez Gomes
Explicação:
Neste exemplo, redefinimos a mesma variável várias vezes. Existe dois campos: EMP-REC-LY, que é o registro de detalhes EMP e EMP-DPT-NME, que é o nome do departamento EMP. Essas são duas variáveis que realmente redefiniram o EMP-REC-ly, que é x (30). Se você vir o primeiro que é EMP-NAME-DTL, é novamente uma variável de grupo dos primeiros e sobrenomes com o tamanho de 15 e 10, respectivamente. Da mesma forma, apenas olhamos para a segunda redefinição, que é empd-dpt-nme, que é novamente uma redefinição de EMP-REC-ly. É um grupo de variável x (10) e x (15).
Exemplo 3:
Divisão de Identificação.
Programa-ID. Meses_table.
Divisão de dados.
Seção de arquivo.
Seção de armazenamento de trabalho.
01 mês-tbl.
05 mnth-nme.
10 PIC X (03) Valor 'Jan'.
10 PIC X (03) Valor 'fev'.
10 PIC X (03) Valor 'mar'.
05 Rede Redefine mnth-nme.
10 meses NME ocorre 3 vezes.
15 mnth pic x (03).
Divisão de procedimentos.
Exibir "mês-tbl:" mês-tbl.
Exibir "mês-nme:" mnth-nme.
Pare de corrida.
Saída:
Papan@papan -virtualbox: ~/desktop/pp/novo $ cobc -xjf três.cbl
Mês-TBL: Janfebmar
Mnth-nme: Janfebmar
Papan@papan-virtualbox: ~/desktop/pp/novo $
Explicação:
Vamos para este exemplo em que usamos a cláusula de redefinição para inicializar o nome do mês. Se você imprimir o valor do nome, tabela ou matriz do mês, descobrirá que a primeira ocorrência vai ter "Jan", a segunda ocorrência tem "fevereiro" e a terceira ocorrência tem "mar". Com esta técnica, você pode realmente atribuir valores iniciais à sua matriz ou tabela.
Conclusão
Neste artigo, aprendemos sobre a sintaxe geral da declaração "redefinida" em COBOL e o conceito fundamental dessa afirmação em que podemos realmente usar essa afirmação específica é explicada. Esperamos que você entenda a aplicação desta declaração.