O que é diferente entre COBOL e JCL? A simbiose que executa o negócio
Gancho didático (analogia): o COBOL é o guião/roteiro do filme (o que deve ser feito); o JCL é o diretor de produção (quem organiza recursos, tempo e cenários para o filme acontecer).
Como o JCL liga o programa aos Datasets
O JCL “diz” ao mainframe onde estão os dados que o COBOL vai processar: os cartões DD apontam o ficheiro físico (DSN) para o ficheiro lógico usado no COBOL.
┌──────────────┐ ┌─────────────────────────────┐
│ Programa │ │ JCL │
│ COBOL │ │ //INFILE DD DSN=... │
│ (INFILE) ───┼────────▶ //OUTFILE DD DSN=... │
└──────────────┘ │ //SYSOUT DD SYSOUT=* │
└─────────────────────────────┘
▲ ▲
│ │
Ficheiro lógico Ficheiro físico (DSN)
Anatomia de um Job JCL
//* Exemplo mínimo de JOB JCL para executar um programa COBOL
//EXEMPJOB JOB (ACCT),'EXECUTA COBOL',CLASS=A,MSGCLASS=X //* JOB: Identificador da tarefa
//EXECSTEP EXEC PGM=MEUPROG //* EXEC: Programa COBOL a chamar
//INFILE DD DSN=EMPRESA.ENTRADA.CLIENTES,DISP=SHR //* DD: liga ficheiro lógico (INFILE) ao DSN físico
//OUTFILE DD DSN=EMPRESA.SAIDA.RELATORIO, //* DD: saída física onde o COBOL escreverá
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSOUT DD SYSOUT=* //* Saída do sistema (logs) para SDSF
COBOL vs JCL (Mapa da Mina)
| Aspecto | COBOL | JCL |
|---|---|---|
| Propósito | Processamento de dados, regras de negócio | Orquestração de sistema no z/OS |
| Natureza | Lógica algorítmica (procedimentos, cálculos) | Instruções de controle (JOB, EXEC, DD) |
| Dependência | É executado (compilado/link‑edit e chamado) | Chama o programa COBOL e define datasets e recursos |
A Relação de Dependência
Sem JCL, o código COBOL é apenas texto inerte: não há onde buscar/guardar dados, nem quando/onde executar. Sem COBOL, o JCL não tem tarefa para orquestrar. Essa interdependência define o ambiente z/OS.
Exemplo prático de fluxo
Ciclo de Vida
- JCL: Submete o JOB (cartões JOB, EXEC, DD).
- Compilação: O JCL chama o compilador e faz link‑edit.
- Execução: O JCL aponta datasets de entrada/saída que o COBOL vai processar.
Por que preciso de aprender ambos?
Um programador COBOL que não entende JCL é como um cozinheiro que não sabe usar o forno: o prato (lógica) pode estar perfeito, mas não chega à mesa (produção). Você precisa de ambos para colocar o seu código em produção com previsibilidade.
FAQ de Especialista
O que acontece se o JCL chamar um programa COBOL que não existe?
O sistema pode gerar ABEND S806, indicando falha ao localizar o módulo de carga (load module). Verifique STEPLIB, LINKLIST e a presença do PGM compilado/link‑edit.
Posso rodar COBOL sem JCL?
Em ambientes modernos existem simuladores e IDEs que abstraem o JCL. No mainframe real, o JCL é a linguagem de submissão e orquestração de jobs.
JCL é uma linguagem de programação?
Não. É uma linguagem de controlo de tarefas que interage com o gestor de trabalho do z/OS: define o que executar, com quais recursos, quando e onde.
A IA pode gerar JCL para mim?
Sim, mas entender JCL é o que te salva quando o job falha por erro de I/O, falta de dataset ou classe/msgclass incorretas.