Translate

Mostrar mensagens com a etiqueta processamento batch. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta processamento batch. Mostrar todas as mensagens

terça-feira, 5 de maio de 2026

🔥☕ PACKAGE, PLAN, DBRM E O SUBMUNDO DA COMPILAÇÃO Db2 — O GUIA PADAWAN DO COBOL MAINFRAME ☕🔥

 

Bellacosa Mainframe explica como funciona um programa COBOL com DB2

🔥☕ PACKAGE, PLAN, DBRM E O SUBMUNDO DA COMPILAÇÃO Db2 — O GUIA PADAWAN DO COBOL MAINFRAME ☕🔥

Todo programador COBOL iniciante passa por isso.

Você escreve:

EXEC SQL
SELECT *
FROM EMPLOYEE
END-EXEC.

compila…

e de repente aparecem criaturas malignas como:

  • DBRM
  • PACKAGE
  • PLAN
  • BIND
  • DSNHPC
  • SQLCODE -805
  • SQLCODE -818

E o padawan pensa:

“Mas eu só queria fazer um SELECT…”

☕🔥

Então vamos entrar no verdadeiro submundo do Db2 z/OS.


☕ O MAIOR SEGREDO DO Db2

O Db2 NÃO executa SQL diretamente do fonte COBOL.

Ele precisa:

  • analisar SQL
  • validar objetos
  • escolher access path
  • gerar runtime structures

Por isso existe toda a cadeia:

SOURCE

PRECOMPILE

DBRM

COMPILE

LINK

BIND PACKAGE

BIND PLAN

RUN

🔥 VISÃO GERAL DA ARQUITETURA


☕ SOURCE COBOL

Seu programa original.

Exemplo:

EXEC SQL
SELECT EMPNO
INTO :WS-EMPNO
FROM EMPLOYEE
END-EXEC.

Dataset típico:

USERID.COBOL.SOURCE(MEUCOB)

🔥 STEP 1 — PRECOMPILE

Programa usado:

//DB2PC EXEC PGM=DSNHPC

☕ O QUE É O DSNHPC?

É o:

Db2 PRECOMPILER

🔥 O QUE ELE FAZ?

Ele:

✅ encontra EXEC SQL
✅ valida sintaxe SQL
✅ remove SQL do COBOL
✅ gera COBOL expandido
✅ gera DBRM


☕ RESULTADO DO PRECOMPILE

Saídas:

SaídaFunção
COBOL expandidoserá compilado
DBRMusado no BIND

🔥 O QUE É O DBRM?

DBRM =

DATABASE REQUEST MODULE

☕ PENSE NO DBRM COMO:

“o extrato SQL do seu programa”

Ele contém:

  • SQL do programa
  • informações internas Db2
  • metadados SQL

🔥 O DBRM NÃO É EXECUTÁVEL

Isso é importante.

Ele NÃO roda.

Ele apenas alimenta o BIND.


☕ ONDE O DBRM É SALVO?

Normalmente em:

//DBRMLIB DD DSN=USERID.DBRM.LIB(MEUPRG)

Dataset típico:

USERID.DBRM.LIB

Tipo:

PDS ou PDSE

🔥 EXEMPLO REAL DE PRECOMPILE

//DB2PC EXEC PGM=DSNHPC,
// PARM=('HOST(IBMCOB),APOST')

☕ EXPLICANDO OS PARÂMETROS


HOST(IBMCOB)

Define linguagem COBOL IBM.


APOST

Aspas simples delimitam strings SQL.


SOURCE

Mantém fonte expandido legível.


XREF

Gera cross reference.


DATE(ISO)

Formato ISO de datas.


🔥 STEP 2 — COMPILE COBOL

Programa:

//COB EXEC PGM=IGYCRCTL

☕ O QUE ACONTECE?

Agora o compilador COBOL compila:

o COBOL expandido gerado pelo precompiler

🔥 ELE NÃO COMPILA MAIS EXEC SQL

Porque o precompiler já removeu.


☕ SAÍDA DO COMPILE

Gera:

OBJECT MODULE

temporário.


🔥 STEP 3 — LINK-EDIT

Programa:

//LKED EXEC PGM=IEWL

☕ O QUE O LINK FAZ?

Une:

  • objeto COBOL
  • bibliotecas runtime
  • chamadas Db2

🔥 RESULTADO

LOAD MODULE EXECUTÁVEL

☕ ONDE FICA O LOAD MODULE?

Exemplo:

//SYSLMOD DD DSN=USERID.LOADLIB(MEUPRG)

Dataset típico:

USERID.LOADLIB

🔥 AGORA ENTRA O VERDADEIRO MUNDO Db2

Até aqui temos apenas:

programa COBOL executável

Mas o Db2 ainda NÃO sabe nada sobre ele.


☕ STEP 4 — BIND PACKAGE

Programa:

//BIND EXEC PGM=IKJEFT01

🔥 O QUE É O PACKAGE?

PACKAGE é:

o SQL compilado e otimizado do programa

☕ O PACKAGE CONTÉM

✅ access paths
✅ SQL otimizado
✅ metadados
✅ permissões
✅ informações de runtime


🔥 QUEM CRIA O PACKAGE?

O comando:

BIND PACKAGE

☕ O BIND USA:

  • DBRM
  • catálogo Db2
  • índices
  • estatísticas
  • permissões

🔥 O ACCESS PATH NASCE AQUI

Db2 decide:

  • index scan?
  • tablespace scan?
  • join order?
  • sort?
  • parallelism?

☕ ONDE PACKAGE É ARMAZENADO?

No próprio catálogo Db2.

Tabelas internas como:

SYSIBM.SYSPACKAGE

🔥 NÃO FICA EM PDS

Isso pega MUITOS iniciantes.

PACKAGE NÃO fica em dataset.

Fica dentro do Db2.


☕ EXEMPLO DE BIND PACKAGE

DSN SYSTEM(DBCG)

BIND PACKAGE(MYCOLL)
MEMBER(MEUPRG)
ACTION(REPLACE)
ISOLATION(CS)
VALIDATE(BIND)
EXPLAIN(YES)

🔥 EXPLICANDO OS PARÂMETROS


PACKAGE(MYCOLL)

Collection/package name.


MEMBER(MEUPRG)

Nome do DBRM.


ACTION(REPLACE)

Substitui package antigo.


ISOLATION(CS)

Cursor Stability.


VALIDATE(BIND)

Valida objetos no bind.


EXPLAIN(YES)

Salva access path.


☕ STEP 5 — BIND PLAN

Agora vem o PLAN.


🔥 O QUE É O PLAN?

PLAN é:

um agrupador de packages

☕ ANTIGAMENTE

Db2 antigo usava:

PLAN + DBRM

🔥 Db2 MODERNO USA:

PLAN + PACKAGE

☕ O PLAN FUNCIONA COMO

“container lógico de execução”

🔥 EXEMPLO

BIND PLAN(MYPLAN)
PKLIST(MYCOLL.*)

☕ PKLIST

Lista packages autorizados.


🔥 ONDE O PLAN FICA?

Também no catálogo Db2.

Tabela:

SYSIBM.SYSPLAN

☕ EXECUÇÃO — RUN

Agora sim:

RUN PROGRAM(MEUPRG)
PLAN(MYPLAN)

🔥 O FLUXO EM EXECUÇÃO

Programa chama:

PLAN

PACKAGE

SQL

Db2 Engine

☕ ANALOGIA PADAWAN

Imagine:


☕ SOURCE

Receita escrita.


🔥 DBRM

Lista dos ingredientes.


☕ PACKAGE

Receita otimizada pelo chef.


🔥 PLAN

Cardápio do restaurante.


☕ LOAD MODULE

Cozinheiro executando.

☕🔥


🔥 ERROS MAIS FAMOSOS


☕ SQLCODE -805

O terror dos iniciantes.

PACKAGE NÃO ENCONTRADO

CAUSAS

✅ bind não executado
✅ collection errada
✅ package apagado
✅ plan errado


🔥 SQLCODE -818

TIMESTAMP MISMATCH

SIGNIFICA

LOAD MODULE ≠ PACKAGE atual.


ACONTECE QUANDO

recompila COBOL mas não rebinda package.


☕ SQLCODE -204

objeto não encontrado

NORMALMENTE

schema/qualifier errado.


🔥 SQLCODE -551

sem autorização

☕ COMO INVESTIGAR PROBLEMAS


🔥 VER PACKAGE

SELECT *
FROM SYSIBM.SYSPACKAGE
WHERE NAME = 'MEUPRG'

☕ VER PLAN

SELECT *
FROM SYSIBM.SYSPLAN
WHERE NAME = 'MYPLAN'

🔥 DISPLAY PACKAGE

-DISPLAY PACKAGE(*)

☕ O QUE O JUNIOR PRECISA ENTENDER


🔥 O COBOL NÃO EXECUTA SQL DIRETAMENTE


☕ O PACKAGE É O SQL “COMPILADO”


🔥 O PLAN ORGANIZA EXECUÇÃO


☕ O DBRM É A PONTE ENTRE FONTE E PACKAGE


🔥 O BIND DEFINE PERFORMANCE


☕ O ACCESS PATH NASCE NO BIND


🔥 O MAIOR SEGREDO DO Db2

Muitos problemas de produção NÃO estão no COBOL.

Estão em:

  • package inválido
  • bind errado
  • access path ruim
  • rebind problemático
  • estatísticas ruins
  • qualifier incorreto

☕ A VERDADEIRA MAGIA

Enquanto frameworks modernos escondem tudo…

o programador mainframe aprende:

  • como SQL realmente executa
  • como runtime funciona
  • como otimização nasce
  • como banco conversa com aplicação

E isso transforma um simples padawan COBOL…

num verdadeiro Jedi do Db2 z/OS. ☕🔥


segunda-feira, 19 de janeiro de 2026

💥 LAB: Db2 na prática — do TSO ao Batch

 

Bellacosa Mainframe Laboratio DB2

💥 LAB: Db2 na prática — do TSO ao Batch

Trabalharemos com o IBM Db2 13 for z/OS usando duas abordagens:

👉 Online (TSO/ISPF + SPUFI)
👉 Batch (JCL + DSNTEP2)


🧪 PARTE 1 — SPUFI (modo interativo)

🔹 O que é SPUFI?

👉 SPUFI = SQL Processor Using File Input

Ferramenta dentro do DB2I (ISPF) para rodar SQL rapidamente.


🚀 Passo a passo

1. Entrar no DB2I

No ISPF:

===> DB2I

2. Selecionar SPUFI

Option ===> 1

3. Criar dataset de entrada

Exemplo:

VAGNER.SQL.INPUT

4. Escrever o SQL

CREATE TABLE VAGNER.CLIENTES (
ID INTEGER,
NOME VARCHAR(50),
CIDADE VARCHAR(50)
);

INSERT INTO VAGNER.CLIENTES VALUES (1, 'ANA', 'SAO PAULO');
INSERT INTO VAGNER.CLIENTES VALUES (2, 'JOAO', 'CAMPINAS');

SELECT * FROM VAGNER.CLIENTES;

5. Executar (PF8)

👉 Resultado vai para o dataset de saída


💡 O que você aprendeu aqui

✔ Criar tabela
✔ Inserir dados
✔ Consultar
✔ Usar ambiente interativo


⚙️ PARTE 2 — DSNTEP2 (modo batch raiz)

Agora vem o modo produção de verdade 😎


🔹 O que é DSNTEP2?

👉 Programa utilitário que executa SQL via JCL

💡 Tradução Bellacosa:

SPUFI é treino… DSNTEP2 é jogo oficial ⚔️


📜 JCL COMPLETO

//DB2JOB JOB (ACCT),'DB2 LAB',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
//*
//STEP01 EXEC PGM=IKJEFT01
//STEPLIB DD DISP=SHR,DSN=DSN!!0.SDSNLOAD
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(DB2P)
RUN PROGRAM(DSNTEP2) PLAN(DSNTEP71) -
LIB('DSN!!0.SDSNLOAD')
END
/*
//SYSIN DD *
SELECT * FROM VAGNER.CLIENTES;
/*

🔍 Explicando (nível especialista)

🔹 IKJEFT01

👉 Interface TSO em batch


🔹 DSN SYSTEM(DB2P)

👉 Conecta no subsistema Db2


🔹 DSNTEP2

👉 Executa comandos SQL


🔹 PLAN(DSNTEP71)

👉 Plano necessário para execução


🔹 SYSIN

👉 Onde está o SQL


🧠 Resultado esperado

Você verá:

ID NOME CIDADE
----------------------
1 ANA SAO PAULO
2 JOAO CAMPINAS

💣 PEGADINHAS DE PRODUÇÃO

⚠️ 1. Falha de autorização

👉 Verifique permissões no RACF


⚠️ 2. PLAN não encontrado

👉 DSNTEP71 pode variar no ambiente


⚠️ 3. SQLCODE negativo

Exemplo:

  • -104 → erro de sintaxe
  • -204 → objeto não existe
  • -911 → deadlock

🔥 EVOLUÇÃO DO LAB

Quer subir o nível? Tenta isso:

💡 Desafio 1

Criar índice:

CREATE INDEX IDX1 ON VAGNER.CLIENTES (ID);

💡 Desafio 2

Update:

UPDATE VAGNER.CLIENTES
SET CIDADE = 'RIO DE JANEIRO'
WHERE ID = 1;

💡 Desafio 3

Delete:

DELETE FROM VAGNER.CLIENTES WHERE ID = 2;

🚀 VISÃO DE MAINFRAME RAIZ

👉 SPUFI → exploração / debug
👉 DSNTEP2 → automação / batch / produção

Se você domina isso, você já está acima de 80% dos devs Db2 💥


domingo, 5 de outubro de 2025

☕💾🏛️ ARQUITETURA MAINFRAME — O “CORAÇÃO INVISÍVEL” QUE AINDA MOVE BANCOS, GOVERNOS E O PLANETA DIGITAL 🔥💣

 

Bellacosa Mainframe e a Arquitetura do Mainframe

☕💾🏛️ ARQUITETURA MAINFRAME — O “CORAÇÃO INVISÍVEL” QUE AINDA MOVE BANCOS, GOVERNOS E O PLANETA DIGITAL 🔥💣

Muita gente iniciante em COBOL acredita que:

“mainframe é só um computador velho rodando tela preta.”

☠️☠️☠️

Até descobrir que:

  • bancos inteiros;
  • cartões;
  • PIX;
  • bolsas;
  • companhias aéreas;
  • governos;

dependem de arquiteturas mainframe funcionando 24x7 sem falhar.

E aí nasce a grande revelação:

Mainframe NÃO é apenas um computador.

É um ecossistema gigantesco de:

  • processamento;
  • integração;
  • segurança;
  • virtualização;
  • automação;
  • resiliência;
  • engenharia enterprise.

☕💾🔥


☕ O QUE É “ARQUITETURA MAINFRAME”?

Arquitetura mainframe é:

a forma como todo o ambiente enterprise é organizado para processar volumes absurdos de dados com extrema confiabilidade.

Ela envolve:

  • hardware;
  • sistema operacional;
  • storage;
  • redes;
  • segurança;
  • middleware;
  • banco de dados;
  • processamento batch;
  • processamento online;
  • observabilidade;
  • recuperação de desastre.

☠️ O ERRO DO PROGRAMADOR JÚNIOR

O júnior normalmente vê apenas:

COBOL + JCL

Mas por trás existe um universo monstruoso.


☕💾 O MAINFRAME É UMA “CIDADE DIGITAL”

Imagine um banco gigante.

Você vê:

  • aplicativo;
  • internet banking;
  • PIX;
  • cartão.

Mas nos bastidores existe:

Usuário

API

Gateway

MQ

CICS

COBOL

DB2

Storage

Logs

Backup

DR Site

Isso é arquitetura enterprise real.


☕💾 O z/OS — O SISTEMA OPERACIONAL INVISÍVEL

O coração do mainframe normalmente é o:

z/OS

Ele controla:

  • memória;
  • jobs;
  • discos;
  • segurança;
  • workloads;
  • transações;
  • paralelismo.

Curiosidade brutal ☕

Enquanto um desktop trava com algumas aplicações…

o z/OS pode:

  • processar milhares de transações por segundo;
  • suportar milhões de contas;
  • operar décadas sem reboot.

🔥💣


☕ O MAINFRAME FOI “CLOUD” ANTES DA CLOUD EXISTIR

Hoje o mercado fala:

  • virtualização;
  • elasticidade;
  • workload balancing;
  • multi-tenant.

Mas o mainframe já fazia isso há décadas com:

  • LPAR
  • Sysplex
  • WLM
  • Virtualização
  • Compartilhamento de recursos

☕💾 LPAR — O “SERVIDOR DENTRO DO SERVIDOR”

LPAR significa:

Logical Partition

O mainframe divide um hardware físico em vários ambientes independentes.

Exemplo:

LPAR 1 → Produção
LPAR 2 → Desenvolvimento
LPAR 3 → QA
LPAR 4 → Disaster Recovery

🔥 Isso é virtualização enterprise pesada.


☕ WLM — O “CÉREBRO” DO MAINFRAME

Workload Manager

O WLM decide:

  • quem recebe CPU;
  • prioridade;
  • recursos;
  • throughput.

Exemplo real

Se:

  • PIX
  • cartão
  • internet banking

disputarem CPU…

o WLM prioriza o serviço mais crítico.

☕🔥


☠️ O MAINFRAME NÃO PENSA COMO UM PC

PC:

“abre programas.”

Mainframe:

“orquestra workloads críticos nacionais.”

💾🔥


☕ CICS — O REI DAS TRANSAÇÕES

O CICS é um monitor transacional.

Ele gerencia:

  • milhares de usuários;
  • sessões;
  • telas;
  • transações;
  • commits;
  • rollback.

Exemplo clássico

Cliente consulta saldo:

Terminal

CICS

COBOL

DB2

Resposta

Tudo em milissegundos.


☕💾 DB2 — O CÉREBRO DOS DADOS

O DB2 no z/OS é:

  • extremamente robusto;
  • altamente otimizado;
  • transacional;
  • resiliente.

Ele garante:

  • integridade;
  • consistência;
  • recovery;
  • concorrência.

Curiosidade poderosa ☕

Grande parte dos bancos prefere DB2 z/OS porque:

  • estabilidade absurda;
  • throughput gigantesco;
  • segurança enterprise.

☕ JES2 — O MAESTRO DOS BATCHES

O JES2 controla:

  • filas;
  • spool;
  • jobs;
  • impressão;
  • execução batch.

Exemplo bancário noturno

Fechamento diário

Juros

Extratos

Compensação

Backup

Relatórios

Tudo orquestrado pelo JES2.


☠️ QUANDO O BATCH ATRASA…

☕🔥☠️🔥☠️🔥

O caos corporativo começa:

  • SLA explode;
  • banco atrasa;
  • processamento falha;
  • diretoria entra em pânico.

☕💾 RACF — O GUARDIÃO DO ENTERPRISE

O RACF controla:

  • usuários;
  • permissões;
  • datasets;
  • transações;
  • auditoria.

No enterprise:

segurança NÃO é opcional.


☕ MQ — O “CORREIO DIGITAL” DO MAINFRAME

MQ permite comunicação segura entre sistemas.

Exemplo:

App Mobile

API

MQ

Mainframe

COBOL

Isso desacopla sistemas gigantes.


☕💾 SYSPEX — O MAINFRAME DISTRIBUÍDO

Parallel Sysplex

Vários mainframes trabalhando juntos.

Objetivo:

  • alta disponibilidade;
  • balanceamento;
  • failover;
  • escalabilidade.

Curiosidade assustadora ☕

O Sysplex permite:

  • manutenção sem parar o banco;
  • failover quase invisível;
  • continuidade operacional absurda.

🔥💣


☕ O MAINFRAME NÃO É “LEGADO”

Essa palavra é mal interpretada.

Muita gente chama legado de:

“coisa velha.”

Mas enterprise pensa:

“sistema crítico que gera bilhões.”

💾🔥


☕💾 O NOVO MAINFRAME

Hoje o ecossistema inclui:

  • APIs REST;
  • z/OS Connect;
  • OpenShift;
  • containers;
  • LinuxONE;
  • IA;
  • automação;
  • observabilidade;
  • integração cloud.

O MAINFRAME MODERNO É HÍBRIDO

Cloud
+
APIs
+
Containers
+
COBOL
+
DB2
+
MQ
+
IA

🔥☕


☕ O QUE O PROGRAMADOR COBOL JÚNIOR PRECISA ENTENDER

Você NÃO trabalha apenas com:

  • programa COBOL;
  • JCL;
  • tela CICS.

Você faz parte de:

  • uma arquitetura enterprise gigantesca;
  • altamente integrada;
  • extremamente crítica;
  • absurdamente confiável.

☠️ O GRANDE CHOQUE DO JÚNIOR

O iniciante pensa:

“vou alterar um campo.”

Mas no enterprise isso pode impactar:

  • batch;
  • APIs;
  • MQ;
  • DB2;
  • replicação;
  • compliance;
  • auditoria;
  • mobile banking.

☠️🔥☠️🔥☠️🔥


☕💾 A GRANDE LIÇÃO DA ARQUITETURA MAINFRAME

Mainframe não sobreviveu por acaso.

Ele sobreviveu porque foi construído com:

  • engenharia pesada;
  • confiabilidade;
  • resiliência;
  • governança;
  • performance;
  • estabilidade.

☕💾🔥 CONCLUSÃO — O MAINFRAME É UMA DAS MAIORES OBRAS DE ENGENHARIA DA HISTÓRIA DA COMPUTAÇÃO 🔥💣☕

Muitos desenvolvedores modernos:

  • sabem frameworks;
  • sabem frontend;
  • sabem cloud;

mas nunca sustentaram:

  • sistemas nacionais;
  • milhões de transações;
  • processamento financeiro massivo.

O mainframe sustenta isso diariamente há décadas.

E entender arquitetura mainframe significa:

entender como o mundo enterprise realmente funciona por trás das cortinas. ☕💾🔥