📌 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= com IF/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.