☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

domingo, 10 de julho de 2022

🎬 Seção Especial – Cinema Contemporâneo: O Ruído da Tela

 


🎬 Seção Especial – Cinema Contemporâneo: O Ruído da Tela

“Por que os filmes de hoje não prendem?”

Você não está sozinho nesse sentimento. Muitos perceberam que o cinema contemporâneo frequentemente não emociona como antes — e há razões concretas para isso:


⚡ 1. O excesso de fórmula e previsibilidade

Estúdios modernos dependem de dados, pesquisas e algoritmos para prever o que gera lucro:

  • Franquias e universos compartilhados (Marvel, DC) dominam a produção.

  • Sequências e reboots são garantias de público.

  • Test screenings e focus groups moldam roteiros até o último detalhe.

Resultado: filmes seguros, previsíveis e sem risco — emoção quase zero, porque a narrativa já é conhecida antes de ser contada.


🌀 2. Ruído digital e atenção fragmentada

A atenção do público mudou: notificações, redes sociais e TikTok fragmentam o foco.
Estúdios respondem com filmes de ação rápida, cortes constantes e estímulos visuais exagerados.
O efeito: cansaço mental e sensação de superficialidade, especialmente para quem cresceu com cinema clássico ou histórias mais contemplativas.


💡 3. Cinema antigo: ritmo, imersão e complexidade

Filmes do século XX tinham:

  • Ritmo contemplativo — espaço para sentir e refletir.

  • Desenvolvimento profundo de personagens.

  • Uso magistral de enquadramento, luz, som e silêncio.

Essa combinação criava imersão emocional, algo que muitos blockbusters modernos sacrificam em prol do impacto imediato.


⚖️ 4. Não é nostalgia, é diferença de expectativa

A insatisfação não é falha sua. Você percebe mudanças de linguagem e percepção: o cinema atual é feito para atenção rápida, não para envolvimento profundo.
Seu gosto por narrativa e atmosfera mostra sensibilidade e refinamento, não defeito.


🌹 5. Sobrevivendo ao cinema moderno

  • Busque cineastas independentes ou de autor fora do mainstream.

  • Experimente cinema estrangeiro; eles frequentemente fogem da fórmula.

  • Retorne aos clássicos do século XX sem culpa.

  • Desligue distrações digitais: o cinema pede presença.


☕ Conexão Bellacosa

O cinema moderno, assim como redes sociais e relacionamentos, é muitas vezes ruído para nossos sentidos, projetado para manter atenção, não alma.
O antídoto? Escolher com cuidado o que consome, respeitar seu ritmo interno e manter espaço para experiência emocional genuína.

Porque, no fundo, a arte nunca perdeu valor — apenas mudou o canal de transmissão.

sexta-feira, 8 de julho de 2022

🔥 PARTE 2 — CLOUD PARA MAINFRAMEIROS RAIZ

 

Bellacosa Mainframe e a cloud

🔥 PARTE 2 — CLOUD PARA MAINFRAMEIROS RAIZ

(Ou: “Explicando cloud pra quem já sobreviveu a VSAM corrompido, JCL sem SYSOUT e abend S0C7 às 17h35.”)

Pegue seu café, abra o SDSF no coração e vem comigo.


☁️ 1️⃣ EC2 — Explicado como se fosse uma LPAR (porque… é quase isso mesmo)

Na visão Bellacosa Mainframe:

👉 EC2 = LPAR com liberdade de adolescente que acabou de ganhar a primeira moto.

Enquanto a LPAR do z/OS é aquela coisa séria, parruda, certificada, com CPU, memória e I/O milimetricamente controlados pelo PR/SM…
EC2 é o “irmão caçula” moderninho, criado para escalar, quebrar e renascer com a facilidade de um RESTART JOB no JES2.

🧠 Tabela mental:

Conceito MainframeEquivalente Cloud
LPAREC2 Instance
CP / IFL / zIIPvCPU
HCD / IOCPFlavor / Instance Type
IPLBoot da VM
Hipervisor PR/SMHypervisor Xen/KVM da AWS
HLASM do sistemaAMI (Amazon Machine Image)

💡 Curiosidade estilo Bellacosa:

Se no mainframe você precisa abrir chamado, pedir mudança, esperar janela…
No EC2 você clica em “Launch Instance” e pronto.
Desprotegido? Sim.
Perigoso? Com certeza.
Divertido? Demais. 😎




☁️ 2️⃣ Kubernetes — explicado como se fosse um Sysplex adolescente

Se o Sysplex fosse um jovem rebelde, cheio de hormônios, tatuagem de “Available 99.999%”, e que adora brigar com todo mundo…
ele seria o Kubernetes.

🧠 Analogia oficial do Bellacosa:

Sysplex / Parallel SysplexKubernetes
Várias LPARs cooperandoVários nós (nodes)
XCF/XES faz o cluster conversarControl Plane/Gossip
WLM distribui workloadScheduler
CICS Regions, DB2 Data SharingPods/Deployments/StatefulSets
IPL, PARMLIBYAML (sim, YAML é o novo PARMLIB gagá)
VTAM / TCPIPkube-proxy / CNI

O Kubernetes faz balancing, reinicia container que cai, escala instâncias e mantém tudo estável — exatamente como um Sysplex faria…
Só que com muito mais drama, logs misteriosos e YAML torto.

🍜 Easter egg para Otakus da Infra:

“Pod” lembra aquelas cápsulas de dormir de anime cyberpunk?
Pois é, funciona parecido: cada pod é um mini-contâiner pronto para morrer no próximo deploy.
Kubernetes é puro shonen: luta, dor, respawn infinito.


☁️ 3️⃣ S3 — explicado como datasets SEM limite de extents (o sonho proibido)

Sim, meus caros…
O S3 é o dataset que o VSAM gostaria de ser quando crescer.

🤯 No S3:

  • Não tem EXTENT

  • Não tem SPACE=TRK

  • Não tem DSORG=PS

  • Não tem REPRO corrompendo dados

  • Você guarda TUDO e ele não reclama

🧠 Comparação:

MainframeS3
DatasetObjeto
Catálogo / VVDSBucket Index
SMS ClassStorage Class
HSM MIGRATE/RECALLLifecycle Policy
RACF DATASET ProfilesIAM Policies

O S3 é basicamente um GDG infinito que nunca dá “limit exceeded”.
Imagina um STORAGE que nunca vira “primary/secondary insufficient”.
É o paraíso dos operadores e o inferno de quem paga a conta.


☁️ 4️⃣ MAPA MÁGICO — Cloud explicado com equivalências Mainframe

🧵 CICS (transações)

→ Lambda, API Gateway, Fargate
(Pedacinhos rápidos de lógica servidos sob demanda.)

🔐 RACF (segurança, profiles, permissões)

→ IAM (políticas, usuários, roles, MFA, keys)

IAM é praticamente um RACF com interface bonitinha (mas tão complicado quanto RACF se você usar errado).

📄 JCL (orquestração de jobs)

→ CloudWatch Events, Step Functions, Terraform, CI/CD YAML
(Jobs em YAML… a vida é cruel.)

📬 JES2 (fila e roteamento de jobs)

→ SQS, SNS, EventBridge
(Filas, roteamento e distribuição — sem o charme do $HASP.)

🌐 VTAM (rede e sessões)

→ VPC, Subnets, Security Groups
(VTAM era o pai do networking, a VPC é o filho hipster dele.)

🤖 OPS/MVS, REXX, Automação

→ Lambda + EventBridge + API + Scripts
(O equivalente moderno ao operador ninja das madrugadas.)


🧙‍♂️ Bellacosa Dica Ninja

Se você entende bem mainframe, a cloud fica MUITO mais fácil, porque:

z/OS já fazia tudo antes da cloud existir.
Cloud = um Sysplex gigante e improvisado, distribuído pelo planeta.


quinta-feira, 7 de julho de 2022

🌠 「短冊」– Tanzaku: os papéis dos desejos que dançam com o vento

 


🌠 El Jefe | Bellacosa Mainframe apresenta:

「短冊」– Tanzaku: os papéis dos desejos que dançam com o vento

☕ Uma história onde o mainframe encontra o céu estrelado


Se você já viu uma árvore enfeitada com tiras coloridas de papel balançando sob o céu noturno de julho, parabéns — você testemunhou um dos rituais mais poéticos do Japão: o Tanzaku (短冊), os papelzinhos dos desejos do festival Tanabata (七夕).

Mas por trás daqueles papéis balançando graciosamente ao vento, há séculos de poesia, astronomia, amor e superstição — e, claro, umas boas fofoquices cósmicas.


🌌 A origem: amor, estrelas e caligrafia

O Tanzaku nasceu junto com o Tanabata Matsuri, o Festival das Estrelas, celebrado em 7 de julho.
A lenda fala de Orihime (a princesa tecelã) e Hikoboshi (o pastor de estrelas) — amantes separados pela Via Láctea, que só podem se encontrar uma vez por ano.

Durante essa época, o povo japonês começou a escrever poemas e desejos em pequenos papéis coloridos — os tanzaku — e pendurá-los em bambus, acreditando que o vento levaria os pedidos ao céu.

Os primeiros registros datam do período Heian (794–1185), quando a aristocracia japonesa já amava transformar tudo em arte, inclusive os sonhos.


🪶 O formato do sonho

O Tanzaku é uma pequena tira retangular de papel, tradicionalmente de washi (papel japonês feito à mão), e cada cor tem um significado simbólico — como se fosse o JCL dos desejos:

CorSignificado“Parâmetro espiritual”
🟦 AzulAprendizado, sabedoria//TANZAKU EXEC PGM=ESTUDO
🟥 VermelhoAmor, paixão, coragem//HEART DD DISP=SHR
🟩 VerdeSaúde, vitalidade//LIFE DD SYSOUT=*
🟨 AmareloAmizade, prosperidade//SOCIAL DD DISP=KEEP
⚪ BrancoPureza, introspecção//SOUL DD DCB=(RECFM=F)

As pessoas escrevem frases curtas — desejos, metas, orações ou até confissões românticas — e penduram nos ramos de bambu, símbolo de força e flexibilidade.


💫 Curiosidades que o El Jefe adoraria

  • 🎋 Depois do festival, os bambus com tanzaku costumam ser queimados ou lançados em rios, para que os desejos subam aos céus com a fumaça — um upload celestial.

  • 🖌️ Antigamente, estudantes escreviam pedidos para melhorar sua caligrafia, em homenagem à deusa tecelã Orihime.

  • 🌠 A prática foi inspirada na tradição chinesa do Qixi, que também celebra o encontro das estrelas Vega e Altair.

  • 📜 Monges zen veem no tanzaku um exercício de impermanência — o vento leva o desejo, o tempo leva o papel.


💕 Fofoquices do universo

Reza a lenda que, se chove no Tanabata, Orihime e Hikoboshi não conseguem se encontrar, e o choro dos amantes forma os rios da Terra.
Mesmo assim, há quem acredite que, quando o vento balança um tanzaku, é Hikoboshi sussurrando “vou te ver de novo”.

E no Japão moderno?
Os tanzaku viraram até memes!
Muita gente escreve desejos engraçados como “Quero férias pagas” ou “Tomara que meu chefe nunca descubra o bug de produção” 😂


📺 Tanzaku nos animes

Ah, o espírito dos desejos está em todo lugar no universo otaku:

🌌 “Your Name (君の名は)” — a ligação entre os protagonistas ecoa o mesmo fio invisível do Tanabata e seus desejos.
🎋 “Clannad” — há uma cena com tanzaku que representa esperanças e reconciliação familiar.
🌠 “Kimi ni Todoke” — os desejos românticos dos estudantes sob o bambuzal são puro Tanabata moderno.
“Cardcaptor Sakura” — um episódio inteiro mostra os tanzaku e a crença na magia dos pedidos inocentes.

E claro:
em muitos slice-of-life, o tanzaku é aquele toque final — o detalhe que transforma uma cena cotidiana num momento de poesia.


🌿 Dica Bellacosa Mainframe

Escreva o seu próprio tanzaku digital.
Abra seu terminal e digite:

DISPLAY "願い事: Que eu nunca perca a curiosidade pelos mistérios da vida."

Depois...
feche os olhos e imagine seu desejo sendo compilado no universo,
com retorno code 0000.


☕ Conclusão

O Tanzaku é mais do que papel e tinta — é um lembrete de que todo sonho precisa ser escrito, mesmo que o vento o leve embora.
Porque, no fim das contas, a esperança também precisa de um JOB agendado.


🎋 Bellacosa Mainframe – onde até os desejos têm um SYSOUT no céu.
Post do blog El Jefe, edição especial Tanabata Night.


segunda-feira, 4 de julho de 2022

Quando a inocência encontra o desejo — o desconforto de Usagi Drop

Bellacosa Mainframe apresenta o controverso anime Usagi Drop


Quando a inocência encontra o desejo — o desconforto de Usagi Drop

(Um ensaio Bellacosa sobre limites, afeto e o que nos assusta na ficção)


🌸 O anime que começou com ternura

“Usagi Drop” é, à primeira vista, uma das histórias mais doces que o Japão já produziu.
Um homem adulto, Daikichi Kawachi, assume a criação de Rin — uma menina silenciosa e gentil, filha ilegítima de seu falecido avô.
A narrativa acompanha o florescimento de um vínculo puro, quase sagrado: o amor cotidiano, feito de cuidado, paciência e doçura.

Mas quem prestava atenção notava algo nas entrelinhas: uma ligação emocional profunda, complexa, e não totalmente inocente.
Um amor que, embora paternal, carregava um tipo de intimidade emocional intensa demais para ser simples.


🕊️ O salto que dividiu corações

Quando o mangá avançou no tempo e revelou Rin adulta, confessando seu amor por Daikichi, o público explodiu em raiva.
O que antes era terno tornou-se, de repente, incômodo.
Como aceitar que aquele vínculo — que representava a pureza — se transformasse em algo romântico?

Mas o choque revela algo sobre nós, não apenas sobre a autora.
Afinal, por que esse final parece tão errado, se no fundo muitos já o sentiram possível?


🧩 A psicologia do desconforto

O que Usagi Drop faz é tocar em um ponto raríssimo na ficção moderna:
a ambiguidade emocional.
O amor, quando vivido intensamente, nem sempre se encaixa em rótulos.
Entre o cuidado paternal e a admiração, há uma linha tênue — e é nela que o mangá dança, sem pedir desculpas.

O desconforto vem porque a autora expôs o que o leitor pressentia, mas não queria reconhecer.
Ela quebrou o pacto tácito de “pureza eterna”, e forçou o público a encarar uma emoção que não cabe na moral convencional.


🔥 A coragem (ou imprudência) de Yumi Unita

Yumi Unita não escreveu sobre romance proibido — escreveu sobre o tempo.
Sobre como duas pessoas podem crescer juntas e, ao amadurecer, ver seus papéis se dissolverem.
Ela quis mostrar que o amor muda de forma, e às vezes isso é bonito, às vezes é desconcertante.

Mas o público queria conforto, não reflexão.
Queria um final de laços familiares, não um espelho psicológico.
E quando a arte reflete o que a moral não quer ver, o autor vira vilão.


🧠 Entre o certo e o verdadeiro

Usagi Drop nos coloca diante de uma verdade incômoda:
as emoções humanas não obedecem fronteiras éticas com a mesma rigidez que os códigos sociais.
E a ficção, quando é honesta, nos obriga a olhar para isso.

Não é sobre justificar o final — é sobre entender o que ele revela.
Rin não é símbolo de incesto ou tabus.
Ela é metáfora da passagem do tempo, do afeto que cresce e se transforma, e da fragilidade com que o ser humano redefine seus vínculos.


💬 Comentário Bellacosa

O ódio ao final de Usagi Drop não nasceu de um erro da autora — nasceu do nosso desejo de que o amor fique no formato que nos conforta.
Mas o amor, na vida real, raramente respeita moldes.
Ele muda, confunde, às vezes dói.

Yumi Unita apenas ousou mostrar o que quase ninguém tem coragem:
que até a pureza pode amadurecer e que o amor, quando cresce demais, perde o rótulo e ganha humanidade.



Para pensar

Talvez Usagi Drop nunca tenha sido uma história sobre paternidade.
Talvez sempre tenha sido sobre como o tempo desfaz os papéis e deixa apenas o sentimento nu.

E talvez o desconforto que sentimos não seja sobre eles —
mas sobre o medo de que, dentro de nós, também haja afetos que não cabem nas definições que o mundo aceita.


Porque no fim, o que mais assusta em Usagi Drop não é o que a autora escreveu — é o que ela fez a gente sentir.

https://eljefemidnightlunch.blogspot.com/2018/04/usagi-drop-quando-docura-se-transforma.html

domingo, 3 de julho de 2022

GAIKOTSU KISHI-SAMA, TADAIMA ISEKAI E ODEKAKECHUU — O ISEKAI QUE COLOCOU UM ADMINISTRADOR DE SISTEMAS NÍVEL 99

Bellacosa Mainframe e o gaikotsu kishi-sama tadaima isekai e odekakechuu

☕💣💀 OPERADOR, O SISTEMA ACABA DE DETECTAR UM USUÁRIO ROOT PRESO DENTRO DE UM AVATAR ESQUELÉTICO COM ACESO TOTAL AO REINO!

GAIKOTSU KISHI-SAMA, TADAIMA ISEKAI E ODEKAKECHUU — O ISEKAI QUE COLOCOU UM ADMINISTRADOR DE SISTEMAS NÍVEL 99 DENTRO DE UM ESQUELETO E TRANSFORMOU UMA FANTASIA MEDIEVAL EM UM AMBIENTE DE PRODUÇÃO SEM SUPORTE TÉCNICOS


Identificação do Sistema

Título Original: Gaikotsu Kishi-sama, Tadaima Isekai e Odekakechuu (骸骨騎士様、只今異世界へお出掛け中)

Título Internacional: Skeleton Knight in Another World

Autor da Light Novel: Ennki Hakari

Ilustrador Original: KeG

Estúdio: Studio Kai + HORNETS

Direção: Katsumi Ono

Lançamento do Anime: Abril de 2022

Temporadas: 1

Episódios: 12

Gêneros:

  • Isekai

  • Fantasia

  • Aventura

  • Ação

  • Comédia

  • Sword & Sorcery

Classificação Indicativa:

  • Adolescente e adulto jovem

  • Violência moderada

  • Escravidão

  • Temas de discriminação racial


Sinopse

Um jogador adormece enquanto joga seu MMORPG favorito.

Quando desperta, descobre que foi transportado para outro mundo exatamente na forma de seu personagem.

O problema?

Seu avatar é um cavaleiro lendário absurdamente poderoso.

O problema maior?

Ele também é um esqueleto.

Agora Arc precisa sobreviver em um mundo que considera mortos-vivos monstros perigosos enquanto tenta agir como um herói e evitar que descubram sua verdadeira aparência.


Resumo da História

A estrutura do anime lembra um RPG clássico.

Arc não possui uma missão principal claramente definida no início.

Ele simplesmente viaja.

E é justamente isso que torna a obra interessante.

Ao longo de sua jornada ele encontra:

  • Elfos escravizados

  • Reinos corruptos

  • Mercadores criminosos

  • Monstros

  • Conspirações políticas

  • Espíritos mágicos

O anime funciona quase como uma campanha de RPG de mesa onde cada episódio apresenta uma nova quest.


O Grande Diferencial

A maioria dos isekais modernos segue um padrão:

  • Protagonista vira rei

  • Cria harém

  • Conquista império

  • Torna-se deus

Arc não faz nada disso.

Ele é praticamente um jogador veterano explorando o mapa.

Sua motivação principal é ajudar pessoas.

Isso aproxima a obra dos RPGs clássicos dos anos 90.

Existe muito de:

  • Record of Lodoss War

  • Dragon Quest

  • Ultima

  • Wizardry

misturado à fórmula moderna dos isekais.


Arc: O Operador de Produção Preso no Avatar Errado

O paradoxo central

Arc representa uma ideia curiosa.

Sua aparência é monstruosa.

Seu caráter é heroico.

O anime brinca constantemente com essa inversão.

A sociedade julga pela aparência.

O espectador conhece sua verdadeira personalidade.

É uma metáfora simples, mas bastante eficaz.

Em linguagem Mainframe:

Arc é um programa COBOL impecável executando atrás de uma tela cheia de mensagens de erro.

Por fora parece um desastre.

Por dentro funciona perfeitamente.


Ariane: O RACF dos Elfos

Ariane é uma guerreira élfica.

Inicialmente desconfiada.

Posteriormente torna-se a principal companheira de Arc.

Sua participação expande a narrativa para um dos temas centrais da série:

A escravidão dos elfos

Ariane não existe apenas para servir de parceira de aventura.

Ela representa um povo perseguido.

É através dela que o anime explora:

  • Racismo

  • Xenofobia

  • Tráfico humano

  • Colonialismo

Temas surpreendentemente pesados para uma obra aparentemente leve.


Ponta: O Subsistema Mais Estável do Ambiente

Ponta é um espírito animal.

Funciona como:

  • Mascote

  • Detector de ameaças

  • Alívio cômico

  • Elemento emocional

Mas existe algo mais.

Ponta representa a natureza.

Enquanto humanos exploram e escravizam, Ponta simboliza a harmonia entre os povos e o mundo natural.


A Temática Oculta

Muitos espectadores enxergam apenas um isekai divertido.

Mas existem camadas mais profundas.


1. Preconceito pela Aparência

Arc é julgado constantemente.

Ninguém vê sua alma.

Todos veem apenas o esqueleto.

A obra questiona:

Quanto da nossa opinião sobre alguém é baseada apenas em aparência?


2. Racismo

Os elfos sofrem perseguição sistemática.

São sequestrados.

Vendidos.

Torturados.

O anime usa fantasia para discutir preconceitos humanos reais.


3. Poder e Responsabilidade

Arc poderia dominar o mundo.

Mas escolhe não fazê-lo.

Essa talvez seja a principal mensagem da série.

O verdadeiro herói não é aquele que possui poder.

É aquele que escolhe como utilizá-lo.


4. Identidade

Arc passa boa parte da história escondendo quem realmente é.

Isso gera uma discussão interessante:

Somos aquilo que parecemos?

Ou aquilo que fazemos?


As Aventuras

A jornada de Arc pode ser vista como uma sequência de incidentes operacionais.

Cada região visitada revela um novo problema do sistema.

Quest de Resgate

Libertação de escravos.

Quest Política

Conflitos entre reinos.

Quest Diplomática

Relações entre humanos e elfos.

Quest de Exploração

Ruínas e territórios desconhecidos.

Quest de Combate

Confrontos contra monstros e criminosos.

Essa variedade impede que o anime se torne repetitivo.


Houve Censura?

Sim.

Este é um dos assuntos mais comentados da estreia.

O primeiro episódio possui uma tentativa de violência sexual que gerou controvérsia.

Algumas emissoras e plataformas utilizaram versões editadas.

Existiram transmissões com cortes de determinadas cenas mais pesadas.

A intenção era reduzir o impacto visual para determinadas faixas de exibição.

Curiosamente, após esse começo bastante sombrio, o anime adota um tom muito mais leve na maior parte da temporada.

Essa mudança de tom causou estranheza em parte do público.


Impacto Cultural

Skeleton Knight não revolucionou o gênero.

Mas conquistou uma base sólida de fãs.

Os principais elogios foram:

  • Protagonista carismático

  • Boa animação

  • Humor agradável

  • Fantasia clássica

  • Ausência de harém excessivo

O anime tornou-se especialmente popular entre espectadores cansados dos isekais que seguem exatamente a mesma fórmula.


O Trabalho do Studio Kai

O Studio Kai ficou conhecido por:

  • Uma Musume Pretty Derby Season 2

  • Super Cub

  • Fuuto PI

Em Skeleton Knight entregou:

  • Boas cenas de ação

  • Design fiel à novel

  • Excelente trabalho com armaduras

  • Boa direção de combate

O uso de CGI no personagem Arc poderia ter sido problemático.

Mas foi empregado de forma relativamente discreta.

O resultado final ficou acima da média para um isekai de temporada.


O Que Existe de Diferente?

O anime reúne elementos raros hoje em dia:

✅ Herói genuinamente bondoso

✅ Pouquíssimo foco em romance

✅ Quase nenhum fanservice exagerado

✅ Estrutura de aventura clássica

✅ Mundo de fantasia tradicional

✅ Influência clara dos RPGs antigos

✅ Protagonista overpower sem ser arrogante

Essa combinação faz a obra parecer uma carta de amor aos RPGs da era Dragon Quest.


Avaliação Bellacosa Mainframe ☕

Performance do Sistema

CPU Heroica: 100%

Consumo de Mana: Baixo

ABENDs Narrativos: Poucos

Taxa de Diversão: Alta

Compatibilidade com fãs de RPG clássico: Excelente

Dependência de clichês isekai: Moderada

Disponibilidade do Ambiente: 99,99%


Veredito Final

Gaikotsu Kishi-sama, Tadaima Isekai e Odekakechuu não é o isekai mais revolucionário.

Não possui a profundidade filosófica de Mushoku Tensei.

Não possui a construção política de Overlord.

Não possui a complexidade emocional de Re:Zero.

Mas entrega algo cada vez mais raro:

uma aventura de fantasia honesta, divertida e otimista.

É como executar um velho sistema COBOL que não possui inteligência artificial, blockchain, microserviços ou buzzwords modernas...

...mas continua funcionando perfeitamente há décadas porque foi construído sobre fundamentos sólidos.

Nota Bellacosa Mainframe: 8,5/10

☕💀 Status Final do Job: CONCLUÍDO COM SUCESSO.

Mensagem JES2:

$HASP395 ARC ENDED - RC=0000 - HEROISMO EXECUTADO COM ÊXITO

 

quinta-feira, 23 de junho de 2022

DB2I sem Mistérios: o Portal Clássico que Leva o Programador COBOL Padawan do Primeiro SELECT ao BIND de Produção

 

Bellacosa Mainframe apresenta o db2i

☕ Um Café no Bellacosa Mainframe

DB2I sem Mistérios: o Portal Clássico que Leva o Programador COBOL Padawan do Primeiro SELECT ao BIND de Produção

Imagine a seguinte cena.

Você acabou de entrar no TSO. A tela preta surgiu diante de seus olhos como a entrada de uma antiga fortaleza digital. Depois de informar seu usuário, sua senha e atravessar os corredores do ISPF, você finalmente executa o comando que abre uma das áreas mais tradicionais do universo IBM Z.

Na tela aparece:

DB2I PRIMARY OPTION MENU

No canto superior direito:

SSID: DB9G

E logo abaixo, um conjunto de opções aparentemente simples:

1  SPUFI
2  DCLGEN
3  PROGRAM PREPARATION
4  PRECOMPILE
5  BIND/REBIND/FREE
6  RUN
7  DB2 COMMANDS
8  UTILITIES
D  DB2I DEFAULTS
X  EXIT

Para um iniciante, isso pode parecer apenas mais um menu antigo em modo texto.

Mas não se engane, jovem padawan.

Essa tela é uma verdadeira central de comando para o desenvolvimento de aplicações COBOL com Db2 no mainframe. Ela reúne, em um único lugar, grande parte da jornada que transforma uma instrução SQL escrita dentro de um programa COBOL em uma operação real, autorizada, otimizada e executada contra um banco de dados corporativo.

Estamos diante do DB2I, sigla para Db2 Interactive.

Ele é um dos portais clássicos do desenvolvimento no IBM Z.

Neste café, vamos atravessar cada porta desse menu, entender sua história, observar como ele funciona, descobrir o que acontece nos bastidores e acompanhar, passo a passo, o nascimento de um programa COBOL com SQL embutido.

Prepare sua caneca.

O Db2 está acordado.


Bellacosa Mainframe e o db2i no emulador 3270

1. O que é o DB2I?

O DB2I é uma interface interativa integrada ao ISPF que permite acessar diversas funções relacionadas ao Db2 for z/OS.

Ele não é o banco de dados propriamente dito.

Também não é o compilador COBOL.

Ele funciona como um grande painel de controle que organiza diferentes ferramentas, processos e utilitários do ecossistema Db2.

Por meio dele, o usuário pode:

  • executar comandos SQL;

  • gerar declarações de tabelas;

  • preparar programas para execução;

  • realizar precompile;

  • executar BIND e REBIND;

  • rodar programas;

  • emitir comandos administrativos;

  • executar utilitários;

  • configurar parâmetros pessoais.

Sua grande virtude é a integração.

Em vez de o programador precisar decorar vários comandos, jobs e programas utilitários, o DB2I apresenta painéis que solicitam os parâmetros necessários e, em muitos casos, gera ou submete o JCL correspondente.

É importante entender que o DB2I não eliminou o JCL.

Ele apenas oferece uma interface mais amigável para preparar ou executar processos que, por baixo da superfície, continuam dependendo de datasets, procedimentos catalogados, módulos de carga, bibliotecas, parâmetros, planos e packages.

O DB2I é, portanto, uma espécie de ponte entre o usuário e a complexidade da infraestrutura.


2. Em que ambiente estamos trabalhando?

A tela mostrada é acessada por meio de um emulador TN3270.

A arquitetura normalmente segue este caminho:

Computador do usuário
        |
        v
Emulador TN3270
        |
        v
TSO/E
        |
        v
ISPF
        |
        v
DB2I
        |
        v
Subsistema Db2

Cada camada possui uma função.

O TN3270 permite que o computador moderno se comporte como um terminal IBM 3270.

O TSO/E oferece a sessão interativa no z/OS.

O ISPF fornece os painéis, menus, editores e serviços de produtividade.

O DB2I organiza as funções relacionadas ao Db2.

Finalmente, o subsistema Db2 executa o trabalho real de gerenciamento de dados, SQL, locks, buffer pools, logs, recuperação, autorização e otimização.

O programador enxerga uma tela.

O sistema enxerga uma cadeia inteira de componentes.


3. O significado de SSID

No canto superior direito aparece:

SSID: DB9G

SSID significa:

Subsystem Identifier

É o identificador do subsistema Db2 ao qual a sessão está associada.

Em um mesmo ambiente z/OS podem existir vários subsistemas Db2.

Por exemplo:

DB2D = desenvolvimento
DB2T = testes
DB2H = homologação
DB2P = produção

Também podem existir subsistemas diferentes por aplicação, unidade de negócio, versão, data sharing group ou finalidade técnica.

O nome não precisa obrigatoriamente indicar o ambiente. Cada empresa define sua convenção.

O ponto essencial é este:

Sempre confirme em qual SSID você está trabalhando antes de executar comandos.

Essa é uma regra de ouro.

Um SELECT executado no ambiente errado pode causar apenas confusão.

Um DELETE executado no ambiente errado pode causar uma reunião de emergência com vinte pessoas, três gerentes, dois DBAs e um café que já perdeu a temperatura.


4. Opção 1 — SPUFI

A primeira opção é:

1 SPUFI

SPUFI significa:

SQL Processor Using File Input

Em muitas documentações antigas, também é descrito como uma interface para processar SQL armazenado em um dataset de entrada.

Na prática, ele permite escrever instruções SQL em um arquivo, executá-las e armazenar os resultados em outro arquivo.

É uma das ferramentas mais tradicionais do Db2 for z/OS.


4.1 Como o SPUFI funciona?

O fluxo básico é:

Dataset de entrada
       |
       v
Instruções SQL
       |
       v
SPUFI
       |
       v
Db2
       |
       v
Dataset de saída

O usuário informa:

  • o dataset que contém o SQL;

  • o dataset em que deseja receber o resultado;

  • parâmetros de execução;

  • formato da saída;

  • número máximo de linhas;

  • opções de commit;

  • isolamento.

Um exemplo de dataset de entrada:

SELECT EMPNO,
       FIRSTNME,
       LASTNAME,
       SALARY
FROM DSN8C10.EMP
ORDER BY LASTNAME;

O SPUFI envia a instrução ao Db2 e grava a resposta no dataset de saída.


4.2 Primeiro passo a passo com SPUFI

Suponha que você queira consultar uma tabela chamada CLIENTE.

Entre na opção 1.

Informe um dataset de entrada, por exemplo:

VAGNER.SQL.CONSULTA

Caso o dataset não exista, o DB2I poderá permitir sua alocação, dependendo das configurações.

No editor ISPF, escreva:

SELECT ID_CLIENTE,
       NOME_CLIENTE,
       LIMITE_CREDITO
FROM APP.CLIENTE
FETCH FIRST 20 ROWS ONLY;

Salve o membro ou dataset.

Retorne ao painel do SPUFI.

Informe o dataset de saída:

VAGNER.SQL.RESULTADO

Execute.

Depois, abra o resultado.

Você poderá ver algo semelhante a:

---------+---------+---------+---------+
ID_CLIENTE NOME_CLIENTE          LIMITE_CREDITO
---------+---------+---------+---------+
000001     ANA SILVA                    5000.00
000002     JOAO SOUZA                   3500.00
000003     MARIA COSTA                  8000.00
DSNE610I NUMBER OF ROWS DISPLAYED IS 3
DSNE616I STATEMENT EXECUTION WAS SUCCESSFUL

O formato real varia conforme parâmetros, versão e configuração do ambiente.


4.3 Cuidados com SPUFI

O SPUFI não é apenas uma ferramenta de consulta.

Ele também pode executar:

INSERT
UPDATE
DELETE
CREATE
ALTER
DROP
GRANT
REVOKE

Portanto, trate-o com respeito.

Antes de executar:

DELETE FROM APP.CLIENTE;

verifique se faltou uma cláusula WHERE.

Uma pequena ausência pode transformar uma manutenção de um registro em uma limpeza completa da tabela.

Uma boa prática é primeiro executar:

SELECT COUNT(*)
FROM APP.CLIENTE
WHERE STATUS = 'I';

Depois:

SELECT *
FROM APP.CLIENTE
WHERE STATUS = 'I'
FETCH FIRST 50 ROWS ONLY;

Somente após validar os dados, executar:

DELETE FROM APP.CLIENTE
WHERE STATUS = 'I';

O padawan prudente consulta antes de alterar.


5. Opção 2 — DCLGEN

A segunda opção é:

2 DCLGEN

DCLGEN significa:

Declarations Generator

Sua finalidade é gerar declarações de tabela e estruturas de host variables para linguagens como COBOL.

Suponha que exista a tabela:

CREATE TABLE APP.CLIENTE
(
    ID_CLIENTE      INTEGER       NOT NULL,
    NOME_CLIENTE    VARCHAR(80)   NOT NULL,
    LIMITE_CREDITO  DECIMAL(11,2),
    DATA_CADASTRO   DATE,
    STATUS          CHAR(1)
);

O programa COBOL precisa conhecer a estrutura dos campos que serão usados nas instruções SQL.

O DCLGEN pode gerar algo semelhante a:

       EXEC SQL DECLARE APP.CLIENTE TABLE
       ( ID_CLIENTE      INTEGER NOT NULL,
         NOME_CLIENTE    VARCHAR(80) NOT NULL,
         LIMITE_CREDITO  DECIMAL(11,2),
         DATA_CADASTRO   DATE,
         STATUS          CHAR(1)
       ) END-EXEC.

Também gera a estrutura COBOL:

       01  DCLCLIENTE.
           10  ID-CLIENTE          PIC S9(9) COMP.
           10  NOME-CLIENTE.
               49 NOME-CLIENTE-LEN PIC S9(4) COMP.
               49 NOME-CLIENTE-TEXT PIC X(80).
           10  LIMITE-CREDITO      PIC S9(9)V99 COMP-3.
           10  DATA-CADASTRO       PIC X(10).
           10  STATUS-CLIENTE      PIC X(1).

Os nomes e formatos podem variar de acordo com as opções escolhidas.


5.1 Por que o DCLGEN é tão importante?

Sem ele, o programador teria que converter manualmente cada tipo SQL em um formato COBOL.

Exemplos:

INTEGER       -> PIC S9(9) COMP
SMALLINT      -> PIC S9(4) COMP
DECIMAL(9,2)  -> PIC S9(7)V99 COMP-3
CHAR(10)      -> PIC X(10)
DATE          -> PIC X(10)
VARCHAR       -> campo de tamanho + texto

Essa conversão manual pode gerar erros.

Um campo definido incorretamente pode resultar em:

  • truncamento;

  • dados corrompidos;

  • SQLCODE negativo;

  • valores numéricos inválidos;

  • ABEND S0C7;

  • comportamento imprevisível.

O DCLGEN reduz essa possibilidade.


5.2 DCLGEN não substitui governança

Há um detalhe importante.

Gerar o DCLGEN é apenas o começo.

A empresa precisa controlar:

  • onde o copybook será armazenado;

  • qual versão está em produção;

  • quais programas usam aquela estrutura;

  • o que acontece quando a tabela muda;

  • se os programas precisam ser recompilados;

  • se o BIND precisa ser renovado.

Em ambientes maduros, alterações de tabela seguem processos rigorosos.

Não basta alterar uma coluna e esperar que todos os programas se adaptem magicamente.

No mainframe, magia sem controle costuma receber outro nome: incidente.


6. Opção 3 — Program Preparation

A opção 3 é:

3 PROGRAM PREPARATION

Ela reúne etapas necessárias para preparar uma aplicação Db2 para execução.

Um programa COBOL com SQL embutido precisa passar por várias fases:

Fonte COBOL com EXEC SQL
          |
          v
Precompile
          |
          +----> DBRM
          |
          v
Fonte COBOL transformado
          |
          v
Compilação
          |
          v
Objeto
          |
          v
Link-edit
          |
          v
Load module
          |
          v
BIND
          |
          v
Package ou plan

A opção Program Preparation tenta coordenar essas etapas.

É excelente para laboratórios, ambientes educacionais e processos padronizados.

Em grandes empresas, porém, muitas dessas fases são executadas por pipelines, ferramentas de change management ou JCLs corporativos.

Entre as ferramentas modernas ou tradicionais podem aparecer:

  • Endevor;

  • ISPW;

  • Changeman;

  • DBB;

  • Jenkins;

  • GitLab;

  • GitHub Actions;

  • IBM Developer for z/OS;

  • zBuilder.

Mesmo assim, o conceito permanece exatamente o mesmo.


7. Opção 4 — Precompile

A opção 4 chama o precompiler do Db2.

Essa é uma das etapas mais fascinantes.

O compilador COBOL não compreende diretamente uma instrução como:

       EXEC SQL
           SELECT NOME_CLIENTE,
                  LIMITE_CREDITO
             INTO :WS-NOME,
                  :WS-LIMITE
             FROM APP.CLIENTE
            WHERE ID_CLIENTE = :WS-ID
       END-EXEC.

O SQL embutido precisa ser tratado antes da compilação COBOL.

O precompiler percorre o fonte e identifica blocos entre:

EXEC SQL

e:

END-EXEC

Ele separa as instruções SQL e gera dois resultados principais:

  1. Um fonte COBOL modificado.

  2. Um DBRM.


7.1 O que é o DBRM?

DBRM significa:

Database Request Module

Ele contém representações das instruções SQL extraídas do programa.

O DBRM não é o executável.

Ele também não é uma tabela.

Ele é um artefato intermediário utilizado posteriormente no BIND.

Pense nele como um dossiê contendo os pedidos de acesso ao banco feitos pelo programa.

Exemplo conceitual:

Programa: PGMCAD01

SQL 1:
SELECT NOME_CLIENTE
FROM APP.CLIENTE
WHERE ID_CLIENTE = ?

SQL 2:
UPDATE APP.CLIENTE
SET STATUS = ?
WHERE ID_CLIENTE = ?

Esse conjunto de solicitações será analisado pelo Db2 durante o BIND.


7.2 O que acontece com o fonte COBOL?

O SQL é substituído ou acompanhado por chamadas apropriadas à interface do Db2.

O fonte resultante pode conter referências a módulos e estruturas necessárias para a comunicação com o banco.

Depois disso, o compilador COBOL consegue processar o programa.

O fluxo é:

COBOL + SQL
    |
    v
Precompiler Db2
    |
    +----> DBRM
    |
    v
COBOL sem SQL nativo
    |
    v
Compiler

8. SQLCA: o mensageiro do Db2

Quase todo programa COBOL com Db2 possui:

       EXEC SQL
           INCLUDE SQLCA
       END-EXEC.

SQLCA significa:

SQL Communication Area

É uma estrutura usada para receber informações sobre a execução da instrução SQL.

O campo mais famoso é:

SQLCODE

Exemplos:

SQLCODE = 0      sucesso
SQLCODE = 100    nenhuma linha encontrada
SQLCODE = -811   mais de uma linha retornada
SQLCODE = -904   recurso indisponível
SQLCODE = -911   deadlock ou timeout com rollback
SQLCODE = -913   deadlock ou timeout
SQLCODE = -805   package não encontrado
SQLCODE = -818   timestamp inconsistente

Um programa sério deve testar o SQLCODE após cada operação relevante.

Exemplo:

       EXEC SQL
           SELECT NOME_CLIENTE
             INTO :WS-NOME
             FROM APP.CLIENTE
            WHERE ID_CLIENTE = :WS-ID
       END-EXEC.

       EVALUATE SQLCODE
           WHEN 0
               DISPLAY 'CLIENTE ENCONTRADO: ' WS-NOME
           WHEN 100
               DISPLAY 'CLIENTE NAO ENCONTRADO'
           WHEN OTHER
               DISPLAY 'ERRO SQLCODE: ' SQLCODE
       END-EVALUATE.

Ignorar o SQLCODE é como pilotar uma nave sem olhar o painel.

Talvez ela continue voando.

Talvez o motor já esteja em chamas.


9. Opção 5 — BIND, REBIND e FREE

A opção 5 é uma das mais importantes do menu:

5 BIND/REBIND/FREE

Esses três comandos controlam packages e plans.


10. O que é BIND?

O BIND pega o DBRM e cria uma estrutura executável pelo Db2, geralmente um package.

Durante o BIND, o Db2:

  • valida as instruções SQL;

  • verifica objetos referenciados;

  • avalia autorizações;

  • analisa estatísticas;

  • escolhe caminhos de acesso;

  • registra dependências;

  • cria o package;

  • armazena informações no catálogo.

O otimizador decide como acessar os dados.

Ele pode escolher:

  • table space scan;

  • index scan;

  • index-only access;

  • nested loop join;

  • merge scan join;

  • hybrid join;

  • acesso por particionamento;

  • paralelismo.

Duas instruções SQL textualmente iguais podem receber caminhos de acesso diferentes dependendo de:

  • índices;

  • cardinalidade;

  • distribuição de dados;

  • estatísticas;

  • parâmetros de BIND;

  • versão do Db2;

  • nível de função;

  • configuração do subsistema.


10.1 Package e plan

Um package contém a forma preparada das instruções SQL de um programa ou unidade lógica.

Um plan organiza a execução e pode referenciar collections e packages.

No modelo moderno, é comum trabalhar principalmente com packages.

Fluxo simplificado:

Programa COBOL
      |
      v
Package
      |
      v
Collection
      |
      v
Plan
      |
      v
Db2

Nem todas as empresas usam exatamente a mesma convenção, mas o conceito geral permanece.


11. O que é REBIND?

O REBIND recria o package ou plan sem precisar gerar um novo DBRM.

Ele é útil quando:

  • estatísticas foram atualizadas;

  • índices foram criados;

  • índices foram removidos;

  • o volume de dados mudou;

  • houve alteração de parâmetros;

  • o Db2 foi atualizado;

  • deseja-se obter um novo access path.

Exemplo clássico:

RUNSTATS
   |
   v
Novas estatísticas
   |
   v
REBIND
   |
   v
Novo caminho de acesso

O programa COBOL pode permanecer o mesmo.

O executável pode permanecer o mesmo.

Mas o Db2 pode escolher uma estratégia diferente para acessar os dados.

Esse desacoplamento é uma das maiores forças da arquitetura Db2.


12. O que é FREE?

FREE remove packages ou plans do catálogo.

É uma operação poderosa e potencialmente perigosa.

Se você remover um package necessário, o programa poderá falhar com erro semelhante ao:

SQLCODE -805

Esse erro normalmente indica que o package esperado não foi encontrado, não está disponível na collection correta ou não corresponde ao que o programa está tentando usar.

Nunca execute FREE por curiosidade em ambiente corporativo.

Curiosidade é excelente para estudar.

Em produção, curiosidade sem mudança aprovada pode virar RCA.


13. Opção 6 — RUN

A opção 6 permite executar um programa SQL.

Dependendo da instalação, o painel solicita:

  • nome do programa;

  • plan;

  • parâmetros;

  • bibliotecas de carga;

  • datasets;

  • ambiente;

  • opções de execução.

Essa função é bastante útil para testes.

Em ambientes reais, programas batch normalmente são executados por JCL.

Um exemplo conceitual:

//RUNDB2   JOB ...
//STEP01   EXEC PGM=IKJEFT01
//STEPLIB  DD DISP=SHR,DSN=APP.LOADLIB
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSTSIN  DD *
  DSN SYSTEM(DB9G)
  RUN PROGRAM(PGMCAD01) PLAN(PLANAPP) -
      LIB('APP.LOADLIB')
  END
/*

O exemplo exato varia conforme o ambiente.

O programa pode também ser executado em:

  • CICS;

  • IMS;

  • stored procedure;

  • WLM;

  • batch;

  • TSO;

  • z/OS Unix;

  • aplicações distribuídas.


14. Opção 7 — Db2 Commands

A opção 7 permite emitir comandos administrativos do Db2.

Exemplos:

-DISPLAY DATABASE
-DISPLAY THREAD
-DISPLAY UTILITY
-DISPLAY BUFFERPOOL
-START DATABASE
-STOP DATABASE
-RECOVER INDOUBT

Esses comandos não são SQL.

Eles são comandos do subsistema Db2.

Por exemplo:

-DISPLAY DATABASE(APPDB)

Pode mostrar o estado dos objetos relacionados ao banco.

Outro exemplo:

-DISPLAY THREAD(*)

Pode exibir threads conectadas.

Essas funções geralmente são controladas por autorização.

Um programador comum talvez possa executar alguns comandos de consulta, mas não terá autoridade para iniciar, parar ou alterar recursos críticos.

E isso é saudável.

Segurança não é um obstáculo.

É o cinto de segurança da operação.


15. Opção 8 — Utilities

Os utilitários do Db2 são responsáveis por diversas tarefas essenciais de manutenção.

Entre os principais:

LOAD
UNLOAD
REORG
RUNSTATS
COPY
RECOVER
CHECK DATA
CHECK INDEX
REBUILD INDEX
QUIESCE
MODIFY RECOVERY

15.1 RUNSTATS

Coleta estatísticas sobre:

  • quantidade de linhas;

  • cardinalidade;

  • distribuição;

  • frequência;

  • índices;

  • colunas;

  • partições.

O otimizador usa essas informações para escolher access paths.

Estatística desatualizada pode levar a decisões ruins.

É como usar um mapa de uma cidade de 1995 para dirigir em 2026.

Algumas ruas ainda existem.

Outras viraram avenidas, túneis, condomínios e rotatórias criadas por alguém que parecia gostar muito de rotatórias.


15.2 REORG

Reorganiza os dados fisicamente.

Pode ajudar a:

  • reduzir fragmentação;

  • recuperar espaço;

  • melhorar clustering;

  • restaurar organização física;

  • tratar estados pendentes;

  • melhorar acesso.


15.3 COPY

Cria cópias de imagem para recuperação.

Sem cópias adequadas, uma falha pode se tornar uma tragédia operacional.


15.4 RECOVER

Restaura objetos após falhas ou perda de dados.

Pode utilizar:

  • image copies;

  • logs;

  • pontos de recuperação;

  • informações do catálogo.


15.5 LOAD

Carrega grandes volumes de dados com eficiência.

É muito mais apropriado para cargas massivas do que executar milhões de INSERTs individuais.


16. Opção D — DB2I Defaults

A opção D permite configurar padrões utilizados pelo DB2I.

Podem existir parâmetros para:

  • nomes de datasets;

  • classes de job;

  • opções de saída;

  • SQL terminator;

  • parâmetros de execução;

  • bibliotecas;

  • identificadores;

  • formato dos resultados.

Esses defaults economizam tempo.

Em vez de digitar os mesmos valores em todos os painéis, o usuário configura uma vez e reaproveita.

Porém, sempre revise os parâmetros antes de executar.

Um default antigo pode apontar para:

  • SSID incorreto;

  • biblioteca obsoleta;

  • plan antigo;

  • collection inadequada;

  • dataset inexistente.

Automação ajuda.

Automação desatualizada ajuda a errar mais rápido.


17. Passo a passo completo: criando um programa COBOL com Db2

Agora vamos juntar tudo.

Imagine um programa que consulta o nome de um cliente.


Passo 1 — Criar o DCLGEN

Use a opção 2.

Informe:

TABLE OWNER: APP
TABLE NAME: CLIENTE

Defina o dataset de saída:

VAGNER.COBOL.COPYLIB(DCLCLI)

O DCLGEN será gerado.


Passo 2 — Escrever o programa COBOL

Exemplo simplificado:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. PGCLI001.

       DATA DIVISION.
       WORKING-STORAGE SECTION.

       EXEC SQL
           INCLUDE SQLCA
       END-EXEC.

       EXEC SQL
           INCLUDE DCLCLI
       END-EXEC.

       01  WS-ID-CLIENTE      PIC S9(9) COMP VALUE 100.
       01  WS-NOME-CLIENTE    PIC X(80).

       PROCEDURE DIVISION.

           EXEC SQL
               SELECT NOME_CLIENTE
                 INTO :WS-NOME-CLIENTE
                 FROM APP.CLIENTE
                WHERE ID_CLIENTE = :WS-ID-CLIENTE
           END-EXEC

           EVALUATE SQLCODE
               WHEN 0
                   DISPLAY 'CLIENTE: ' WS-NOME-CLIENTE
               WHEN 100
                   DISPLAY 'CLIENTE NAO ENCONTRADO'
               WHEN OTHER
                   DISPLAY 'ERRO SQL: ' SQLCODE
           END-EVALUATE

           GOBACK.

Passo 3 — Precompile

Use a opção 4 ou Program Preparation.

Entradas:

Fonte COBOL
DBRM library
Copy library
Parâmetros SQL

Saídas:

Fonte COBOL modificado
DBRM
Listing
Mensagens

Verifique erros de sintaxe SQL.


Passo 4 — Compilar

O fonte modificado segue para o Enterprise COBOL.

O compilador gera:

Object deck
Compiler listing
Mensagens

Corrija qualquer erro COBOL.


Passo 5 — Link-edit

O objeto é transformado em load module ou program object.

Ele será armazenado em uma biblioteca de carga.

Exemplo:

VAGNER.APP.LOADLIB

Passo 6 — BIND PACKAGE

Use a opção 5.

Informe:

DBRM: PGCLI001
COLLECTION: APPDEV
PACKAGE: PGCLI001
OWNER: VAGNER
QUALIFIER: APP

Parâmetros comuns podem incluir:

ACTION(REPLACE)
ISOLATION(CS)
VALIDATE(BIND)
RELEASE(COMMIT)
CURRENTDATA(NO)

Os parâmetros exatos dependem dos padrões da empresa.


Passo 7 — BIND PLAN

Caso o ambiente utilize plan explícito para a execução, associe a package list ou collection.

Exemplo conceitual:

PLAN: PLANAPP
PKLIST: APPDEV.*

Passo 8 — Executar

Use a opção 6 ou submeta o JCL.

Observe:

  • retorno do job;

  • SQLCODE;

  • mensagens;

  • dumps;

  • saídas;

  • tempo de CPU;

  • quantidade de linhas.


18. Erros clássicos do padawan

SQLCODE -805

Package não encontrado.

Possíveis causas:

  • BIND não executado;

  • collection errada;

  • plan incorreto;

  • package removido;

  • versão incompatível.


SQLCODE -818

Incompatibilidade de timestamp entre programa e package.

Pode acontecer quando o programa foi recompilado, mas o package não foi gerado de forma correspondente.

A solução geralmente envolve sincronizar:

Precompile
Compile
Link-edit
Bind

SQLCODE -811

Um SELECT INTO retornou mais de uma linha.

Exemplo perigoso:

SELECT NOME_CLIENTE
INTO :WS-NOME
FROM APP.CLIENTE
WHERE STATUS = 'A';

Se existem mil clientes ativos, o Db2 não sabe qual retornar.

Use chave única, agregação ou cursor.


SQLCODE +100

Nenhuma linha encontrada.

Não é necessariamente erro.

Pode ser uma condição normal de negócio.


SQLCODE -911

Deadlock ou timeout com rollback.

O programa perdeu uma disputa por recurso e a unidade de trabalho foi desfeita.

É necessário avaliar:

  • ordem de acesso;

  • tempo entre commits;

  • índices;

  • isolamento;

  • concorrência;

  • volume de processamento.


19. Curiosidades históricas

O DB2I carrega a filosofia de uma época em que memória, largura de banda e espaço de tela eram recursos valiosos.

Por isso, seus painéis são diretos.

Não existem animações.

Não existem botões brilhantes.

Não existem notificações perguntando se você gostaria de conhecer cinco novidades.

Existe uma linha de comando, campos objetivos e uma tecla Enter.

Essa simplicidade ajudou o ambiente a permanecer produtivo por décadas.

Outra curiosidade é que muitos profissionais que começaram no Db2 em versões antigas ainda reconhecem imediatamente o menu.

Os detalhes evoluíram.

O banco ganhou novos tipos, novos níveis de função, novas capacidades e otimizações.

Mas a lógica fundamental continua familiar.

Isso é compatibilidade cultural.

Não apenas compatibilidade técnica.


20. Easter egg Bellacosa Mainframe

Vamos transformar a jornada em uma aventura galáctica.

O programa COBOL é um jovem Jedi.

O DCLGEN entrega o mapa da estrutura do planeta-tabela.

O precompiler é C-3PO, traduzindo SQL para uma linguagem compreendida pela infraestrutura.

O DBRM é o pergaminho contendo todas as missões de acesso ao banco.

O compilador COBOL treina o guerreiro.

O link-editor entrega o sabre de luz.

O BIND apresenta a missão ao Conselho Jedi.

O otimizador decide a rota: índice, scan, join, paralelismo.

O package é a autorização oficial.

O plan é o plano de batalha.

O SQLCA é o comunicador preso ao cinto.

E o SQLCODE informa se a missão foi cumprida ou se o grupo acabou preso em um compactador de lixo da Estrela da Morte.

O mais importante é compreender que nenhuma etapa existe por acaso.

O mainframe não gosta de improviso.

Ele gosta de processos repetíveis, auditáveis e previsíveis.

Essa disciplina é uma das razões pelas quais sistemas IBM Z sustentam bancos, governos, seguradoras, companhias aéreas, indústrias e cadeias globais de negócios.


Conclusão

A tela do DB2I pode parecer modesta, mas ela concentra uma quantidade impressionante de conhecimento.

Por trás de suas opções existem:

  • linguagens;

  • compiladores;

  • catálogos;

  • packages;

  • plans;

  • access paths;

  • estatísticas;

  • segurança;

  • recuperação;

  • concorrência;

  • utilitários;

  • JCL;

  • datasets;

  • décadas de engenharia.

Dominar o DB2I não significa apenas aprender a navegar em um menu.

Significa compreender o ciclo de vida de uma aplicação Db2 no z/OS.

O programador COBOL padawan que aprende apenas a escrever SELECT conhece a superfície.

O profissional que compreende precompile, DBRM, BIND, package, plan, SQLCA, utilitários e access path começa a enxergar o sistema inteiro.

E é nesse momento que a velha tela preta deixa de parecer antiga.

Ela passa a parecer aquilo que realmente é:

Um painel de controle compacto para uma das plataformas de dados mais robustas já construídas pela indústria da computação.

Portanto, na próxima vez que você entrar no DB2I e enxergar suas opções em ciano, não veja apenas números.

Veja uma linha de produção.

Veja o SQL sendo extraído.

Veja o DBRM sendo criado.

Veja o compilador trabalhando.

Veja o otimizador avaliando caminhos.

Veja o package sendo autorizado.

Veja o programa entrando em execução.

Porque, no IBM Z, quase sempre existe muito mais acontecendo por trás da tela do que o terminal permite enxergar.

E essa, jovem padawan, é parte da beleza do mainframe.


quarta-feira, 22 de junho de 2022

De Rust ao COBOL no IBM Z : Você Não Está Abandonando a Programação Moderna. Está Descobrindo Onde a Engenharia de Software Aprendeu a Nunca Falhar.

 

Bellacosa Mainframe do rust ao cobol no zos

☕ Um Café no Bellacosa Mainframe

De Rust ao COBOL no IBM Z

Você Não Está Abandonando a Programação Moderna. Está Descobrindo Onde a Engenharia de Software Aprendeu a Nunca Falhar.

"Rust ensina você a escrever programas seguros. O IBM Z ensina você a manter um país funcionando às três da manhã de uma segunda-feira."

Existe uma pergunta que aparece com frequência quando um desenvolvedor Rust descobre o universo IBM Z:

"Faz sentido aprender COBOL em pleno século XXI?"

Minha resposta costuma ser outra pergunta.

Você quer aprender apenas uma linguagem ou quer aprender como funcionam alguns dos sistemas mais confiáveis do planeta?

Porque existe uma enorme diferença entre essas duas coisas.

Quem programa em Rust normalmente já possui uma mentalidade extremamente valorizada no mundo Mainframe.

Você já aprendeu a respeitar memória.

Já aprendeu que performance importa.

Já aprendeu que concorrência não é brincadeira.

Já aprendeu que estabilidade vale mais que "funcionou na minha máquina".

Na verdade...

Você está muito mais preparado para aprender COBOL do que imagina.

Só precisa trocar algumas lentes.


O maior erro

Muita gente tenta comparar:

Rust × COBOL

Essa comparação é injusta.

Seria como comparar:

  • um bisturi

  • uma usina hidrelétrica

Os dois resolvem problemas.

Mas vivem em mundos completamente diferentes.

Rust nasceu para produzir software extremamente seguro.

COBOL nasceu para processar negócios.

O IBM Z nasceu para garantir que esses negócios nunca parem.

Quando entendemos isso, tudo muda.


O pensamento do desenvolvedor Rust

Quem vive em Rust normalmente pensa em:

  • ownership

  • borrowing

  • lifetimes

  • Result

  • Option

  • Traits

  • Enums

  • Pattern Matching

  • Zero Cost Abstractions

  • Async

  • Tokio

  • Cargo

  • Crates

  • módulos

  • performance

  • segurança

É uma linguagem construída para impedir erros antes mesmo da compilação.

Isso muda completamente a forma de desenvolver.


Bellacosa Mainframe rust versus cobol no zos

O pensamento do desenvolvedor COBOL

Já o programador COBOL pensa em coisas diferentes.

Ele pensa em:

  • regras de negócio

  • consistência

  • auditoria

  • precisão decimal

  • processamento em lote

  • processamento online

  • disponibilidade

  • rastreabilidade

  • recuperação

  • confiabilidade

Observe uma curiosidade.

Rust protege memória.

COBOL protege dinheiro.

Ambos protegem algo extremamente importante.


O choque inicial

O primeiro contato costuma causar estranheza.

O desenvolvedor Rust abre um programa COBOL e pensa:

"Cadê as funções?"

"Cadê os módulos?"

"Cadê os generics?"

"Cadê os traits?"

"Cadê o Cargo?"

É normal.

Porque COBOL foi criado em outra época.

Mas existe um detalhe interessante.

As versões modernas do Enterprise COBOL evoluíram bastante.

Hoje encontramos:

  • variáveis locais

  • recursão

  • XML

  • JSON

  • UTF-8

  • chamadas para Java

  • interoperabilidade com C

  • otimizações sofisticadas

  • integração com APIs REST através do ecossistema IBM Z

Não é o COBOL dos anos 70.


O que você precisa desaprender

Talvez a mudança mais importante seja esta.

No mundo Rust pensamos muito em estruturas de dados.

No mundo Mainframe pensamos primeiro em processos de negócio.

A pergunta deixa de ser:

"Como armazeno isso?"

e passa a ser:

"Como um banco liquida milhões de operações sem perder um centavo?"

É outro tipo de engenharia.


O que continua igual

Mais do que muita gente imagina.

Organização

Rust organiza código.

COBOL também.

Você terá:

  • programas

  • subprogramas

  • copybooks

  • bibliotecas

  • interfaces

A ideia continua sendo dividir responsabilidades.


Legibilidade

Rust valoriza código limpo.

COBOL também.

Aliás...

COBOL talvez seja uma das linguagens mais próximas da linguagem humana.

IF SALDO > LIMITE
    PERFORM BLOQUEAR-CONTA
END-IF

Mesmo quem nunca programou consegue entender.


Modularização

Rust:

mod

COBOL:

CALL

Em ambos os casos você evita duplicação.


Testes

Rust possui uma cultura fantástica de testes.

Leve isso para o Mainframe.

Hoje existem ferramentas como:

  • zUnit

  • COBOL Unit Test

  • COBOL Check

  • integração com Jenkins

  • GitHub Actions

  • GitLab CI

  • Azure DevOps

Você pode continuar praticando TDD.


Performance

Rust busca eficiência.

IBM Z vive disso.

Só que existe uma diferença.

Rust normalmente otimiza microssegundos.

IBM Z otimiza milhões de transações simultâneas.

É outra escala.


O que muda completamente

Agora começam as novidades.


Você deixa de pensar apenas em programas

No Mainframe, um programa nunca vive sozinho.

Ele conversa com um enorme ecossistema.

Você conhecerá:

  • JCL

  • JES2

  • TSO

  • ISPF

  • SDSF

  • RACF

  • CICS

  • Db2

  • VSAM

  • MQ

  • z/OS

Tudo faz parte do mesmo universo.


O sistema operacional é diferente

Windows e Linux nasceram para computadores relativamente independentes.

O z/OS nasceu para um computador compartilhado por milhares de pessoas ao mesmo tempo.

Cada detalhe foi pensado para isso.

É um paradigma completamente diferente.


Batch não é coisa antiga

Essa talvez seja a maior surpresa.

Muitos imaginam que Batch significa tecnologia ultrapassada.

Na verdade...

Batch significa processamento massivo.

Imagine:

  • fechar cartões de crédito

  • calcular juros

  • atualizar milhões de contas

  • gerar extratos

  • enviar PIX agendados

  • consolidar posições financeiras

Tudo isso continua acontecendo diariamente.

E continua extremamente eficiente.


CICS muda sua visão

Depois você conhecerá CICS.

E entenderá que um terminal 3270 pode responder milhares de usuários com latência impressionante.

Sem navegador.

Sem JavaScript.

Sem frameworks gigantescos.

Apenas engenharia.


O que estudar primeiro

Aqui vejo muitos alunos errando.

Eles começam por CICS.

Ou Db2.

Ou IMS.

Não faça isso.

Existe uma ordem muito melhor.


Etapa 1 — Aprenda COBOL puro

Domine:

  • IDENTIFICATION DIVISION

  • ENVIRONMENT DIVISION

  • DATA DIVISION

  • PROCEDURE DIVISION

Depois pratique:

  • IF

  • EVALUATE

  • PERFORM

  • SEARCH

  • OCCURS

  • INDEX

  • tabelas

  • arquivos sequenciais

Escreva muitos programas pequenos.


Etapa 2 — Entenda dados

Rust trabalha muito com estruturas.

No Mainframe você precisa dominar layouts.

Aprenda:

  • PIC

  • COMP

  • COMP-3

  • DISPLAY

  • REDEFINES

  • OCCURS

  • COPYBOOKS

Essa é uma das partes mais importantes.


Etapa 3 — Aprenda JCL

Não existe desenvolvimento Mainframe sem JCL.

Aprenda:

  • JOB

  • EXEC

  • DD

  • PROC

  • COND

  • IF/THEN

  • SORT

  • IDCAMS

  • IEBGENER

Pense no JCL como um orquestrador.


Etapa 4 — TSO e ISPF

Domine o ambiente.

Aprenda:

  • editar

  • compilar

  • navegar datasets

  • membros

  • utilitários

  • SDSF

Isso aumenta muito sua produtividade.


Etapa 5 — Arquivos

Estude:

  • Sequential

  • VSAM KSDS

  • ESDS

  • RRDS

Entenda quando usar cada um.


Etapa 6 — Db2

Agora sim.

Aprenda:

  • SQL

  • Embedded SQL

  • Cursor

  • Commit

  • Rollback

Quem conhece Rust provavelmente já trabalhou com bancos relacionais.

A adaptação será tranquila.


Etapa 7 — CICS

Somente depois.

Aprenda:

  • COMMAREA

  • Channels

  • Containers

  • BMS

  • Transações

  • Program Control


Etapa 8 — Segurança

Conheça RACF.

Entenda:

  • usuários

  • grupos

  • permissões

  • datasets

  • recursos

Segurança faz parte da arquitetura.


Etapa 9 — Observabilidade

Aprenda:

  • SDSF

  • mensagens

  • ABENDs

  • dumps

  • logs

  • SMF

Aqui você começa a pensar como um engenheiro de produção.


O que praticar diariamente

Uma hora por dia já produz resultados impressionantes.

Minha sugestão é:

Segunda

  • resolver exercícios COBOL

Terça

  • ler JCL

Quarta

  • manipular arquivos

Quinta

  • SQL no Db2

Sexta

  • estudar arquitetura IBM Z

Sábado

  • criar pequenos projetos

Domingo

  • revisar tudo

Consistência vale mais que intensidade.


Habilidades que você já possui

Como desenvolvedor Rust você provavelmente já domina:

  • Git

  • GitHub

  • VS Code

  • terminal

  • debugging

  • documentação

  • leitura de RFCs

  • APIs

  • JSON

  • testes automatizados

Continue usando tudo isso.

Hoje é perfeitamente possível editar programas COBOL no VS Code utilizando extensões modernas, Git e pipelines de integração contínua. O desenvolvimento Mainframe está cada vez mais próximo das práticas que você já conhece no ecossistema open source.


O que você deve desenvolver

Além da linguagem, treine a forma de pensar.

Aprenda a fazer perguntas como:

  • O que acontece se este programa falhar às 2h da manhã?

  • Como recuperar uma execução interrompida?

  • Como garantir que nenhuma transação seja perdida?

  • Como auditar cada alteração?

  • Como processar bilhões de registros mantendo integridade?

  • Como manter compatibilidade com programas escritos há décadas?

Essas perguntas definem um engenheiro de software para sistemas críticos.


A maior mudança de mentalidade

No universo Rust, muitas vezes o foco está em construir algo novo.

No universo IBM Z, o foco é evoluir algo que já funciona, sem interromper um serviço essencial.

É uma disciplina diferente. Você aprende a respeitar contratos, compatibilidade, governança e continuidade operacional. Descobre que inovação também significa modernizar com segurança, integrar APIs, automatizar deploys, usar Git, DevOps e observabilidade, sem colocar em risco aplicações que movimentam bilhões de reais todos os dias.


A recompensa

Depois de alguns meses, você perceberá algo curioso.

COBOL deixará de parecer uma linguagem antiga.

Você começará a enxergar padrões de engenharia extremamente maduros.

Verá programas que processam volumes gigantescos há décadas, passando por inúmeras evoluções sem perder estabilidade. Entenderá por que bancos, seguradoras, companhias aéreas e governos continuam confiando no IBM Z para suas operações mais críticas.

E, nesse momento, você descobrirá que aprender Mainframe nunca foi apenas aprender COBOL.

Foi aprender uma maneira diferente de construir software: uma maneira em que disponibilidade, integridade, desempenho, segurança e continuidade têm prioridade absoluta.

Rust continuará sendo uma excelente linguagem para escrever software moderno, rápido e seguro.

COBOL continuará sendo uma excelente linguagem para expressar regras de negócio de forma clara e confiável.

O IBM Z continuará sendo uma das plataformas mais sofisticadas já criadas para executar essas regras em escala global.

Você não está trocando um mundo pelo outro.

Está unindo dois dos maiores exemplos de engenharia de software já produzidos.

E quando um desenvolvedor Rust aprende a pensar como um engenheiro de Mainframe, ele não se torna apenas um programador mais versátil.

Ele passa a compreender como a tecnologia que mantém o mundo funcionando foi construída — e por que continua relevante, décadas depois.

Esse é o verdadeiro objetivo da jornada.

Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...