Translate

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

sexta-feira, 9 de fevereiro de 2007

SECTION e PERFORM no COBOL

Bellacosa Mainframe apresenta Section e Paragrafos no COBOL uso do perform

SECTION e PERFORM no COBOL

Depois de aprender IF, READ e variáveis, o próximo grande passo para um programador COBOL é dominar:

  • SECTION;

  • PARAGRAPH;

  • PERFORM;

  • PERFORM INLINE;

  • PERFORM OUT-OF-LINE;

  • PERFORM UNTIL;

  • PERFORM VARYING;

  • TEST BEFORE;

  • TEST AFTER;

  • TIMES.

Esses comandos controlam praticamente toda a lógica dos programas COBOL batch e online.


O que é SECTION?

SECTION é:

um agrupamento de parágrafos.

Ela organiza grandes blocos de processamento.


Exemplo

PROCESSAMENTO SECTION.

VALIDAR-CLIENTE.
   DISPLAY 'VALIDANDO'.

CALCULAR-LIMITE.
   DISPLAY 'CALCULANDO'.

Hierarquia COBOL

DIVISION
   ↓
SECTION
   ↓
PARAGRAPH
   ↓
STATEMENTS

O que é PARAGRAPH?

É uma rotina lógica.


Exemplo

CALCULAR-TOTAL.

Analogia simples

Imagine uma empresa.

FINANCEIRO (SECTION)
   ↓
CALCULAR-JUROS
GERAR-BOLETO
ATUALIZAR-SALDO

RH (SECTION)
   ↓
CALCULAR-FOLHA
GERAR-HOLERITE

O que é PERFORM?

PERFORM é o comando usado para:

executar rotinas.


Exemplo

PERFORM CALCULAR-TOTAL

Fluxo

MAIN
 ↓
PERFORM CALCULAR-TOTAL
 ↓
Executa rotina
 ↓
Retorna

PERFORM OUT-OF-LINE

É o PERFORM tradicional.

Chama um parágrafo ou SECTION externa.


Exemplo

MAIN.

   PERFORM PROCESSAR-CLIENTE

   STOP RUN.

PROCESSAR-CLIENTE.

   DISPLAY 'PROCESSANDO'.

Fluxo

MAIN
 ↓
PERFORM
 ↓
PROCESSAR-CLIENTE
 ↓
RETORNA

Vantagens

  • reutilização;

  • modularização;

  • manutenção.


PERFORM INLINE

Executa comandos diretamente.

Não precisa criar parágrafo.


Exemplo

PERFORM

   DISPLAY 'PROCESSANDO'

END-PERFORM

Fluxo

PERFORM
 ↓
EXECUTA BLOCO
 ↓
FIM

Quando usar INLINE?

Pequenas lógicas.


Quando usar OUTLINE?

Processamentos maiores.


Chamar um parágrafo

PERFORM CALCULAR-TOTAL

Chamar vários parágrafos

PERFORM INICIALIZA
PERFORM PROCESSA
PERFORM FINALIZA

PERFORM THRU

Executa vários parágrafos em sequência.


Exemplo

PERFORM INICIO
   THRU FIM

Exemplo completo

INICIO.

   DISPLAY '1'.

MEIO.

   DISPLAY '2'.

FIM.

   DISPLAY '3'.

Resultado:

1
2
3

PERFORM SECTION

Também pode chamar uma SECTION inteira.


Exemplo

PERFORM PROCESSAMENTO

Onde PROCESSAMENTO é:

PROCESSAMENTO SECTION.

PERFORM TIMES

Executa quantidade fixa.


Exemplo

PERFORM 5 TIMES

   DISPLAY 'OLA'

END-PERFORM

Resultado

OLA
OLA
OLA
OLA
OLA

Muito usado para

  • testes;

  • repetições simples;

  • validações.


PERFORM UNTIL

Loop até condição verdadeira.


Exemplo

PERFORM UNTIL EOF = 'S'

   READ ARQCLI

END-PERFORM

Fluxo

CONDIÇÃO?
 ↓
FALSA
 ↓
EXECUTA
 ↓
TESTA NOVAMENTE

Muito usado em leitura de arquivos


PERFORM VARYING

Equivalente ao FOR.


Exemplo

PERFORM VARYING WS-I
        FROM 1
        BY 1
UNTIL WS-I > 10

   DISPLAY WS-I

END-PERFORM

Resultado

1
2
3
4
5
6
7
8
9
10

O que é contador?

Variável usada para controlar repetições.


Exemplo

01 WS-I PIC 9(3).

Contador manual

ADD 1 TO WS-I

Contador automático

PERFORM VARYING

TEST BEFORE

Condição testada antes.

Padrão COBOL.


Exemplo

PERFORM UNTIL WS-I > 10

   DISPLAY WS-I

END-PERFORM

Fluxo

TESTA
 ↓
EXECUTA
 ↓
TESTA

Pode não executar nenhuma vez


Exemplo

WS-I = 20

Nunca entra no loop.


TEST AFTER

Condição testada depois.

Executa pelo menos uma vez.


Exemplo

PERFORM WITH TEST AFTER
UNTIL WS-I > 10

   DISPLAY WS-I

END-PERFORM

Fluxo

EXECUTA
 ↓
TESTA
 ↓
EXECUTA

Similar ao DO-WHILE


Comparação

TipoTeste
TEST BEFOREAntes
TEST AFTERDepois

Exemplo visual

TEST BEFORE

Condição?
 ↓
Executa

TEST AFTER

Executa
 ↓
Condição?

Exemplo clássico de leitura batch

OPEN INPUT ARQCLI

PERFORM UNTIL EOF = 'S'

   READ ARQCLI
      AT END
         MOVE 'S' TO EOF

      NOT AT END
         PERFORM PROCESSAR

   END-READ

END-PERFORM

CLOSE ARQCLI

Tipos mais usados de PERFORM

TipoUso
PERFORM parágrafoExecuta rotina
PERFORM THRUExecuta faixa
PERFORM SECTIONExecuta SECTION
PERFORM TIMESRepetição fixa
PERFORM UNTILRepetição por condição
PERFORM VARYINGLoop contador
TEST BEFORETesta antes
TEST AFTERTesta depois
INLINECódigo embutido
OUT-OF-LINERotina externa

Erros comuns de iniciantes

Usar THRU excessivamente

Pode gerar manutenção difícil.


Esquecer contador no VARYING

Loop infinito.


Não controlar EOF

Loop infinito em arquivos.


Usar SECTION gigantes

Dificulta manutenção.


Dicas de programador experiente

✅ Prefira PERFORM de parágrafos nomeados

✅ Use VARYING para tabelas

✅ Use UNTIL para leitura de arquivos

✅ Use TEST AFTER quando precisar executar ao menos uma vez

✅ Evite GO TO quando possível

✅ Mantenha SECTIONs pequenas e organizadas


Resumo rápido

SECTION
 ↓
Agrupa parágrafos

PARAGRAPH
 ↓
Contém lógica

PERFORM
 ↓
Executa rotina

TIMES
 ↓
Quantidade fixa

UNTIL
 ↓
Até condição

VARYING
 ↓
Contador automático

TEST BEFORE
 ↓
Testa antes

TEST AFTER
 ↓
Testa depois

Dominar SECTION e PERFORM é um dos maiores passos para evoluir de programador COBOL iniciante para desenvolvedor capaz de entender e manter aplicações corporativas de grande porte em bancos, seguradoras e sistemas críticos do ambiente IBM Z.

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.