A LINKAGE SECTION
pertence à DATA DIVISION
e é utilizada para descrever dados recebidos de outro programa, geralmente via instrução CALL
. Ela não aloca memória, apenas descreve a estrutura dos dados que serão recebidos de forma dinâmica ou de um programa externo.
🎯 Finalidade
-
Definir parâmetros recebidos por meio da instrução
CALL
-
Mapear áreas de memória externas, como estruturas alocadas dinamicamente
-
Usar o conteúdo via
ADDRESS OF
para integração com APIs ou outras linguagens -
Documentar claramente a interface entre programas COBOL
⚠️ Características importantes
Recurso | Comportamento na LINKAGE SECTION |
---|---|
Memória | Não é alocada internamente |
VALUE |
Ignorado (exceto em nível 88, onde é inválido) |
EXTERNAL |
❌ Não permitido |
GLOBAL |
❌ Não permitido, com exceção de itens nível 01 (caso especial) |
Visibilidade | Usado apenas após o programa ser chamado |
🧪 Exemplo básico
LINKAGE SECTION.
01 LS-DADOS-ENTRADA.
05 LS-NOME PIC X(30).
05 LS-CPF PIC 9(11).
05 LS-IDADE PIC 9(03).
Esse bloco define a estrutura dos dados que serão recebidos quando o programa for chamado por outro através da instrução:
CALL 'PROGRAMA2' USING WS-DADOS-ENTRADA.
🧩 Uso com ADDRESS OF (avançado)
Você também pode associar dinamicamente variáveis à LINKAGE SECTION
com o comando SET ADDRESS OF
:
SET ADDRESS OF LS-NOME TO POINTER-EXTERNO.
Esse uso é comum com APIs do sistema, interfaces com C/C++, ou para manipular blocos de memória alocados externamente.
✅ Diferença entre LINKAGE e WORKING-STORAGE
Característica | WORKING-STORAGE | LINKAGE SECTION |
---|---|---|
Alocação de memória | Sim, pelo próprio programa | Não — a memória vem de fora |
Mantém valor | Sim, durante toda execução | Só enquanto estiver sendo usada |
Comunicação externa | Não | Sim, ideal para CALLs |
Valor inicial (VALUE) | Permitido | Ignorado (ou inválido em nível 88) |
🔁 Quando usar LINKAGE SECTION?
-
Em subprogramas chamados com
CALL USING
-
Para receber dados de outros programas COBOL
-
Para interoperabilidade com memória externa via
ADDRESS OF
-
Em programas reutilizáveis e modulares
✅ Conclusão
A LINKAGE SECTION
é essencial para a comunicação entre programas COBOL, seja em sistemas batch, CICS ou integração com outras linguagens. Ela permite estruturar dados que vêm de fora, mantendo clareza e segurança na manipulação de parâmetros e memória externa.