Translate

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

sábado, 23 de maio de 2026

☕🔥 “O SEGREDO SUJO DA PERFORMANCE NO MAINFRAME” — POR QUE CACHE VALE MAIS QUE CPU NO MUNDO COBOL/CICS

 

Bellacosa Mainframe e a alta performance no mainframe

☕🔥 “O SEGREDO SUJO DA PERFORMANCE NO MAINFRAME” — POR QUE CACHE VALE MAIS QUE CPU NO MUNDO COBOL/CICS

Quando alguém fala em performance, a maioria pensa imediatamente em:

  • CPU,

  • MIPS,

  • zIIP,

  • upgrade de hardware.

Mas no mundo IBM Mainframe existe uma verdade brutal:

☕ O MAIOR INIMIGO DA PERFORMANCE É O I/O.

E por isso:

CACHE É UMA DAS COISAS MAIS IMPORTANTES DO UNIVERSO z/OS.

A imagem mostra 9 estratégias modernas de caching.

Agora vamos traduzir isso para:

  • COBOL,

  • CICS,

  • DB2,

  • VSAM,

  • MQ,

  • Batch,

  • Sysplex,

no puro estilo Bellacosa Mainframe.


☕ 1. CACHE-ASIDE — “BUSQUE SÓ QUANDO PRECISAR”

Na imagem:

  • aplicação procura primeiro no cache,

  • se não encontrar, busca no banco.


🔥 Isso é praticamente a filosofia clássica do CICS

Exemplo:

Programa COBOL/CICS

EXEC CICS READQ TS
END-EXEC.

Se o dado:

  • já estiver em TSQ,

  • COMMAREA,

  • ou memória temporária,

não precisa acessar:

  • DB2,

  • VSAM,

  • disco físico.


☕ Exemplo real

Consulta de cliente VIP:

  • primeira busca → DB2,

  • próximas buscas → memória CICS.


🔥 Resultado

Menos:

  • EXCP,

  • lock,

  • espera,

  • canal I/O.

Mais:

  • TPS,

  • resposta rápida,

  • estabilidade.


☕ 2. READ-THROUGH — “O CACHE BUSCA AUTOMATICAMENTE”


🔥 No mainframe isso aparece muito em DB2 Buffer Pool

O programa COBOL:

nem sabe se o dado veio da memória ou do disco

O DB2 decide.


☕ Fluxo real

SELECT → Buffer Pool → se miss → DASD

🔥 O detalhe importante

Boa parte da má performance em DB2:

NÃO é SQL ruim

mas:

  • buffer pool inadequado,

  • hit ratio baixo,

  • excesso de I/O físico.


☕ Frase clássica de performance analyst

“Seu SELECT talvez esteja ótimo.

Seu disco é que está sofrendo.”


☕ 3. WRITE-THROUGH — “GRAVAR NO CACHE E NO BANCO AO MESMO TEMPO”


🔥 Aqui entra o lado paranoico do mainframe

O IBM Z odeia inconsistência.


☕ Exemplo bancário

PIX:

  • atualiza saldo,

  • atualiza log,

  • atualiza auditoria,

  • confirma persistência.

Tudo sincronizado.


☕ No DB2 isso lembra:

  • commit controlado,

  • logging,

  • buffer synchronization.


🔥 Benefício

Maior consistência.


☕ Problema

Mais latência.


🔥 Mainframe frequentemente escolhe:

CONSISTÊNCIA > VELOCIDADE

porque banco prefere:

“mais lento”

a:

“saldo corrompido”.

☕ 4. WRITE-BEHIND (WRITE-BACK) — “GRAVA DEPOIS”


🔥 Estratégia perigosamente poderosa

Primeiro:

  • grava em memória,

  • depois persiste assíncrono.


☕ No Mainframe aparece em:

  • buffers VSAM,

  • deferred write,

  • MQ persistence strategies,

  • DFSORT spill optimization.


☕ Benefício monstruoso

Reduz I/O físico.


🔥 Risco brutal

Se houver falha antes da persistência:

dado pode sumir.


☕ Por isso no mundo financeiro:

  • write-back é cuidadosamente controlado,

  • logging vira obrigatório,

  • recovery é crítico.


☕ 5. REFRESH-AHEAD — “ATUALIZE ANTES DE EXPIRAR”


🔥 Mainframe faz isso há décadas

Exemplo:

DB2 Prefetch

O sistema prevê páginas futuras.


☕ Outro exemplo

Batch COBOL:

  • pré-carrega tabelas,

  • carrega parâmetros em memória,

  • evita lookup repetitivo.


🔥 Filosofia do z/OS

“Se você SABE que vai precisar…

carregue antes.”


☕ 6. INVALIDATION — “JOGUE FORA O QUE FICOU VELHO”


🔥 Aqui mora um dos maiores pesadelos corporativos

DADO STALE


☕ Exemplo real

Usuário altera endereço.

Mas:

  • cache ainda possui dado antigo.

Resultado:

  • sistema A mostra endereço novo,

  • sistema B mostra antigo.


🔥 No Mainframe isso é gravíssimo

Porque:

  • múltiplos sistemas compartilham informação,

  • inconsistência pode virar problema legal.


☕ Técnicas usadas

  • cache invalidation,

  • commit synchronization,

  • DB2 coherency,

  • Sysplex cache coherence.


☕ 7. CACHE WARMING — “ESQUENTAR O CACHE”


🔥 Todo operador experiente conhece isso

Após IPL:

  • tudo está “frio”.


☕ Resultado clássico

Primeiros minutos:

  • I/O explode,

  • disco sofre,

  • response time piora.


🔥 Então muitos ambientes:

  • executam jobs de preload,

  • aquecem buffer pools,

  • pré-carregam tabelas críticas.


☕ Exemplo Bellacosa

Banco antes da abertura:

pré-carrega contas mais acessadas.

☕ 8. CACHE SHARDING — “DIVIDIR O CACHE”


🔥 Aqui entra Parallel Sysplex

Vários nós:

  • compartilham workload,

  • dividem memória,

  • reduzem contenção.


☕ Exemplo real

Cada região CICS:

  • mantém cache local,

  • mas sincroniza estado global.


🔥 Benefício

Escalabilidade monstruosa.


☕ Desafio

Coerência.


🔥 Porque o pesadelo é:

nó A sabe algo
nó B não sabe

☕ 9. TTL (TIME TO LIVE) — “TUDO TEM PRAZO DE VALIDADE”


🔥 No Mainframe isso é filosofia operacional

Nem todo dado pode viver eternamente no cache.


☕ Exemplos

Taxa de câmbio

TTL pequeno.


Tabela de estados brasileiros

TTL enorme.


🔥 O segredo

Equilibrar:

  • frescor,

  • performance,

  • consistência.


☕ O ERRO CLÁSSICO DOS INICIANTES

Pensar:

“Mais cache = sempre melhor”

🔥 NÃO.

Cache ruim pode gerar:

  • inconsistência,

  • stale data,

  • contenção,

  • explosão de memória,

  • recovery complexo.


☕ O QUE O MAINFRAME ENSINA SOBRE CACHE

Cache não é só velocidade.

É:

  • engenharia de previsibilidade,

  • redução de I/O,

  • estabilidade operacional,

  • proteção contra gargalos.


🔥 Porque no IBM Z:

DISCO É O INIMIGO NATURAL DA PERFORMANCE.


☕ RESUMO BELLACOSA MAINFRAME

EstratégiaNo IBM Mainframe
Cache-AsideTSQ/COMMAREA/lookup local
Read-ThroughDB2 Buffer Pool
Write-ThroughCommit síncrono
Write-BehindDeferred write
Refresh-AheadPrefetch
InvalidationCache coherency
Cache WarmingPreload pós IPL
Cache ShardingSysplex distribution
TTLExpiração controlada

☕🔥 Frase final no estilo Bellacosa Mainframe

“Muita gente acha que Mainframe é rápido por causa da CPU.

Veterano de z/OS sabe:

o segredo quase sempre está em evitar I/O.”

 

sábado, 10 de fevereiro de 2007

O que é Copybook no COBOL?

 

Bellacosa Mainframe apresenta o copybook em Cobol


O que é Copybook no COBOL?

Um dos recursos mais importantes do COBOL é o:

Copybook

Ele permite reutilizar estruturas de dados e trechos de código em vários programas, evitando duplicação e facilitando a manutenção dos sistemas.

Em grandes ambientes bancários e corporativos, é comum existirem:

  • milhares de programas COBOL;

  • centenas de copybooks compartilhados;

  • layouts padronizados usados por toda a empresa.


Definição simples

Copybook é:

um arquivo reutilizável contendo definições COBOL.

Normalmente ele armazena:

  • layouts de registros;

  • estruturas de arquivos;

  • áreas de comunicação;

  • parâmetros de programas;

  • campos de telas CICS.


Analogia simples

Imagine um formulário padrão de cliente.

Em vez de recriar o formulário em cada programa, você cria apenas uma vez e reutiliza em todos.

O Copybook funciona exatamente assim.


Onde ele é usado?

Principalmente na:

DATA DIVISION

Exemplo sem Copybook

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

Agora imagine repetir isso em 500 programas.


Solução

Criar um Copybook.


Exemplo do Copybook

Membro:

COPYLIB(CLIENTE)

Conteúdo:

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

Como usar?

No programa COBOL:

WORKING-STORAGE SECTION.

COPY CLIENTE.

Durante a compilação, o compilador substitui o COPY pelo conteúdo do Copybook.


O que acontece internamente?

COPY CLIENTE
      ↓
Compilador expande
      ↓
Layout inserido
      ↓
Compilação continua

Onde os Copybooks ficam?

Normalmente em:

USER.COPYLIB
EMPRESA.COBOL.COPYLIB
BANCO.COPYLIB

Geralmente em:

  • PDS;

  • PDSE.


Estrutura típica

EMPRESA.COPYLIB
    |
    +-- CLIENTE
    +-- PRODUTO
    +-- ENDERECO
    +-- CONTRATO

O comando COPY

Sintaxe básica:

COPY CLIENTE.

Exemplo completo

DATA DIVISION.

WORKING-STORAGE SECTION.

COPY CLIENTE.

PROCEDURE DIVISION.

DISPLAY CLI-NOME.

Copybook para arquivos

Muito comum.


Exemplo

FD ARQCLIENTE.

COPY CLIREG.

Copybook CLIREG

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

Vantagem

Se o layout mudar:

30 bytes
↓
40 bytes

Alteramos apenas o Copybook.

Todos os programas passam a usar a nova estrutura.


Copybook para parâmetros

Muito usado com:

CALL

Exemplo

Programa chamador:

CALL 'CALCSAL'
USING DADOS-CLIENTE

Copybook compartilhado

01 DADOS-CLIENTE.
   05 CODIGO PIC 9(5).
   05 SALDO  PIC S9(7)V99.

Copybook em CICS

Extremamente comum.


Exemplo

EXEC CICS RECEIVE MAP(...)

Mapas BMS geralmente geram Copybooks.


Copybook em DB2

Muito usado com host variables.


Exemplo

EXEC SQL
   INCLUDE SQLCA
END-EXEC

SQLCA é um Copybook

Contém:

  • SQLCODE;

  • SQLSTATE;

  • informações da execução SQL.


Copybooks famosos


SQLCA

Retorno DB2.


DFHAID

Teclas PF do CICS.


DFHBMSCA

Mapas CICS.


DCLGEN

Layouts gerados pelo DB2.


O que é REPLACING?

Permite substituir textos durante o COPY.


Exemplo

Copybook:

05 CAMPO PIC X(10).

Uso:

COPY CLIENTE
REPLACING CAMPO BY NOME.

Muito usado em frameworks COBOL


Benefícios do Copybook


Reutilização


Padronização


Menos código duplicado


Facilidade manutenção


Menos erros


Integração entre sistemas


Problemas comuns

Alterar Copybook sem analisar impacto

Pode afetar centenas de programas.


Copiar layouts incompatíveis

Pode causar:

  • S0C7;

  • truncamento;

  • dados incorretos.


Não versionar Copybooks

Dificulta manutenção.


Boas práticas

✅ Um Copybook para cada entidade de negócio

✅ Nome padronizado

✅ Documentar alterações

✅ Evitar campos sem descrição

✅ Manter compatibilidade sempre que possível


Como identificar um Copybook?

Normalmente aparecem comandos como:

COPY CLIENTE.

ou

EXEC SQL
   INCLUDE SQLCA
END-EXEC.

Curiosidades

1. Alguns bancos possuem mais de 50 mil Copybooks em produção

2. Uma alteração em um único Copybook pode impactar centenas de aplicações

3. Copybooks são uma das bases da reutilização no COBOL

4. Muitos layouts de arquivos, VSAM e DB2 são compartilhados via Copybook


Resumo rápido

ConceitoFunção
CopybookArquivo reutilizável
COPYInclui Copybook
COPYLIBBiblioteca de Copybooks
SQLCACopybook DB2
DFHAIDCopybook CICS
REPLACINGSubstituição dinâmica
DCLGENGeração layouts DB2

Conclusão

O Copybook é um dos mecanismos mais importantes do COBOL. Ele permite compartilhar layouts, parâmetros e estruturas entre programas, garantindo padronização, reutilização e manutenção eficiente dos sistemas corporativos executados no ambiente IBM Z.


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.

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.


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.