📌 Descrição

O bloco IF / THEN / ELSE / ENDIF permite controlar a execução condicional de etapas (steps) em um job JCL, com base nos códigos de retorno (RC) de steps anteriores. É uma forma estruturada e legível de aplicar lógica condicional em ambientes mainframe.

🧠 Sintaxe

// IF (condição) THEN
//   ... instruções condicionalmente executadas ...
// ELSE
//   ... instruções alternativas ...
// ENDIF

🔍 Componentes

Comando Função
IF Inicia uma avaliação condicional baseada em RCs.
THEN Executa o bloco se a condição for verdadeira.
ELSE (Opcional) Executa se a condição do IF for falsa.
ENDIF Finaliza o bloco condicional.

🧠 Condições Válidas

A condição compara o código de retorno de steps anteriores com um valor esperado:

IF (stepname.RC operator value)
Operador Significado
EQ Igual (=)
NE Diferente (≠)
LT Menor que
LE Menor ou igual
GT Maior que
GE Maior ou igual

 

Exemplos

Executar apenas se o step anterior teve RC=0:

// IF (STEP01.RC = 0) THEN
//STEP02 EXEC PGM=PROGRAMA
// ENDIF

Executar um step alternativo se houver erro:

// IF (STEP01.RC > 4) THEN
//ERRO EXEC PGM=IEBGENER
// ELSE
//CONTINUE EXEC PGM=PROXPROG
// ENDIF

⚠️ Observações

  • O IF estruturado substitui o uso extensivo de COND= para controle de execução.

  • A avaliação pode usar .RC (Return Code), .ABEND (interrupção) e .ABENDCC (código de abend).

  • O IF não pode abranger múltiplos jobs — apenas etapas dentro do mesmo job.