📌 Explicação
O parâmetro COND=
(de "condição") serve pra pular a execução de um passo com base no return code (RC) de passos anteriores.
Ele não executa nada — só impede que um passo seja executado se a condição for verdadeira.
🧰 Usos mais comuns
-
Evitar rodar um passo se um anterior falhou (ex:
RC > 4
). -
Economizar recursos pulando etapas desnecessárias.
-
Controlar a lógica do job com base no que aconteceu nos passos anteriores.
🧾 Sintaxe
//ETAPA EXEC PGM=PROGRAMA,
// COND=(rc,operador,passo)
-
rc
: return code (ex: 4, 8, 16) -
operador
:LT
,LE
,EQ
,NE
,GE
,GT
-
passo
: nome do passo anterior (opcional)
Atalho comum:
COND=(4,LT)
Interpretação: "Se algum passo anterior tiver RC < 4, então PULE este passo."
💻 Exemplo prático
//PASSO01 EXEC PGM=PROGA
//PASSO02 EXEC PGM=PROGB,COND=(4,LT)
//PASSO03 EXEC PGM=PROGC,COND=(8,GE,PASSO01)
-
PASSO02
só roda se RC de qualquer passo anterior for >= 4 -
PASSO03
só roda se o RC de PASSO01 for < 8
⚙️ Regras
-
O
COND=
não cancela o job — ele pula o passo. -
Se você omitir o nome do passo, ele considera todos os passos anteriores.
-
Operador lógico é aplicado contra o RC anterior:
-
Se a condição for verdadeira, o passo é ignorado.
-
💡 Dicas
-
Lembre da regra de ouro:
“Se a condição for verdadeira, o passo é pulado.” -
Evite misturar
COND=
comIF/THEN/ELSE
— pode dar lógica confusa. -
Para lógicas complexas, use
IF/THEN
que é mais legível.
✅ Conclusão
COND=
é um dos parâmetros mais poderosos e traiçoeiros do JCL. Com ele, você controla o fluxo de execução baseado em resultados reais dos passos anteriores. Mas se não entender a lógica invertida dele, vira armadilha. Use com clareza, e se precisar de lógica mais complexa, parte pro IF/THEN/ELSE
.