| Bellacosa Mainframe o que é Compilação e Linkedição de um programa COBOL |
O que é Compilação e Linkedição de um Programa COBOL?
Quando escrevemos um programa COBOL, o computador não executa diretamente o código-fonte.
Antes disso, ele precisa passar por duas etapas fundamentais:
Compilação
e
Linkedição (Link-Edit ou Binder)
Essas etapas transformam o código COBOL em um programa executável pelo z/OS.
Visão Geral
Código COBOL
↓
Compilação
↓
Objeto (OBJ)
↓
Linkedição (Binder)
↓
Load Module / Program Object
↓
Execução
O que é Compilação?
Compilação é o processo de converter:
Código COBOL
em
Código Objeto
Analogia Simples
Imagine que você escreveu um livro em português.
O compilador é um tradutor que converte o texto para um idioma que o processador entende.
Entrada da Compilação
Programa fonte:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
DISPLAY 'OLA MUNDO'.
STOP RUN.
Saída da Compilação
Arquivo objeto:
OBJETO
Ainda não é executável.
O que o Compilador faz?
Durante a compilação ele:
✅ Analisa sintaxe
✅ Valida comandos COBOL
✅ Expande COPYBOOKs
✅ Verifica variáveis
✅ Gera instruções de máquina
✅ Produz mensagens de erro
Exemplo de erro
DISPLY 'OLA'
Resultado:
IGYPS2121-S
Erro de sintaxe.
Compilador COBOL
Nos ambientes IBM Z normalmente encontramos:
Enterprise COBOL for z/OS
O que é o Código Objeto?
Após a compilação é criado:
OBJETO
Também chamado de:
Object Deck
Object Module
OBJ
Características
Não executa sozinho
Pode conter referências externas
Precisa passar pelo Binder
O que é Linkedição?
Também chamada:
Link-Edit
ou
Binding
Função
Transformar o código objeto em um programa executável.
Fluxo
OBJETO
↓
BINDER
↓
LOAD MODULE
O que o Binder faz?
Ele:
✅ Resolve chamadas externas
✅ Liga subprogramas
✅ Liga bibliotecas
✅ Resolve referências CICS
✅ Resolve referências DB2
✅ Cria módulo executável
Analogia Simples
Imagine várias peças de LEGO.
A compilação cria as peças.
A linkedição monta tudo em um único brinquedo funcional.
Resultado Final
LOAD MODULE
ou
PROGRAM OBJECT
Onde fica o executável?
Normalmente em uma biblioteca:
USER.LOADLIB
ou
PROD.LOADLIB
Fluxo Completo
COBOL Source
↓
Compiler
↓
Object Module
↓
Binder
↓
Load Module
↓
JCL EXEC PGM=
Exemplo de Execução
JCL:
//STEP1 EXEC PGM=HELLO
O z/OS procura:
HELLO
na:
STEPLIB
JOBLIB
LINKLIST
O que é STEPLIB?
Biblioteca onde o executável está armazenado.
Exemplo
//STEPLIB DD DSN=USER.LOADLIB,
// DISP=SHR
Chamadas entre Programas
Programa principal:
CALL 'CALCSAL'
Durante a Linkedição
O Binder procura:
CALCSAL
e conecta os módulos.
Linkedição com CICS
Programas CICS utilizam bibliotecas especiais.
Exemplo:
DFHEIBLK
DFHCOMMAREA
O Binder resolve essas referências.
Linkedição com DB2
Programas DB2 possuem etapas extras.
COBOL
↓
Pré-compilador DB2
↓
Compilação
↓
BIND DB2
↓
Linkedição
O que é BIND no DB2?
Não confundir com Binder.
Binder
Cria executável.
BIND DB2
Cria:
PACKAGE
PLAN
Principais Saídas da Compilação
SYSPRINT
Mensagens do compilador.
LISTING
Listagem fonte expandida.
OBJETO
Código objeto.
Principais Saídas da Linkedição
SYSPRINT
Mensagens Binder.
LOAD MODULE
Executável.
Erros Comuns de Compilação
Variável não declarada
IGYPS...
COPYBOOK inexistente
IGYDS...
Erro de sintaxe
IGYPS...
Erros Comuns de Linkedição
Módulo não encontrado
IEW2456E
Referência externa não resolvida
IEW2646S
Biblioteca ausente
IEW...
Ferramentas Envolvidas
| Etapa | Ferramenta |
|---|---|
| Compilação | Enterprise COBOL |
| Linkedição | Binder (IEWL) |
| Execução | z/OS Loader |
Exemplo Real de JCL
//COBOL EXEC PGM=IGYCRCTL
//SYSIN DD DSN=USER.COBOL(PROG1)
//LKED EXEC PGM=IEWL
//SYSLMOD DD DSN=USER.LOADLIB(PROG1)
Curiosidades
1. Antigamente a saída da compilação era gravada em cartões perfurados
2. O Binder substituiu o antigo Linkage Editor
3. Um único programa pode ser ligado a dezenas de módulos externos
4. Grandes bancos compilam milhares de programas COBOL diariamente
Resumo Rápido
| Etapa | Função |
|---|---|
| Compilação | Gera código objeto |
| Código Objeto | Saída intermediária |
| Binder | Liga módulos |
| Linkedição | Cria executável |
| Load Module | Programa executável |
| STEPLIB | Biblioteca de execução |
| CALL | Chama subprograma |
| BIND DB2 | Cria Package e Plan |
Conclusão
A compilação converte o código COBOL em um módulo objeto, enquanto a linkedição (Binder) conecta todas as dependências e gera o módulo executável que será carregado pelo z/OS. Entender essas etapas é fundamental para diagnosticar erros de compilação, problemas de execução e compreender como os programas COBOL realmente funcionam no ambiente IBM Z.
Sem comentários:
Enviar um comentário