segunda-feira, 7 de março de 2011

🔥 BIND DB2 em COBOL – O Ritual Sagrado Entre o Código e o Plano de Execução 🔥

 

Bind DB2 Package Plan COBOL ao estilo Bellacosa Mainframe

🔥 BIND DB2 em COBOL – O Ritual Sagrado Entre o Código e o Plano de Execução 🔥

 


Se o compile COBOL é o nascimento do programa, o BIND DB2 é o batismo de fogo.
Sem ele, seu programa até existe… mas não fala com o banco.

Quem nunca ouviu no plantão noturno:

“Compilou, linkou… mas esqueceu o BIND.”

Silêncio. Café. Olhar para o SYSOUT. ☕😐

Este artigo é para desmistificar o BIND, separar lenda de verdade e registrar aquele conhecimento que normalmente só se aprende depois do primeiro -805 em produção.


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

Nos primórdios do DB2 (lá no fim dos anos 70), a IBM fez uma escolha genial e cruel ao mesmo tempo:

👉 Separar lógica do programa de estratégia de acesso aos dados.

Assim nasceu o BIND:

  • O COBOL descreve o que quer

  • O DB2 decide como fazer

💡 Resultado:
O mesmo programa pode ter planos diferentes em ambientes diferentes.
Flexibilidade máxima… e dor de cabeça proporcional.


🧩 O Que é o BIND DB2, de Verdade?

BIND é o processo onde o DB2:

  • Analisa o SQL estático

  • Escolhe access paths

  • Cria PACKAGE (ou PLAN)

  • Valida permissões

  • Gera dependências

Sem BIND:

  • Não existe plano

  • Não existe package

  • Não existe execução

💡 Frase clássica de mainframer:

“O erro não está no código. Está no BIND.”


📦 PACKAGE vs PLAN – A Confusão Eterna

PACKAGE

  • Gerado a partir do DBRM

  • Contém SQL otimizado

  • Versionável

  • Reutilizável

PLAN

  • Aponta para um ou mais packages

  • Controla isolamento, owner, bind time

💡 Dica Bellacosa:
Em ambientes modernos, package é rei. PLAN virou maestro — não solista.

🥚 Easter egg histórico:
Antigamente se dava BIND direto em PLAN. Hoje isso é quase arqueologia DB2.


🔗 O Caminho Sagrado: Compile → DBRM → BIND

Fluxo real da vida:

  1. Compile COBOL com SQL

  2. Gera DBRM

  3. BIND PACKAGE

  4. Link-edit

  5. Run

Se alguém inverter isso…
📛 cheiro de incidente.

💡 Dica prática:
Sempre valide se o DBRM que você está bindando é do mesmo compile. Erro clássico de esteira mal montada.


⚠️ Erros Clássicos que Todo Mundo Já Viu

🔥 -805 (DBRM ou PACKAGE não encontrado)

Tradução livre:

“Você esqueceu o BIND ou apontou para o lugar errado.”

🔥 -818 (Timestamp mismatch)

Tradução:

“Você recompilou, mas não rebindeou.”

🔥 -204 / -551

Permissão, owner ou qualifier errado.

💡 Dica de sobrevivência:
Antes de xingar o DB2, olhe:

  • COLLECTION

  • OWNER

  • QUALIFIER

  • VERSION


🧠 Parâmetros de BIND que Salvam Carreiras

Alguns parâmetros não são opcionais — são estratégia de vida:

  • ISOLATION(CS|RR|UR)

  • RELEASE(COMMIT|DEALLOCATE)

  • VALIDATE(BIND|RUN)

  • EXPLAIN(YES)

  • REOPT(ALWAYS|ONCE|NONE)

💡 Dica Bellacosa:
Não copie BIND de outro sistema sem entender.
Cada parâmetro muda performance, locking e risco.


🧪 BIND e Performance – Onde o Jogo Começa

O SQL pode estar perfeito…
Mas um BIND mal feito:

  • Gera table scan

  • Estoura buffer pool

  • Cria lock em horário nobre

💡 Conhecimento de bastidor:
90% dos “problemas de SQL” são problemas de BIND mal ajustado.

🥚 Easter egg de guerra:
Já vi sistema “otimizado” só mudando ISOLATION e refazendo o BIND. Código intocado.


🤝 BIND, DevOps e Git – O Mundo Novo

No mundo moderno:

  • Código está no Git

  • DBRM nasce no pipeline

  • BIND é automatizado

💡 Regra de ouro:
Se o pipeline não controla BIND, você não controla produção.

Automatize:

  • Collection por ambiente

  • Versionamento de package

  • Rollback de BIND


🗣️ Fofoquices de Sala-Cofre

  • “Rodou em QA, mas não em PROD” → COLLECTION errada

  • “Código antigo, erro novo” → REBIND automático noturno

  • “Não mexemos no SQL” → alguém mexeu no BIND


🧠 Pensamento Final do El Jefe

O BIND DB2 não é um detalhe técnico.
Ele é o contrato invisível entre seu COBOL e o banco.

Quem domina BIND:

  • Evita incidentes

  • Ganha performance

  • Dorme melhor

Quem ignora:

  • Vive de -805

  • Culpa o DB2

  • Trabalha de madrugada

🔥 Pergunta final para o leitor:
Você trata o BIND como rotina… ou como arquitetura?

Porque no mainframe,
o código passa — o plano fica. 🧠💾


sábado, 5 de março de 2011

🔥 Types of Programs used in CICS

 

CICS Tipos de Programas CEMT CEDA

🔥 Types of Programs used in CICS

 


☕ Midnight Lunch, PROG definido e alguém pergunta “esse é de quê?”

13h19.
O operador roda um CEMT I PROG.
Uma lista infinita aparece.

Alguém novo pergunta:

“Mas… por que tem tanto tipo de programa?”

O veterano fecha o terminal, sorri e diz:

“Porque CICS não executa código.
Ele orquestra funções.”

Hoje vamos mapear os principais tipos de programas usados no CICS, com história, prática, armadilhas e aquele tempero Bellacosa.


🏛️ História: programas com papel definido

Desde o início, o CICS entendeu algo essencial:

  • Um sistema online não é monolítico

  • Cada programa tem uma responsabilidade clara

Por isso surgiram tipos de programas, não por sintaxe, mas por função.

📌 Quem mistura papel, cria caos.


🧠 Conceito essencial

Em CICS, programa não é só código.
É um papel dentro da transação.


🧩 Principais tipos de programas no CICS

Vamos aos que realmente importam no dia a dia.


1️⃣ Terminal Control Programs (Programas de Tela)

Função

  • Interagem com o usuário

  • Enviam e recebem mapas BMS

  • Controlam navegação

Características

✔ Lidam com INPUT/OUTPUT
✔ Normalmente pseudo-conversacionais
✔ Usam SEND / RECEIVE

📌 São a “cara” da aplicação.


2️⃣ Application / Business Logic Programs

Função

  • Regras de negócio

  • Validações

  • Cálculos

Características

✔ Chamados via LINK
✔ Reentrantes
✔ Sem lógica de tela

📌 Aqui mora o valor do sistema.


3️⃣ File Handling Programs

Função

  • Acesso a VSAM

  • READ, WRITE, REWRITE, DELETE

Características

✔ Controle de concorrência
✔ Tratamento de erro rigoroso
✔ Uso intenso de RESP/RESP2

📌 Arquivo é responsabilidade séria.


4️⃣ Database Interface Programs (DB2 / IMS)

Função

  • Comunicação com banco

  • Execução de SQL

  • Controle transacional

Características

✔ Unidade de trabalho integrada
✔ Recovery automático
✔ Alto impacto em performance

📌 Aqui o desenho pesa.


5️⃣ Communication Programs (MQ / Web / API)

Função

  • Integração com outros sistemas

  • Mensageria e serviços

Exemplos

  • IBM MQ

  • Web Services (SOAP/REST)

  • APIs CICS

📌 O CICS falando com o mundo.


6️⃣ Utility / Common Service Programs

Função

  • Funções reutilizáveis

  • Serviços comuns

Exemplos

  • Formatação

  • Validação

  • Log

  • Conversões

📌 O famoso “programa comum” — bem feito, é ouro.


7️⃣ Error Handling Programs

Função

  • Tratamento centralizado de erro

  • Logging

  • Auditoria

Uso típico

  • HANDLE ABEND

  • Logging em TDQ/SMF

📌 Erro tratado é maturidade.


8️⃣ Control / Flow Programs

Função

  • Controlar navegação

  • Decidir próximo passo

Comandos usados

  • XCTL

  • RETURN TRANSID

📌 Fluxo limpo evita bug fantasma.


🥊 Programas bem separados vs monolito

AbordagemResultado
Programas especializadosManutenção fácil
Programa “faz tudo”Incidente garantido
LINK bem usadoArquitetura limpa
XCTL mal usadoFluxo perdido

📌 CICS não perdoa bagunça.


🛠️ Passo a passo Bellacosa (como organizar)

1️⃣ Programa de tela só tela
2️⃣ Regra de negócio sem I/O
3️⃣ Acesso a dados isolado
4️⃣ Serviços reutilizáveis
5️⃣ Tratamento de erro centralizado

📌 Separação de responsabilidade é sobrevivência.


⚠️ Erros clássicos (easter eggs)

🐣 Lógica de negócio dentro de programa de tela
🐣 SQL espalhado por todo lado
🐣 Programa “genérico” gigante
🐣 LINK circular entre tipos
🐣 Reentrância ignorada

📌 Todo legado problemático começa assim.


📚 Guia de estudo para mainframers

Domine estes tópicos:

  • Program Control

  • Transaction design

  • Reentrancy

  • Error handling

  • Performance tuning

📖 Manual essencial: CICS Application Programming Guide


🤓 Curiosidades de boteco mainframe

🍺 CICS separava camadas antes do MVC
🍺 Muitos sistemas ainda seguem esse modelo
🍺 O pior programa é o que “resolve tudo”
🍺 Programas bem desenhados sobrevivem décadas


💬 Comentário El Jefe Midnight Lunch

“Programa bom não é o que faz tudo.
É o que faz uma coisa certa.”


🚀 Aplicações reais hoje

  • Core bancário

  • Cartões de crédito

  • Seguros

  • Governo

  • Integração híbrida


🎯 Conclusão Bellacosa

No CICS, tipo de programa é disciplina, não burocracia.

Quem entende:

  • Mantém sistema saudável

  • Evita incidentes

  • Facilita evolução

🔥 Arquitetura clara envelhece bem.


sexta-feira, 4 de março de 2011

Pudin Flan de Potinho: Lembranças Doces da Infância do Pequeno Oni

 



🍮 El Jefe Midnight Lunch — “Pudin Flan de Potinho: Lembranças Doces da Infância do Pequeno Oni”
(Um post ao estilo Bellacosa Mainframe, em primeira pessoa, direto do cluster de memórias nível GODMODE)


Sabe, padawans do meu z/OS sentimental, às vezes a vida faz uns checkpoints tão fortes que nem IPL apaga. Outro dia falei aqui — todo emocionado — da alegria que era acompanhar minha avó nas compras mensais no supermercado, lá no final dos anos 1970. Aquilo, para um garoto de seis anos com zero créditos na carteira e 100% de imaginação, era tipo entrar numa side quest secreta com loot garantido.

Eu contei sobre o potinho de gelatina colorida, sim… mas aquilo era só o sub-boss.
O verdadeiro boss final, o drop lendário, o item S-Rank daquela dungeon refrigerada era outro:

👉 o pudim flan de potinho.

Ah, meus amigos… aquilo ali não era sobremesa, era artefato mágico. Sempre vinha embalado em dupla, como se dissesse:
“Escolha sabiamente, jovem aventureiro.”

E ele ficava ali, no semi-frio do mercado — o freezer light dos pobres mortais — piscando para mim como um baú dourado no meio das prateleiras.




🏆 O Tesouro do Pequeno Oni

Quando a minha avó colocava o pacotinho no carrinho, era como se o universo rodasse um WTO anunciando:

IEFC001I — ITEM LENDÁRIO LIBERADO PARA O JOVEM HEROI.

Eu comia devagar.
Devagar MESMO.
Sem pressa, sem afobação, sem jitter no processador emocional.

Cada colherada era um commit perfeito, aquele tipo de I/O que você sabe que não dá abend. Ele derretia na boca, suave, macio, doce na medida exata — o verdadeiro manjar do pequeno oni.

E olha que pudim de leite caseiro sempre foi minha sobremesa TOP 1, minha object class favorita no catálogo sentimental. Mas o flan… o flan tinha o toque da vó Anna.
E isso, meus amigos, nenhum load module substitui.


🧡 A Magia da Acompanhante VIP

Engraçado: meus pais às vezes compravam também.
Eu adorava? Óbvio.
Era doce, era cremoso, era flan — não existe “flan ruim”, só flan mais ou menos épico.

Mas com a minha avó...
Ah… com ela era outra latência emocional.
Com ela tinha aquele header invisível chamado carinho extra, compilado na calma das compras, no ritual do supermercado, na mão segurando a minha.

Isso fazia o sabor subir para o modo ultra-wide dynamic range no coração.




⏳ Memória é um dataset curioso…

Curioso como essas coisas, pequenas, insignificantes para o universo, ficam vivas na memória mesmo depois de tantas décadas.
Se fecho os olhos, ainda vejo a cena em qualidade 4K vintage:

Eu segurando o potinho.
Descolando cuidadosamente o lacre de alumínio — ritual sagrado, quase uma abertura de scroll ancestral.
E, claro, lambendo o alumínio para não desperdiçar a calda que ficava presa ali.
(Sim, eu sei que vocês também faziam isso… somos todos crias do mesmo data center.)

Depois vinham as colheradas lentas, meditativas — o flan sumindo na boca numa explosão de sabor que parecia resetar todas as threads de preocupação.

Nhame nhame.
Simples assim.
Poesia pura em forma de doce.


🌙 Fecho este turno com uma reflexão:

Não é o pudim.
Não é a calda.
Não é o supermercado.
É a companhia, é o momento, é a sensação de segurança que só uma avó pode compilar na vida da gente.

E esse potinho…
Esse pequeno flan de supermercado…
Foi um dos meus primeiros midnight lunch lendários.

E, sinceramente?

Eu ainda sinto o gosto.

🍮✨

El Jefe, guardião dos doces, destruidor de flans, mestre das memórias em modo mainframe.

quinta-feira, 3 de março de 2011

🍨 Parfait – O “JCL da Sobremesa” nos Animes

 


🍨 Parfait – O “JCL da Sobremesa” nos Animes
Por Vagner Bellacosa — Blog El Jefe Midnight Lunch — Estilo Bellacosa Mainframe


Se você é do time que maratona anime na madruga — igual eu maratonava listagem no spool do JES2 com café frio do refeitório — já percebeu um fenômeno curioso: sempre que a trama precisa de uma pausa fofa, um momento de reflexão, uma catarse emocional ou apenas um fanservice gastronômico, surge ele… o Parfait.

Sim, meus caros: o parfait é o “SYSOUT=*,HOLD=YES” dos animes.
Quando aparece, você sabe que algo importante vai acontecer.


🍨 Afinal, o que é um Parfait?

O Parfait é uma sobremesa francesa que viajou o mundo, fez intercâmbio no Japão, pegou um trem-bala, entrou num maid café de Akihabara… e ali evoluiu para Pokémon lendário da confeitaria japonesa.

No ocidente, parfait é simples: camadinhas de creme, frutas, granola.
No Japão?

É uma torre desconexa de alegria, chantilly, sorvete, frutas, bolos, pudins e eventuais leis de física sendo quebradas.

Sim: é a sobremesa que desafia a gravidade — tipo migrar um COBOL batch de 1981 para REST API sem quebrar nada.




🎌 Origem no Japão – Como virou moda nos animes?

O Japão conheceu o parfait no pós-guerra, mas ele explodiu de vez nos anos 1970–80 com a cultura dos kissaten (cafés tradicionais).
Virou símbolo de:

  • “date fofinho”

  • “reconciliação depois da treta”

  • “episódio filler onde ninguém morre”

  • “autoindulgência do protagonista depois de farmar XP emocional”

No mundo otaku, parfait virou um troféu gastronômico.


📺 Animes onde o Parfait brilha (e vira quase protagonista):

1) Working!!

O parfait é tratado com a reverência que damos a um job que rodou RC=00 sem warnings.
Cada funcionário monta um do seu jeito — e dá treta, claro.

2) Fruits Basket

Momiji devora parfait como se fosse PDS que nunca enche.
É símbolo de pureza, leveza e “proteja esse menino”.

3) Love Live! e Idolmaster

Parfait é combustível oficial de idol em treinamento.
Comparável a rodar CICS TOR com 1000 sessões abertas: precisa energia.

**4) K-On!

O grupo inteiro já parou para discutir parfait como se fosse planejamento de sprint — só que com mais açúcar.

5) Gintama (sempre ele)

Há episódios onde o parfait é tratado como arte marcial.
Porque Gintama.


🍧 Curiosidades que só um verdadeira espírito Bellacosa apreciaria

  • No Japão, o parfait é tão fotogênico que muitos cafés vendem parfaits falsos de plástico — perfeitos como um dummy dataset para teste de cenário.

  • Existem parfaits temáticos com 30 cm de altura.
    Sim, 30 cm.
    Mais alto que a pilha de printouts que eu carregava no CECAP criança.

  • Maid cafés têm parfaits “secret menu”, tipo comando não documentado do TSO.
    Quem sabe, sabe.

  • Existem “parfaits sazonais”, alinhados com o fiscal year japonês.
    Se isso não é coisa de mainframe, não sei o que é.


💡 Dicas para você, otaku moderno, sobreviver ao universo parfait:

  1. Nunca coma um parfait gigante sozinho.
    É igual tentar migrar um VSAM para DB2 sem pedir ajuda: você vai sofrer.

  2. Cuidado com o fundo do copo.
    A última camada costuma ser um gelo traíra, igual B37 inesperado no meio do job.

  3. Parfait é item de date.
    Se alguém te chama pra comer parfait, isso no Japão é praticamente um ENQ exclusivão.

  4. Respeite a estética.
    Parfait existe para ser bonito.
    Mesmo que tenha tanta informação quanto um SMF 110.


🥚 Easter Eggs culinário-otaku-mainframe

  • Alguns cafés servem parfait com pudim inteiro em cima.
    Chamo isso de “Load Module no topo da pilha”.

  • No Japão, existe um “Midnight Parfait” famoso em Tóquio.
    Sim: gente que sai do trabalho 23h e vai comer parfait.
    É o verdadeiro Job de produção rodando no late shift.

  • Em Akihabara, alguns parfaits vêm com QR codes que levam a games, músicas, wallpapers…
    Isso é quase um SYSMDUMP com interface gráfica.


Conclusão — Por que o parfait é tão amado nos animes?

Porque parfait é memória afetiva encapsulada em camadas.
Cada colherada é como encontrar um comentário engraçado do programador de 1978 na copybook.

O parfait é o checkpoint emocional do protagonista.
É o commit de felicidade.
É o “RC=00” do coração.

E pra nós, otakus-mainframeiros-do-blog-El-Jefe, parfait é aquele lembrete doce e colorido de que a vida, assim como a sobremesa, fica melhor quando misturamos memórias, sabores e boas histórias.


sexta-feira, 18 de fevereiro de 2011

🧠 Ikigai — O “job” que mantém o japonês ligado desde o IPL da vida

Bellacosa Mainframe em modo ikigai



🧠 Ikigai — O “job” que mantém o japonês ligado desde o IPL da vida

Se você perguntar a um japonês mais velho por que ele acorda todo dia cedo, mesmo aposentado, ele não vai falar em motivação, coaching ou propósito cósmico.

Ele vai responder, com calma:

“É meu ikigai.”


🈶 O que significa Ikigai?

Ikigai (生き甲斐) é formado por:

  • 生き (iki) = viver

  • 甲斐 (gai) = valor, razão, motivo

👉 “Razão de viver”
👉 “Aquilo que faz a vida valer a pena”

Mas atenção, padawan:
❌ Não é “faça o que ama e fique rico”
❌ Não é fórmula de sucesso
❌ Não é só trabalho

Ikigai é continuidade, não explosão.


🏯 Origem histórica (antes do LinkedIn estragar)

O conceito vem do Japão antigo, especialmente:

  • Período Heian (794–1185)

  • Influência do budismo e xintoísmo

  • Cultura agrícola e comunitária

O valor estava no processo, não no resultado.

Cuidar do jardim.
Cozinhar bem.
Ensinar alguém.
Manter tradições.
Cuidar da família.

Tudo isso é ikigai.


🤭 Fofoquice importante (e verdade)

O famoso diagrama:

  • O que você ama

  • O que você faz bem

  • O que o mundo precisa

  • O que te paga

👉 NÃO é japonês.

Foi criado no Ocidente e colado no ikigai como patch mal testado 😅
No Japão, ikigai pode não dar dinheiro nenhum.


🌸 Ikigai na prática japonesa

Exemplos reais:

  • 👵 Senhora que faz bentō há 40 anos

  • 🎣 Pescador que sai todo dia mesmo sem lucro

  • 🧹 Zelador que varre a rua com orgulho

  • 🧓 Idosos de Okinawa cuidando da horta

O Japão associa ikigai a:
✔ longevidade
✔ saúde mental
✔ senso de pertencimento

Não por acaso, Okinawa é uma das regiões com mais centenários.


🎌 Easter eggs culturais

  • Personagens de anime que vivem pelo ofício

    • Jiro em Shokugeki no Soma

    • Mestres em Naruto

    • Artesãos em filmes do Studio Ghibli

  • Mangás sobre rotina e ofício = ikigai puro

  • Doramas sobre trabalho simples e digno


🧠 Como entender o seu ikigai (modo mainframe)

Não pergunte:

“Qual é meu propósito?”

Pergunte:

  • O que eu faria mesmo sem plateia?

  • O que me dá prazer silencioso?

  • O que eu faço bem sem perceber?

  • O que me faz continuar?

Ikigai é processo batch, não job online.


💡 Dicas Bellacosa Mainframe

✔ Comece pequeno
✔ Ignore a versão coach
✔ Não precisa ser grandioso
✔ Pode mudar ao longo da vida
✔ Ikigai ≠ felicidade constante

É estabilidade emocional, não euforia.


🇯🇵 Importância do Ikigai para o Japão

  • Sustenta ética do trabalho

  • Dá sentido ao envelhecimento

  • Valoriza o coletivo

  • Evita o vazio existencial

  • Mantém tradição viva

Ikigai é um sistema legado que nunca saiu de produção.


☕ Conclusão — Shutdown consciente

Ikigai não é sobre vencer.
É sobre continuar.

É aquilo que faz você levantar da cama mesmo quando o mundo não está amigável.

Sem glamour.
Sem palco.
Sem aplauso.

Mas com sentido.

E às vezes…
isso é tudo que a gente precisa para seguir rodando. 🧠✨


quinta-feira, 17 de fevereiro de 2011

🔥 SQLCODE no DB2 – Lendo os Sinais da Força (Guia para Padawans Mainframe) 🔥

 

SQLCODE quando o programa Cobol deve tratar o retorno do db2

🔥 SQLCODE no DB2 – Lendo os Sinais da Força (Guia para Padawans Mainframe) 🔥

 


Todo padawan que começa no DB2 passa pelo mesmo rito de iniciação:
o programa compila, o BIND passa…
e na execução surge aquela linha silenciosa e cruel:

SQLCODE = -911

Fim.
Tela verde.
Respiração suspensa.

Mas calma. SQLCODE não é inimigo.
Ele é o oráculo do DB2 — fala pouco, mas fala a verdade.


🧠 O Que é SQLCODE, de Verdade?

SQLCODE é a forma que o DB2 tem de dizer:

👉 “Eu tentei.”
👉 “Funcionou.”
👉 “Funcionou mais ou menos.”
👉 “Deu ruim.”

Cada comando SQL retorna um SQLCODE.
Sempre.
Sem exceção.

💡 Regra de ouro Bellacosa:
Nunca ignore SQLCODE.
Quem ignora SQLCODE, debuga em produção.


⚖️ Zero, Positivo ou Negativo – A Trindade Sagrada

🟢 SQLCODE = 0 → Tudo Certo

O DB2 está feliz.
Você também deveria estar.

  • SELECT encontrou linha

  • INSERT gravou

  • UPDATE atualizou

  • DELETE removeu

💡 Comentário:
Zero não é “talvez”.
Zero é sucesso absoluto.


🟡 SQLCODE > 0 → Aviso (Warning)

Aqui mora a confusão dos iniciantes.

Positivo não é erro.
É o DB2 dizendo:

“Funcionou… mas presta atenção.”

Exemplos clássicos:

  • +100 → nenhuma linha encontrada

  • +802 → divisão por zero evitada

  • +466 → truncate de dado

💡 Dica Padawan:
+100 em SELECT não é falha.
É lógica de negócio.

🥚 Easter egg:
Muitos sistemas tratam +100 como erro… e criam bugs por conta própria.


🔴 SQLCODE < 0 → Erro

Aqui o DB2 cruzou os braços.

Nada foi feito.
Ou pior: foi feito parcialmente.

Negativo significa:

  • SQL inválido

  • Dados inconsistentes

  • Lock

  • Timeout

  • Permissão

  • Conversão errada

💡 Regra Jedi:
SQLCODE negativo exige ação imediata.
Ignorar é lado sombrio.


🧨 SQLCODEs que Todo Padawan Precisa Conhecer

🔥 -100 → Nenhuma linha encontrada (antigo)

Hoje quase arqueologia.
Substituído por +100.


🔥 +100 → Nenhuma linha encontrada

Clássico do SELECT:

SELECT ... INTO ...

Sem registro.

💡 Dica:
Teste +100 como fluxo normal.
Não como exceção.


🔥 -305 → NULL sem indicador

DB2 tentou colocar NULL em campo COBOL “cheio de orgulho”.

💡 Lição:
Campo nullable exige indicador.


🔥 -302 → Conversão ou tamanho inválido

Número grande demais, decimal errado, CHAR mal definido.

💡 Fofoquinha:
90% dos -302 vêm de DCLGEN desatualizado.


🔥 -803 → Violação de chave única

Tentou inserir algo que já existe.

💡 Boa prática:
-803 não é erro técnico.
É regra de negócio.


🔥 -805 → DBRM / PACKAGE não encontrado

O terror noturno.

💡 Tradução Bellacosa:
“Esqueceu o BIND.”


🔥 -818 → Timestamp mismatch

Recompilou, mas não rebindeou.

💡 Comentário:
Esse erro ensina disciplina melhor que qualquer curso.


🔥 -911 / -913 → Deadlock ou Timeout

DB2 desistiu da briga.

💡 Dica Jedi:
Trate retry no código.
Não xingue o DB2 — ele só sobreviveu.


🧪 SQLERRD(3) – O Número que Poucos Olham

Dentro do SQLCA existe um tesouro esquecido:

👉 SQLERRD(3) = número de linhas afetadas

  • UPDATE

  • DELETE

  • INSERT

💡 Easter egg profissional:
Às vezes SQLCODE = 0…
mas SQLERRD(3) = 0.

Executou, mas não mudou nada.


⚙️ Tratamento de SQLCODE no COBOL – Boas Práticas

Nunca faça:

IF SQLCODE NOT = 0
   DISPLAY 'ERRO'
END-IF

Faça:

  • Trate 0

  • Trate +100

  • Trate negativos relevantes

💡 Dica Bellacosa:
SQLCODE é parte da lógica, não exceção.


🗣️ Fofoquices de Sala-Cofre

  • “Mas em QA funciona” → dado diferente

  • “Nunca deu isso antes” → agora deu

  • “É erro intermitente” → lock


🧠 Pensamento Final do El Jefe

SQLCODE é o idioma do DB2.
Quem não fala esse idioma:

  • culpa o banco

  • cria workaround perigoso

  • aprende do jeito difícil

🔥 Para o Padawan:
Leia o SQLCODE.
Entenda o contexto.
Respeite os avisos.

Porque no DB2,
o erro não grita — ele retorna um número. 🧠💾


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?