COBOL - Diferença entre INCLUDE e COPY



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

COBOL - Diferença entre INCLUDE e COPY

Se você tem alguma experiência em COBOL, pode ter observado o uso de COPY e INCLUDE em alguns dos programas que possuem parte de banco de dados (DB2).
If you have some experience on COBOL, you could have observed Copy and Include being used in some of the programs which have database portion (DB2).

Você tentou entender qual é exatamente a diferença entre esses dois e qual funciona de forma eficaz ou por que você deve usar as duas coisas?
Did you try to understand what exactly is the difference between these two and which one works effectively or why you should use both these things?

É isso que você vai entender aqui
That's what you are going to understand here

COBOL - INCLUDE vs COPY?

Ambos fazem o mesmo trabalho de expandir o layout definido no copybook ou Dclgen ..
Mas a única diferença é

Both does the same work of expanding the layout defined in copybook or Dclgen..
But the only difference is

  • Os membros usados com INCLUDE serão expandidos na fase de PRÉ-COMPILAÇÃO e
    Members used with INCLUDE will get expanded at PRE-COMPILATION stage and

  • Os membros usados com o COPY serão expandidos apenas no estágio de COMPILAÇÃO.
    Members used with COPY will get expanded only at COMPILATION stage.

Portanto, normalmente usamos INCLUDE para expandir todos os membros relacionados ao DB2.
COPY é usado para expandir layouts de arquivo COBOL.

So we normally use INCLUDE to expand all DB2 related members.
COPY is used to expand COBOL file layouts.

Você não pode usar COPY para expandir membros do DB2, mas pode usar INCLUDE para expandir layouts de arquivo COBOL.
Se você usar COPY para expandir os membros do DB2 DCLGEN, seu programa falhará no estágio de pré-compilação, dizendo que a maioria das variáveis do host não está definida.
Isso acontece porque os membros do COPY serão expandidos apenas no estágio de Compilação, ou seja, após a Pré-compilação.

You cannot use COPY to expand DB2 members, but you can use INCLUDE to expand COBOL file layouts.
If you use COPY to expand DB2 DCLGEN members, your program will fail at Pre-compilation stage saying most of the host variables are not defined.
This happens because COPY members will get expanded only at Compilation stage, that is after Pre-compilation.

Se você mantiver qualquer uma das variáveis de host em qualquer copybook cobol, então você deve expandir isso também com INCLUDE apenas.
Caso contrário, seu programa irá falhar no próprio estágio de pré-compilação devido à declaração de variável de host ausente.

If you keep any of the host variable in any cobol copy book then you should expand that also with INCLUDE only.
Otherwise your program will fail at Pre-compilation stage itself due to missing host variable declaration.

DCLGEN: Gerador de Declaração - DCLGEN : Declaration Generator

Ele gera declarações de linguagem de origem e SQL.
Ele produz a instrução SQL DECLARE TABLE junto com a declaração de dados COBOL se o DB2 for usado junto com o COBOL.
A maioria dos campos nas declarações de dados são usados como variáveis de host.

It generates SQL and source language declarations.
It produces SQL DECLARE TABLE statement along with COBOL data declaration if DB2 is used along with COBOL.
Most of the fields in data declarations are used as host variables.