segunda-feira, 31 de janeiro de 2011

🔥 Aprender COBOL com DB2 — o caminho do programador mainframer de verdade

 

Aprenda COBOL com DB2 ao estilo Bellacosa Mainframe

🔥 Aprender COBOL com DB2 — o caminho do programador mainframer de verdade



🧠 Introdução: por que COBOL + DB2 ainda manda no jogo

Se você quer ser programador mainframe COBOL com DB2, precisa entender uma verdade simples:

COBOL processa.
DB2 guarda.
SQL conecta o cérebro à memória do negócio.

Não estamos falando de tecnologia “antiga”.
Estamos falando da infraestrutura que processa bilhões por dia, com ACID, consistência e auditoria que muita stack moderna ainda tenta copiar.

Esse artigo é um mapa de estrada, do zero até o código profissional, misturando:

  • técnica

  • história

  • prática

  • fofoca de data center

  • e aquela sabedoria que só mainframer velho passa no café ☕


DB2 o banco de dados do Mainframe


🧱 PARTE 1 — Conhecendo o DB2 (o coração dos dados)

📜 Um pouco de história

O DB2 nasce na IBM nos anos 80, baseado no modelo relacional proposto por Edgar F. Codd.

👉 Conceito revolucionário:

  • dados em tabelas

  • relações lógicas

  • SQL como linguagem declarativa

Enquanto o mundo brigava com arquivos VSAM:

“Me diga o que você quer, não como buscar.”


🧩 Modelo Relacional (base de tudo)

  • Tabela → entidade de negócio

  • Linha (row) → registro

  • Coluna (column) → atributo

  • Primary Key → identidade

  • Foreign Key → relacionamento

💬 Bellacosa comenta:

“Se você não entende modelo relacional, não adianta saber COBOL.”


🧾 Tipos de Dados DB2 (o casamento com COBOL)

DB2COBOL
CHAR / VARCHARPIC X
INTEGERPIC S9
DECIMALPIC S9V
DATEPIC X(10)
TIMESTAMPPIC X(26)

🥚 Easter egg:
DB2 guarda DECIMAL melhor do que muito banco moderno guarda FLOAT 😏


Queries SQL no DB2 

🧑‍💻 PARTE 2 — Linguagem SQL no DB2

🗣️ SQL: a língua franca dos dados

SQL não é procedural.
SQL é declarativa.

🔹 DDL — Data Definition Language

CREATE TABLE CLIENTE ( ID_CLIENTE INTEGER NOT NULL, NOME VARCHAR(50), SALDO DECIMAL(9,2), PRIMARY KEY (ID_CLIENTE) );
  • CREATE

  • DROP

  • ALTER


🔹 DCL — Data Control Language

GRANT SELECT ON CLIENTE TO USER01;

Controle de acesso.
Segurança raiz de banco.


🔹 DML — Data Manipulation Language

INSERT INTO CLIENTE VALUES (1, 'JOÃO', 1500.00); SELECT * FROM CLIENTE; UPDATE CLIENTE SET SALDO = SALDO + 100 WHERE ID_CLIENTE = 1; DELETE FROM CLIENTE WHERE ID_CLIENTE = 1;

💬 Bellacosa:

“DELETE sem WHERE é como RM -RF /”


🔍 SELECT, JOIN e afins (onde o bicho pega)

SELECT C.NOME, P.VALOR FROM CLIENTE C JOIN PEDIDO P ON C.ID_CLIENTE = P.ID_CLIENTE;

👉 JOIN mal feito = batch lento = gente te ligando às 3 da manhã.


🛠️ SPUFI e QMF

  • SPUFI → SQL direto no TSO

  • QMF → consultas, relatórios, análise

💡 Dica Bellacosa:

“Todo mundo começa no SPUFI.
Quem fica bom, aprende QMF.”



🧩 PARTE 3 — COBOL com DB2 (onde nasce o profissional)

🏛️ História rápida do COBOL

  • Criado em 1959

  • Foco: negócio

  • Legibilidade

  • Estabilidade

👉 Não é bonito.
👉 É confiável.


🧠 Estrutura de um programa COBOL

  • IDENTIFICATION DIVISION

  • ENVIRONMENT DIVISION

  • DATA DIVISION

  • PROCEDURE DIVISION

📌 Árvore programática é fundamental para não virar macarrão lógico.


🔗 Host Variables (a ponte COBOL ↔ DB2)

EXEC SQL SELECT SALDO INTO :WS-SALDO FROM CLIENTE WHERE ID_CLIENTE = :WS-ID END-EXEC.
  • Sempre com :

  • Tipagem correta

  • Conversão consciente


📊 SQLCA — seu melhor amigo

IF SQLCODE = 0 CONTINUE ELSE DISPLAY 'ERRO DB2 ' SQLCODE END-IF
SQLCODESignificado
0OK
+100NOT FOUND
< 0ERRO

💬 Bellacosa:

“Quem ignora SQLCODE vira operador sem saber.”


📚 DCLGEN — o BOOK sagrado

  • Gera layout da tabela

  • Gera host variables

  • Evita erro humano

//STEP01 EXEC PGM=DSNTEP2

👉 Nunca escreva layout DB2 na mão. Nunca.


Consulta pagina via cursor no DB2

🌀 PARTE 4 — Cursores (nível profissional)

🔄 Cursor para leitura

EXEC SQL DECLARE C1 CURSOR FOR SELECT ID_CLIENTE, NOME FROM CLIENTE END-EXEC.
EXEC SQL FETCH C1 INTO :WS-ID, :WS-NOME END-EXEC.

📌 Sempre:

  • OPEN

  • FETCH

  • CLOSE


✍️ Inserindo, alterando e excluindo via COBOL

  • INSERT → novo registro

  • UPDATE → alteração controlada

  • DELETE → cuidado máximo

💡 Boa prática:

“Nunca DELETE direto sem histórico.”


🧠 PARTE 5 — Boas práticas Bellacosa Mainframe

✔ Use DCLGEN
✔ Sempre trate SQLCODE
✔ Evite SELECT *
✔ Documente regra de negócio
✔ Separe lógica de acesso a dados
✔ Teste com volume real
✔ Pense em performance desde o SELECT

🥚 Easter egg clássico:

“O batch estava lento porque alguém esqueceu o índice.”


🧪 Exercícios de fixação (mentalidade correta)

  1. Criar tabela DB2

  2. Gerar DCLGEN

  3. Programa COBOL com:

    • INSERT

    • SELECT

    • UPDATE

    • DELETE

  4. Programa com CURSOR

  5. Programa com JOIN

  6. Analisar SQLCODE

  7. Ajustar performance

👉 Isso forma programador, não copiador de código.


🧠 Comentário final Bellacosa

Aprender COBOL com DB2 não é aprender uma linguagem.
É aprender:

  • como dados movem o mundo

  • como sistemas críticos pensam

  • como escrever código que não pode falhar

🔥 COBOL + DB2 não é passado.
É o núcleo silencioso do presente.

Enquanto modas passam,
o batch fecha o dia.

 

Sem comentários:

Enviar um comentário