☕ 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

segunda-feira, 30 de setembro de 2024

🔥 JCL no z/OS 3.2 — o silêncio que sustenta tudo

 

Bellacosa Maiframe apresenta JCL V3.2 Job Control Language

🔥 JCL no z/OS 3.2 — o silêncio que sustenta tudo



📅 Datas importantes

  • Release (GA): setembro de 2024

  • Final de suporte IBM (EoS): 30 de setembro de 2029 (ciclo padrão de suporte)

O z/OS 3.2 não veio para “mudar o jogo”.
Ele veio para confirmar quem sempre mandou no jogo.


🧬 Contexto histórico

O z/OS 3.2 nasce num mundo onde:

  • Cloud híbrida já é chão de fábrica

  • Observabilidade virou obrigação

  • Segurança é contínua

  • Automação é regra

  • APIs e eventos disparam tudo

E mesmo assim…

👉 o JCL continua sendo o último elo confiável entre intenção e execução.

Bellacosa resumiria assim:

“O mundo ficou barulhento.
O JCL continua em silêncio… funcionando.”


JCL V3.2 Job Control Language

✨ O que há de novo no JCL no z/OS 3.2

A resposta curta (e honesta):

❌ Nada mudou na linguagem
✅ Tudo mudou no peso estratégico do JCL

🆕 1. JCL como fundação do core digital

No z/OS 3.2:

  • O batch é oficialmente serviço corporativo

  • JCL é disparado por:

    • APIs

    • eventos

    • pipelines

    • schedulers cognitivos

  • O JCL vira o contrato final de execução

👉 Se passou pelo JCL, aconteceu de verdade.


🆕 2. JES2 no ponto máximo de previsibilidade

  • Escala massiva de jobs concorrentes

  • Spool estável como rocha

  • Restart e recovery totalmente previsíveis

  • Integração total com automação e monitoramento

O operador agora governa fluxo,
não apaga incêndio.


🆕 3. DFSMS completamente orientado a políticas

  • Storage cada vez mais autônomo

  • Menos parâmetros manuais

  • Menos erro humano

  • Mais inteligência sistêmica

O resultado?
👉 JCL mais limpo, mais legível e mais durável.


🔧 Melhorias percebidas no dia a dia

✔ Batch 24x7 sem drama
✔ Menos “gambiarras históricas”
✔ Mais padronização
✔ JCL tratado como código crítico
✔ Auditoria e rastreabilidade nativas

Nada mudou no //STEP EXEC.
Tudo mudou na responsabilidade do job.


🥚 Easter Eggs (para mainframer raiz)

  • 🥚 JCL escrito no OS/360 ainda roda no z/OS 3.2

  • 🥚 IEFBR14 segue vivo e respeitado

  • 🥚 Comentários em JCL mais antigos que DevOps 😅

  • 🥚 O erro mais comum continua sendo:

    • RC ignorado

    • DISP mal planejado

    • dataset em uso em produção

👉 Tecnologia evolui. Erro humano é backward compatible.


💡 Dicas Bellacosa para JCL no z/OS 3.2

🔹 Trate JCL como ativo estratégico corporativo
🔹 Pense no job como serviço crítico, não script
🔹 Versione JCL como código
🔹 Padronize nomes, comentários e RC
🔹 Documente decisões, não só comandos

🔹 Sempre use:

  • IF / THEN / ELSE

  • RC explícito

  • SYSOUT claro

  • comentários pensando em décadas

Esse JCL vai rodar quando você não estiver mais aqui.


📈 Evolução do JCL até o z/OS 3.2

EraPapel do JCL
OS/360Controle batch
MVSAutomação
OS/390Base corporativa
z/OS V1.xOrquestração
z/OS V2.xMundo híbrido
z/OS 3.1Core digital
z/OS 3.2Alicerce definitivo

👉 No z/OS 3.2, o JCL não é discutido.
Ele é assumido.


📜 Exemplo de JCL “cara de z/OS 3.2”

//BELL32 JOB (ACCT),'JCL z/OS 3.2', // CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //* //* JOB EXPOSTO COMO SERVIÇO CORPORATIVO //* DISPARADO POR API / EVENTO / PIPELINE //* //STEP01 EXEC PGM=COREPROC //STEPLIB DD DSN=BELLACOSA.LOADLIB,DISP=SHR //SYSOUT DD SYSOUT=* //* //IF (STEP01.RC = 0) THEN //STEP02 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DELETE BELLACOSA.WORK.DATA SET MAXCC = 0 /* //ENDIF

💬 Comentário Bellacosa:

“Esse job não sabe quem o chamou.
E isso é exatamente o motivo pelo qual ele é confiável.”


🧠 Comentário final

O JCL no z/OS 3.2 é a confirmação definitiva de uma verdade antiga:

🔥 Confiabilidade não se reinventa.
Ela se preserva.

Enquanto novas plataformas prometem estabilidade,
o JCL segue entregando há mais de 60 anos.

JCL não é passado.
JCL é o chão onde o futuro pisa.

domingo, 29 de setembro de 2024

Data Mining vs Data Analytics: Como um Programador Júnior Pode Transformar Dados em Inteligência de Negócios (e por que isso também importa no IBM Z)

 

Bellacosa Mainframe data mining versus data analytucs

☕ Um Café no Bellacosa Mainframe

Data Mining vs Data Analytics: Como um Programador Júnior Pode Transformar Dados em Inteligência de Negócios (e por que isso também importa no IBM Z)

"No mundo da tecnologia, dados são o novo petróleo. Mas petróleo bruto não move um carro. Primeiro ele precisa ser refinado. Com dados acontece exatamente a mesma coisa."

Quando alguém começa sua carreira em desenvolvimento de software, principalmente no universo do IBM Mainframe, costuma imaginar que seu trabalho será apenas escrever programas COBOL, criar JCLs, consultar DB2 ou desenvolver transações CICS.

E durante algum tempo isso realmente acontece.

Mas, conforme você evolui, percebe uma verdade importante:

Programadores não desenvolvem apenas software. Desenvolvem conhecimento.

Toda aplicação corporativa existe por um motivo: gerar, armazenar ou consumir dados.

E é justamente aí que entram dois conceitos que aparecem cada vez mais em entrevistas, projetos modernos e iniciativas de Inteligência Artificial:

  • Data Mining

  • Data Analytics

Muita gente acredita que são sinônimos.

Não são.

Na verdade, um complementa o outro.

Hoje vamos tomar mais um café e entender essa diferença de uma maneira que faça sentido para um desenvolvedor iniciante, principalmente para quem pretende trabalhar com sistemas corporativos de grande porte.


O tesouro escondido dentro do banco de dados

Imagine que você trabalha em um grande banco.

Todos os dias são registrados:

  • 25 milhões de transações

  • 8 milhões de PIX

  • 4 milhões de compras no cartão

  • 900 mil empréstimos simulados

  • milhares de acessos ao Internet Banking

Agora imagine isso acontecendo durante vinte anos.

Estamos falando de bilhões de registros.

Você conseguiria abrir uma planilha com tudo isso?

Nem o Excel teria coragem.

Então surge uma pergunta.

Como descobrir informações úteis dentro dessa montanha de dados?

É exatamente essa pergunta que deu origem ao Data Mining.


O que é Data Mining?

A tradução literal seria algo como:

Mineração de Dados.

O nome não foi escolhido por acaso.

Imagine um garimpeiro.

Ele não está interessado em toda a terra da mina.

Ele quer encontrar ouro.

Para isso precisa cavar toneladas de pedras.

O Data Mining faz exatamente isso.

Ele "escava" enormes bases de dados procurando algo valioso.

Pode ser:

  • padrões

  • tendências

  • correlações

  • comportamentos

  • anomalias

  • oportunidades

  • riscos

O objetivo não é produzir relatórios bonitos.

O objetivo é descobrir conhecimento escondido.


Data não é informação

Essa é uma das primeiras lições da Ciência de Dados.

Imagine esta sequência.

235
842
129
842
235
991

São apenas números.

Agora imagine que você descubra que representam códigos de produtos vendidos.

Ainda assim são apenas dados.

Agora descubra que:

  • 842 vende três vezes mais nas sextas-feiras;

  • 235 sempre é comprado junto com 991;

  • clientes que compram 129 têm alta chance de cancelar o serviço em até 90 dias.

Agora sim existe informação.

E foi o Data Mining que encontrou isso.


Data Analytics entra em cena

Suponha que o Data Mining encontrou o seguinte padrão:

Clientes entre 20 e 30 anos cancelam o serviço três vezes mais que os demais.

Excelente descoberta.

Mas...

E agora?

O que fazer com essa informação?

É aqui que entra o Data Analytics.

Analytics responde perguntas como:

  • Isso representa quanto de prejuízo?

  • Qual campanha devemos lançar?

  • Vale a pena oferecer desconto?

  • Quanto vamos economizar?

  • Qual decisão deve ser tomada?

Perceba a diferença.

Data Mining encontra.

Data Analytics interpreta.


Uma analogia simples

Imagine um arqueólogo.

Ele encontra uma antiga espada enterrada.

Esse trabalho é o Data Mining.

Agora entra um historiador.

Ele analisa a espada.

Descobre:

  • de qual época veio;

  • quem provavelmente a utilizava;

  • sua importância histórica;

  • seu valor.

Esse é o Data Analytics.


A grande confusão

Uma das frases da imagem diz que:

Data Mining é apenas parte do Data Analytics.

Na prática, isso está correto.

Analytics é muito mais amplo.

Ele envolve:

  • Estatística

  • Business Intelligence

  • Dashboards

  • KPIs

  • Visualização

  • Inteligência Artificial

  • Machine Learning

  • Forecast

  • Otimização

  • Data Mining

Ou seja:

Data Analytics

│

├── Estatística

├── BI

├── Dashboards

├── Visualização

├── IA

├── Machine Learning

└── Data Mining

Mining é uma ferramenta.

Analytics é a estratégia.


Onde entra o Machine Learning?

Outra dúvida bastante comum.

Machine Learning não substitui Data Mining.

Na verdade, ele fornece muitos dos algoritmos utilizados durante a mineração.

Por exemplo:

  • Árvores de decisão

  • Redes neurais

  • Random Forest

  • K-Means

  • Regressão

  • SVM

Todos podem ser utilizados para descobrir padrões.


As quatro grandes perguntas da análise de dados

Existe um modelo bastante conhecido.

1. O que aconteceu?

Análise Descritiva.

Exemplo.

"As vendas caíram 15%."


2. Por que aconteceu?

Análise Diagnóstica.

"O concorrente lançou uma promoção."


3. O que vai acontecer?

Análise Preditiva.

"Existe 82% de chance de queda nas vendas no próximo trimestre."


4. O que devemos fazer?

Análise Prescritiva.

"Aumentar o investimento em marketing digital na região Sudeste."

Perceba como o Analytics evolui da observação para a ação.


Um exemplo usando COBOL

Imagine um programa COBOL responsável por registrar pagamentos.

Todos os dias ele grava milhões de registros.

Durante cinco anos ele acumulou:

CLIENTE

VALOR

DATA

HORA

AGÊNCIA

CANAL

TIPO DE PAGAMENTO

Agora imagine um cientista de dados analisando tudo isso.

O Data Mining descobre que:

  • clientes acima de 65 anos utilizam mais caixas eletrônicos;

  • pagamentos acima de determinado valor aumentam nas sextas-feiras;

  • determinadas agências apresentam comportamento incomum.

Nenhum programador escreveu essas regras.

Os algoritmos descobriram.


Agora entra o Analytics

O Analytics recebe essas descobertas.

Calcula:

  • impacto financeiro;

  • risco;

  • ROI;

  • custo operacional.

Depois responde:

Vale abrir mais caixas eletrônicos?

Vale reforçar a equipe?

Vale oferecer novos produtos?

É por isso que Analytics está diretamente ligado ao negócio.


E no IBM Mainframe?

Muitos iniciantes imaginam que Mainframe apenas executa programas COBOL.

Nada poderia estar mais distante da realidade.

Todos os dias um IBM Z produz uma quantidade gigantesca de informações.

Exemplos.

SMF Records.

RMF.

JES2.

JES3.

SDSF.

RACF.

DB2.

IMS.

MQ.

OMEGAMON.

CICS.

z/OSMF.

Cada componente registra milhares de eventos.

Isso significa milhões de linhas diariamente.


Um Sysprog também faz Analytics

Imagine analisar os registros SMF.

O Data Mining pode descobrir:

  • Jobs que sempre falham juntos.

  • Crescimento gradual do consumo de CPU.

  • Programas responsáveis por gargalos.

  • Horários de pico.

  • Tendências de utilização do DASD.

  • Perfis suspeitos de acesso RACF.

Depois entra o Analytics.

Ele responde.

Devemos comprar mais processadores?

Precisamos aumentar memória?

Vale reorganizar o DB2?

Precisamos alterar políticas do WLM?

Ou seja.

Até mesmo um Administrador Mainframe trabalha com Analytics sem perceber.


Curiosidade

Você sabia que grandes bancos analisam bilhões de registros diariamente usando dados originados no próprio Mainframe?

Isso acontece porque o IBM Z continua sendo responsável por boa parte das transações financeiras do planeta.

Não é exagero dizer que boa parte do dinheiro movimentado diariamente passa por algum sistema que gera dados para análises.


O ciclo completo

Visualmente seria algo assim.

Aplicações

↓

COBOL

↓

CICS

↓

DB2

↓

Dados

↓

ETL

↓

Data Warehouse

↓

Data Mining

↓

Machine Learning

↓

Data Analytics

↓

Dashboards

↓

Decisões

↓

Novas Estratégias

Perceba.

Tudo começa com um bom software.


O futuro: IA + Analytics

Nos últimos anos surgiu um novo personagem.

A Inteligência Artificial Generativa.

Agora imagine o seguinte diálogo.

"ChatGPT, quais foram os cinco produtos com maior crescimento no último trimestre?"

A IA consulta o banco de dados.

Executa SQL.

Analisa gráficos.

Cruza informações.

Explica os resultados.

Sugere decisões.

Esse é o conceito de Augmented Analytics, em que a IA acelera a interpretação dos dados, permitindo que analistas e gestores se concentrem nas decisões de maior impacto.


Dicas para um Programador Júnior

Se você está começando, não tente aprender tudo ao mesmo tempo. Construa uma base sólida.

1. Aprenda SQL profundamente
Quase todo projeto de dados começa com consultas bem escritas. Saber fazer JOIN, GROUP BY, funções analíticas e otimizar consultas é uma habilidade valiosa.

2. Entenda modelagem de dados
Conheça tabelas normalizadas, chaves primárias, chaves estrangeiras e relacionamentos. Um bom modelo facilita qualquer análise.

3. Domine Excel e Power BI
Mesmo em grandes empresas, essas ferramentas são amplamente utilizadas para explorar dados e criar dashboards.

4. Aprenda Python
Bibliotecas como Pandas, NumPy, Matplotlib e Scikit-learn permitem manipular dados e criar modelos de forma eficiente.

5. Conheça estatística básica
Média, mediana, desvio padrão, correlação e distribuição são conceitos essenciais para interpretar resultados corretamente.

6. Desenvolva visão de negócio
Pergunte sempre: "Como essa análise ajuda a empresa?" A tecnologia existe para resolver problemas reais.

7. Se você é do Mainframe, explore os dados da plataforma
SMF, RMF, Db2, CICS e RACF são verdadeiras minas de informação. Aprender a interpretá-los pode diferenciá-lo no mercado.


Erros comuns dos iniciantes

❌ Acreditar que gráficos são Analytics. Um gráfico sem contexto não responde perguntas de negócio.

❌ Pensar que Machine Learning resolve qualquer problema. Um modelo treinado com dados ruins produzirá resultados ruins.

❌ Ignorar a qualidade dos dados. Dados duplicados, incompletos ou inconsistentes comprometem qualquer análise.

❌ Focar apenas na ferramenta. O mais importante é entender o problema, não apenas dominar uma linguagem ou software.


Easter Eggs Bellacosa Mainframe ☕

🥚 Easter Egg #1 – O Data Miner do século XXI
Se um garimpeiro usa uma peneira para separar ouro da areia, o cientista de dados usa algoritmos para separar conhecimento do ruído. Em ambos os casos, a matéria-prima é abundante, mas o valor está escondido.

🥚 Easter Egg #2 – O COBOL já fazia Analytics sem esse nome
Muitos sistemas COBOL geravam relatórios gerenciais, balanços e estatísticas décadas antes de "Data Analytics" virar um termo popular. A diferença é que hoje utilizamos ferramentas muito mais sofisticadas para explorar esses mesmos dados.

🥚 Easter Egg #3 – O Mainframe é uma fábrica de dados
Cada transação CICS, cada acesso ao Db2, cada Job JES2 e cada registro SMF conta uma parte da história da empresa. Quando unidos, esses eventos formam um dos ativos mais valiosos de qualquer organização.

🥚 Easter Egg #4 – O verdadeiro ouro não está no algoritmo
O algoritmo encontra padrões, mas quem transforma esses padrões em inovação é o ser humano. Conhecimento técnico e entendimento do negócio continuam sendo diferenciais insubstituíveis.

🥚 Easter Egg #5 – O café do Bellacosa
Se você chegou até aqui, já percebeu que programar vai muito além de escrever código. Todo sistema existe para apoiar decisões, e toda decisão de qualidade nasce de dados bem compreendidos. O café é apenas a desculpa para conversarmos sobre isso.


Conclusão

A principal lição deste café é simples: Data Mining e Data Analytics não disputam espaço; eles trabalham em conjunto. O primeiro explora grandes volumes de dados para revelar padrões, tendências e anomalias. O segundo interpreta essas descobertas, contextualiza os resultados e transforma conhecimento em ações estratégicas.

Para um programador júnior — seja em desenvolvimento web, ciência de dados ou IBM Mainframe — compreender essa diferença é um passo importante na evolução profissional. Afinal, cada programa COBOL, cada tabela Db2, cada API ou cada transação CICS produz dados que podem orientar decisões de negócio.

No fim das contas, o código é apenas o começo da jornada. O verdadeiro valor aparece quando esses dados são transformados em conhecimento, e esse conhecimento se converte em melhores produtos, processos mais eficientes e decisões mais inteligentes.

"Quem aprende apenas a programar constrói sistemas. Quem aprende a entender os dados constrói o futuro. No universo IBM Z, onde bilhões de transações acontecem silenciosamente todos os dias, cada registro pode esconder uma oportunidade esperando para ser descoberta."

sábado, 28 de setembro de 2024

🔥 ZOWE: O Mainframe Falando a Língua do Mundo Moderno

 

Bellacosa Mainframe apresenta o Zowe 3.0

🔥 ZOWE: O Mainframe Falando a Língua do Mundo Moderno

Um guia definitivo para quem vive entre COBOL, APIs e DevOps

Se você ainda acha que mainframe é só tela verde, ISPF e 3270, chegou a hora de atualizar o firmware mental.
O nome disso é Zowe — e ele não veio para substituir o z/OS, mas para traduzir o mainframe para o século XXI.

Neste artigo, vamos direto ao ponto, sem marketing vazio, no melhor estilo Bellacosa Mainframe:
o que é Zowe, para que serve, onde brilha, onde NÃO entra e por que ele é essencial hoje.


Zowe 3.0

🧠 O que é o Zowe, afinal?

Zowe é um framework open source criado para permitir que aplicações modernas, desenvolvedores não-mainframe e ferramentas DevOps trabalhem com e sobre o z/OS.

Ele nasce para resolver um problema clássico:

“Como integrar o mainframe ao ecossistema web, cloud e DevOps sem quebrar tudo o que funciona há 40 anos?”

A resposta foi: abstração, APIs, CLI e Web — sem mexer no core.


🧩 Os 3 Pilares do Zowe

1️⃣ Zowe CLI – O mainframe na linha de comando

O Zowe Command Line Interface permite executar operações no z/OS a partir de:

  • Windows

  • Linux

  • macOS

Usando shell local, scripts e pipelines.

Com ele você pode:

  • Submeter batch jobs

  • Emitir comandos TSO e z/OS

  • Manipular datasets MVS e USS

  • Automatizar tarefas em Jenkins, GitHub Actions, Bamboo etc.

⚠️ Importante (pegadinha de prova):
👉 Zowe CLI NÃO emula 3270
👉 Zowe CLI NÃO executa transações CICS interativas

CLI é comando, automação e integração — não tela verde.


2️⃣ Zowe Application Framework – Web no coração do z/OS

Aqui mora o Zowe Desktop, a interface web desktop-like, acessível via browser.

Ele oferece:

  • Navegação e edição de datasets

  • Visualização de jobs e spool

  • Integração com TN3270

  • Aplicações web plugáveis

E o mais importante:

  • Suporte a Angular, React e IFrame

  • Desenvolvimento em JavaScript, Java e tecnologias mainstream

  • Ambiente amigável para devs que nunca ouviram falar de ISPF

📌 Zowe não substitui ISPF, CICS ou IMS
Ele complementa — e muito bem.


3️⃣ Zowe API Mediation Layer – O gateway do mainframe

O API Mediation Layer (API ML) é o tradutor oficial entre o z/OS e o mundo REST.

Ele fornece:

  • Ponto único de acesso a múltiplos serviços REST

  • Catálogo de APIs com Swagger/OpenAPI

  • Segurança centralizada

  • Roteamento e balanceamento de carga

⚠️ Atenção:

  • Zowe não cria APIs automaticamente

  • Zowe não melhora performance das APIs

Ele organiza, protege e expõe o que já existe.


🔐 Segurança: nada de gambiarra

Zowe usa a segurança nativa do z/OS:

  • RACF

  • ACF2

  • Top Secret

Autenticação é feita com:

  • User ID e password válidos

  • Permissões reais do sistema

Nada de “security by JavaScript”.


🟢 Onde o Zowe BRILHA (e muito)

  • Integração do mainframe com DevOps e CI/CD

  • Abertura do z/OS para desenvolvedores não-mainframe

  • Automação moderna sem mexer no core

  • Criação de dashboards web com dados do z/OS

  • Padronização e governança de APIs

  • Open source de verdade, com comunidade ativa


🔴 Onde o Zowe NÃO entra

Vamos ser claros:

Zowe NÃO é:

  • Emulador 3270

  • Substituto do ISPF

  • Substituto do z/OSMF

  • Ferramenta de automação interna (WTOR, exits, SMF)

  • Ambiente J2EE/WebSphere

  • Solução mágica de performance

👉 Se envolve tela verde interativa, exits, automação interna, SDSF raiz
👉 não é Zowe


📊 Regra de ouro Bellacosa Mainframe

Web, API, CLI, DevOps, automação externa → ZOWE
3270, ISPF, CICS interativo, automação interna → NÃO ZOWE

Simples assim.


🚀 Por que o Zowe é estratégico hoje?

Porque ele resolve um problema real:

  • O mainframe continua crítico

  • O mercado exige integração, velocidade e automação

  • Novos desenvolvedores não querem aprender ISPF antes de produzir

Zowe não mata o mainframe.
Ele garante que o mainframe continue vivo, integrado e relevante.


☕ Conclusão – estilo Bellacosa

Zowe não é moda.
Zowe é sobrevivência arquitetural.
Quem entende Zowe hoje, lidera a modernização amanhã — sem quebrar o legado que paga as contas.

Se você trabalha com IBM Z e ainda ignora o Zowe, o problema não é o mainframe.
É a sua estratégia.


sexta-feira, 27 de setembro de 2024

Hypervisor no Mainframe sem Mistérios

 

Bellacosa Mainframe e o hypervisor no mainframe sem misterios

☕ Um Café no Bellacosa Mainframe

Hypervisor no Mainframe sem Mistérios

Como um IBM Z Executa Centenas de Servidores ao Mesmo Tempo — O Guia Definitivo para o Programador COBOL Padawan Inspirado em Star Trek

"A lógica é o começo da sabedoria, não o fim."

— Sr. Spock


Introdução — A Grande Ilusão da Computação

Imagine entrar na ponte da USS Enterprise.

O Capitão Kirk acredita que possui uma nave inteira à sua disposição.

O engenheiro Scotty controla motores, energia e sistemas.

O Dr. McCoy utiliza computadores médicos.

Spock executa simulações científicas.

Cada um acredita possuir recursos exclusivos.

Mas existe apenas uma única nave.

O segredo é que existe um sistema extremamente inteligente distribuindo recursos para todos ao mesmo tempo.

No IBM Z acontece exatamente isso.

Para um programador COBOL iniciante, isso pode parecer magia.

Na realidade, trata-se de uma das maiores invenções da história da computação:

o Hypervisor.

E a parte curiosa?

O mainframe fazia isso quando o restante do mundo ainda estava tentando descobrir como compartilhar um computador entre vários usuários.


Antes de tudo...

Muita gente pensa que virtualização nasceu com VMware.

Spoiler...

Não nasceu.

A IBM já fazia virtualização completa décadas antes da Internet existir.

Quando o primeiro PC da IBM apareceu em 1981, os mainframes já executavam dezenas de sistemas operacionais simultaneamente.

Isso muda completamente a perspectiva histórica.


O que é um Hypervisor?

A definição técnica é simples.

Um Hypervisor é um software (ou firmware especializado) responsável por criar computadores virtuais.

Cada computador virtual recebe:

  • memória

  • CPUs

  • discos

  • placas de rede

  • dispositivos

  • acesso ao hardware

Tudo isso sem possuir fisicamente esses equipamentos.

Para o sistema operacional convidado (Guest OS), parece existir um computador inteiro.

Na verdade...

Ele está dividindo recursos com centenas de outros sistemas.


Uma analogia Bellacosa

Imagine um enorme prédio comercial.

Existe:

  • uma única estrutura

  • um único elevador

  • uma única instalação elétrica

  • um único sistema hidráulico

Mas existem centenas de empresas trabalhando ali.

Cada empresa acredita possuir seu próprio escritório.

Quem administra tudo?

O síndico.

No mundo da computação...

O síndico chama-se Hypervisor.


O problema que ele resolve

Nos anos 60 um computador custava milhões de dólares.

Não fazia sentido deixá-lo executando apenas um sistema.

Era desperdício.

A IBM percebeu isso rapidamente.

A ideia era simples:

"Se o computador é poderoso, por que não criar vários computadores dentro dele?"

Nascia a virtualização.


A origem histórica

Voltamos para 1964.

IBM System/360.

Era revolucionário.

Mas ainda executava apenas um sistema operacional por vez.

Logo depois veio o projeto:

CP-40

Depois:

CP-67

Esses projetos deram origem ao:

VM/370

E praticamente toda a indústria copiou essa ideia décadas depois.

Curiosamente...

A palavra "Virtual Machine" já era usada pela IBM muito antes do VMware existir.


Linha do tempo

1964

System/360

1967

CP-40

1968

CP-67

1972

VM/370

1988

PR/SM

1990

LPAR

2000+

z/VM

Hoje

IBM z16

IBM z17

Linux

z/OS

z/VM

KVM

Todos convivendo na mesma máquina.


O nascimento das Máquinas Virtuais

Imagine possuir um computador enorme.

O Hypervisor cria:

Computador A

Computador B

Computador C

Computador D

Todos são imaginários.

Mas funcionam como computadores reais.

Cada um pode instalar:

  • Linux

  • z/OS

  • z/VM

  • z/VSE

  • z/TPF

Sem interferir uns nos outros.


Como isso funciona?

O Hypervisor controla quatro grandes recursos.

CPU

Quando um sistema precisa processar algo...

Ele pede CPU.

O Hypervisor responde:

"Espere sua vez."

Em microssegundos ele alterna entre centenas de sistemas.

Para cada sistema parece possuir uma CPU exclusiva.


Memória

O mesmo acontece com RAM.

Cada máquina virtual acredita possuir memória exclusiva.

Na realidade...

Toda memória é compartilhada cuidadosamente.


Disco

Cada sistema possui seus próprios discos.

Mas muitas vezes esses discos são apenas áreas reservadas dentro de grandes volumes físicos.


Rede

Cada servidor virtual possui placas de rede.

Elas também podem ser totalmente virtuais.

O Hypervisor conecta tudo internamente.

Sem sequer sair do equipamento.


Parece mágica?

Não.

É matemática.

E engenharia.

Muita engenharia.


Hypervisor Tipo 1

Existem dois tipos.

O mais poderoso é:

Bare Metal.

Ou:

Tipo 1.

Ele roda diretamente sobre o hardware.

Sem Windows.

Sem Linux.

Sem intermediários.

É exatamente o caso do IBM Z.


Hypervisor Tipo 2

Neste caso existe um sistema operacional.

Windows

VMware Workstation

Máquinas Virtuais

O desempenho é menor.


No IBM Z é diferente

Hardware

Firmware

PR/SM

LPARs

z/VM

Linux

Aplicações

Existe uma enorme hierarquia.

Cada camada aumenta a flexibilidade.


PR/SM

Aqui mora um dos segredos do mainframe.

PR/SM significa:

Processor Resource/System Manager.

Ele é considerado um Hypervisor de nível extremamente baixo.

Na prática...

Ele divide o computador físico em diversas LPARs.


O que é uma LPAR?

Significa:

Logical Partition.

É praticamente um computador inteiro.

Pode possuir:

12 CPUs

64 GB RAM

20 discos

10 interfaces de rede

Enquanto outra LPAR possui recursos completamente diferentes.


Imagine uma pizza

Uma pizza inteira representa o IBM Z.

Você corta em:

4 fatias.

Cada fatia torna-se uma LPAR.

Cada LPAR acredita possuir sua própria pizza.

Mesmo pertencendo à mesma pizza original.


E depois entra o z/VM

Agora vem a parte divertida.

Dentro de uma LPAR...

Pode existir outro Hypervisor.

Esse Hypervisor chama-se:

z/VM.

Agora temos:

IBM Z

LPAR

z/VM

500 máquinas Linux

Containers

Aplicações

Sim.

Virtualização dentro da virtualização.

É como um espelho refletindo outro espelho.


Star Trek explica isso muito bem

Lembra do Holodeck?

O Holodeck cria ambientes completos.

Cada personagem acredita estar vivendo num mundo real.

Mas tudo acontece dentro da Enterprise.

O Hypervisor faz exatamente isso.

Cada sistema operacional acredita possuir um computador físico.

Na realidade...

Está dentro do "Holodeck" do IBM Z.


Por que isso é tão importante?

Porque aumenta:

  • utilização

  • segurança

  • disponibilidade

  • economia

  • flexibilidade


Segurança

Cada máquina virtual fica isolada.

Se uma apresentar problema...

As demais continuam funcionando.

É como compartimentos estanques de uma nave estelar.

Uma explosão na Engenharia não destrói a ponte.


Alta disponibilidade

Imagine atualizar um Linux.

Os outros continuam funcionando.

Atualizar uma aplicação.

As demais continuam.

Trocar memória.

Trocar CPU.

Adicionar discos.

Tudo quase sem impacto.


Eficiência absurda

Um servidor x86 costuma operar entre:

15%

30%

de utilização.

Um IBM Z frequentemente trabalha entre:

80%

95%

de utilização.

Sem perda significativa de desempenho.

Esse é um dos grandes diferenciais do mainframe.


Compartilhamento Inteligente

O Hypervisor conhece prioridades.

Um banco pode receber mais CPU.

Uma aplicação de testes recebe menos.

Tudo automático.


Dynamic Resource Allocation

Outro recurso fantástico.

É possível aumentar CPUs.

Adicionar memória.

Modificar prioridades.

Tudo enquanto o sistema continua funcionando.

Sem reboot.

Isso impressiona até hoje.


Como isso afeta um programador COBOL?

Muito mais do que parece.

Seu programa roda dentro de:

COBOL

LE Runtime

z/OS

LPAR

PR/SM

Hardware

Você raramente percebe.

Mas o Hypervisor trabalha silenciosamente por trás.


Quando um COBOL executa

Imagine um programa de folha de pagamento.

Ele solicita CPU.

O z/OS solicita recursos.

O PR/SM entrega processadores.

Tudo acontece em microssegundos.

Você nunca percebe.

Mas existe um verdadeiro maestro coordenando toda essa orquestra.


O que acontece se houver excesso de carga?

O Hypervisor redistribui recursos.

Algumas LPARs recebem mais CPU.

Outras esperam alguns microssegundos.

Tudo automaticamente.


Curiosidade impressionante

Um único IBM Z pode executar milhares de máquinas virtuais Linux.

Tudo dentro do mesmo equipamento.

Consumindo menos energia que centenas de servidores distribuídos.

É por isso que grandes bancos continuam investindo em mainframe.


Easter Egg nº 1

A expressão Virtual Machine ficou famosa nos PCs.

Mas ela nasceu dentro da IBM.

Décadas antes.


Easter Egg nº 2

O VMware foi fundado apenas em 1998.

O VM/370 existia desde 1972.

Mais de 25 anos antes.


Easter Egg nº 3

A maioria dos administradores VMware nunca imaginou que muitos conceitos modernos foram herdados direta ou indiretamente dos laboratórios da IBM.


Easter Egg nº 4

O PR/SM possui certificação de isolamento extremamente rigorosa (EAL5+ em avaliações Common Criteria para determinadas configurações), permitindo que workloads de diferentes níveis de confiança coexistam com forte separação lógica. Isso é um dos motivos pelos quais governos e grandes instituições financeiras confiam na plataforma.


Dicas para o Padawan COBOL

✔ Nunca pense que seu programa "está sozinho".

Sempre existe uma camada abaixo dele.


✔ Aprenda o conceito de LPAR.

Você verá esse termo praticamente todos os dias.


✔ Entenda o z/VM.

Mesmo trabalhando apenas com COBOL.

Ele aparece frequentemente em ambientes Linux on Z.


✔ Estude PR/SM.

Poucos desenvolvedores conhecem.

Mas quem entende virtualização compreende muito melhor o IBM Z.


✔ Não confunda LPAR com Máquina Virtual.

LPAR é uma partição lógica criada diretamente pelo PR/SM. Dentro de uma LPAR, o z/VM pode criar centenas ou milhares de máquinas virtuais.


Comparação rápida

Universo Star TrekIBM Z
USS EnterpriseHardware físico
HolodeckHypervisor
Ponte de ComandoLPAR
Simulações do HolodeckMáquinas Virtuais
ScottyAdministrador do sistema
SpockWLM e gerenciamento inteligente de recursos
Computador da navePR/SM + z/VM

Lições aprendidas

Existe um mito de que virtualização é uma tecnologia moderna.

Na realidade, ela nasceu no mundo dos mainframes.

O IBM Z não apenas executa programas COBOL. Ele hospeda diversos sistemas operacionais, milhares de aplicações e enormes ambientes Linux com isolamento, segurança e desempenho excepcionais. O hypervisor — especialmente o PR/SM, complementado pelo z/VM quando necessário — é o grande responsável por essa façanha.

Quando um programador COBOL envia um JOB pelo JCL, acessa Db2, CICS ou IMS, dificilmente percebe que há uma sofisticada infraestrutura distribuindo CPUs, memória, dispositivos e redes em tempo real. Assim como a tripulação da Enterprise confia que a nave responderá a cada comando, o desenvolvedor confia que o IBM Z entregará recursos quando forem necessários.

E talvez essa seja a maior lição do universo de Star Trek aplicada ao mainframe: a tecnologia mais extraordinária é aquela que trabalha tão bem que quase se torna invisível. O hypervisor é esse "oficial silencioso" da nave. Ele não aparece na tela 3270, não compila programas COBOL e não executa SQL, mas sem ele grande parte da eficiência, da disponibilidade e da confiabilidade que tornaram o IBM Z uma referência mundial simplesmente não existiria.

Como diria o Sr. Spock:

"A eficiência não está em possuir mais recursos, mas em utilizá-los com inteligência."

Essa frase resume perfeitamente a filosofia do hypervisor no IBM Z: transformar um único computador físico em uma verdadeira frota de computadores virtuais, trabalhando em perfeita harmonia há mais de cinco décadas.


quinta-feira, 26 de setembro de 2024

O Guia Definitivo de Boas Práticas para Declarar Variáveis em COBOL Mainframe como os Grandes Bancos Fazem

 

Bellacosa Mainframe e o data division sem misterios

☕ Um Café no Bellacosa Mainframe

Data Division sem Mistérios

O Guia Definitivo de Boas Práticas para Declarar Variáveis em COBOL Mainframe como os Grandes Bancos Fazem

"Um programa COBOL raramente falha porque alguém escreveu um IF errado. Ele costuma falhar porque alguém declarou uma variável errada há vinte anos."


Introdução

Existe um velho ditado entre programadores de mainframe:

"O Procedure Division executa. A Data Division pensa."

Pode parecer exagero, mas basta passar alguns meses trabalhando em um grande banco para perceber que isso é verdade.

Quando um programa COBOL possui milhares de linhas, dezenas de interfaces, centenas de arquivos VSAM, tabelas DB2, chamadas CICS e APIs REST, o verdadeiro segredo não está apenas na lógica.

Está na organização dos dados.

É justamente por isso que os maiores bancos brasileiros possuem padrões extremamente rígidos para a Data Division.

Em muitos lugares, uma variável mal declarada simplesmente não passa pela revisão de código.

Neste artigo vamos aprender como profissionais experientes organizam suas variáveis, entender o motivo dessas regras existirem e descobrir como escrever programas que continuam fáceis de manter mesmo depois de décadas.

Pegue seu café.

Vamos organizar nossa memória principal.


Antes de falar de variáveis...

Imagine construir um prédio.

Você pode contratar o melhor pedreiro do mundo.

Se o engenheiro desenhar uma planta ruim, o prédio será um caos.

No COBOL acontece exatamente isso.

A Data Division é a planta do edifício.

A Procedure Division apenas utiliza aquilo que foi planejado.

Quanto melhor for sua estrutura de dados, mais simples será escrever toda a lógica do programa.


A filosofia dos grandes bancos

Em bancos, normalmente existem padrões semelhantes a estes:

  • nomes padronizados

  • agrupamentos claros

  • nenhuma variável "solta"

  • documentação implícita

  • facilidade para debug

  • facilidade para manutenção

  • reaproveitamento

O objetivo nunca é escrever menos.

É escrever melhor.


A estrutura clássica

Normalmente encontramos algo parecido.

WORKING-STORAGE SECTION.

01 WS-CONTROLE.

01 WS-ENTRADA.

01 WS-SAIDA.

01 WS-CALCULOS.

01 WS-INDICADORES.

01 WS-CONSTANTES.

01 WS-TABELAS.

01 WS-AREAS-DE-TRABALHO.

Só olhando os nomes já sabemos onde procurar qualquer informação.

Essa organização economiza horas de manutenção.


Prefixos fazem diferença

Um dos maiores erros de iniciantes é escrever:

01 NOME.
01 CPF.
01 IDADE.
01 TOTAL.

Imagine um programa com 8.000 variáveis.

Boa sorte.

Os grandes bancos normalmente utilizam prefixos.

WS-NOME
WS-CPF
WS-IDADE
WS-TOTAL

WS significa:

Working Storage.

Quando existem outras áreas:

LK-
DFHCOMMAREA
LS-
CS-
SQL-

Exemplo:

WS-CLIENTE

LK-CLIENTE

LS-CLIENTE

SQL-CLIENTE

Cada uma pertence a uma área diferente.

O nome já explica sua origem.


Nunca use nomes genéricos

Evite:

WS-AUX

WS-TEMP

WS-X

WS-DADOS

WS-AREA

WS-TESTE

Isso não explica absolutamente nada.

Prefira:

WS-SALDO-ATUAL

WS-VALOR-LIMITE

WS-TOTAL-PARCELAS

WS-QTD-CLIENTES

WS-DATA-PROCESSAMENTO

Quem ler o programa daqui a vinte anos agradecerá.


O padrão VERBO + OBJETO

Muitos bancos gostam de indicar o significado da variável.

Exemplo:

WS-QTD-PRODUTOS

WS-VLR-TOTAL

WS-DT-NASCIMENTO

WS-HR-PROCESSAMENTO

WS-FL-ATIVO

WS-CD-AGENCIA

WS-NR-CONTA

Observe as abreviações.

PrefixoSignificado
DTData
HRHora
FLFlag
CDCódigo
NRNúmero
QTDQuantidade
VLRValor
INDIndicador
TPTipo
DESCDescrição

Essas abreviações praticamente viraram um idioma próprio do mercado financeiro.


Os níveis da Data Division

Agora chegamos ao coração do COBOL.

Os famosos Levels.


Level 01

Representa um registro completo.

01 WS-CLIENTE.

Pense nele como uma pasta.

Dentro dela existirão documentos.


Level 05

Representa divisões principais.

01 WS-CLIENTE.

   05 WS-NOME.

   05 WS-CPF.

   05 WS-ENDERECO.

É o nível mais utilizado.


Level 10

Subdivisão.

05 WS-ENDERECO.

   10 WS-RUA.

   10 WS-NUMERO.

   10 WS-BAIRRO.

Level 15, 20, 25...

São apenas níveis hierárquicos.

01 CLIENTE

   05 ENDERECO

      10 CIDADE

         15 CEP

O COBOL não exige números específicos.

Apenas respeita a hierarquia.

Na prática, porém, muitos bancos adotam:

01

05

10

15

20

para manter um padrão visual.


Quando usar Level 77?

No passado era comum.

77 WS-CONTADOR PIC 9(4).

Hoje praticamente todos utilizam:

01 WS-CONTADOR PIC 9(4).

Ou agrupam dentro de áreas.

O uso do 77 tornou-se raro em novos projetos.


O poderoso Level 88

Um dos recursos mais elegantes do COBOL.

Imagine isso.

05 WS-STATUS PIC X.

88 WS-ATIVO VALUE "A".

88 WS-INATIVO VALUE "I".

Depois:

IF WS-ATIVO

Muito melhor que:

IF WS-STATUS = "A"

O código praticamente se transforma em português.

Outro exemplo.

88 WS-SIM VALUE "S".

88 WS-NAO VALUE "N".

Ou ainda:

88 WS-CONTA-CORRENTE VALUE "01".

88 WS-CONTA-POUPANCA VALUE "02".

Esse recurso é amplamente utilizado em bancos.


Agrupe informações relacionadas

Errado:

WS-NOME

WS-CPF

WS-RUA

WS-SALDO

WS-IDADE

WS-CIDADE

Correto.

01 WS-CLIENTE.

   05 WS-NOME.

   05 WS-CPF.

   05 WS-ENDERECO.

      10 WS-RUA.

      10 WS-CIDADE.

   05 WS-SALDO.

A estrutura fica muito mais intuitiva.


REDEFINES

Poucos recursos são tão poderosos.

Imagine um arquivo.

1234567890

Pode representar:

CPF

ou

Código interno

Não faz sentido duplicar memória.

Usamos:

01 WS-AREA.

   05 WS-DADOS PIC X(10).

01 WS-CPF REDEFINES WS-DADOS.

   05 WS-NUMERO PIC 9(10).

A memória é exatamente a mesma.

Apenas muda a interpretação.


Onde bancos usam REDEFINES?

Muito frequentemente em:

  • layouts CNAB

  • buffers CICS

  • mensagens MQ

  • áreas de comunicação

  • protocolos

  • APIs

  • conversões numéricas

  • interpretação de bytes


Cuidados com REDEFINES

Nunca faça isso sem entender o layout.

Porque alterar uma redefinição altera todas.

É literalmente a mesma memória.


RENAMES

Pouca gente conhece.

Exemplo.

01 WS-REGISTRO.

   05 WS-NOME.

   05 WS-ENDERECO.

   05 WS-CIDADE.

66 WS-DADOS-CADASTRAIS
RENAMES WS-NOME THRU WS-CIDADE.

Agora podemos manipular todo esse trecho como um único grupo lógico.

Hoje aparece menos que REDEFINES, mas ainda existe em sistemas legados e alguns frameworks internos.


CONSTANTES

Nunca escreva:

IF WS-TIPO = "A"

Prefira:

78 ATIVO VALUE "A".

IF WS-TIPO = ATIVO

Ou

01 WS-CONSTANTES.

   05 WS-TP-ATIVO VALUE "A".

   05 WS-TP-INATIVO VALUE "I".

O significado fica explícito.


PIC correto faz diferença

Texto.

PIC X(30)

Numérico.

PIC 9(5)

Decimal.

PIC S9(9)V99 COMP-3

Valor monetário.

PIC S9(11)V99 COMP-3

Nunca utilize texto para armazenar números quando eles serão calculados.


COMP, COMP-3 e DISPLAY

Nos bancos é comum encontrar a seguinte estratégia:

DISPLAY

para entrada e saída.

COMP

para cálculos inteiros.

COMP-3

para valores financeiros.

Exemplo.

05 WS-SALDO
PIC S9(11)V99 COMP-3.

Além de economizar espaço, melhora desempenho e precisão decimal.


Inicialização

Sempre inicialize.

VALUE ZERO.

VALUE SPACES.

VALUE LOW-VALUES.

VALUE HIGH-VALUES.

Ou utilize

INITIALIZE

Evite depender do conteúdo anterior da memória.


Um erro clássico

05 WS-NOME PIC X(30).

Depois.

MOVE "JOAO" TO WS-NOME

Comparação.

IF WS-NOME = "JOAO"

Pode funcionar.

Pode não funcionar.

Por quê?

Porque existem espaços restantes.

Muitos bancos utilizam:

FUNCTION TRIM

ou

INSPECT

para evitar problemas.


Tabelas OCCURS

Sempre nomeie corretamente.

05 WS-CLIENTES OCCURS 100 TIMES.

   10 WS-NOME.

   10 WS-SALDO.

Índices separados.

77 WS-IDX PIC S9(4) COMP.

Ou

INDEXED BY IDX-CLIENTE

Muito mais eficiente.


Evite mágicas

Nunca faça:

MOVE 1 TO WS-X.

Depois.

IF WS-X = 1

Prefira.

88 WS-PROCESSADO VALUE 1.

Muito mais legível.


Organização visual

Bancos normalmente alinham tudo.

05 WS-NOME            PIC X(40).

05 WS-CPF             PIC 9(11).

05 WS-SALDO           PIC S9(09)V99 COMP-3.

05 WS-DATA-NASC       PIC 9(08).

Pode parecer detalhe.

Mas melhora muito a leitura.


Comentários úteis

Evite.

* Nome.

Prefira.

* Dados recebidos do cadastro central.

* Área utilizada para integração com PIX.

* Buffer utilizado pelo CICS.

Explique o motivo.

Não o óbvio.


╔══════════════════════════════════════════════════════════════════════╗
║                     COBOL DATA DIVISION                             ║
║               "Tudo começa pelos dados."                            ║
╚══════════════════════════════════════════════════════════════════════╝

                       PROGRAMA COBOL
                             │
                             ▼
                  WORKING-STORAGE SECTION
                             │
        ┌────────────────────┼────────────────────┐
        │                    │                    │
        ▼                    ▼                    ▼
   WS-CONTROLE          WS-ENTRADA          WS-SAÍDA
        │                    │                    │
        ▼                    ▼                    ▼
     Variáveis           Arquivos           Resultados
     de Trabalho         Entrada            Processados



              Hierarquia dos Levels (Níveis)

01 WS-CLIENTE
│
├──05 WS-DADOS-PESSOAIS
│    ├──10 WS-NOME
│    ├──10 WS-CPF
│    └──10 WS-DATA-NASCIMENTO
│
├──05 WS-ENDERECO
│    ├──10 WS-RUA
│    ├──10 WS-NUMERO
│    ├──10 WS-CIDADE
│    └──10 WS-CEP
│
└──05 WS-DADOS-BANCARIOS
     ├──10 WS-AGENCIA
     ├──10 WS-CONTA
     └──10 WS-SALDO


             Quanto maior o nível...
                   menor o detalhe.

        01  → Registro completo
        05  → Grupo principal
        10  → Campo
        15  → Subcampo
        20+ → Especializações



                Organização Recomendada

                 +-------------------+
                 |   01 WS-CLIENTE   |
                 +-------------------+
                          │
          ┌───────────────┼───────────────┐
          ▼               ▼               ▼
     IDENTIFICAÇÃO    ENDEREÇO       FINANCEIRO
          │               │               │
          ▼               ▼               ▼
     CPF / Nome      Rua / CEP     Conta / Saldo



                Prefixos Mais Utilizados

WS-  → Working Storage
LK-  → Linkage Section
LS-  → Local Storage
DFH- → CICS
SQL- → DB2
IX-  → Índice
CT-  → Constante
FL-  → Flag
TP-  → Tipo
DT-  → Data
HR-  → Hora
NR-  → Número
CD-  → Código
VLR- → Valor
QTD- → Quantidade



            REDEFINES (Mesma memória)

          +-------------------------+
          |      WS-DADOS           |
          |        X(20)            |
          +-------------------------+
                    ▲
                    │
         REDEFINES  │
                    │
          +-------------------------+
          |       WS-CPF            |
          |        9(20)            |
          +-------------------------+

      Uma única área de memória.
      Duas interpretações diferentes.



             RENAMES (Grupo Lógico)

01 WS-REGISTRO
│
├──05 WS-NOME
├──05 WS-ENDERECO
├──05 WS-CIDADE
└──05 WS-CEP

          │
          ▼

66 WS-DADOS-CADASTRAIS
   RENAMES WS-NOME THRU WS-CEP



             Nível 88 (Legibilidade)

        +-------------------+
        | WS-STATUS    PIC X|
        +-------------------+
               │
        ┌──────┴──────┐
        ▼             ▼
88 WS-ATIVO      88 WS-INATIVO
 VALUE "A"         VALUE "I"

Ao invés de:

IF STATUS = "A"

Escrevemos:

IF WS-ATIVO



              O Fluxo de uma Variável

 Declaração
      │
      ▼
 Inicialização
      │
      ▼
 Validação
      │
      ▼
 Processamento
      │
      ▼
 Saída
      │
      ▼
 Encerramento



      O que um iniciante costuma fazer...

WS-X
WS-AUX
WS-TEMP
WS-AREA
WS-DADOS

                 😢



      O que um profissional faz...

WS-VLR-SALDO-ATUAL
WS-DT-PROCESSAMENTO
WS-QTD-CLIENTES
WS-FL-CONTA-ATIVA
WS-CD-AGENCIA

                 😎



╔════════════════════════════════════════════════════════════╗
║ "Programas envelhecem. Dados permanecem."                 ║
║                                                           ║
║ Quanto melhor a Data Division...                          ║
║ ...mais simples será todo o restante do programa.         ║
╚════════════════════════════════════════════════════════════╝ .


Os erros mais comuns dos iniciantes

  • Variáveis com nomes sem significado.

  • Misturar entrada, saída e trabalho na mesma área.

  • Não utilizar grupos.

  • Declarar tudo como PIC X.

  • Ignorar COMP-3 para valores monetários.

  • Não utilizar nível 88.

  • Criar dezenas de variáveis AUX.

  • Usar REDEFINES sem conhecer o layout.

  • Não inicializar variáveis.

  • Declarar estruturas sem padronização.

  • Copiar layouts diferentes para a mesma área.

  • Esquecer alinhamento e organização.


O estado da arte em 2024

Embora o COBOL tenha mais de seis décadas, a Data Division continua evoluindo.

Nos ambientes modernos do IBM Enterprise COBOL 6.x e z/OS 3.1, as melhores práticas incluem:

  • nomes semânticos e consistentes;

  • estruturas alinhadas a modelos de negócio;

  • uso intensivo de COPYBOOKs compartilhados para evitar duplicação;

  • integração com JSON, XML e APIs REST preservando tipos corretos;

  • preferência por COMP-3 para valores financeiros e COMP/BINARY para cálculos;

  • uso de USAGE INDEX, 88-level, INITIALIZE e funções intrínsecas;

  • validação por ferramentas de análise estática como IBM Application Delivery Foundation, SonarQube (quando integrado) e padrões internos de qualidade.

Em muitos bancos, nenhuma variável nasce por acaso. Ela segue convenções documentadas, passa por revisão técnica e, frequentemente, é reutilizada por dezenas ou centenas de programas por meio de copybooks corporativos. Isso reduz erros, facilita integrações e garante consistência entre sistemas.


Curiosidades

  • O COBOL foi criado em 1959, e sua estrutura hierárquica de dados influenciou diversas linguagens posteriores.

  • Muitos layouts bancários brasileiros (CNAB 240 e 400 posições) dependem diretamente de grupos de níveis (01, 05, 10...) para mapear registros.

  • REDEFINES foi um dos primeiros mecanismos eficientes de reutilização de memória da história das linguagens comerciais.

  • Grandes bancos possuem programas com mais de 40 anos em produção cujas declarações de variáveis permanecem praticamente inalteradas, justamente porque foram bem projetadas desde o início.


A Filosofia Bellacosa Mainframe

Imagine uma biblioteca.

Cada livro possui uma prateleira.

Cada prateleira possui uma categoria.

Cada categoria possui uma etiqueta.

Agora imagine uma biblioteca onde todos os livros estão jogados no chão.

Ambas funcionam.

Mas apenas uma continua funcionando depois de cinquenta anos.

A Data Division é essa biblioteca.

Cada variável é um livro.

Cada nível é uma prateleira.

Cada nome é uma etiqueta.

Quando você declara uma variável pensando apenas no programa de hoje, escreve código.

Quando a declara pensando no colega que fará manutenção daqui a vinte anos, constrói engenharia de software.

E é exatamente essa mentalidade que diferencia um programador COBOL de um verdadeiro profissional de mainframe.

No fim das contas, programas mudam, regras de negócio evoluem e tecnologias se renovam. Uma Data Division bem organizada, porém, continua sendo uma das maiores demonstrações de maturidade técnica que um desenvolvedor pode deixar como legado.


quarta-feira, 25 de setembro de 2024

🌌 Trilogia Gesto – Toque – Ausência

 

Bellacosa Mainframe a trilogia Gesto Toque Ausencia

🕯️ El Jefe Midnight Lunch apresenta

🌌 Trilogia Gesto – Toque – Ausência

Por Bellacosa Mainframe


Há ideias que não nascem — acontecem.
E há trilogias que não são planejadas — fluem, como se o próprio universo tivesse decidido escrevê-las por nossas mãos.

Foi assim com esta série, nascida nas madrugadas insones do El Jefe Midnight Lunch, quando o café já esfriou, o cursor pisca em silêncio e a mente vibra entre o código e a contemplação.

Hoje, apresento oficialmente a Trilogia Gesto – Toque – Ausência:
um mergulho no que não se diz, no que se sente, e no que permanece.


🫱 Capítulo I — As Mãos no Japão

“O gesto é a primeira linguagem — anterior à fala, anterior ao medo.”

Neste primeiro capítulo, exploramos a mística das mãos japonesas — o toque que cura, o gesto que comunica sem palavras, o símbolo que atravessa eras.
Das mudras budistas às mãos que dobram origamis, das que empunham katanas às que servem chá com precisão milenar.

Falamos de respeito, de energia, de ki — e de como cada movimento é uma oração discreta, uma linha de código entre corpo e alma.

💡 Curiosidades:

  • A palavra japonesa “te” (手) aparece em dezenas de expressões idiomáticas — cada uma revelando uma emoção humana.

  • Nos animes, o gesto da mão estendida (como o de Tanjiro ou o toque de Naruto e Sasuke) é metáfora pura: redenção, laço, promessa.

🔗 Leitura recomendada: “As Mãos no Japão — entre gestos, símbolos e alma digital.”

Parte I


✋ Capítulo II — As Mãos nos Animes

“Cada toque é uma variável entre o destino e o acaso.”

Aqui o gesto se transforma em emoção animada.
Revisitamos os toques mais icônicos dos animes — do aperto de mãos entre Luffy e Shanks, à despedida muda entre Edward e Alphonse, à palma de Tanjiro se erguendo contra o vento.

A mão é o elo entre mundos: carne e alma, amizade e perda, criação e destruição.
Em frames e trilhas, o toque se torna poesia visual — e o silêncio que o segue, confissão.

🎬 Cenas eternas:

  • Fullmetal Alchemist — o toque que separa irmãos e reescreve o mundo.

  • Naruto — a mão que rompe o ciclo do ódio.

  • One Piece — a mão que sela o sonho e o adeus.

🔗 Leitura recomendada: “As Mãos nos Animes — o toque que move o coração.”

Parte II


🕯️ Capítulo III — As Palavras Não Ditam: o Silêncio nos Animes

“O vazio é o código-fonte da emoção.”

Fechando o ciclo, chegamos à ausência.
Depois do gesto (intenção) e do toque (ação), resta o silêncio — o espaço entre as notas, o instante que ressoa depois da música.

No Japão, esse espaço tem nome: 間 (Ma) — o tempo suspenso entre o que é e o que será.
Nos animes, o “Ma” é aquele momento em que o som para e o coração escuta: o último olhar, o vento antes da batalha, a respiração antes da confissão.

É o não-dito que diz tudo.
O silêncio que fala — e, por isso, comove.

🎧 Animes que o eternizaram:

  • Grave of the Fireflies — o luto que não grita.

  • Your Name — o amor que não precisa de palavras.

  • Attack on Titan — o peso do vazio após o sacrifício.

🔗 Leitura recomendada: “As Palavras Não Ditam — o silêncio nos animes.”

Parte III


🌙 A Trilogia em Harmonia

🫱 Gesto — a intenção.
Toque — a conexão.
🕯️ Ausência — a eternidade.

Três capítulos, três camadas da mesma emoção:
o humano, o espiritual e o etéreo.
Assim como o som precisa do silêncio, e a luz precisa da sombra, cada parte desta trilogia se apoia na outra para existir.


💬 Pós-créditos de uma mente insone

Essa trilogia nasceu como tudo no El Jefe:
sem planejamento, sem briefing, sem algoritmo — apenas um lampejo às 2h47 da madrugada, quando a mente e o mainframe vibram no mesmo clock.

Talvez seja o início de algo maior: um ciclo sobre emoções codificadas, espiritualidade digital, filosofia otaku — e tudo o mais que habita esse espaço entre o raciocínio e a poesia.


📜 “O gesto abre o ciclo, o toque o revela, e o silêncio o encerra.”
Bellacosa Mainframe,
em alguma madrugada entre o café frio e o logoff.


terça-feira, 24 de setembro de 2024

COBOL razões por dominar o CPD.

Bellacosa Mainframe em uma viagem ao centro do cpd


☕ Um Café no Bellacosa Mainframe

Viagem ao Centro do CPD — Por que COBOL Ainda Domina as Profundezas da Terra Corporativa

🌋🦖 Júlio Verne, COBOL, bilhões de linhas, bancos, CICS, Db2, VSAM, batch e uma expedição às camadas subterrâneas da informática para descobrir por que o dinossauro simplesmente se recusa a morrer

Existe uma teoria muito difundida sobre COBOL.

Segundo ela, em algum momento dos anos 1980 alguém deveria ter desligado todos os mainframes, colocado os programas COBOL dentro de um museu e substituído tudo por alguma coisa moderna.

Primeiro:

C

Depois:

C++

Depois:

Java

Depois:

.NET

Depois:

SOA

Depois:

Cloud

Depois:

Microservices

Depois:

Serverless

Depois:

Kubernetes

Agora:

IA

COBOL ouviu todas essas previsões.

Sentado tranquilamente nas profundezas do CPD.

Processando folha de pagamento.

Compensando transações.

Atualizando contas.

Emitindo apólices.

Calculando juros.

Executando batch.

E respondendo:

DISPLAY 'AINDA ESTOU AQUI'.

Talvez estejamos procurando COBOL no lugar errado.

Para entender sua sobrevivência precisamos seguir Júlio Verne.

Não olhar para o céu.

Precisamos descer.

Muito.

Porque hoje faremos uma:

VIAGEM AO CENTRO DO CPD.


📖 Hamburgo, 1863

Em Viagem ao Centro da Terra, Júlio Verne apresenta o professor Otto Lidenbrock, mineralogista alemão que encontra um misterioso manuscrito contendo uma mensagem cifrada.

O documento indica que o explorador islandês Arne Saknussemm teria encontrado uma passagem para o interior da Terra através do vulcão Snæfellsjökull, na Islândia.

Lidenbrock decide imediatamente:

Vamos entrar.

Seu sobrinho Axel provavelmente pensa:

Talvez não.

Lidenbrock:

Vamos.

E lá vão eles.

É basicamente a mesma sensação de um jovem programador quando alguém diz:

“Precisamos fazer manutenção neste sistema COBOL de 1987.”

Ele pergunta:

— Existe documentação?

O gerente entrega um PDF de 14 páginas atualizado pela última vez em 1996.

No rodapé:

AUTOR: APARECIDO
RAMAL: 4372

Aparecido aposentou-se em 2008.

Meu jovem...

pegue sua lanterna.

Nós vamos descer.



🗺️ O mapa para o centro do CPD

Nossa expedição atravessará várias camadas:

SUPERFÍCIE
   ↓
APIs
   ↓
CICS
   ↓
COBOL
   ↓
Db2 / VSAM / IMS
   ↓
JCL
   ↓
JES2
   ↓
z/OS
   ↓
IBM Z
   ↓
DADOS + REGRAS DE NEGÓCIO

E talvez descubramos uma coisa perturbadora.

Aquilo que parece antigo na superfície pode estar sustentando praticamente tudo que existe acima.



🌋 CAMADA 1 — A superfície moderna

Começamos no mundo que todo mundo enxerga.

Aplicativos.

Sites.

Smartphones.

APIs.

Cloud.

Containers.

Interfaces maravilhosas.

Cliente toca:

TRANSFERIR R$ 500

Tela gira.

Bonita animação.

Confirmação biométrica.

Push notification.

Tudo parece muito moderno.

Mas agora vamos seguir aquela transação.

APP
 ↓
API
 ↓
GATEWAY
 ↓
SERVIÇO
 ↓
?

Existe uma porta.

Axel pergunta:

— Professor, o que existe ali?

Lidenbrock acende a lanterna.

Na parede está escrito:

CICS

Ah.

Agora começou a aventura.



🏦 RAZÃO 1 — COBOL mora onde o dinheiro mora

Essa talvez seja a primeira grande explicação.

COBOL não sobreviveu porque alguém sente nostalgia.

Ele sobreviveu porque foi utilizado durante décadas justamente nos sistemas que organizações não podem simplesmente desligar.

Bancos.

Seguradoras.

Governos.

Varejo.

Transportes.

Processamento financeiro.

Folhas de pagamento.

Grandes sistemas administrativos.

Quando uma aplicação controla algo secundário, substituí-la pode ser relativamente simples.

Quando ela controla:

DINHEIRO

a conversa muda.

Você não migra simplesmente:

“Vamos ver se funciona.”

Você precisa garantir:

EXATIDÃO
INTEGRIDADE
AUDITORIA
RECUPERAÇÃO
CONSISTÊNCIA
SEGURANÇA
PERFORMANCE
DISPONIBILIDADE

E existe outra coisa importantíssima:

o sistema atual já funciona.


🪨 CAMADA 2 — CICS

Descemos mais.

Uma gigantesca cidade subterrânea aparece.

Milhares de transações atravessam túneis simultaneamente.

Bem-vindo ao:

CICS

Aqui programas COBOL podem atender processamento transacional online.

TRANSACTION
   ↓
CICS
   ↓
PROGRAM
   ↓
DB2 / VSAM / MQ
   ↓
RESPONSE

Lidenbrock observa.

— Quantos anos tem isso?

Mainframeiro:

— Depende.

— Devemos substituir?

— Por quê?

Silêncio.

Essa pergunta muda tudo.


⚙️ RAZÃO 2 — Maturidade

Tecnologia madura possui uma característica pouco sexy:

sabemos como ela quebra.

Isso é extraordinariamente valioso.

Depois de décadas usando uma plataforma, conhecemos:

LIMITES
PADRÕES
ERROS
COMPORTAMENTO
FERRAMENTAS
PROCEDIMENTOS
RECUPERAÇÃO
MONITORAMENTO

Tecnologia nova frequentemente chega acompanhada de:

“Segundo a documentação...”

Tecnologia madura chega acompanhada de:

“Em 2003 aconteceu isso. Faça desta maneira.”

Experiência acumulada é infraestrutura invisível.


🦖 CAMADA 3 — Encontramos COBOL

Finalmente chegamos.

Uma enorme caverna.

Nas paredes:

IDENTIFICATION DIVISION.

Mais adiante:

DATA DIVISION.

Axel fica assustado.

— Professor...

— Sim?

— Aquilo é um dinossauro?

O animal vira lentamente a cabeça.

Na lateral está escrito:

ENTERPRISE COBOL

Lidenbrock aproxima-se.

— Achei que estivesse extinto.

O dinossauro responde:

PERFORM PROCESS-TRANSACTION
   UNTIL END-OF-FILE.

Não está extinto.

Está trabalhando.


📚 RAZÃO 3 — COBOL descreve negócios muito bem

Olhe:

IF CUSTOMER-BALANCE > CREDIT-LIMIT
    MOVE 'BLOCKED' TO CUSTOMER-STATUS
END-IF.

Não é poesia.

Não é compacto.

Não ganhará concurso de elegância.

Mas existe uma qualidade extraordinária:

conseguimos entender aproximadamente o que está acontecendo.

COBOL nasceu orientado ao processamento empresarial.

Registros.

Campos.

Valores decimais.

Arquivos.

Relatórios.

Regras.

Volumes.

E empresas são cheias exatamente disso.


💰 RAZÃO 4 — Decimal importa

Agora encontramos uma caverna cheia de moedas.

Lidenbrock pega uma.

Mainframeiro grita:

— NÃO TOQUE NO COMP-3!

COBOL possui excelente tradição no tratamento de dados decimais empresariais.

Imagine:

01 WS-BALANCE PIC S9(11)V99 COMP-3.

Bancos gostam de uma coisa chamada:

dinheiro exato.

Dinheiro não aprecia:

0.1 + 0.2 = 0.30000000000000004

Quando você processa milhões ou bilhões de operações financeiras, representação e aritmética decimal importam enormemente.

COBOL cresceu nesse universo.


🗄️ CAMADA 4 — Db2, VSAM e IMS

Descemos mais.

Encontramos três criaturas ancestrais guardando enormes cofres.

Db2
VSAM
IMS

Axel:

— Quanto dado existe aqui?

Lidenbrock:

— Não pergunte.

Mainframeiro:

— Principalmente não execute SELECT sem WHERE.

Agora percebemos outra razão da longevidade.


🧠 RAZÃO 5 — O código contém conhecimento empresarial

Imagine um programa criado em 1989.

Durante 37 anos recebeu alterações.

1991 — nova regra tributária
1994 — novo produto
1998 — alteração monetária
2002 — novo cliente
2007 — nova regulamentação
2012 — fusão
2018 — nova regra
2021 — exceção
2026 — API

Agora aquele programa não contém apenas código.

Ele contém:

HISTÓRIA DA EMPRESA.

E frequentemente parte dessa história não existe em outro lugar.

A documentação diz:

“Calcular tarifa conforme regra comercial.”

O COBOL possui 3.800 linhas explicando o que “conforme regra comercial” realmente significa.


🏺 Código como arqueologia

Isso transforma manutenção COBOL em arqueologia empresarial.

Você encontra:

IF CUSTOMER-TYPE = '7'
   AND REGION = '03'
   AND CONTRACT-DATE < 19980701
   MOVE ZERO TO WS-FEE
END-IF.

Pergunta:

— Por quê?

Silêncio.

Git não existia.

O autor aposentou-se.

Documento desapareceu.

Mas existe uma certeza:

alguém colocou aquilo ali por algum motivo.

Talvez uma lei.

Talvez contrato.

Talvez decisão judicial.

Talvez promoção.

Talvez gambiarra.

Apague e descubra.

Em produção.


💀 A maldição de Saknussemm

Na parede encontramos uma inscrição:

* DO NOT REMOVE

Sem explicação.

Axel:

— Podemos remover?

Lidenbrock:

— Não.

— Por quê?

— Porque alguém escreveu DO NOT REMOVE.

— Mas quem?

— Saknussemm.

Nunca desafie Saknussemm.


💵 RAZÃO 6 — Reescrever custa dinheiro

Agora chegamos a uma gigantesca montanha.

No topo:

LEGACY MODERNIZATION PROJECT

Consultor:

— Vamos reescrever tudo.

Diretor:

— Quanto custa?

Consultor:

— Sim.

Existe uma fantasia recorrente:

COBOL
 ↓
REWRITE
 ↓
MODERNO

Parece simples.

Mas programas representam décadas de requisitos.

Então você precisa reproduzir:

REGRAS
INTERFACES
ARQUIVOS
TRANSAÇÕES
EXCEÇÕES
PERFORMANCE
SEGURANÇA
AUDITORIA
RECOVERY
BATCH WINDOWS
DEPENDÊNCIAS

E provar que o novo sistema produz resultados equivalentes.


⚠️ RAZÃO 7 — Risco de migração

Imagine um sistema processando:

10.000.000 transações/dia

Novo sistema funciona corretamente em:

99,99%

Parece excelente.

Até perceber que:

0,01%

de dez milhões são:

1.000 transações.

Por dia.

Agora coloque dinheiro envolvido.

Subitamente quatro noves não parecem tão românticos.


🚂 CAMADA 5 — Batch

Escutamos um ruído.

CLACK
CLACK
CLACK

Não é trem.

É batch.

JES2 recebe milhares de JOBs.

INPUT
 ↓
EXECUTION
 ↓
OUTPUT

Durante décadas empresas construíram gigantescas cadeias:

JOB001
 ↓
JOB002
 ↓
JOB003
 ↓
SORT
 ↓
JOB004
 ↓
DB2 LOAD
 ↓
JOB005
 ↓
REPORT

Essa engrenagem pode parecer antiga.

Mas processa volumes enormes de maneira previsível.


⏱️ RAZÃO 8 — Throughput

Existe uma diferença entre:

atender uma requisição.

e:

processar 300 milhões de registros durante uma janela operacional.

COBOL e mainframe cresceram profundamente ligados ao segundo problema.

Batch não morreu.

Porque o problema batch não morreu.

Empresas continuam precisando:

FECHAR DIA
CALCULAR JUROS
PROCESSAR FATURAS
CONSOLIDAR CONTAS
GERAR RELATÓRIOS
PROCESSAR PAGAMENTOS

Às 02:00 ninguém precisa de uma interface React maravilhosa.

Precisa:

JOB ENDED - RC 0000

⚡ RAZÃO 9 — Performance não é apenas benchmark

Uma aplicação crítica não vive sozinha.

Ela compartilha máquina.

CPU.

Memória.

I/O.

Storage.

Banco.

Locks.

Filas.

Threads.

Mainframe desenvolveu durante décadas mecanismos sofisticados para administrar cargas enormes e concorrentes.

COBOL tornou-se parte natural desse ecossistema.

O valor está no conjunto:

COBOL
+
z/OS
+
CICS
+
Db2
+
JES2
+
WLM
+
RACF
+
STORAGE

Não apenas na linguagem isoladamente.


🛡️ CAMADA 6 — RACF

Descemos.

Porta gigantesca.

Guardião pergunta:

USERID?

Axel entrega.

ICH408I

Acesso negado.

Lidenbrock:

— Somos exploradores científicos!

RACF:

NOT AUTHORIZED.

Finalmente encontramos alguém no romance que possui bom senso.


🔐 RAZÃO 10 — Segurança e governança

Ambientes mainframe corporativos cresceram cercados por controles rigorosos.

Autenticação.

Autorização.

Auditoria.

Segregação.

Perfis.

Recursos.

Logs.

Isso não significa:

“mainframe é magicamente invulnerável.”

Não existe isso.

Significa que existe um ecossistema maduro de controle e operação.

E trocar um sistema não significa apenas trocar linguagem.

Significa reconstruir todo esse contexto.


🔥 CAMADA 7 — O núcleo: confiabilidade

Estamos próximos do centro.

A temperatura aumenta.

Na parede:

UPTIME

Lidenbrock finalmente entende.

O verdadeiro segredo não é COBOL sozinho.

É aquilo que organizações construíram ao redor dele.

Décadas de:

OPERAÇÃO
MONITORAMENTO
BACKUP
RECOVERY
CHANGE MANAGEMENT
CAPACITY PLANNING
SEGURANÇA
PROCEDIMENTOS
AUTOMAÇÃO

A aplicação COBOL está inserida numa máquina organizacional gigantesca.


🧱 RAZÃO 11 — Se funciona, substituir precisa ter motivo

Essa é talvez a mais desconfortável.

Tecnólogos adoram novidade.

Empresas adoram:

resultado.

Imagine:

Sistema A:

IDADE: 35 anos
ESTÁVEL: SIM
CONHECIDO: SIM
PERFORMANCE: BOA
AUDITADO: SIM

Sistema B:

IDADE: 0
ARQUITETURA: LINDA
POWERPOINT: EXTRAORDINÁRIO
RISCO: ???

Qual você coloca para processar bilhões?

Resposta:

depende do problema.

E justamente esse “depende” explica grande parte da longevidade do COBOL.


👴 RAZÃO 12 — Código antigo não significa código ruim

Essa confusão precisa morrer.

VELHO ≠ RUIM

Um algoritmo correto não expira porque completou 30 anos.

Se:

INPUT

continua válido,

a regra continua válida,

e:

OUTPUT

continua correto,

o programa não acorda no aniversário de 25 anos e pensa:

“Agora sou legado.”

Software não envelhece como leite.

O ambiente ao redor muda.

Requisitos mudam.

Pessoas mudam.

Riscos mudam.

Mas lógica correta pode continuar correta.


🌉 RAZÃO 13 — COBOL aprendeu a conversar com o mundo novo

Aqui nossa expedição encontra algo inesperado.

Uma fibra óptica.

Seguimos.

Ela chega até:

API

COBOL moderno não precisa viver isolado.

Podemos ter:

MOBILE
   ↓
REST
   ↓
z/OS CONNECT
   ↓
CICS
   ↓
COBOL
   ↓
DB2

Ou integração através de:

MQ
APIs
EVENTOS
JAVA
USS

O sistema de 30 anos pode participar de uma arquitetura moderna sem necessariamente ser destruído.


🔧 RAZÃO 14 — Ferramentas também evoluíram

A caricatura:

TELA VERDE
+
PROGRAMADOR DE 97 ANOS
+
CARTÃO PERFURADO

é divertida.

Mas incompleta.

Hoje podemos trabalhar com:

VS Code
Git
CI/CD
Zowe
ZUnit
DBB
Jenkins
GitHub
GitLab
Ansible
APIs

O código pode ser antigo.

O processo não precisa ser.


🤖 RAZÃO 15 — Agora chegou a IA

Nossa expedição encontra a criatura mais nova da caverna.

IA generativa.

Ela olha para milhões de linhas COBOL.

COBOL olha para ela.

Silêncio constrangedor.

Então alguém pergunta:

“Explique este programa.”

E ocorre algo interessante.

IA pode ajudar com:

COMPREENSÃO
DOCUMENTAÇÃO
TESTES
ANÁLISE
REFACTORING
MIGRAÇÃO
IMPACT ANALYSIS

Um dos grandes problemas históricos do legado — compreender código antigo — pode ser justamente uma das áreas onde IA oferece enorme potencial.

Ironia maravilhosa.

A tecnologia mais nova ajudando a preservar e modernizar uma das linguagens comerciais mais antigas.


🧠 RAZÃO 16 — O problema não é COBOL; é conhecimento

Empresas frequentemente dizem:

“Não encontramos COBOLzeiros.”

Existe verdade nisso em vários mercados.

Mas existe outra pergunta:

quantos desenvolvedores realmente conhecem as regras daquele sistema?

Você pode converter:

IF A = B
   PERFORM C
END-IF

para Java em cinco minutos.

O difícil é descobrir:

por que C precisa acontecer quando A = B.

Linguagem pode ser convertida.

Conhecimento de domínio precisa ser compreendido.

Essa é outra espécie de problema.


🌋 Encontramos o centro do CPD

Depois de dias descendo, Lidenbrock finalmente chega ao grande salão subterrâneo.

Esperávamos encontrar:

COBOL

no centro.

Não encontramos.

Encontramos algo muito maior.

Escrito na parede:

REGRAS DE NEGÓCIO

Agora tudo faz sentido.

COBOL não domina determinadas organizações simplesmente porque seja velho.

Nem porque alguém esqueceu de desligá-lo.

Ele permanece porque durante décadas empresas depositaram dentro desses sistemas:

PROCESSOS
CONTRATOS
REGRAS
EXCEÇÕES
HISTÓRIA
DINHEIRO
CONHECIMENTO

COBOL tornou-se uma espécie de rocha sedimentar empresarial.

Cada década colocou uma camada.


🪨 Arqueologia do software

2026 ─ APIs / IA / DevOps
2020 ─ Modernização
2010 ─ Serviços
2000 ─ Internet
1990 ─ Client/server
1980 ─ Expansões
1970 ─ Regras históricas
1960 ─ Fundação

No centro:

NEGÓCIO

É por isso que simplesmente arrancar COBOL pode ser equivalente a entrar numa escavação arqueológica com uma retroescavadeira.

Você certamente terminará rápido.

O problema é descobrir o que destruiu.


💡 Então COBOL é eterno?

Não.

Nenhuma tecnologia é.

COBOL pode ser substituído quando existir:

MOTIVO
+
BUSINESS CASE
+
ARQUITETURA
+
TESTES
+
MIGRAÇÃO
+
CONTROLE DE RISCO

Existem sistemas que deveriam ser aposentados.

Existem programas ruins.

Existem arquiteturas horríveis.

Existe dívida técnica.

Existe código que ninguém deveria defender apenas por nostalgia.

A questão não é:

“COBOL deve permanecer para sempre?”

A pergunta correta é:

“Qual problema estamos tentando resolver substituindo-o?”

Essa pergunta economiza milhões.


🦖 O dinossauro não venceu por ser dinossauro

Ele venceu porque continuou adaptando-se.

Padrões evoluíram.

Compiladores evoluíram.

Hardware evoluiu.

Integrações evoluíram.

Ferramentas evoluíram.

Processos evoluíram.

O COBOL de hoje não está rodando numa máquina de 1959.

Assim como Java moderno não está rodando num PC de 1995.

Confundir idade da linguagem com idade da plataforma é uma comparação intelectualmente preguiçosa.


🚀 A saída do vulcão

No romance de Verne, nossos exploradores eventualmente encontram uma saída espetacular através de atividade vulcânica.

Nossa equipe também sobe.

Passamos novamente por:

z/OS
JES2
JCL
Db2
VSAM
COBOL
CICS
APIs

Até retornar à superfície.

Smartphone na mão.

Aplicativo bancário aberto.

Axel faz uma transferência.

R$ 100,00

Confirma.

Um segundo depois:

TRANSFERÊNCIA REALIZADA.

Ele olha para Lidenbrock.

— Professor...

— Sim?

— Aquilo passou pela caverna?

O professor sorri.

Talvez.


☕ As 16 razões encontradas na expedição

Depois de nossa viagem, o diário registra:

  1. COBOL está profundamente ligado a sistemas críticos.

  2. Possui décadas de maturidade operacional.

  3. Expressa regras empresariais de maneira clara.

  4. Trabalha naturalmente com processamento decimal.

  5. Sistemas COBOL acumulam conhecimento de negócio.

  6. Reescritas completas podem custar fortunas.

  7. Migrações de sistemas críticos carregam riscos enormes.

  8. Batch continua sendo essencial.

  9. O ecossistema mainframe oferece enorme capacidade de processamento.

  10. Segurança e governança são maduras.

  11. Sistemas estáveis precisam de motivo econômico para serem substituídos.

  12. Código antigo não é automaticamente código ruim.

  13. COBOL pode integrar-se com APIs e arquiteturas modernas.

  14. Desenvolvimento COBOL pode utilizar ferramentas modernas.

  15. IA pode acelerar compreensão, teste e modernização.

  16. O ativo principal frequentemente não é o código — é o conhecimento empresarial nele acumulado.

E existe uma décima sétima razão não oficial:

porque ele ainda entrega o JOB.


☕ Epílogo — O manuscrito perdido

De volta ao escritório, Lidenbrock abre novamente o antigo manuscrito de Saknussemm.

Percebe algo estranho.

Não era islandês antigo.

Não era latim.

Era:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. CENTER-OF-EARTH.

       DATA DIVISION.
       WORKING-STORAGE SECTION.

       01 WS-COBOL-STATUS PIC X(08)
          VALUE 'ALIVE'.

       PROCEDURE DIVISION.

           PERFORM PROCESS-BUSINESS
              UNTIL END-OF-WORLD.

           STOP RUN.

Axel observa.

— Professor, existe um erro.

— Onde?

END-OF-WORLD ainda não aconteceu.

Lidenbrock pensa.

Ao longe, nas profundezas do CPD, escutamos JES2 trabalhando.

$HASP373 BILLING STARTED

CICS continua recebendo transações.

Db2 continua fazendo COMMIT.

COBOL continua processando.

O professor fecha o livro.

Serve outra xícara de café.

E escreve no diário da expedição:

“Não encontramos COBOL enterrado no passado. Encontramos o presente construído sobre ele.”

Lá embaixo, o dinossauro olha para o próximo registro.

READ INPUT-FILE

Processa.

WRITE OUTPUT-RECORD

E segue adiante.

Sem hype.

Sem keynote.

Sem pedir desculpas pela idade.

Apenas fazendo aquilo que faz há décadas:

movendo o mundo enquanto quase ninguém percebe.

🌋🦖☕💾

JOBNAME: EARTHJOB
PROGRAM: COBOL
STATUS : RUNNING

Próxima parada: o centro do negócio.

https://eljefemidnightlunch.blogspot.com/2007/02/o-que-e-cobol.html

https://eljefemidnightlunch.blogspot.com/2025/07/homenagem-incrivel-grace.html

https://eljefemidnightlunch.blogspot.com/2026/06/padawan-testar-cobol-nao-e-desconfiar.html

Por que o COBOL continua a dominar o Processamento de Dados no Mundo dos Negócios? Uma linguagem orientada a negócios precisa declarar, gerenciar e manipular dados heterogêneos. Programas de negócios misturam strings de comprimento fixo e variável, dados de ponto flutuante, inteiros e decimais com abandono selvagem em estruturas de registro complicadas, geralmente com partes variáveis. Os programadores de banco de dados estão familiarizados com alguns desses problemas, e ferramentas de mapeamento objeto-relacional tropeçam nessas complexidades regularmente.
 
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...