COBOL + JCL • A simbiose no z/OS

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).

Objetivo: eliminar a confusão entre lógica (COBOL) e orquestração (JCL) no ecossistema z/OS.

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

  1. JCL: Submete o JOB (cartões JOB, EXEC, DD).
  2. Compilação: O JCL chama o compilador e faz link‑edit.
  3. Execução: O JCL aponta datasets de entrada/saída que o COBOL vai processar.
Resumo: diferença COBOL e JCL — COBOL resolve o o quê (negócio), JCL resolve o como (recursos, horários, arquivos) no z/OS.

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.