| Bellacosa Mainframe apresenta compilaçao COBOL com DB2 plan e package |
🐉 DB2 + COBOL no Mainframe
Compilação, DBRM, BIND, PACKAGE e PLAN
Ao estilo Bellacosa Mainframe – do big bang ao SELECT
☕ Introdução (pegue seu café)
Todo padawan que entra no mundo do IBM Mainframe + COBOL + DB2 escuta termos quase místicos:
DBRM, BIND, PACKAGE, PLAN…
No começo parecem nomes de monstros de RPG 🧙♂️, mas na prática eles formam o coração da integração entre COBOL e DB2.
Este artigo explica de onde isso veio, por que existe, como funciona, como compilar, como errar (e sobreviver) e como pensar como um Jedi do Mainframe.
🕰️ Origem e História (por que tudo isso existe?)
📜 Anos 70–80: quando DB2 nasceu
IBM precisava de um banco relacional para rodar junto com aplicações COBOL críticas.
COBOL não entende SQL nativamente.
Solução: criar um pré-compilador.
👉 Nasce o conceito de SQL EMBUTIDO (EXEC SQL).
Mas…
💥 Problema:
O compilador COBOL não sabe o que é SQL.
💡 Solução IBM:
Criar um artefato intermediário → DBRM (Database Request Module).
🧩 Visão Geral do Fluxo (o mapa do tesouro)
COBOL + EXEC SQL
|
v
DB2 PRECOMPILER
|
+--> COBOL PURO
+--> DBRM
|
v
BIND
|
v
PACKAGE
|
v
PLAN
|
v
EXECUÇÃO
👉 Nada aqui é opcional.
📦 O que é DBRM (Database Request Module)?
🎯 Definição
DBRM é o arquivo que contém todas as instruções SQL extraídas do seu programa COBOL.
📌 Características
Criado pelo pré-compilador do DB2
Contém:
SELECT
INSERT
UPDATE
DELETE
CURSORS
Não contém código COBOL
🧠 Pense assim:
DBRM = “O livro de feitiços SQL do programa”
🧱 O que é PACKAGE?
🎯 Definição
PACKAGE é o DBRM já compilado e otimizado pelo DB2.
📌 Por que PACKAGE existe?
Antigamente:
Um PLAN gigante para tudo ❌
Hoje:
Um PACKAGE por programa ✔️
Melhor performance
Melhor controle de versão
🧠 Analogia Bellacosa
PACKAGE = prato pronto na cozinha do DB2 🍝
DBRM = receita
🧠 O que é PLAN?
🎯 Definição
PLAN é o conjunto de PACKAGES que uma aplicação pode executar.
📌 Importante
Quem executa é o PLAN
O PLAN aponta para vários PACKAGES
Normalmente 1 PLAN por aplicação/sistema
🧠 Jedi Tip:
Programa não executa PACKAGE direto. Executa PLAN.
🔨 Passo a Passo para um Padawan
🥋 Passo 1 – Escrever o COBOL com SQL
EXEC SQL
SELECT NOME
INTO :WS-NOME
FROM CLIENTES
WHERE ID = :WS-ID
END-EXEC.
🥋 Passo 2 – Pré-compilação DB2
Remove SQL
Gera:
COBOL puro
DBRM
👉 Executado via DSNHPC
🥋 Passo 3 – Compilação COBOL
Compila o código gerado
Produz objeto (.OBJ)
🥋 Passo 4 – Linkedição
Gera LOAD MODULE
🥋 Passo 5 – BIND PACKAGE
Entrada: DBRM
Saída: PACKAGE
🥋 Passo 6 – BIND PLAN
Associa PACKAGES ao PLAN
🥋 Passo 7 – Executar
🎉 O programa roda feliz no CICS ou Batch.
📜 Exemplo de JCL – BIND PACKAGE
//BINDPKG EXEC PGM=IKJEFT01
//STEPLIB DD DISP=SHR,DSN=DB2.DSNLOAD
//SYSTSPRT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(DB2P)
BIND PACKAGE(MEUSCHEMA.PKGPROG1)
MEMBER(PROG1)
ACTION(REPLACE)
ISOLATION(CS)
VALIDATE(BIND)
OWNER(MEUSCHEMA)
/*
🚨 Erros Comuns (e como sobreviver)
❌ -805
DBRM ou PACKAGE não encontrado
✔️ Solução:
PACKAGE não está no PLAN
PLAN não foi rebindado
❌ -818
Timestamp mismatch
✔️ Solução:
Rebind do PACKAGE
Código recompilado mas DBRM antigo
❌ -204
Objeto não existe
✔️ Solução:
Tabela/view não existe
Schema errado
💡 Dicas de Ouro Bellacosa
☕ 1 DBRM = 1 PACKAGE
☕ Nunca use PLAN gigante com tudo
☕ Sempre versionar PACKAGE
☕ Nomeie PACKAGE com ambiente:
PKGPROG1_DEV
PKGPROG1_HML
PKGPROG1_PRD
🥚 Easter Eggs (curiosidades)
🥚 DBRM é tão antigo que veio do System R, o avô do DB2
🥚 Muitos ambientes ainda têm PLAN criados nos anos 90 😱
🥚 Rebind pode melhorar performance sem recompilar COBOL
🥚 EXPLAIN do PACKAGE mostra o plano de acesso
🧙 Comentários de Mestre Jedi
Se você entende DBRM, PACKAGE e PLAN…
Você já saiu do nível Padawan.
Quem domina BIND domina o DB2.
📌 Conclusão
DB2 + COBOL não é magia negra.
É:
Engenharia
História
Performance
Disciplina
E quando bem feito…
🚀 Roda por décadas sem cair.
☕ Um Café no Bellacosa Mainframe