| Bellacosa Mainframe e o if e perform no cobol |
COBOL : Controle de Fluxo IF e Carga de Paragrafos PERFORM
Dois dos comandos mais importantes do COBOL são:
IF
e
PERFORM
Praticamente toda lógica COBOL usa esses comandos.
Eles controlam:
decisões;
execução;
loops;
fluxo batch;
regras de negócio.
O que é IF no COBOL?
O IF é usado para:
tomar decisões.
Analogia simples
Imagine:
SE chover
pegar guarda-chuva
SENÃO
sair normalmente
Isso é:
lógica condicional.
Sintaxe básica
IF condição
instrução
END-IF
Exemplo simples
IF SALDO > 0
DISPLAY 'SALDO POSITIVO'
END-IF
Como funciona?
O COBOL verifica:
SALDO > 0 ?
Se for verdadeiro:
executa DISPLAY
IF com ELSE
IF SALDO > 0
DISPLAY 'POSITIVO'
ELSE
DISPLAY 'NEGATIVO'
END-IF
Fluxo lógico
CONDIÇÃO
↓
VERDADEIRO?
/ \
SIM NÃO
↓ ↓
COMANDO1 COMANDO2
IF com várias condições
AND
IF IDADE > 18
AND SALDO > 1000
OR
IF STATUS = 'A'
OR STATUS = 'P'
NOT
IF NOT ERRO
Comparações usadas no IF
| Operador | Significado |
|---|---|
| = | Igual |
| > | Maior |
| < | Menor |
| >= | Maior igual |
| <= | Menor igual |
| NOT | Negação |
Exemplo completo
IF SALDO >= 1000
DISPLAY 'CLIENTE VIP'
ELSE
DISPLAY 'CLIENTE NORMAL'
END-IF
IF aninhado
IF dentro de IF.
Exemplo
IF STATUS = 'A'
IF SALDO > 1000
DISPLAY 'VIP'
END-IF
END-IF
Problema comum
IFs excessivos deixam código:
complexo.
O que é PERFORM?
PERFORM é usado para:
executar rotinas ou loops.
Um dos comandos mais importantes do COBOL
Analogia simples
Imagine apertar um botão:
EXECUTAR PROCESSAMENTO
Isso é:
PERFORM.
PERFORM simples
PERFORM CALCULAR
O que acontece?
O COBOL:
vai até o parágrafo;
executa;
retorna.
Exemplo completo
PROCEDURE DIVISION.
MAIN.
PERFORM CALCULAR
STOP RUN.
CALCULAR.
DISPLAY 'PROCESSANDO'.
Fluxo visual
MAIN
↓
PERFORM CALCULAR
↓
CALCULAR
↓
RETORNA MAIN
PERFORM UNTIL
Usado para:
repetição (loop).
Exemplo
PERFORM UNTIL EOF = 'S'
READ ARQCLIENTE
AT END
MOVE 'S' TO EOF
END-READ
END-PERFORM
O que isso faz?
Repete:
até EOF = 'S'
Muito usado em batch
Principalmente:
leitura arquivos;
processamento registros;
relatórios.
Fluxo PERFORM UNTIL
INICIO LOOP
↓
LER REGISTRO
↓
EOF?
/ \
NÃO SIM
↓ ↓
CONTINUA FIM
PERFORM VARYING
Similar ao:
FOR.
Exemplo
PERFORM VARYING WS-I FROM 1 BY 1
UNTIL WS-I > 10
DISPLAY WS-I
END-PERFORM
Resultado
1
2
3
...
10
Muito usado em tabelas
O que é inline PERFORM?
PERFORM sem parágrafo externo.
Exemplo
PERFORM
DISPLAY 'TESTE'
END-PERFORM
PERFORM TIMES
Executa quantidade fixa.
Exemplo
PERFORM 5 TIMES
DISPLAY 'OLA'
END-PERFORM
Resultado
OLA
OLA
OLA
OLA
OLA
IF + PERFORM juntos
Muito comum no COBOL.
Exemplo
IF SALDO > 0
PERFORM PROCESSAR
ELSE
PERFORM ERRO
END-IF
Fluxo real batch
LER
↓
IF válido
↓
PERFORM cálculo
↓
WRITE saída
Exemplo batch completo
PERFORM UNTIL EOF = 'S'
READ CLIENTE
AT END
MOVE 'S' TO EOF
NOT AT END
IF SALDO > 0
PERFORM PROCESSA
ELSE
PERFORM REJEITA
END-IF
END-READ
END-PERFORM
O que é EOF?
End Of File
Fim do arquivo.
Vantagens do IF
clareza;
decisão;
controle lógico.
Vantagens do PERFORM
modularização;
reutilização;
loops organizados;
menos GO TO.
COBOL moderno usa muito:
IF;
END-IF;
PERFORM;
EVALUATE.
O que o PERFORM substituiu?
Em muitos casos:
GO TO.
Isso ajudou a reduzir:
spaghetti code.
Curiosidades incríveis
1. Grande parte do processamento bancário usa PERFORM UNTIL
2. IF é uma das instruções mais usadas do COBOL
3. Sistemas batch podem executar bilhões de loops PERFORM diariamente
4. O COBOL estruturado reduziu muito uso de GO TO
Erros comuns de iniciantes
1. Esquecer END-IF
2. Criar loops infinitos
3. Misturar muitos IFs aninhados
4. Não controlar EOF corretamente
Dicas importantes
Use END-IF sempre
Prefira PERFORM ao GO TO
Modularize lógica em parágrafos
Controle loops cuidadosamente
Como isso aparece no dia a dia?
Praticamente em:
batch;
bancos;
cartões;
DB2;
CICS;
processamento financeiro.
Resumo rápido
| Comando | Função |
|---|---|
| IF | Decisão |
| ELSE | Caminho alternativo |
| PERFORM | Executa rotina |
| PERFORM UNTIL | Loop |
| PERFORM VARYING | Repetição contador |
| END-IF | Final IF |
| EOF | Fim arquivo |
Conclusão
IF e PERFORM são duas das estruturas mais importantes do COBOL.
Elas controlam decisões, execução de rotinas e loops, sendo fundamentais para programas batch e online no ambiente mainframe IBM Z.