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.