Translate

Mostrar mensagens com a etiqueta PERFORM UNTIL. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta PERFORM UNTIL. Mostrar todas as mensagens

quarta-feira, 7 de fevereiro de 2007

COBOL Controle de Fluxo IF e Carga de Paragrafos PERFORM

 

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

OperadorSignificado
=Igual
>Maior
<Menor
>=Maior igual
<=Menor igual
NOTNegaçã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:

  1. vai até o parágrafo;

  2. executa;

  3. 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

ComandoFunção
IFDecisão
ELSECaminho alternativo
PERFORMExecuta rotina
PERFORM UNTILLoop
PERFORM VARYINGRepetição contador
END-IFFinal IF
EOFFim 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.