📌 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 deCOND=
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.