Mostrar mensagens com a etiqueta copy. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta copy. Mostrar todas as mensagens

sábado, 10 de dezembro de 2011

🔥 DB2 DCLGEN para COBOL – Onde a Tabela Vira Código e o Código Vira Contrato 🔥

 

Bellacosa Mainframe apresenta o DCLGEN

🔥 DB2 DCLGEN para COBOL – Onde a Tabela Vira Código e o Código Vira Contrato 🔥



Se existe um ponto em que DB2, COBOL e disciplina se encontram, esse ponto se chama DCLGEN.

Quem já manteve sistema legado sabe:
👉 layout duplicado dá problema
👉 tipo mal definido vira bug
👉 desalinhamento vira incidente às 3h da manhã

O DCLGEN não é só uma ferramenta.
Ele é um pacto de não-agressão entre o banco e o programa.


🕰️ Um Pouco de História – Por Que o DCLGEN Existe?

Antes do DCLGEN, o programador:

  • Lia a DDL

  • “Interpretava” os tipos

  • Criava o layout na mão

  • Rezava

💡 Resultado:

  • Campos truncados

  • Decimais errados

  • -302 misterioso

A IBM, num raro momento de empatia com o ser humano, criou o DCLGEN (Declarations Generator):
👉 a definição oficial da tabela vira estrutura COBOL.

Menos interpretação.
Mais verdade.


🧬 O Que o DCLGEN Gera, de Fato?

Um DCLGEN padrão gera:

  1. EXEC SQL DECLARE TABLE

  2. Estrutura COBOL (01 / 05)

  3. EXEC SQL DECLARE CURSOR (opcional)

Tudo alinhado com:

  • Tipo

  • Tamanho

  • Precisão

  • Nulidade

💡 Regra de ouro Bellacosa:
Se não veio do DCLGEN, desconfie.


🧱 Tipos DB2 vs Tipos COBOL – Onde a Magia Acontece

Aqui mora a maioria dos bugs silenciosos.

🔢 NUMERIC / DECIMAL

DB2

DECIMAL(9,2)

COBOL (DCLGEN)

05 COL-VALOR       PIC S9(7)V99 COMP-3.

💡 Por quê COMP-3?
Porque DB2 armazena decimal compactado.
DISPLAY aqui é convite ao desastre.


🔠 CHAR / VARCHAR

DB2

CHAR(10)
VARCHAR(50)

COBOL

05 COL-NOME        PIC X(10).
05 COL-DESC-LEN    PIC S9(4) COMP.
05 COL-DESC-TEXT   PIC X(50).

💡 Curiosidade:
VARCHAR vira dois campos em COBOL.
Esqueceu do LENGTH? Vai ler lixo.

🥚 Easter egg clássico:
LENGTH negativo = dado inválido ou bug sorrateiro.


📅 DATE / TIME / TIMESTAMP

DB2

DATE
TIMESTAMP

COBOL

05 COL-DATA        PIC X(10).
05 COL-TS          PIC X(26).

💡 Comentário Bellacosa:
Não trate data DB2 como número.
Isso termina em lágrimas.


🔣 INTEGER / SMALLINT / BIGINT

DB2

INTEGER
SMALLINT
BIGINT

COBOL

05 COL-ID          PIC S9(9) COMP.
05 COL-COD         PIC S9(4) COMP.
05 COL-SEQ         PIC S9(18) COMP.

💡 Dica de sobrevivência:
Nunca use DISPLAY para inteiros DB2.
Nunca.


🚨 NULLs – O Inimigo Invisível

DB2 aceita NULL.
COBOL… não.

DCLGEN resolve isso com indicadores:

05 COL-VALOR       PIC S9(7)V99 COMP-3.
05 COL-VALOR-IND   PIC S9(4) COMP.
  • 0 → valor válido

  • -1 → NULL

💡 Dica Bellacosa:
Esqueceu de tratar indicador?
Parabéns, você acaba de criar um dump futuro.


🧪 Conversões Implícitas – Onde o DB2 Avisa (ou não)

DB2 até converte tipos…
Mas cobra juros.

  • CHAR → DECIMAL

  • DATE → CHAR

  • VARCHAR → FIXED

💡 Conhecimento de bastidor:
Conversão implícita custa CPU e pode quebrar índice.

👉 Converta no COBOL, não no SQL.


⚙️ DCLGEN no Mundo Moderno (Git, CI/CD, DevOps)

Hoje o DCLGEN:

  • É versionado no Git

  • Gerado automaticamente

  • Sincronizado com DDL

  • Integrado ao pipeline

💡 Regra de ouro moderna:
DDL mudou?
👉 gere novo DCLGEN
👉 recompile
👉 rebind

Sem atalhos.


🗣️ Fofoquices de Sala-Cofre

  • “Funcionava ontem” → tabela mudou

  • “Só aumentaram o tamanho” → DCLGEN não regenerado

  • “É só um campo novo” → layout desalinhado


🧠 Pensamento Final do El Jefe

DCLGEN não é burocracia.
É contrato.

Ele garante que:

  • O que o DB2 grava

  • É exatamente o que o COBOL lê

Sem achismo.
Sem “interpretação criativa”.

🔥 Regra final Bellacosa Mainframe:
Se a tabela é verdade,
o DCLGEN é a tradução oficial.

Todo o resto…
é boato que vira incidente. 💾🧠


quarta-feira, 16 de fevereiro de 2011

🔥 Challenges of Running COBOL with Git – Uma Observação Prática (com cheiro de sala-cofre) 🔥

 

COBOL e os desafios do GITHUB e ECLIPSE

🔥 Challenges of Running COBOL with Git – Uma Observação Prática (com cheiro de sala-cofre) 🔥

Durante décadas, COBOL e z/OS viveram felizes no seu ecossistema fechado, previsível e extremamente confiável. ISPF, PDS/PDSE, JCL, compile noturno, café forte e aquele silêncio respeitoso do data center. Então alguém chegou dizendo:

“Agora tudo é Git. Branch, pull request, rebase e pipeline.”

🤔 Pause dramático de mainframer veterano.

Este artigo nasce de pesquisa, observação prática e muita conversa de corredor — aquele tipo de conhecimento que não aparece em Redbook, mas surge no café das 3h da manhã durante um IPL mal-humorado.


🧬 1. EBCDIC vs UTF-8 – A Guerra Invisível dos Bytes

Aqui começa o primeiro boss final.

Git assume UTF-8. COBOL em z/OS respira EBCDIC. Misture isso sem regras claras e você ganha:

  • Literais corrompidos

  • DISPLAY mostrando hieróglifos

  • Compilação falhando sem erro “óbvio”

💡 Dica Bellacosa:
Defina conversão explícita e obrigatória no pipeline. Nada de “ah, o plugin cuida disso”. Ele não cuida.

🥚 Easter egg:
Muitos bugs “fantasma” em COBOL moderno não são lógicos — são encoding bugs disfarçados.


📚 2. Copybooks – O Efeito Dominó Silencioso

COBOL sem copybook é como mainframe sem SMF: tecnicamente existe, mas ninguém confia.

O problema?
Git não entende dependência semântica.

  • Um copybook alterado

  • 137 programas impactados

  • 12 recompilados

  • 125 esquecidos

  • Produção quebra… só amanhã

💡 Dica de guerra:
Pipeline dependency-aware é obrigatório. Ferramentas como DBB, scripts de impacto ou metadados não são luxo — são sobrevivência.

🗣 Fofoquinha real:
Já vi incidente crítico porque “era só um copybook de comentário”. Spoiler: não era.


📐 3. Diffs, Colunas e a Maldade do Espaço em Branco

Git ama linhas.
COBOL ama colunas.

Um espaço fora do lugar vira:

  • Diff gigante

  • Merge impossível

  • Revisão inútil

Comentários deslocados geram mais conflito que erro lógico.

💡 Dica Bellacosa raiz:

  • Padronize formatação

  • Use ferramentas de pretty-print COBOL

  • Trate espaço em branco como código, não estética

🥚 Easter egg clássico:
Um MOVE perfeito na lógica pode falhar só porque começou na coluna errada. Git não entende isso. O compilador sim — e ele não perdoa.


⚙️ 4. Build, Compile e o “CI/CD de Verdade”

Aqui mora a grande ilusão moderna:

“Ah, só dar git push que compila.”

Não, não compila.

COBOL exige:

  • Compile no z/OS

  • Link-edit

  • Bind DB2

  • Execução JCL

  • Controle de RC

  • Logs rastreáveis

Sem automação real, Git vira apenas um repositório bonito.

💡 Dica prática:
Se o commit não dispara compile, bind e validação automática, você não tem CI/CD — só tem GitHub caro.


🧠 5. Cultura, Pessoas e o Choque de Gerações

Aqui não é tecnologia — é gente.

  • Desenvolvedores COBOL dominam ISPF como ninguém

  • Git traz conceitos novos: rebase, squash, branch strategy

  • Sem cuidado, isso vira atrito desnecessário

💡 Dica de liderança técnica:
Não force Git “goela abaixo”. Traduza conceitos:

  • Branch ≈ versão lógica

  • Pull request ≈ revisão formal

  • Pipeline ≈ JCL automático

🗣 Comentário de bastidor:
Os melhores times são híbridos: mainframers aprendendo Git e devops aprendendo z/OS. Quem só ensina e não aprende falha.


🔐 6. Segurança – RACF não é GitHub (e nunca será)

Git trabalha com:

  • Usuário

  • Token

  • Repo

Mainframe trabalha com:

  • Identidade

  • Perfil

  • Dataset

  • Auditoria pesada

Alinhar RACF/ACF2/TSS com Git não é trivial, principalmente em ambientes regulados.

💡 Dica Bellacosa:
Auditoria e rastreabilidade devem nascer no pipeline, não serem “adaptadas depois”.

🥚 Easter egg corporativo:
Compliance sempre descobre o problema depois que o sistema já está em produção.


🧠 Pensamento Final – Git Funciona com COBOL?

Sim.
Mas não por mágica.

Git funciona com COBOL quando existe:

  • Disciplina

  • Ferramentas corretas

  • Pipeline consciente

  • Respeito à cultura mainframe

Sem isso, você só moderniza o problema — não a solução.

🔥 Provocação final do El Jefe:
Quantos ambientes “modernizados” hoje só trocaram o PDS por Git, mas mantiveram os mesmos riscos de 1989?

terça-feira, 2 de junho de 2009

📂 FILE MANAGER BASE (FMB) – IBM

 

Bellacosa Mainframe apresenta o IBM Mainframe ISPF File Manager

📂 FILE MANAGER BASE (FMB) – IBM

ao estilo Bellacosa Mainframe

Quem vive o dia a dia do mainframe sabe: entender layout de arquivo não é detalhe, é sobrevivência. E quando a pergunta clássica aparece — “em que posição começa e termina esse campo?” — eu não penso duas vezes: FMB – File Manager Base, da IBM.

Inserido de forma elegante no menu do TSO/ISPF, o FMB é aquele utilitário que não faz barulho, não aparece em buzzwords modernas, mas resolve problemas reais há décadas.


IBM Mainframe menu ISPFfm



🧠 Para que eu uso o FMB no dia a dia

Sempre que preciso consultar o layout de um arquivo sequencial, VSAM ou até datasets mais “exóticos”, recorro ao caminho:

FMB → Utilities → Copybook

Essa opção é ouro.

Ela apresenta, de forma clara e objetiva:

  • Nome dos campos

  • Tipo/formato (CHAR, PACKED, BINARY, etc.)

  • Tamanho do campo

  • Posição inicial

  • Posição final

Ou seja: exatamente o que você precisa quando está conferindo um arquivo gerado por batch, validando uma carga, depurando um problema de produção ou simplesmente desconfiando que “isso aqui não bate”.

📌 Para quem já sofreu lendo copybook manualmente, contando coluna por coluna no papel (ou no Notepad 😅), isso é quase terapêutico.


IBM Mainframe z/OS File Manager 
🗂️ Valor prático real (não é marketing)

O FMB facilita muito:

  • Conferência de conteúdo de arquivos sequenciais

  • Validação de layouts em processos batch

  • Análise rápida sem precisar abrir compilador ou rodar job

  • Redução de erro humano (adeus contagem manual de colunas)

É um utilitário que economiza tempo, evita erro e aumenta confiança.


IBM Mainframe z/os ISPF File Manager Utilities13

🕰️ Data de origem (contexto histórico)

  • 📅 Origem teórica: início dos anos 1990

  • 🏢 Desenvolvido pela IBM como parte do conjunto de ferramentas de produtividade para MVS/TSO

  • Evoluiu junto com:

    • ISPF

    • Ambientes z/OS

    • Necessidade crescente de análise de dados em produção

Ele nasce numa época em que:

“visualizar dados com contexto” era uma dor real e frequente.


IBM Mainframe print layout copy book

🚀 Data de lançamento (referência)

  • 📆 Primeiras versões comerciais: por volta de 1992–1993

  • Integrado posteriormente ao IBM File Manager for z/OS

  • O File Manager Base (FMB) funciona como o “coração” da solução


💡 Dicas de uso (estilo Bellacosa)

  • 🔎 Use o Copybook Viewer antes de qualquer alteração em programa batch

  • 🧪 Compare layout esperado × arquivo real antes de acusar “erro no sistema”

  • 📐 Confirme campos PACKED e BINARY — muitos problemas estão ali

  • 🧘‍♂️ Em produção crítica, olhar o arquivo primeiro salva deploys desnecessários


🥚 Curiosidades & Easter Eggs

  • O FMB mostra posições 1-based, como o COBOL — nada de index zero confuso

  • Ele respeita o copybook original, inclusive REDEFINES

  • Dá para encontrar erros de layout sem executar uma linha de código

  • Muitos profissionais usam há anos e não sabem metade do que ele oferece


🤫 Fofoquices de mainframe

  • Tem muita equipe que tem o FMB instalado e não usa

  • Já vi debug de horas ser resolvido em 5 minutos de FMB

  • Em várias empresas, só “os mais antigos” sabem navegar bem nele

  • É comum ouvir: “ah, isso aí é coisa de velho” — até o dia que salva a madrugada 😄


📌 Exemplo prático

Imagine um arquivo de 300 bytes com um campo VALOR-TOTAL:

  • Esperado: posição 121 a 135 (PACKED)

  • No FMB: aparece como 121–134
    👉 Pronto, achou o erro de 1 byte que estava quebrando tudo.

Sem FMB? Boa sorte contando na unha.


💬 Comentário final (bem Bellacosa)

O File Manager Base não é moderno, não é “cloud native”, não aparece em slide bonito.
Mas é eficiente, confiável e maduro, exatamente como o mainframe gosta de ser.

Ferramenta simples, silenciosa e extremamente poderosa.
Para mim, um utilitário de altíssimo valor.

Quem conhece, usa.
Quem usa, confia.
Quem confia… dorme melhor depois do batch. 😎