quarta-feira, 4 de novembro de 2009

🐉 DB2 Compilação, DBRM, BIND, PACKAGE e PLAN

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

Sem comentários:

Enviar um comentário