![]() |
| Bellacosa Mainframe apresenta 50 erros em processo batch e maneira de capturar via if /cond |
Controle Condicional de Verdade no z/OS
Por Vagner Bellacosa — El Jefe Midnight Lunch
Salve jovem padawan a vida no mundo batch não é facil. Pensando nisso, seus problemas acabaram, parcialmente, no artigo de hoje, fiz um apanhado, peguei um saco de gatos, misturei com aquele tempero nosso. Coloquei algumas dicas de amarração com return cond, conds e ifs. em resultado apresento a você
Se você ainda usa IF em JCL apenas para testar RC > 8, você está usando uma Ferrari para ir até a padaria da esquina.
O IF/THEN/ELSE/ENDIF no z/OS é uma das ferramentas mais poderosas do processamento batch moderno. Ele permite capturar desde simples return codes até falhas estruturais complexas dentro de procedures.
Neste artigo, vou listar 50 situações reais de produção que podem ser tratadas com IF em JCL — com explicação prática, mentalidade de produção e visão arquitetural.
Prepare o café ☕ — vamos para o campo de batalha.
![]() |
| Seus problemas acabaram |
🧠 Primeiro: O que o IF consegue testar?
O IF pode avaliar:
Return codes (RC)
ABENDs
ABENDs específicos
Steps executados ou não
Steps dentro de procedures
Condições combinadas (AND / OR)
Variáveis simbólicas
Fluxos aninhados (nested IF)
Agora vamos aos 50 cenários.
🔴 PARTE 1 — ABENDs Específicos (Sistema)
Captura via:
IF ABENDCC = Sxxx THENS806 — Programa não encontrado (STEPLIB incorreto)
S0C7 — Erro numérico COBOL (Data exception)
S0C4 — Violação de memória
S0C1 — Instrução inválida
S913 — Falha de autorização RACF
S878 — Falta de memória virtual
S80A — Falta de storage abaixo da linha
S837 — Falta de espaço em disco
S522 — Timeout de CPU
Uxxxx — User abend específico da aplicação
Uso típico: gerar dump, enviar notificação, disparar rollback.
🔴 PARTE 2 — Qualquer ABEND
IF ABEND THENCapturar qualquer falha anormal
Acionar rotina de recovery
Enviar alerta para operações
Forçar rollback
Gerar log especial
O IF permite separar erro técnico de erro lógico (RC alto).
🔴 PARTE 3 — RC de Step Específico
IF STEP1.RC NE 0 THENRC diferente de zero
RC maior que 4 (warning elevado)
RC igual a 4 (tratamento especial de warning)
RC igual a 8
RC igual a 12
RC maior que 16
RC entre 4 e 8
RC fora da faixa esperada
RC crítico mas sem abend
RC inesperado para aquele step
Permite tratamento diferenciado por programa.
🔴 PARTE 4 — RC Global (último step executado)
IF (RC > 8) THENFalha acumulada
Erro lógico geral
Inconsistência de processamento
Validação negativa
Resultado parcial não aceitável
Esse é o controle clássico de continuidade de fluxo.
🔴 PARTE 5 — Step Não Executado
IF ¬STEP1.RUN THENStep bypassado por COND
Step ignorado por IF anterior
Step pulado por restart
Step cancelado por lógica condicional
Step não iniciado por erro estrutural
Excelente para auditoria e rastreabilidade.
🔴 PARTE 6 — Step Executado
IF STEP1.RUN THENConfirmar execução de etapa crítica
Validar dependência
Garantir execução de PROC
Verificar step condicional
Auditoria de fluxo
Muito usado em ambientes com compliance.
🔴 PARTE 7 — Condições Combinadas (AND)
IF (RC > 4 & RC < 16) THENIntervalo de erro médio
Dupla condição obrigatória
RC alto e step executado
Falha parcial e dependência satisfeita
Tratamento gradual por severidade
Controle refinado de severidade.
🔴 PARTE 8 — Condições Alternativas (OR)
IF (RC = 8 | RC = 12) THENDois códigos críticos específicos
Warning ou erro leve
Dois tipos diferentes de inconsistência
Cenários alternativos aceitáveis
Multi-falhas com mesma ação corretiva
Permite lógica flexível sem duplicar código.
🔥 EXTRA — Dentro de Procedures
IF STEP1.PROCSTEP.RC > 8 THENControle granular dentro de PROCs reutilizáveis.
Ambiente corporativo pesado usa isso diariamente.
⚠ Limitações Importantes
IF não executa após S122 ou S222 (cancelamentos externos).
IF não roda se COND no JOB já tiver terminado o job.
Todo IF precisa de ENDIF.
RC final do job pode ser afetado por JOBRC.
🏛 Quando Usar IF em vez de COND?
CenárioMelhor escolhaLógica simplesCONDLógica estruturadaIFMúltiplos cenáriosIFControle de variável simbólicaIFClareza e manutençãoIF
🎯 Conclusão
O IF no JCL não é apenas um detalhe sintático.
Ele é:
Arquitetura de controle
Ferramenta de resiliência
Mecanismo de tratamento de falha
Base para automação robusta
Ponte entre aplicação e scheduler
Quem domina IF domina o fluxo batch.
EXEC STEP
│
▼
ABEND ?
│
├── S122/S222 → STOP
│
└── Outro ABEND
│
├── Próximo STEP tem COND=EVEN ? → EXECUTA
└── Senão → FLUSH
│
▼
COND no JOB ?
│
├── Verdadeiro → STOP JOB
└── Falso → Continua
│
▼
IF ?
│
├── Verdadeiro → Executa bloco
└── Falso → ELSE ou FLUSH
│
▼
COND no EXEC ?
│
├── Verdadeiro → FLUSH STEP
└── Falso → Executa STEPE no mundo mainframe, quem domina o fluxo… domina a produção.
🧠 Visual Mental Simplificado
ABEND crítico?
↓
COND JOB?
↓
IF?
↓
COND EXEC?
↓
Executa ou FLUSH
Esses abends me deixam louco
https://www.linkedin.com/pulse/50-erros-que-voc%C3%AA-pode-capturar-com-em-jcl-vagner-bellacosa-zqm8f
.png)

Sem comentários:
Enviar um comentário