☕ 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

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

terça-feira, 24 de setembro de 2024

Cobol o Rei dos CPDs



☕ Um Café no Bellacosa Mainframe

COBOL à Lua: Júlio Verne, JCL e o Primeiro Batch Interplanetário

🌕🚀 E se Da Terra à Lua, de Júlio Verne, fosse na verdade a documentação perdida de um gigantesco JOB COBOL escrito um século antes do primeiro mainframe?

Existe uma suspeita que me acompanha há algum tempo.

Talvez tenhamos interpretado Júlio Verne errado.

Durante mais de um século disseram que aquele francês escrevia ficção científica.

Submarinos.

Balões.

Viagens extraordinárias.

Máquinas impossíveis.

Explorações.

Lua.

Mas depois de décadas trabalhando com mainframe comecei a desconfiar.

Talvez Verne estivesse fazendo outra coisa.

Talvez fossem:

documentações funcionais.

Documentações extremamente antecipadas.

Porque quando releio Da Terra à Lua, publicado em 1865, encontro elementos estranhamente familiares.

Existe um requisito absurdo.

Um grupo de especialistas.

Um orçamento gigantesco.

Uma solução tecnicamente questionável.

Cálculos intermináveis.

Hardware construído especificamente para uma única missão.

Pressão por prazo.

Testes limitados.

Usuários colocados dentro da solução.

E uma data de implantação que aparentemente não pode ser alterada.

Meu amigo...

Isso não é ficção científica.

É projeto de TI.



📚 Monsieur Verne abre o chamado

Vamos primeiro ao original.

Júlio Verne publicou De la Terre à la Lune — Da Terra à Lua em 1865.

A história apresenta o Gun Club, uma associação americana formada por especialistas em artilharia que, depois da Guerra Civil dos Estados Unidos, encontra-se diante de um problema existencial.

Eles sabem construir canhões.

Sabem calcular trajetórias.

Sabem explodir coisas.

Mas acabou a guerra.

O backlog desapareceu.

Então o presidente do clube, Impey Barbicane, apresenta uma ideia perfeitamente razoável:

Vamos disparar um projétil até a Lua.

Silêncio.

Em qualquer empresa moderna alguém imediatamente levantaria a mão:

“Tem budget?”

Barbicane:

“Vamos descobrir.”

Projeto aprovado.



🦖 Enquanto isso, em 1959...

Quase cem anos depois surge outra ideia aparentemente absurda:

Criar uma linguagem de programação orientada a negócios, próxima do inglês, capaz de sobreviver entre fabricantes diferentes.

Nasce o:

COBOL

Common Business-Oriented Language.

Agora precisamos cometer um pequeno crime contra a cronologia.

Vamos colocar COBOL em 1865.

Porque Barbicane precisa calcular aquela viagem.

E eu definitivamente não entregaria uma missão lunar inteira para uma planilha.


🖥️ BARBICANE MAINFRAME CENTER

Em algum lugar da Flórida alternativa de Júlio Verne existe uma sala refrigerada.

No centro:

BELLACOSA Z1865
INTERPLANETARY COMPUTING SYSTEM

Operador coloca o JOB na fila.

//MOONJOB  JOB (VERNE),'LUNAR MISSION',
//             CLASS=A,MSGCLASS=X
//STEP01   EXEC PGM=MOONCOB
//SYSOUT   DD SYSOUT=*
//ORBITIN  DD DSN=GUNCLUB.LUNAR.DATA,DISP=SHR

JES recebe.

$HASP100 MOONJOB ON READER

Barbicane olha para o console.

Michel Ardan pergunta:

— Estamos indo para a Lua?

Operador:

— Calma.

— Por quê?

— Seu JOB ainda está aguardando initiator.


🌕 O requisito funcional

Toda grande aplicação começa com um requisito.

Nosso requisito é particularmente simples:

RF-001

ENVIAR SERES HUMANOS À LUA.

Critérios de aceite:

1. DISPARAR PROJÉTIL
2. NÃO MATAR TRIPULAÇÃO
3. ALCANÇAR LUA
4. PREFERENCIALMENTE VOLTAR

O analista funcional lê.

Pergunta:

— O item quatro é obrigatório?

Gerente:

— Vamos colocar como melhoria futura.

Perfeito.

Estamos oficialmente em produção.


🧮 COBOL começa a calcular

Nosso programa:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. MOONCOB.

       DATA DIVISION.

       WORKING-STORAGE SECTION.

       01 WS-MISSION.
          05 WS-DISTANCE-KM     PIC 9(06)V99.
          05 WS-VELOCITY        PIC 9(08)V99.
          05 WS-ANGLE           PIC 9(03)V99.
          05 WS-PROJECTILE-MASS PIC 9(08)V99.
          05 WS-GUN-LENGTH      PIC 9(06)V99.

Barbicane observa.

— Isso calcula trajetória lunar?

COBOLzeiro:

— Calcula.

— Em 1865?

— Não complique a arquitetura.


🔭 Júlio Verne tinha uma obsessão maravilhosa: números

Essa é uma das características mais interessantes de Da Terra à Lua.

Verne não simplesmente diz:

“Construíram um canhão enorme.”

Ele tenta dar dimensões.

Distâncias.

Pesos.

Custos.

Velocidades.

Materiais.

Localização.

Trajetórias.

O romance brinca constantemente com a fronteira entre:

FICÇÃO
   ↕
ENGENHARIA

E isso ajuda a produzir aquela maravilhosa sensação verniana:

“Espere... será que isso poderia funcionar?”

Hoje sabemos que disparar seres humanos de um canhão gigantesco produziria alguns pequenos inconvenientes técnicos.

Entre eles:

transformar passageiros em geleia.

Mas o espírito é extraordinário.

Verne tenta transformar fantasia em problema calculável.

E COBOL gosta exatamente disso.


🧮 COMPUTE TO THE MOON

Nosso programa recebe parâmetros.

       COMPUTE WS-TRAJECTORY =
           WS-VELOCITY * WS-ANGLE
       END-COMPUTE.

Naturalmente essa equação é ridiculamente insuficiente para mecânica orbital.

Mas estamos escrevendo um artigo Bellacosa Mainframe.

Não lançando Artemis.

Espero.

O importante é perceber a filosofia.

Barbicane pega um sonho:

IR À LUA

e começa a quebrá-lo em:

DISTÂNCIA
MASSA
VELOCIDADE
ÂNGULO
TEMPO
MATERIAL
ENERGIA
CUSTO

Isso é praticamente análise de sistemas.


🔧 Gun Club = departamento de infraestrutura

Pense nos integrantes do Gun Club.

São especialistas em hardware pesado.

Extremamente pesado.

Eles olham para um problema e imediatamente pensam:

CANHÃO MAIOR.

Isso me lembra algumas reuniões de infraestrutura.

Problema:

Aplicação está lenta.

Resposta:

MAIS CPU.

Problema continua.

MAIS MEMÓRIA.

Continua.

MAIS STORAGE.

Continua.

Até alguém chamado Penny, Grace Hopper ou estagiário pergunta:

“Vocês verificaram o programa?”

Silêncio.


💣 Columbiad: o hardware definitivo

No romance, o gigantesco canhão recebe o nome de Columbiad.

É essencialmente o dispositivo responsável pelo lançamento.

No nosso universo:

DEVICE TYPE:
LUNAR ACCELERATOR

MODEL:
COLUMBIAD 1865

STATUS:
PRODUCTION

Não existe redundância.

Não existe segundo Columbiad.

Não existe disaster recovery.

Não existe rollback.

Existe:

FIRE.

É provavelmente o deployment mais agressivo da história.


🚨 CHANGE REQUEST

Imagine o CAB — Change Advisory Board.

CHANGE:
CHG-1865-001

DESCRIPTION:
DISPARAR CÁPSULA TRIPULADA CONTRA A LUA

RISK:
HIGH

ROLLBACK:
N/A

IMPLEMENTATION WINDOW:
QUANDO A LUA ESTIVER NA POSIÇÃO CORRETA

CAB pergunta:

— Foi testado?

Barbicane:

— Fizemos cálculos.

— Existe ambiente de homologação?

— Não.

— Plano de rollback?

— Gravidade.

Change:

APPROVED.


🧔 Michel Ardan entra no requisito

Então aparece Michel Ardan.

O francês aventureiro.

Carismático.

Excêntrico.

E decide:

Se vão mandar o projétil para a Lua, eu vou dentro.

Aqui todo projeto tecnológico conhece o fenômeno.

Até aquele momento tínhamos:

PROJÉTIL NÃO TRIPULADO

Agora:

PROJÉTIL TRIPULADO

Analista:

— Isso muda completamente o requisito.

Gerente:

— É só uma pequena alteração.

A frase:

“É só uma pequena alteração”

já matou mais cronogramas que qualquer S0C7.


📋 COPYBOOK atualizado

Antes:

       01 PROJECTILE.
          05 PROJECTILE-MASS PIC 9(08).

Depois:

       01 PROJECTILE.
          05 PROJECTILE-MASS PIC 9(08).
          05 PASSENGERS.
             10 PASSENGER OCCURS 3 TIMES.
                15 PASSENGER-NAME PIC X(30).
                15 PASSENGER-WEIGHT PIC 9(03).
                15 PASSENGER-ALIVE PIC X.

Observe cuidadosamente:

PASSENGER-ALIVE

Esse campo será importante.


🧪 QA pergunta sobre testes

QA:

— Testaram aceleração?

— Sim.

— Com humanos?

— Não.

— Vibração?

— Mais ou menos.

— Pressurização?

— Estamos vendo.

— Temperatura?

— Próxima sprint.

— Navegação?

— Cálculos parecem bons.

— Recuperação?

— Depois pensamos nisso.

QA olha para o documento.

STATUS:
READY FOR PRODUCTION

QA pede férias.


🌎 Por que lançar da Flórida?

Aqui existe uma coincidência histórica deliciosa.

No romance, após cálculos sobre o local apropriado para o disparo, a região escolhida fica na Flórida.

Décadas depois, a Flórida se tornaria central para o programa espacial americano, com Cape Canaveral/Kennedy Space Center.

Não significa que Verne “previu a NASA”.

Geografia e mecânica orbital fornecem boas razões para lançamentos em latitudes mais baixas e em determinadas direções.

Mas para um leitor moderno é impossível não sorrir.

Júlio Verne escreve sobre americanos lançando uma missão lunar da Flórida em 1865.

NASA:

“Anotado.”


🖥️ COBOL valida a janela lunar

Nosso programa recebe:

       IF WS-LAUNCH-WINDOW = 'OPEN'
           DISPLAY 'GO FOR LAUNCH'
       ELSE
           DISPLAY 'HOLD'
       END-IF.

Barbicane:

— GO?

Operações:

— GO.

Hardware:

— GO.

Tripulação:

— GO.

COBOL:

GO FOR LAUNCH

JES2:

MOONJOB STEP01 MAXCC=0000

Todos comemoram.

Exceto o velho programador.

Ele sabe:

MAXCC=0 não significa que a Lua está onde deveria estar.

Significa apenas que o programa terminou sem reclamar.

Existe uma diferença filosófica importante.


🚀 3... 2... 1...

Chega o momento.

Columbiad carregado.

Projétil preparado.

Barbicane.

Nicholl.

Michel Ardan.

Dentro da cápsula.

Operador:

SUBMIT MOONJOB

JES:

$HASP373 MOONJOB STARTED

COBOL:

CALCULATING TRAJECTORY...

CICS não participa.

Graças a Deus.

Db2 registra a missão.

INSERT INTO LUNAR_MISSION
VALUES ('MOON-001','LAUNCHED');

COMMIT.

Agora não tem volta.


💥 FIRE

Columbiad dispara.

BOOOOOOOOOOOOOOM

Toda a Flórida alternativa treme.

Operador olha SDSF.

JOB STATUS: ACTIVE

Michel Ardan:

— Estamos vivos?

Barbicane:

— Aparentemente.

Nicholl:

— Qual nossa trajetória?

Ardan:

— Pergunte ao computador.

Terminal:

MOONCOB:
TRAJECTORY STATUS = UNKNOWN

Ardan:

— Excelente.


🌌 O primeiro batch interplanetário

Agora nosso JOB está literalmente viajando.

Isso apresenta um problema arquitetural.

O mainframe está na Terra.

A cápsula está no espaço.

Rede:

LATENCY:
CONSIDERÁVEL

Programador moderno:

— Podemos colocar Kubernetes na cápsula.

Não.

Sente-se.


🛰️ Arquitetura distribuída de 1865

Precisamos de processamento local.

Imagine um pequeno subsistema COBOL embarcado.

MOONCOB-EDGE

Agora finalmente encontramos o verdadeiro significado de:

Edge Computing.

Edge mesmo.

A borda está a centenas de milhares de quilômetros.


🐛 E naturalmente aparece um bug

Nenhuma viagem Bellacosa Mainframe estaria completa sem isso.

No meio da trajetória:

ABEND S0C7

Barbicane:

— O que significa?

COBOLzeiro:

— Data Exception.

— Estamos entre a Terra e a Lua!

— Continua sendo Data Exception.

Investigação.

Campo:

05 WS-LUNAR-DISTANCE PIC 9(06).

Entrada:

384400KM

Ah.

Alguém colocou:

KM

num campo numérico.

Dois caracteres.

Missão lunar inteira ameaçada por:

K
M

COBOL permanece absolutamente indiferente à importância histórica da missão.

Dado inválido é dado inválido.


🔧 DISPLAY salva a humanidade

Sem debugger sofisticado:

DISPLAY 'DISTANCE=' WS-LUNAR-DISTANCE.

SYSOUT:

DISTANCE=384400KM

Barbicane:

— Encontramos!

Nicholl:

— Quem colocou KM?

Michel Ardan lentamente olha para o lado.

Silêncio.


🌕 O mistério da trajetória

A continuação da história, Autour de la Lune — Ao Redor da Lua, publicada primeiro em série e depois em volume em 1870, acompanha a viagem dos personagens.

E aqui Verne faz algo ainda mais interessante.

A aventura deixa de ser apenas:

CONSTRUIR CANHÃO

e passa a ser:

O QUE ACONTECE DEPOIS DO DEPLOY?

Essa é a pergunta que todo desenvolvedor conhece.

Antes:

“Precisamos colocar em produção.”

Depois:

“Colocamos.”

Silêncio.

“E agora?”

Agora começa a verdadeira aventura.


🔄 Produção é diferente de projeto

No laboratório tudo parece controlável.

Em produção aparecem:

GRAVIDADE
TEMPERATURA
TRAJETÓRIA
ERROS DE CÁLCULO
EVENTOS IMPREVISTOS
COMPORTAMENTO HUMANO

Software é igual.

Homologação:

10 REGISTROS

Produção:

480.000.000 REGISTROS

Homologação:

CLIENTE = JOAO

Produção:

CLIENTE = O'BRIEN DA SILVA & FILHOS 日本支店

E então descobrimos se nossa arquitetura realmente funciona.


🧭 Observabilidade lunar

Precisamos saber:

POSIÇÃO
VELOCIDADE
DIREÇÃO
OXIGÊNIO
TEMPERATURA
STATUS TRIPULAÇÃO

Nosso SMF espacial registra tudo.

SMF TYPE 999
LUNAR FLIGHT RECORD

RMF pergunta:

CPU UTILIZATION?

COBOLzeiro:

— Estamos indo para a Lua.

RMF:

— Não perguntei isso.


🧠 Júlio Verne e a engenharia da imaginação

Aqui está o ponto realmente bonito.

Júlio Verne não precisava acertar todos os detalhes técnicos.

E não acertou.

Seu canhão lunar possui problemas físicos gigantescos.

Mas isso é quase secundário.

A genialidade está em tratar uma ideia fantástica como se pudesse ser desmontada em problemas menores.

COMO CHEGAR À LUA?

vira:

QUAL DISTÂNCIA?

QUAL TRAJETÓRIA?

QUAL VELOCIDADE?

QUAL MATERIAL?

QUAL LOCAL?

QUAL CUSTO?

QUAL CÁPSULA?

QUEM VAI?

Essa maneira de pensar está no coração da engenharia.

E também da programação.


🦖 COBOL faz exatamente isso

Imagine um requisito:

“Calcule a folha de pagamento de 100.000 funcionários.”

Para uma pessoa, parece gigantesco.

COBOL transforma em:

READ EMPLOYEE
   ↓
VALIDATE
   ↓
CALCULATE
   ↓
WRITE RESULT
   ↓
REPEAT

Agora imagine:

“Vamos à Lua.”

Bellacosa COBOL responde:

READ LUNAR-PARAMETERS
   ↓
VALIDATE
   ↓
CALCULATE TRAJECTORY
   ↓
VALIDATE CREW
   ↓
LAUNCH
   ↓
MONITOR

Problemas extraordinários tornam-se sequências de problemas menores.


🤖 E se Júlio Verne tivesse IA?

Agora entramos em território perigoso.

Verne sentado diante de uma máquina.

Pergunta:

“Qual seria uma maneira plausível de enviar três homens à Lua?”

IA:

“Certamente não através de um canhão.”

Verne:

“Obrigado.”

Fecha a IA.

Escreve o livro mesmo assim.

Porque às vezes uma ideia tecnicamente absurda produz uma história extraordinária.


📊 O dashboard da missão

Na sala do Gun Club:

╔════════════════════════════════╗
║     LUNAR MISSION CONTROL      ║
╠════════════════════════════════╣
║ JOB.............. MOONJOB      ║
║ PROGRAM.......... MOONCOB      ║
║ VEHICLE........ COLUMBIAD      ║
║ DESTINATION......... MOON      ║
║ PASSENGERS............. 3      ║
║ STATUS.......... IN FLIGHT     ║
║ ABENDS................. 1      ║
║ COFFEE.............. LOW       ║
╚════════════════════════════════╝

O último indicador preocupa operações.


☕ PRIORITY 1

Ticket aberto:

INCIDENT:
INC-1865-384400

SEVERITY:
P1

DESCRIPTION:
THREE USERS CURRENTLY TRAVELLING
BETWEEN EARTH AND MOON.

BUSINESS IMPACT:
SIGNIFICANT.

Service Desk pergunta:

“Consegue enviar screenshot?”

Barbicane desliga o rádio.


🌍 O retorno

Sem entregar toda a aventura para quem ainda quiser ler Verne, existe uma característica fundamental nessas histórias:

o verdadeiro desafio nunca é simplesmente partir.

É sobreviver às consequências da partida.

Isso também vale para sistemas.

Criar aplicação:

20%

Mantê-la durante décadas:

80%

E talvez seja exatamente por isso que COBOL combina tão maravilhosamente com Júlio Verne.

Ambos pertencem a épocas que o presente frequentemente olha como antigas.

Ambos continuam sendo lidos.

Ambos sobrevivem às previsões de desaparecimento.

E ambos carregam uma estranha elegância de engenharia.


📚 1865 encontra 1959 encontra 2026

Nossa linha temporal fica maravilhosa:

1865
JÚLIO VERNE
DA TERRA À LUA
      ↓
1870
AO REDOR DA LUA
      ↓
1959
COBOL
      ↓
1969
APOLLO 11
      ↓
2026
IA + MAINFRAME + CLOUD

Em pouco mais de um século, aquilo que era literatura virou engenharia.

E aquilo que era tecnologia revolucionária virou infraestrutura invisível.

Talvez essa seja uma das coisas mais fascinantes da história tecnológica.

O impossível possui prazo de validade.


🚀 Ontem ficção, amanhã produção

Em 1865:

homens viajando à Lua.

Fantasia.

Em 1969:

homens caminhando na Lua.

História.

Em outra época:

computador entendendo linguagem próxima do inglês.

Absurdo.

Depois:

COBOL.

Hoje:

conversar em linguagem natural com uma inteligência artificial capaz de gerar programas.

Normal.

Portanto tenha cuidado quando alguém disser:

“Isso nunca vai acontecer.”

Júlio Verne pode estar ouvindo.


🦖 E o velho COBOL?

COBOL observa tudo.

Nasceu quando computadores ainda eram gigantes.

Viu o homem chegar à Lua.

Viu ARPANET.

Viu Unix.

Viu PCs.

Viu Internet.

Viu smartphones.

Viu cloud.

Viu blockchain.

Viu IA generativa.

E continua executando:

       PERFORM PROCESS-TRANSACTION
          UNTIL END-OF-FILE.

Talvez COBOL seja menos uma linguagem e mais uma testemunha histórica.


🌕 O último JOB

Imagino Júlio Verne entrando no Bellacosa Mainframe Center.

Ele observa um IBM Z moderno.

Pergunta:

— Quanto ele consegue calcular?

Respondemos:

— Bastante.

— Poderia calcular uma viagem à Lua?

— Facilmente.

Verne sorri.

— Então podemos usar meu canhão?

— Não.

— Por quê?

— A tripulação morreria instantaneamente.

Ele pensa.

— Podemos aumentar o tamanho?

Silêncio.

Agora entendemos de onde vieram os arquitetos corporativos.


☕ Epílogo — Da Terra ao Mainframe

Sala de operações.

03:14.

A cápsula finalmente retorna.

Sistema registra:

MISSION STATUS:
COMPLETED

Db2:

COMMIT COMPLETE.

JES2:

$HASP395 MOONJOB ENDED

Operador abre o spool.

IEF142I MOONJOB STEP01
STEP WAS EXECUTED

MAXCC=0000

Barbicane comemora.

Michel Ardan pede champanhe.

Nicholl pergunta pelos cálculos.

Júlio Verne fecha seu caderno.

E no fundo da sala o velho COBOLzeiro permanece desconfiado.

Ele olha novamente para o SYSOUT.

Confere os totais.

Confere a quantidade de passageiros.

PASSENGERS SENT...... 3
PASSENGERS RETURNED.. 3

Agora sim.

Ele pega a caneca.

Toma café.

E finalmente declara:

“Pode fechar o incidente.”

Porque viajar até a Lua é impressionante.

Voltar é extraordinário.

Mas fazer tudo isso sem estourar um S0C7...

meu amigo...

isso sim é ficção científica.

🌕🚀☕🦖

IDENTIFICATION DIVISION.
PROGRAM-ID. FROM-EARTH-TO-MOON.

PROCEDURE DIVISION.

    DISPLAY 'BON VOYAGE, MONSIEUR VERNE'.

    STOP RUN.

MAXCC=0000

Destination: Moon.

https://eljefemidnightlunch.blogspot.com/2026/08/o-spread-do-conhecimento-matrix-cobol-e.html

https://eljefemidnightlunch.blogspot.com/2026/08/quanto-custa-um-programador-salario.html

https://eljefemidnightlunch.blogspot.com/2026/08/delete-user-nao-apaga-memoria-o.html


Por que o COBOL continua a dominar o processamento de dados no mundo dos negócios? Os dados comerciais e financeiros precisam ser gerenciados usando tipos de dados decimais verdadeiros. Os sistemas de contabilidade devem estar corretos até o último dígito decimal e precisam reproduzir exatamente os resultados do cálculo manual; números convencionais de ponto flutuante levam a
 complexidades e erros.
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...