Translate

quinta-feira, 8 de fevereiro de 2007

Leitura de Dataset no COBOL

Bellacosa Mainframe e a leitura de dados de um dataset cobol


Leitura de Dataset no COBOL

Uma das funções mais importantes do COBOL no mainframe é:

processamento de arquivos.

Grande parte dos sistemas batch trabalha lendo:

  • datasets sequenciais;

  • VSAM;

  • arquivos financeiros;

  • relatórios;

  • cargas;

  • integrações.

Por isso, entender:

  • ENVIRONMENT DIVISION;

  • DATA DIVISION;

  • FILE SECTION;

  • FILE STATUS;

  • layouts;

  • associação com JCL;

é fundamental no ambiente:

IBM Z / zOS.


Fluxo geral da leitura de arquivos

JCL
 ↓
DDNAME
 ↓
ENVIRONMENT DIVISION
 ↓
SELECT / ASSIGN
 ↓
FILE SECTION
 ↓
FD
 ↓
READ
 ↓
PROCESSAMENTO

Onde o arquivo é definido no COBOL?

Principalmente em:

  • ENVIRONMENT DIVISION;

  • DATA DIVISION.


ENVIRONMENT DIVISION

Responsável por:

ambiente e associação dos arquivos.


Estrutura clássica

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

O que é FILE-CONTROL?

Área onde o COBOL:

associa arquivos lógicos ao JCL.


Exemplo

SELECT ARQCLIENTE
ASSIGN TO CLIENTE
ORGANIZATION IS SEQUENTIAL.

Explicando

ElementoFunção
ARQCLIENTENome lógico COBOL
CLIENTEDDNAME do JCL
SEQUENTIALOrganização arquivo

O que é ASSIGN?

Faz ligação entre:

  • COBOL;

  • JCL.


Relação COBOL ↔ JCL

COBOL: ASSIGN TO CLIENTE
            ↓
JCL: //CLIENTE DD DSN=...

Exemplo completo no JCL

//STEP1 EXEC PGM=COBPGM

//CLIENTE DD DSN=EMPRESA.CLIENTES,
//            DISP=SHR

Como COBOL encontra o dataset?

Pelo:

DDNAME.


DATA DIVISION

Responsável pelos:

dados e layouts.


Estrutura típica

DATA DIVISION.

FILE SECTION.

O que é FILE SECTION?

Define:

layout do arquivo.


Exemplo

FD ARQCLIENTE.

01 REG-CLIENTE.
   05 CLI-ID       PIC 9(5).
   05 CLI-NOME     PIC X(30).
   05 CLI-SALDO    PIC 9(7)V99.

O que é FD?

File Description

Define:

  • características;

  • layout;

  • estrutura registro.


O que é REG-CLIENTE?

Área memória usada no:

READ.


Fluxo do READ

READ ARQCLIENTE
      ↓
registro carregado
      ↓
REG-CLIENTE preenchido

Exemplo simples de leitura

READ ARQCLIENTE

Leitura completa correta

READ ARQCLIENTE
   AT END
      MOVE 'S' TO EOF
END-READ

O que é EOF?

End Of File

Fim arquivo.


Controle clássico batch

PERFORM UNTIL EOF = 'S'

   READ ARQCLIENTE
      AT END
         MOVE 'S' TO EOF

      NOT AT END
         PERFORM PROCESSA

   END-READ

END-PERFORM

O que é FILE STATUS?

Código retorno da operação arquivo.

Muito importante no COBOL.


Definição FILE STATUS

Fica na:

WORKING-STORAGE.


Exemplo

01 WS-FS-CLIENTE PIC XX.

Associando FILE STATUS

SELECT ARQCLIENTE
ASSIGN TO CLIENTE
FILE STATUS IS WS-FS-CLIENTE.

O que ele faz?

Após:

  • OPEN;

  • READ;

  • WRITE;

  • CLOSE;

o COBOL grava:

status da operação.


Exemplo status comuns

StatusSignificado
00OK
10EOF
35Arquivo inexistente
39Layout incompatível
92Erro lógico
93Arquivo não aberto

Exemplo validação

IF WS-FS-CLIENTE NOT = '00'
   DISPLAY 'ERRO ARQUIVO'
END-IF

O que é OPEN?

Abre arquivo.


Exemplos

OPEN INPUT ARQCLIENTE

Leitura.


OPEN OUTPUT ARQREL

Saída.


OPEN I-O ARQVSAM

Leitura e gravação.


O que é CLOSE?

Fecha arquivo.


Exemplo

CLOSE ARQCLIENTE

Tipos comuns de arquivos COBOL


Sequential

Sequencial.


Indexed

VSAM KSDS.


Relative

Acesso relativo.


Line Sequential

Texto.


Organização do arquivo

ORGANIZATION IS SEQUENTIAL

Acesso

ACCESS MODE IS SEQUENTIAL

Exemplo completo

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT ARQCLIENTE
ASSIGN TO CLIENTE
ORGANIZATION IS SEQUENTIAL
FILE STATUS IS WS-FS.

DATA DIVISION.

FILE SECTION.

FD ARQCLIENTE.

01 REG-CLIENTE.
   05 CLI-ID     PIC 9(5).
   05 CLI-NOME   PIC X(30).

WORKING-STORAGE SECTION.

01 WS-FS         PIC XX.
01 EOF           PIC X VALUE 'N'.

PROCEDURE DIVISION.

MAIN.

   OPEN INPUT ARQCLIENTE

   PERFORM UNTIL EOF = 'S'

      READ ARQCLIENTE
         AT END
            MOVE 'S' TO EOF

         NOT AT END
            DISPLAY CLI-NOME

      END-READ

   END-PERFORM

   CLOSE ARQCLIENTE

   STOP RUN.

O que é layout?

Estrutura do registro.


Exemplo

12345JOAO SILVA                 0001500

Layout correspondente

05 ID     PIC 9(5).
05 NOME   PIC X(30).
05 SALDO  PIC 9(7).

O que acontece se layout estiver errado?

Pode causar:

  • lixo dados;

  • truncamento;

  • ABEND;

  • S0C7.


COBOL e JCL trabalham juntos


JCL

Entrega dataset.


COBOL

Processa dataset.


Fluxo real

Dataset
 ↓
JCL DD
 ↓
ASSIGN
 ↓
READ
 ↓
REGISTRO MEMÓRIA
 ↓
PROCESSAMENTO

O que é DISP=SHR?

Compartilhado.


O que é DISP=OLD?

Uso exclusivo.


Como isso aparece no batch?

Praticamente em:

  • bancos;

  • folha salarial;

  • PIX;

  • cartões;

  • faturamento.


Curiosidades incríveis

1. Muitos batchs processam bilhões de registros COBOL diariamente


2. FILE STATUS evita muitos ABENDs


3. Grande parte do mundo financeiro ainda depende fortemente de arquivos sequenciais


4. JCL + COBOL é uma das integrações mais clássicas do mainframe


Erros comuns de iniciantes


1. Esquecer OPEN


2. Não tratar FILE STATUS


3. Layout incompatível


4. DDNAME diferente do ASSIGN


5. Não controlar EOF


Dicas importantes

Sempre trate FILE STATUS


Controle EOF corretamente


Valide layouts


Nomeie DDNAME claramente


Resumo rápido

ElementoFunção
SELECTDefine arquivo lógico
ASSIGNLiga ao JCL
FDDefine layout
READLê registro
FILE STATUSRetorno operação
OPENAbre arquivo
CLOSEFecha arquivo
EOFFim arquivo

Conclusão

A leitura de arquivos é uma das bases do COBOL batch no ambiente mainframe IBM Z.

ENVIRONMENT DIVISION, DATA DIVISION, FILE SECTION, FILE STATUS e integração com JCL permitem processar grandes volumes de dados com segurança, organização e alta confiabilidade no z/OS. 

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.


terça-feira, 6 de fevereiro de 2007

Variáveis COBOL: COMP-1, COMP-2, COMP-3, COMP-4, COMP-5, Tipos Numéricos, LEVEL 01, 66, 77, 88

 

Bellacosa Mainframe e a estrutura do cobol com suas variaveis 

Variáveis COBOL: COMP-1, COMP-2, COMP-3, COMP-4, COMP-5, Tipos Numéricos, LEVEL 01, 66, 77, 88

Uma das partes mais importantes do COBOL é o:

tratamento de dados.

O COBOL foi criado para:

  • negócios;

  • bancos;

  • contabilidade;

  • processamento financeiro.

Por isso ele possui um sistema extremamente rico de:

  • variáveis;

  • formatos;

  • níveis;

  • tipos numéricos.


O que é uma variável no COBOL?

Variável é:

uma área de memória usada para armazenar dados.


Exemplo simples

01 WS-NOME PIC X(30).
01 WS-SALDO PIC 9(9)V99.

Estrutura básica de variável COBOL

LEVEL  NOME      PIC

Exemplo

01 WS-IDADE PIC 9(3).

LEVEL NUMBER

O número inicial indica:

nível hierárquico.


Exemplo

01 CLIENTE.
   05 NOME PIC X(30).
   05 IDADE PIC 9(3).

Hierarquia visual

01 CLIENTE
   ↓
05 NOME
05 IDADE

Tipos básicos de dados COBOL


Numérico

Usa:

PIC 9

Exemplo

01 WS-VALOR PIC 9(5).

Aceita:

12345

Alfanumérico

Usa:

PIC X

Exemplo

01 WS-NOME PIC X(20).

Aceita:

  • letras;

  • números;

  • símbolos.


Alfabético

Usa:

PIC A

Exemplo

01 WS-LETRAS PIC A(10).

Aceita:

apenas letras e espaços.


O que é PIC?

Picture Clause

Define:

formato da variável.


Exemplos importantes


PIC X(10)

Texto.


PIC 9(5)

Número inteiro.


PIC 9(5)V99

Decimal implícito.


O que significa V?

Vírgula decimal implícita.


Exemplo

PIC 9(5)V99

Valor:

1234567

Interpretado como:

12345,67

Tipos COMP no COBOL

Os COMP representam:

formatos internos de armazenamento.

Usados para:

  • performance;

  • economia memória;

  • cálculos rápidos.


COMP

Também chamado:

binário.


Exemplo

01 WS-VALOR PIC S9(4) COMP.

Muito usado para:

  • contadores;

  • índices;

  • performance.


COMP-1

Floating Point Simples Precisão


Usa ponto flutuante


Exemplo

01 WS-REAL PIC S9(5)V99 COMP-1.

Muito usado em:

  • cálculos científicos;

  • engenharia.


COMP-2

Floating Point Dupla Precisão


Mais precisão que COMP-1


Exemplo

01 WS-DOUBLE PIC S9(10)V99 COMP-2.

COMP-3

O mais famoso do COBOL.

Packed Decimal


Armazena números compactados

Muito usado em:

  • bancos;

  • financeiro;

  • batch.


Exemplo

01 WS-SALDO PIC S9(7)V99 COMP-3.

Vantagens

  • economiza espaço;

  • excelente precisão decimal.


Muito importante em:

  • dinheiro;

  • contabilidade.


O que causa S0C7?

Frequentemente:

erro em COMP-3 inválido.


COMP-4

Representação:

binária.

Dependente compilador/plataforma.


Exemplo

01 WS-CONTADOR PIC S9(4) COMP-4.

COMP-5

Binário nativo

Mais próximo da arquitetura máquina.


Muito usado em:

  • integração;

  • performance;

  • chamadas sistema.


Exemplo

01 WS-INDICE PIC S9(9) COMP-5.

Diferença simplificada

TipoCaracterística
COMP-1Float simples
COMP-2Float dupla
COMP-3Decimal compactado
COMP-4Binário
COMP-5Binário nativo

O que é VARCHAR no COBOL?

COBOL tradicional não possui VARCHAR nativo como SQL.

Mas pode simular usando:

  • tamanho;

  • conteúdo variável.


Exemplo comum

01 WS-NOME.
   49 WS-NOME-LEN PIC S9(4) COMP.
   49 WS-NOME-TXT PIC X(100).

Muito usado com DB2

Especialmente em:

VARCHAR DB2.


LEVEL NUMBERS no COBOL


LEVEL 01

Maior estrutura lógica.


Exemplo

01 CLIENTE.

LEVEL 05

Subcampo.


LEVEL 49

Muito usado em VARCHAR.


LEVEL 66

RENAMES

Cria nome alternativo para grupo.


Exemplo

66 DADOS-CLIENTE RENAMES NOME THRU SALDO.

LEVEL 77

Variável independente simples.


Exemplo

77 WS-TOTAL PIC 9(5).

Não possui subníveis


LEVEL 88

Condition Name

Muito poderoso no COBOL.

Cria:

condições legíveis.


Exemplo

01 WS-STATUS PIC X.

   88 STATUS-OK VALUE 'S'.
   88 STATUS-ERRO VALUE 'N'.

Uso

IF STATUS-OK

Muito mais legível.


Sem 88 seria:

IF WS-STATUS = 'S'

Vantagens do LEVEL 88

  • legibilidade;

  • manutenção;

  • semântica negócio.


Exemplo real completo

01 CLIENTE.
   05 NOME        PIC X(30).
   05 SALDO       PIC S9(7)V99 COMP-3.
   05 STATUS      PIC X.

      88 ATIVO    VALUE 'A'.
      88 BLOQUEADO VALUE 'B'.

Como isso aparece no dia a dia?

Praticamente em:

  • bancos;

  • PIX;

  • cartões;

  • DB2;

  • batch;

  • CICS.


Curiosidades incríveis

1. COMP-3 é um dos formatos mais famosos do mundo mainframe


2. Muitos sistemas financeiros dependem fortemente de packed decimal


3. LEVEL 88 é amado por programadores COBOL experientes


4. Grande parte dos ABEND S0C7 envolve COMP-3


Erros comuns de iniciantes


1. Confundir PIC X com PIC 9


2. Não entender decimal implícito


3. Usar COMP inadequadamente


4. Ignorar LEVEL 88


Dicas importantes

Use COMP-3 para valores monetários


Use LEVEL 88 para regras negócio


Organize variáveis hierarquicamente


Entenda packed decimal


Resumo rápido

ElementoFunção
PIC XTexto
PIC 9Numérico
PIC AAlfabético
COMP-1Float simples
COMP-2Float dupla
COMP-3Packed decimal
COMP-4Binário
COMP-5Binário nativo
01Estrutura principal
66RENAMES
77Variável isolada
88Condição lógica

Conclusão

O sistema de variáveis do COBOL é extremamente poderoso e foi projetado para suportar processamento corporativo de alta confiabilidade.

Tipos COMP, níveis hierárquicos e estruturas como LEVEL 88 tornam o COBOL ideal para sistemas financeiros críticos no ambiente mainframe IBM Z.


segunda-feira, 5 de fevereiro de 2007

Estrutura de um Programa COBOL

 

Bellacosa Mainframe e o esqueleto de um programa COBOL conheça sua estrutura

Estrutura de um Programa COBOL

O COBOL foi criado para desenvolver:

  • sistemas corporativos;

  • processamento batch;

  • aplicações financeiras;

  • sistemas bancários;

  • processamento online.

Uma das maiores características do COBOL é sua:

organização estrutural.

Os programas são divididos em:

  • DIVISIONs;

  • SECTIONs;

  • PARAGRAPHs;

  • STATEMENTs.

Isso torna o COBOL:

  • legível;

  • modular;

  • organizado;

  • ideal para sistemas gigantes no mainframe IBM Z.


Estrutura clássica de um programa COBOL

IDENTIFICATION DIVISION.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.

Fluxo lógico

DIVISION
   ↓
SECTION
   ↓
PARAGRAPH
   ↓
STATEMENTS

1. IDENTIFICATION DIVISION

Responsável pela:

identificação do programa.


Contém:

  • nome;

  • autor;

  • comentários;

  • versão.


Exemplo

IDENTIFICATION DIVISION.
PROGRAM-ID. CLIENTE.
AUTHOR. BELLACOSA.

2. ENVIRONMENT DIVISION

Define:

ambiente de execução.


Contém:

  • arquivos;

  • devices;

  • datasets;

  • configurações.


SECTIONs principais

CONFIGURATION SECTION
INPUT-OUTPUT SECTION

Exemplo

SELECT ARQCLI
ASSIGN TO CLIENTE.

3. DATA DIVISION

Define:

dados e variáveis.


SECTIONs mais usadas


FILE SECTION

Layouts de arquivos.


WORKING-STORAGE SECTION

Variáveis internas.


LINKAGE SECTION

Parâmetros recebidos.


LOCAL-STORAGE SECTION

Variáveis locais temporárias.


Exemplo

01 WS-NOME PIC X(30).
01 WS-SALDO PIC 9(9)V99.

4. PROCEDURE DIVISION

Contém:

toda lógica do programa.


Aqui ficam:

  • IF;

  • PERFORM;

  • READ;

  • WRITE;

  • COMPUTE;

  • loops;

  • regras negócio.


Exemplo

PROCEDURE DIVISION.

MAIN.
   DISPLAY 'OLA'.
   STOP RUN.

O que são SECTIONs?

SECTIONs são:

subdivisões dentro das DIVISIONs.


Exemplo

WORKING-STORAGE SECTION.

O que são PARAGRAPHs?

Blocos menores de lógica.


Exemplo

CALCULAR-JUROS.

O que são STATEMENTs?

São:

comandos COBOL executáveis.


Exemplos

MOVE
DISPLAY
IF
PERFORM
READ
WRITE
COMPUTE

Principais comandos COBOL


MOVE

Movimenta dados.

MOVE 100 TO WS-VALOR

DISPLAY

Mostra mensagens.

DISPLAY 'PROCESSANDO'

IF

Decisão lógica.

IF SALDO > 0

EVALUATE

Similar ao CASE.


PERFORM

Executa rotina/repetição.

PERFORM CALCULAR

READ

Lê arquivos.


WRITE

Grava registros.


REWRITE

Atualiza registro VSAM.


DELETE

Remove registro.


COMPUTE

Realiza cálculos.


CALL

Chama subprograma.


STOP RUN

Finaliza programa.


Tipos de programas COBOL


1. Programa Batch

Executado via:

  • JCL;

  • JES2;

  • scheduler.


Características

  • processamento lote;

  • arquivos;

  • relatórios;

  • milhões registros.


Fluxo típico

LER
 ↓
VALIDAR
 ↓
PROCESSAR
 ↓
GERAR RELATÓRIO

Exemplo JCL

//STEP1 EXEC PGM=COBPGM

2. Programa Online

Executado interativamente.

Muito usado em:

CICS.


Exemplos

  • caixa eletrônico;

  • consulta saldo;

  • PIX;

  • cartão.


Características

  • resposta rápida;

  • transacional;

  • online;

  • interação usuário.


Exemplo CICS

EXEC CICS SEND

3. Programa Aninhado (Nested Program)

Programa dentro de outro programa.


Exemplo

IDENTIFICATION DIVISION.
PROGRAM-ID. PAI.

IDENTIFICATION DIVISION.
PROGRAM-ID. FILHO.

Vantagens

  • encapsulamento;

  • compartilhamento variáveis.


Muito usado em COBOL moderno


4. Programa Recursivo

Programa que:

chama a si mesmo.


Exemplo

CALL 'PROG1'

dentro do próprio:

PROG1

Necessita:

RECURSIVE

Muito menos comum no COBOL tradicional


Exemplo

PROGRAM-ID. FAT RECURSIVE.

5. Subprograma

Programa chamado por outro programa.


Exemplo

CALL 'CALCSAL'

Muito comum em:

  • modularização;

  • regras compartilhadas.


6. Programa Conversacional

Muito usado em CICS.

Mantém “estado” entre telas.


O que é modularização?

Dividir sistema em:

  • pequenos programas;

  • rotinas;

  • serviços.


Benefícios

  • manutenção;

  • reutilização;

  • organização.


O que é copybook?

Arquivo reutilizável.


Exemplo

COPY CLIENTE.

Muito usado para layouts


O que é PIC?

Define formato campo.


Exemplos

PIC X(20)

Texto.


PIC 9(5)

Número.


O que é COMP-3?

Formato numérico compactado.

Muito usado em:

processamento financeiro.


O que é EOF?

End Of-File

Fim do arquivo.


Exemplo loop batch

PERFORM UNTIL EOF='S'

Como COBOL aparece no dia a dia?

Praticamente em:

  • bancos;

  • PIX;

  • cartões;

  • folha salarial;

  • seguros;

  • faturamento.


Curiosidades incríveis

1. Muitos programas COBOL possuem milhões de linhas


2. Sistemas COBOL podem funcionar décadas sem parar


3. COBOL moderno suporta APIs e cloud


4. Mainframes executam bilhões de transações COBOL diariamente


Erros comuns de iniciantes


1. Misturar lógica e variáveis


2. Criar PROCEDURE DIVISION gigantes


3. Não modularizar


4. Usar GO TO excessivamente


Resumo rápido

EstruturaFunção
DIVISIONGrande bloco
SECTIONSubdivisão
PARAGRAPHBloco lógico
STATEMENTComando
BatchProcessamento lote
OnlineProcessamento interativo
RecursiveChama si mesmo
NestedPrograma aninhado

Conclusão

A estrutura do COBOL foi criada para suportar sistemas corporativos enormes com organização, estabilidade e clareza.

DIVISIONs, SECTIONs, PARAGRAPHs e STATEMENTs permitem criar programas batch e online altamente confiáveis, fundamentais para o ambiente mainframe IBM Z.

domingo, 4 de fevereiro de 2007

O que são as DIVISIONS e SECTIONs do COBOL?

 

Bellacosa o que as divisions e section num programa COBOL

O que são as DIVISIONS e SECTIONs do COBOL?

Uma das primeiras coisas que chama atenção em COBOL é sua estrutura extremamente organizada.

Diferente de muitas linguagens modernas, o COBOL divide o programa em:

  • DIVISIONs;

  • SECTIONs;

  • PARAGRAPHs.

Isso ajuda a criar programas:

  • organizados;

  • legíveis;

  • fáceis de manter.

Especialmente em sistemas corporativos gigantes do:

mainframe IBM Z.


O que são DIVISIONs?

DIVISIONs são:

grandes blocos principais do programa COBOL.

Cada DIVISION possui:

uma responsabilidade específica.


Estrutura clássica COBOL

IDENTIFICATION DIVISION
ENVIRONMENT DIVISION
DATA DIVISION
PROCEDURE DIVISION

Analogia simples

Imagine um prédio corporativo.

Cada andar possui uma função:

  • administração;

  • arquivos;

  • dados;

  • operações.

As DIVISIONs funcionam exatamente assim.


Fluxo lógico do COBOL

IDENTIFICATION
      ↓
ENVIRONMENT
      ↓
DATA
      ↓
PROCEDURE

1. IDENTIFICATION DIVISION

Responsável pela:

identificação do programa.


Contém informações como:

  • nome do programa;

  • autor;

  • comentários;

  • data.


Exemplo

IDENTIFICATION DIVISION.
PROGRAM-ID. CLIENTE.
AUTHOR. BELLACOSA.

O item mais importante

PROGRAM-ID

Define:

nome do programa COBOL.


2. ENVIRONMENT DIVISION

Define:

ambiente do programa.


Responsável por:

  • arquivos;

  • dispositivos;

  • configurações;

  • datasets.


Muito usada em batch


SECTIONs principais

CONFIGURATION SECTION
INPUT-OUTPUT SECTION

CONFIGURATION SECTION

Define:

  • máquina;

  • compilador;

  • ambiente.


Exemplo

CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-Z.
OBJECT-COMPUTER. IBM-Z.

INPUT-OUTPUT SECTION

Define:

arquivos do programa.


Exemplo

SELECT CLIENTE
ASSIGN TO ARQCLI.

3. DATA DIVISION

Uma das partes mais importantes.

Responsável pelos:

dados e variáveis.


Aqui ficam:

  • layouts;

  • variáveis;

  • tabelas;

  • áreas de memória;

  • copybooks.


SECTIONs mais famosas


FILE SECTION

Layouts de arquivos.


WORKING-STORAGE SECTION

Variáveis internas.


LINKAGE SECTION

Parâmetros recebidos.


Exemplo FILE SECTION

FD ARQCLIENTE.

01 REG-CLIENTE.
   05 NOME PIC X(30).
   05 SALDO PIC 9(9)V99.

O que é FD?

File Description

Define estrutura do arquivo.


Exemplo WORKING-STORAGE

01 WS-TOTAL PIC 9(9)V99.

O prefixo WS significa:

Working Storage.


Exemplo LINKAGE SECTION

01 LK-CLIENTE PIC X(10).

Muito usada em:

  • CALL;

  • subprogramas;

  • CICS.


O que é PIC?

Define formato do campo.


Exemplos

PIC X(20)

Texto.


PIC 9(5)

Número.


4. PROCEDURE DIVISION

Aqui fica:

a lógica do programa.


É o “cérebro” do COBOL.


Contém:

  • IF;

  • PERFORM;

  • READ;

  • WRITE;

  • COMPUTE;

  • loops;

  • processamento.


Exemplo

PROCEDURE DIVISION.

MAIN.
   DISPLAY 'OLA'.
   STOP RUN.

O que são SECTIONs?

SECTIONs são:

subdivisões dentro das DIVISIONs.


Elas organizam ainda mais o programa.


Exemplo

WORKING-STORAGE SECTION.

O que são PARAGRAPHs?

Pequenos blocos de lógica.


Exemplo

CALCULAR-TOTAL.

Hierarquia do COBOL

DIVISION
   ↓
SECTION
   ↓
PARAGRAPH
   ↓
STATEMENTS

Exemplo completo simplificado

IDENTIFICATION DIVISION.
PROGRAM-ID. TESTE.

DATA DIVISION.

WORKING-STORAGE SECTION.
01 WS-NOME PIC X(20).

PROCEDURE DIVISION.

MAIN.
   MOVE 'VAGNER' TO WS-NOME
   DISPLAY WS-NOME
   STOP RUN.

Como isso aparece no batch?

Muito comum:

READ ARQUIVO
 ↓
VALIDAR
 ↓
PROCESSAR
 ↓
WRITE RELATORIO

Tudo dentro da:

PROCEDURE DIVISION.


Como as DIVISIONs ajudam?

Elas tornam o código:

  • organizado;

  • modular;

  • legível;

  • padronizado.


Por que COBOL é tão organizado?

Porque foi criado para:

sistemas corporativos gigantes.


Grandes programas COBOL possuem:

  • milhares de linhas;

  • dezenas de SECTIONs;

  • centenas de PARAGRAPHs.


Curiosidades incríveis

1. O COBOL foi uma das primeiras linguagens extremamente organizadas


2. Muitas linguagens modernas herdaram ideias de modularização do COBOL


3. Sistemas bancários enormes dependem dessa organização


4. Grandes programas COBOL podem ter centenas de SECTIONs


Erros comuns de iniciantes


1. Misturar lógica na DATA DIVISION


2. Criar PROCEDURE DIVISION gigantesca


3. Não modularizar PARAGRAPHs


4. Confundir FILE SECTION com WORKING-STORAGE


Dicas importantes

Organize variáveis claramente


Separe lógica em PARAGRAPHs pequenos


Nomeie SECTIONs corretamente


Mantenha PROCEDURE DIVISION organizada


Como isso aparece no dia a dia?

Praticamente em:

  • COBOL batch;

  • CICS;

  • DB2;

  • sistemas bancários;

  • processamento financeiro.


Resumo rápido

EstruturaFunção
IDENTIFICATION DIVISIONIdentificação
ENVIRONMENT DIVISIONAmbiente/arquivos
DATA DIVISIONVariáveis/layouts
PROCEDURE DIVISIONLógica
SECTIONSubdivisão
PARAGRAPHBloco lógico

Conclusão

As DIVISIONs e SECTIONs são a base estrutural do COBOL.

Elas organizam programas em áreas específicas de identificação, ambiente, dados e lógica, permitindo criar sistemas corporativos extremamente organizados e confiáveis no ambiente mainframe IBM Z.


sábado, 3 de fevereiro de 2007

O que é COBOL?

 

Bellacosa Mainframe apresenta a linguagem de programação COBOL

O que é COBOL?

Quando falamos de:

  • bancos;

  • cartões;

  • folha salarial;

  • seguros;

  • governos;

  • processamento financeiro;

existe uma linguagem que continua sendo uma das mais importantes do mundo:

COBOL.

Mesmo após décadas, ela ainda movimenta:

  • trilhões de dólares;

  • sistemas bancários;

  • pagamentos;

  • processamento batch;

  • grandes empresas globais.


O que significa COBOL?

COBOL significa:

Common Business Oriented Language

Em português:

Linguagem Orientada a Negócios.


Objetivo do COBOL

O COBOL foi criado para:

processamento de negócios corporativos.

Principalmente:

  • registros;

  • arquivos;

  • relatórios;

  • cálculos financeiros;

  • processamento batch.


Origem histórica

COBOL surgiu em:

1959.

Foi criado por um comitê apoiado pelo governo americano e empresas de tecnologia.


Grace Hopper

Uma das figuras históricas mais importantes relacionadas ao COBOL.

Ela ajudou a popularizar:

  • compiladores;

  • linguagens de alto nível;

  • computação corporativa.


Por que COBOL ficou tão famoso?

Porque ele era:

  • legível;

  • organizado;

  • próximo da linguagem humana;

  • excelente para negócios.


Exemplo COBOL

IF SALDO > 0
   DISPLAY 'SALDO POSITIVO'
END-IF

Muito fácil de entender.


O COBOL foi criado para:

  • bancos;

  • contabilidade;

  • folha salarial;

  • faturamento;

  • seguros;

  • processamento financeiro.


Como COBOL funciona no mainframe?

Principalmente em:

processamento batch.


Fluxo clássico COBOL

LER ARQUIVO
 ↓
VALIDAR
 ↓
CALCULAR
 ↓
ATUALIZAR
 ↓
GERAR RELATÓRIO

O COBOL é procedural?

Tradicionalmente:

sim.

Baseado em:

  • procedimentos;

  • fluxo sequencial;

  • processamento estruturado.


Estrutura clássica de um programa COBOL


IDENTIFICATION DIVISION

Informações do programa.


ENVIRONMENT DIVISION

Ambiente e arquivos.


DATA DIVISION

Variáveis e layouts.


PROCEDURE DIVISION

Lógica do programa.


Exemplo simples

IDENTIFICATION DIVISION.
PROGRAM-ID. TESTE.

PROCEDURE DIVISION.
    DISPLAY 'OLA MUNDO'.
    STOP RUN.

O que é DISPLAY?

Comando usado para:

mostrar mensagens.


O que é MOVE?

Mover valores.


Exemplo

MOVE 100 TO SALDO

O que é PERFORM?

Executar rotinas.


Exemplo

PERFORM CALCULAR

O que é READ?

Ler arquivos.


O que é WRITE?

Gravar registros.


O que é COMPUTE?

Realizar cálculos.


COBOL trabalha muito com arquivos

Principalmente:

  • QSAM;

  • VSAM;

  • datasets sequenciais.


COBOL e DB2

Muito usados juntos.


Exemplo SQL em COBOL

EXEC SQL
   SELECT NOME
   INTO :WS-NOME
   FROM CLIENTES
END-EXEC

COBOL e CICS

Usado para aplicações online.

Exemplo:

  • caixas eletrônicos;

  • consultas bancárias;

  • sistemas transacionais.


COBOL batch

Executado via:

  • JCL;

  • JES2;

  • scheduler.


Exemplo batch

//STEP1 EXEC PGM=COBPGM

O que é compilação COBOL?

Transformar código-fonte em:

executável.


Fluxo simplificado

COBOL SOURCE
   ↓
COMPILADOR
   ↓
LOAD MODULE
   ↓
EXECUÇÃO

O que é copybook?

Arquivo reutilizável com layouts.


Exemplo

01 CLIENTE.
   05 NOME PIC X(30).
   05 SALDO PIC 9(9)V99.

O que é PIC?

Define formato do campo.


Exemplo

PIC X(10)

Texto.


PIC 9(5)

Numérico.


O que é COMP-3?

Formato compactado numérico.

Muito usado em:

processamento financeiro.


O COBOL ainda é usado?

Muito.

Especialmente em:

  • bancos;

  • seguradoras;

  • governos;

  • cartões;

  • sistemas críticos.


Por que COBOL ainda existe?

Porque ele é:

  • extremamente confiável;

  • estável;

  • rápido;

  • eficiente para batch.


Quantidade de código COBOL no mundo

Estima-se:

bilhões de linhas.


COBOL moderno

Hoje existe:

  • COBOL orientado a objetos;

  • APIs REST;

  • integração cloud;

  • DevOps;

  • OpenShift;

  • z/OS Connect.


COBOL não é “morto”

Na verdade:

continua extremamente relevante.


Vantagens do COBOL


Excelente para negócios


Muito estável


Ótimo para batch


Fácil leitura


Alta confiabilidade


Excelente performance em mainframe


Desvantagens


Sintaxe extensa


Curva inicial diferente


Menos popular fora do corporativo


Sistemas antigos podem ser complexos


Curiosidades incríveis

1. Grande parte das transações bancárias do mundo passa por COBOL


2. Muitos sistemas COBOL possuem mais de 40 anos


3. O COBOL sobreviveu a diversas gerações tecnológicas


4. Mainframes executam bilhões de linhas COBOL diariamente


Erros comuns de iniciantes


1. Achar que COBOL morreu


2. Confundir COBOL com linguagem “lenta”


3. Ignorar batch e arquivos


4. Não entender lógica procedural


Como COBOL aparece no dia a dia?

Praticamente em:

  • PIX;

  • cartões;

  • bancos;

  • folha salarial;

  • faturamento;

  • seguros;

  • governo.


Exemplo simplificado real

LER CLIENTE
 ↓
VALIDAR CPF
 ↓
CALCULAR LIMITE
 ↓
ATUALIZAR DB2
 ↓
GERAR RELATÓRIO

Resumo rápido

ConceitoSignificado
COBOLLinguagem de negócios
BatchProcessamento em lote
CICSProcessamento online
DB2Banco de dados
JCLExecução batch
COPYBOOKLayout reutilizável
COMP-3Formato numérico

Conclusão

COBOL é uma das linguagens mais importantes da história da computação corporativa.

Criado para processamento de negócios, ele continua sendo fundamental no ambiente mainframe IBM Z, executando sistemas críticos de bancos, governos e grandes empresas em todo o mundo.


sexta-feira, 2 de fevereiro de 2007

O que é Paradigma de Programação Procedural Estruturado?

 

Bellacosa Mainframe e o paradigma de programacao procedural estruturado

O que é Paradigma de Programação Procedural Estruturado?

Quando estudamos:

  • COBOL;

  • C;

  • PL/I;

  • programação batch;

  • desenvolvimento no mainframe;

um conceito muito importante aparece:

programação procedural estruturada.

Ela foi uma enorme evolução na história da computação corporativa.


Primeiro: o que significa “procedural”?

Programação procedural é:

organizar programas em procedimentos e rotinas.

Exemplo:

VALIDAR
CALCULAR
GERAR-RELATORIO

Cada parte executa:

uma tarefa específica.


Então o que significa “estruturada”?

Estruturada significa:

organizar o código de forma clara, previsível e controlada.

Ela evita:

  • confusão;

  • desvios excessivos;

  • código caótico;

  • spaghetti code.


Definição simples

Programação procedural estruturada é:

um paradigma procedural que usa estruturas organizadas de fluxo e modularização.

Ela busca:

  • clareza;

  • manutenção;

  • organização;

  • legibilidade.


Analogia simples

Imagine uma cidade.


Código não estruturado

Ruas sem organização.
Tudo confuso.


Código estruturado

Cidade organizada:

  • avenidas;

  • sinais;

  • setores;

  • fluxo lógico.


Origem histórica

Nos primeiros sistemas:

  • Assembly;

  • COBOL antigo;

  • FORTRAN antigo;

era comum usar muitos:

GO TO

Isso criava programas extremamente difíceis de manter.


Então surgiu a programação estruturada

Com conceitos como:

  • blocos;

  • procedimentos;

  • loops;

  • IF;

  • modularização.


Objetivo principal

Eliminar:

spaghetti code.


O que é spaghetti code?

Código cheio de:

  • desvios;

  • GO TO;

  • saltos;

  • fluxo confuso.

Parecendo:

um prato de espaguete.


Exemplo não estruturado

GO TO A100
GO TO B200
GO TO C300

Fluxo difícil de entender.


Exemplo estruturado

IF SALDO > 0
   PERFORM PROCESSA
ELSE
   PERFORM ERRO
END-IF

Muito mais organizado.


Estruturas fundamentais da programação estruturada


Sequência

Execução linear.


Decisão

Escolha de caminhos.


Repetição

Loops controlados.


Fluxo estruturado clássico

INICIO
 ↓
LER DADOS
 ↓
VALIDAR
 ↓
PROCESSAR
 ↓
GERAR SAÍDA
 ↓
FIM

Como isso aparece no COBOL?

Muito fortemente.


Exemplo COBOL estruturado

PERFORM UNTIL EOF = 'S'

   READ CLIENTE
      AT END
         MOVE 'S' TO EOF
      NOT AT END
         PERFORM PROCESSA-CLIENTE
   END-READ

END-PERFORM

Isso é estruturado porque:

  • possui fluxo claro;

  • evita GO TO;

  • usa blocos organizados.


O que é modularização?

Dividir programa em partes menores.


Exemplo

VALIDAR-CLIENTE
CALCULAR-JUROS
GERAR-RELATORIO

Benefícios

  • manutenção;

  • reutilização;

  • clareza;

  • testes mais fáceis.


O que é bloco estruturado?

Código delimitado logicamente.


Exemplos COBOL

IF / END-IF
EVALUATE
PERFORM UNTIL

Antes da programação estruturada

Muito código tinha:

GO TO

em excesso.


Problema disso

Fluxo imprevisível.


Programação estruturada ajudou a:

  • reduzir bugs;

  • melhorar manutenção;

  • aumentar confiabilidade.


O COBOL moderno é estruturado?

Sim.

Principalmente usando:

  • END-IF;

  • EVALUATE;

  • PERFORM;

  • inline PERFORM.


Exemplo batch estruturado

LER ARQUIVO
 ↓
VALIDAR
 ↓
CALCULAR
 ↓
ATUALIZAR DB2
 ↓
GERAR RELATÓRIO

Como isso ajuda no mainframe?

Mainframes processam:

  • milhões;

  • bilhões de registros.

Precisam de:

  • estabilidade;

  • clareza;

  • manutenção segura.


Programação estruturada trouxe exatamente isso


Características da programação procedural estruturada


Fluxo previsível


Menos GO TO


Uso de procedimentos


Modularização


Blocos organizados


Facilidade manutenção


Legibilidade


Vantagens


Código mais limpo


Mais fácil de entender


Menos erros


Melhor debugging


Excelente para batch


Muito usada em COBOL


Desvantagens


Sistemas gigantes ainda podem ficar complexos


Exige disciplina de programação


Modularização ruim pode dificultar manutenção


Procedural estruturado vs procedural antigo


Antigo

Muito:

GO TO

Estruturado

Mais:

IF
PERFORM
EVALUATE

Procedural estruturado vs orientação a objetos


Estruturado

Organiza:

procedimentos.


OO

Organiza:

objetos/classes.


Curiosidades incríveis

1. A programação estruturada revolucionou o desenvolvimento corporativo


2. Grande parte do COBOL moderno segue princípios estruturados


3. Muitos sistemas bancários antigos passaram por “reestruturação” para remover GO TO


4. Estruturação ajudou muito na manutenção de sistemas gigantes


Erros comuns de iniciantes


1. Usar GO TO demais


2. Criar procedimentos enormes


3. Misturar lógica demais


4. Não modularizar


Dicas importantes

Use:

  • PERFORM;

  • IF;

  • EVALUATE.


Evite GO TO excessivo


Divida lógica em pequenas rotinas


Organize fluxo claramente


Como isso aparece no dia a dia?

Praticamente em:

  • COBOL;

  • batch;

  • DB2 procedural;

  • faturamento;

  • bancos;

  • folha salarial.


Exemplo simplificado completo

MAIN
 ↓
LER CLIENTES
 ↓
VALIDAR
 ↓
CALCULAR
 ↓
ATUALIZAR DB2
 ↓
GERAR RELATÓRIO
 ↓
FIM

Resumo rápido

ConceitoSignificado
ProceduralBaseado em procedimentos
EstruturadoFluxo organizado
ModularizaçãoDividir programa
PERFORMExecuta rotina
IFDecisão
GO TODesvio fluxo
Spaghetti CodeCódigo confuso

Conclusão

O paradigma de programação procedural estruturado organiza programas em procedimentos claros e fluxos previsíveis, reduzindo complexidade e facilitando manutenção.

Ele é a base do COBOL moderno e do processamento batch corporativo no ambiente mainframe IBM Z.