Uma colaboração de Jair da Silva.
As estruturas de dados complexas ou simples que precisam ser declaradas várias vezes no mesmo programa ou em vários programas, podem ser definidas com a definição de tipos, um conceito nativo da linguagem C. Outro conveniente destas estruturas pré-definidas é que naquele momento que a memória nos falha recusando-se a lembrar qual o formato e/ou o tipo de dados deve ser definido para a chamada de uma classe ou uma função de biblioteca.
A declaração de estrutura é feita assim:
01 wsbdDataZ pic 9999/99/99 typedef.
01 wsbdDataZ pic 9999/99/99 typedef.
01 wsbdDataX pic x(20) typedef.
01 wsbdDataXEd typedef.
...02 wsbdAnoX pic 9(04).
...02 f pic x(01).
...02 wsbdMesX pic 9(02).
...02 f pic x(01).
...02 wsbdDiaX pic 9(02).
...02 f pic x(01).
...02 wsbdHorX pic 9(02).
...02 f pic x(01).
...02 wsbdMinX pic 9(02).
...02 f pic x(01).
...02 wsbdSegX pic 9(02).
...02 f pic x(01).
01 wsbdData9 pic 9(08) typedef.
01 wsbdData9Ed typedef.
...02 wsbdDia9 pic 9(02).
...02 wsbdMes9 pic 9(02).
...02 wsbdAno9 pic 9(04).
Dispondo estas estruturas num arquivo à parte (um copybook, que em nosso exemplo poderia ser o arquivo tiposdef.cpy), podemos incluí-lo em qualquer ponto do programa e em qualquer programa. Aqui neste exemplo, definimos os campos com formatação de datas que são retornados pelos SGBDs mais comuns. Seu uso prático é descrito a seguir:
WORKING-STORAGE SECTION.
copy tiposdef.cpy.
01 Data-VctoX wsbdDataX.
01 Data-VctoXEd redefines Data-VctoX wsbdDataXEd.
01 Data-Vcto9 wsbdData9.
01 Data-PgtoX wsbdDataX.
01 Data-PgtoXEd redefines Data-PgtoX wsbdDataXEd.
01 Data-Pgto9 wsbdData9.
EXEC SQL
SELECT * FROM tabela (campos .... :Data-VctoX:Data-PgtoX ...)
copy tiposdef.cpy.
01 Data-VctoX wsbdDataX.
01 Data-VctoXEd redefines Data-VctoX wsbdDataXEd.
01 Data-Vcto9 wsbdData9.
01 Data-PgtoX wsbdDataX.
01 Data-PgtoXEd redefines Data-PgtoX wsbdDataXEd.
01 Data-Pgto9 wsbdData9.
EXEC SQL
SELECT * FROM tabela (campos .... :Data-VctoX:Data-PgtoX ...)
WHERE campo-a = 'B200'
END-EXEC
Transformando a data de vencimento no padrão tupiniquim:
END-EXEC
Transformando a data de vencimento no padrão tupiniquim:
move wsbdDiaX of Data-VctoXEd to wsbdDia9 of Data-Vcto9.
move wsbdMesX of Data-VctoXEd to wsbdMes9 of Data-Vcto9.
move wsbdAnoX of Data-VctoXEd to wsbdAno9 of Data-Vcto9.
move wsbdMesX of Data-VctoXEd to wsbdMes9 of Data-Vcto9.
move wsbdAnoX of Data-VctoXEd to wsbdAno9 of Data-Vcto9.
Agora temos em Data-Vcto9 nossa formatação tradicional.
Outros tipos podem ser criados dependendo aí da necessidade e da criatividade de cada desenvolvedor.
2 comentários:
Isso, isso, isso.
Eu já havia descoberto a utilidade da definição de tipo e utilizo para datas ddmmaaaa e aaaammdd, além de outras coisinhas a mais.
Pretendia fazer uma post no site do clube como titulo "Qual o seu tipo?", mas sabe como é né? Fiquei nessa de depois eu faço...
Postar um comentário