📌 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
IFestruturado 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
IFnão pode abranger múltiplos jobs — apenas etapas dentro do mesmo job.