Translate

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

terça-feira, 10 de maio de 2022

O Que Todo Programador COBOL Padawan Precisa Saber Sobre Erros de Programação, Git, Extensões de Arquivos e Inteligência Artificial para Construir Sistemas que Sobrevivem ao Tempo

 

Bellacosa Mainframe emtemdemdo erros

☕ Um Café no Bellacosa Mainframe

Muito Além da Sintaxe

O Que Todo Programador COBOL Padawan Precisa Saber Sobre Erros de Programação, Git, Extensões de Arquivos e Inteligência Artificial para Construir Sistemas que Sobrevivem ao Tempo

"Aprender uma linguagem é importante. Aprender como os computadores pensam é o que realmente transforma um programador em um engenheiro de software."

Existe uma frase muito conhecida entre desenvolvedores experientes:

"Programar não é escrever código. Programar é resolver problemas."

E, curiosamente, quanto mais experiência um profissional adquire, menos tempo ele passa escrevendo código e mais tempo ele dedica a entender erros, interpretar logs, analisar requisitos, versionar alterações, revisar código, automatizar processos e estudar novas tecnologias.

Esse é um choque para muitos iniciantes.

O Programador COBOL Padawan costuma imaginar que a carreira será composta principalmente por escrever comandos MOVE, IF, PERFORM, READ, WRITE e EXEC SQL.

Mas basta entrar em um grande banco, uma seguradora ou uma empresa aérea para descobrir uma realidade completamente diferente.

Ali existem milhares de programas.

Milhões de linhas de código.

Centenas de desenvolvedores.

Diversas linguagens convivendo lado a lado.

COBOL.

PL/I.

Assembler.

Java.

Python.

JavaScript.

Go.

Rust.

SQL.

JCL.

REXX.

E, cada vez mais, Inteligência Artificial auxiliando todas essas equipes.

Nesse ambiente, conhecer apenas a sintaxe de uma linguagem é como saber dirigir um carro sem entender placas de trânsito, mecânica ou regras de circulação.

É por isso que as cinco listas apresentadas anteriormente representam muito mais do que simples curiosidades.

Na prática, elas resumem alguns dos pilares da Engenharia de Software moderna.

Vamos conversar sobre cada um deles.

Pegue seu café.


O computador nunca faz "o que você quis"

Uma das maiores descobertas de todo programador é perceber que computadores não possuem bom senso.

Eles fazem exatamente aquilo que foi programado.

Nem mais.

Nem menos.

Se existir uma pequena falha lógica, o computador executará essa falha com perfeição matemática.

É por isso que um erro aparentemente insignificante pode movimentar milhões de reais incorretamente.

No IBM Z isso acontece diariamente.

Não porque o mainframe seja ruim.

Muito pelo contrário.

Ele é extremamente confiável.

O problema sempre foi — e sempre será — o ser humano.


Existem erros... e existem erros

Quando alguém começa a aprender programação, normalmente acredita que erro significa apenas aquela mensagem vermelha que aparece na tela.

Na realidade existem diversas categorias.

Cada uma possui causas completamente diferentes.

Cada uma exige uma forma diferente de investigação.

É exatamente isso que diferencia um programador júnior de um engenheiro de software.


Syntax Error

O primeiro erro da carreira.

O compilador simplesmente não consegue entender o que você escreveu.

Imagine escrever em português:

Eu mercado fui ontem.

As palavras existem.

Mas a estrutura está incorreta.

O compilador pensa exatamente assim.

Em COBOL:

IF SALDO > 100
DISPLAY "OK"

Faltou o END-IF.

O compilador interrompe tudo.

Nada será executado.

Esse tipo de erro normalmente é simples.

O compilador informa linha, coluna e descrição.


Runtime Error

Agora a situação muda.

O programa compilou perfeitamente.

Foi para produção.

Começou a executar.

Depois...

ABEND.

No universo Mainframe, poucos termos assustam tanto quanto esse.

Um ABEND (Abnormal End) significa que alguma condição inesperada ocorreu durante a execução.

Alguns exemplos clássicos:

S0C1

S0C4

S0C7

S0CB

S322

SB37

SE37

SD37

Cada um deles conta uma história diferente.

Por exemplo...

Dividir por zero em Python gera:

ZeroDivisionError

No COBOL, dependendo do contexto, isso normalmente resulta em um S0CB.

Já acessar memória inválida pode gerar um S0C4, um dos ABENDs mais conhecidos entre programadores COBOL.

Por isso, aprender apenas a programar não basta.

É necessário aprender a investigar.

Ler dumps.

Interpretar mensagens.

Consultar SYSOUT.

Analisar o JES.

Entender SDSF.

Essa habilidade vale ouro.


O erro mais perigoso não gera mensagem

Esse é o famoso Logical Error.

O programa funciona.

Não apresenta erro.

Não gera dump.

Não gera ABEND.

Mas calcula errado.

Imagine um banco calculando juros de 1,59% quando deveria calcular 1,95%.

O programa executa normalmente.

Nenhum operador percebe.

Nenhum monitor dispara alerta.

Somente semanas depois alguém descobre um prejuízo milionário.

Esse tipo de erro explica por que testes automatizados, revisão de código e homologação são tão importantes.


Tipos de dados existem por um motivo

Quando o COBOL foi criado, muitos acreditavam que sua enorme quantidade de definições era exagerada.

Hoje entendemos que não era.

Cada tipo de dado existe para evitar erros.

Em Python podemos escrever:

idade = "30"

Visualmente parece correto.

Mas...

idade + 5

gera erro.

Em COBOL:

PIC 9(03)

é completamente diferente de

PIC X(03)

Essa rigidez é justamente o que torna sistemas bancários tão confiáveis.


Overflow e Underflow

Imagine um campo:

PIC 999

Ele aceita apenas três dígitos.

Se alguém tentar gravar:

1000

algo precisa acontecer.

Dependendo da situação ocorrerá truncamento, exceção ou erro de execução.

Já o Underflow acontece principalmente em cálculos científicos quando números extremamente pequenos perdem precisão.

Embora seja raro em aplicações comerciais, ele é muito comum em computação de alto desempenho e modelos de Inteligência Artificial.


Arquivos são muito mais importantes do que parecem

Outro assunto frequentemente ignorado pelos iniciantes são as extensões de arquivos.

".py"

".java"

".json"

".xml"

".sql"

Muitos acreditam que isso serve apenas para organizar arquivos.

Na realidade, cada extensão representa um ecossistema inteiro.

Quando você vê um arquivo ".java", imediatamente sabe que existe uma JVM envolvida.

Ao encontrar um ".sql", entende que haverá interação com um banco de dados.

Um ".json" normalmente representa troca de informações entre sistemas.

No IBM Mainframe a situação é um pouco diferente.

Grande parte do código está armazenada em membros de PDS ou PDSE.

Não existe necessariamente uma extensão visível.

Mesmo assim, cada biblioteca possui um propósito muito bem definido.

Um membro pode conter COBOL.

Outro JCL.

Outro PROC.

Outro REXX.

Outro COPYBOOK.

Outro DCLGEN.

A organização continua existindo.

Apenas mudou de formato.


O mundo moderno conversa em JSON

Durante décadas o XML dominou integrações corporativas.

SOAP.

Web Services.

Mensagens estruturadas.

Hoje a maior parte das APIs REST utiliza JSON.

Exemplo:

{
   "cliente":"Maria",
   "saldo":3500.90
}

É simples.

Leve.

Legível.

O COBOL moderno já possui suporte para JSON PARSE e JSON GENERATE, permitindo que programas tradicionais conversem diretamente com aplicações web e microsserviços.

Isso demonstra como o ecossistema IBM Z continua evoluindo.


Git mudou a Engenharia de Software

Antigamente, equipes compartilhavam código copiando arquivos.

Imagine dez programadores alterando o mesmo programa COBOL.

Caos.

Hoje isso seria impensável.

O Git resolveu esse problema.

Na prática, o Git funciona como uma máquina do tempo.

Cada Commit registra exatamente o que mudou.

Quem mudou.

Quando mudou.

E por quê.

Se um erro aparecer meses depois, basta consultar o histórico.

Essa rastreabilidade é indispensável em ambientes regulados, como bancos e seguradoras.


Commit não é backup

Esse é um erro comum entre iniciantes.

Commit significa registrar uma alteração lógica.

Um bom commit deve representar uma unidade de trabalho.

Exemplo ruim:

Correções

Exemplo excelente:

Corrige cálculo de IOF para operações acima de R$ 50.000

Percebe a diferença?

O histórico passa a contar uma história.


Branches são universos paralelos

Imagine que a produção está funcionando.

Você precisa desenvolver uma nova funcionalidade.

Não faz sentido quebrar o código principal.

Então cria-se uma Branch.

Ali você trabalha livremente.

Quando tudo estiver pronto, ocorre o Merge.

Essa ideia revolucionou o desenvolvimento colaborativo.


Conflitos fazem parte da profissão

Todo desenvolvedor, cedo ou tarde, encontrará um Merge Conflict.

Isso acontece quando duas pessoas alteram a mesma região do mesmo arquivo.

O Git não consegue decidir automaticamente.

Então pergunta ao ser humano.

Resolver conflitos é uma habilidade importante.

Não é um sinal de incompetência.

É consequência natural do trabalho em equipe.


O Git também chegou ao Mainframe

Durante décadas o versionamento em ambientes IBM Z foi realizado por ferramentas como Endevor, Changeman, Librarian, Panvalet e SCLM.

Hoje o cenário mudou.

Zowe.

Git.

GitHub.

GitLab.

Azure DevOps.

Pipeline CI/CD.

Tudo isso já faz parte da realidade do IBM Z.

O desenvolvedor COBOL moderno trabalha tanto no ISPF quanto no VS Code.


Inteligência Artificial começa pelos dados

Quando ouvimos falar em IA, pensamos imediatamente em ChatGPT.

Mas antes de existir qualquer modelo existe algo muito mais importante.

Dados.

Sem dados não existe aprendizado.

É por isso que Machine Learning começa pelo Dataset.

Imagine ensinar uma criança a reconhecer gatos.

Você mostra milhares de fotografias.

Ela aprende padrões.

Modelos de IA fazem exatamente isso.


Features são as pistas

Suponha um sistema bancário que detecta fraude.

Cada operação possui informações como:

Valor.

Cidade.

Horário.

Dispositivo.

Cliente.

Canal.

Cada uma dessas características recebe o nome de Feature.

Quanto melhores forem as Features, melhor tende a ser o modelo.


Labels representam a resposta correta

Em aprendizado supervisionado existe um professor.

Cada exemplo já possui a resposta.

Operação fraudulenta?

Sim.

Não.

Essas respostas são chamadas de Labels.

O algoritmo tenta aprender a relação entre Features e Labels.


Treinar não é decorar

Aqui surge um dos conceitos mais importantes da IA.

Overfitting.

Imagine um aluno que decorou todas as respostas da apostila.

Na prova, qualquer pergunta diferente o confunde.

Foi exatamente isso que aconteceu com o modelo.

Ele decorou.

Não aprendeu.

No extremo oposto está o Underfitting.

O aluno nem conseguiu compreender o conteúdo.

O modelo é simples demais.

Também falha.

O objetivo sempre é encontrar o equilíbrio.


Accuracy nem sempre significa qualidade

Imagine um banco com um milhão de operações.

Apenas mil são fraudulentas.

Um algoritmo responde sempre:

Não é fraude.

Resultado:

999 mil acertos.

Accuracy de 99,9%.

Parece excelente.

Mas encontrou exatamente zero fraudes.

Por isso profissionais utilizam outras métricas.

Precision.

Recall.

F1-Score.

ROC-AUC.

Cada métrica responde uma pergunta diferente.


Redes neurais não pensam

Esse é um dos maiores equívocos atuais.

Uma Rede Neural não possui consciência.

Ela ajusta milhões ou bilhões de pesos matemáticos.

O comportamento impressionante dos grandes modelos de linguagem surge da enorme quantidade de dados, parâmetros e capacidade computacional.

Ainda assim, continuam sendo modelos estatísticos.


O futuro do COBOL não é competir com a IA

É trabalhar junto dela.

Hoje um desenvolvedor pode utilizar IA para:

  • explicar programas COBOL antigos;

  • gerar documentação técnica;

  • criar testes automatizados;

  • sugerir refatorações;

  • converter layouts de arquivos;

  • produzir exemplos em Java ou Python;

  • revisar SQL;

  • explicar ABENDs;

  • auxiliar na escrita de JCL e REXX;

  • acelerar a compreensão de sistemas legados.

A IA não substitui o conhecimento do negócio.

Ela amplia a produtividade de quem já conhece o ambiente.


O verdadeiro diferencial continua sendo o raciocínio

Ferramentas mudam.

Linguagens surgem.

Frameworks desaparecem.

Mas alguns fundamentos permanecem praticamente inalterados desde os primórdios da computação.

Entender algoritmos.

Conhecer estruturas de dados.

Interpretar erros.

Versionar corretamente.

Escrever código legível.

Documentar alterações.

Testar antes de entregar.

Compreender o domínio do negócio.

Esses princípios continuam válidos para COBOL, Java, Python, Go, Rust, JavaScript ou qualquer outra tecnologia.


O Programador COBOL Padawan e a Jornada para se Tornar um Mestre

Todo grande profissional já foi iniciante.

Ninguém nasce sabendo interpretar um S0C4, resolver um conflito de Git, entender uma métrica de Machine Learning ou projetar uma arquitetura distribuída.

Essas habilidades são construídas com estudo, prática e curiosidade.

O Programador COBOL Padawan deve enxergar cada erro como uma oportunidade de aprendizado, cada commit como um registro da sua evolução, cada extensão de arquivo como a porta de entrada para um novo ecossistema e cada conceito de Inteligência Artificial como uma ferramenta que amplia sua capacidade de resolver problemas.

No Bellacosa Mainframe, costumamos dizer que o objetivo não é formar apenas programadores que saibam escrever código. Queremos formar profissionais capazes de compreender sistemas inteiros, conversar com equipes multidisciplinares, integrar tecnologias clássicas e modernas e tomar decisões técnicas conscientes.

A jornada começa com um simples DISPLAY "HELLO WORLD".

Depois evolui para programas COBOL, JCLs, consultas SQL, integrações REST, pipelines DevOps, versionamento com Git, observabilidade, automação e, mais recentemente, Inteligência Artificial aplicada ao desenvolvimento.

O segredo nunca foi decorar comandos.

O segredo é compreender os fundamentos que atravessam gerações de tecnologias.

Quem domina esses fundamentos consegue aprender qualquer linguagem, adaptar-se a qualquer plataforma e continuar relevante mesmo quando novas ferramentas surgem.

E talvez essa seja a maior lição desta conversa: o COBOL Padawan que aprende a pensar como engenheiro de software não fica preso ao passado; ele usa a solidez do legado para construir o futuro.

Porque, no fim das contas, linguagens mudam, frameworks envelhecem, bibliotecas são substituídas e paradigmas evoluem. Mas a capacidade de analisar problemas, entender sistemas complexos e entregar soluções confiáveis continuará sendo o maior patrimônio de qualquer profissional de tecnologia.

Então, da próxima vez que encontrar uma mensagem de erro, criar uma nova branch, analisar um arquivo JSON ou ouvir falar de Machine Learning, lembre-se: você não está estudando assuntos isolados. Está construindo a base que sustentará toda a sua carreira como desenvolvedor.

E essa é uma jornada que vale cada linha de código.

segunda-feira, 3 de novembro de 2014

Mary Hawes: a mulher que chamou a reunião que mudou a informática - Codasyl

 


💾 EL JEFE MIDNIGHT LUNCH — Bellacosa Mainframe Chronicles
“Mary Hawes: a mulher que chamou a reunião que mudou a informática”


Existem pessoas que escrevem código.
Existem pessoas que escrevem especificações.
E existem pessoas raríssimas que criam o contexto onde o futuro acontece.

Mary Hawes não ficou famosa como “a programadora do algoritmo X”.
Ela ficou eterna porque fez algo muito mais difícil:
👉 percebeu o problema antes de todo mundo
👉 juntou as pessoas certas
👉 e forçou a indústria a conversar

Se hoje existe COBOL, mainframe corporativo, sistemas que duram 40 anos, é porque Mary Hawes levantou a mão e disse: “isso não está funcionando”.

Vamos contar essa história como ela merece — com café forte, bastidor, fofoquice técnica e respeito histórico.



👩‍💼 Quem foi Mary Hawes (biografia rápida)

  • Nome completo: Mary Kenneth Hawes

  • Formação: Matemática

  • Atuação: Analista de sistemas, líder técnica, articuladora

  • Empresas-chave: Burroughs Corporation

  • Período crítico: final dos anos 1950 e início dos anos 1960

Mary Hawes não era “apenas” programadora.
Ela era o que hoje chamaríamos de arquiteta de sistemas, product owner e líder técnica — tudo ao mesmo tempo, décadas antes desses termos existirem.


🕰️ O problema que ela enxergou (e quase ninguém queria ver)

Final dos anos 50.
Cada fabricante tinha:

  • Seu próprio hardware

  • Sua própria linguagem

  • Seu próprio compilador

  • Seu próprio inferno de manutenção

Trocar de máquina significava:

  • Reescrever tudo

  • Treinar pessoas do zero

  • Jogar investimentos no lixo

🧠 Comentário Bellacosa:
Mary Hawes enxergou algo simples e assustador: isso não escala.

Enquanto a indústria brigava por market share, ela pensava em interoperabilidade — uma palavra que nem existia ainda.


📣 O ato revolucionário: convocar a reunião

Aqui entra o momento histórico.

Mary Hawes, trabalhando na Burroughs, escreve, liga, insiste e articula uma reunião entre:

  • Governo dos EUA

  • Forças Armadas

  • Grandes fabricantes (IBM, RCA, Univac, Burroughs, Honeywell…)

Ela basicamente disse:

“Precisamos de uma linguagem comum para sistemas de negócio.
Agora.
Juntos.”

Essa reunião virou o Short-Range Committee (1959).
E dessa mesa nasceu o COBOL.

🧠 Tradução livre:
Mary Hawes não “programou” o COBOL.
Ela tornou o COBOL inevitável.


💻 Contributo direto ao COBOL

Mary Hawes foi fundamental em vários aspectos:

🔹 Visão de linguagem de negócios

  • Linguagem legível

  • Próxima do inglês

  • Voltada a dados e processos empresariais

🔹 Defesa da independência de fornecedor

  • COBOL não seria da IBM

  • Nem da Burroughs

  • Nem da Univac

🥚 Easter egg histórico:
Convencer a IBM a aceitar isso foi quase um milagre diplomático.


🔹 Organização e liderança

Mary não era apenas “a ideia”.
Ela coordenava discussões, mediava egos gigantes e mantinha o foco no objetivo.

🧠 Fofoquice técnica:
Dizem que sem ela as reuniões viravam disputas acadêmicas intermináveis.
Com ela, viravam decisões.


🖥️ Mary Hawes e o nascimento do Mainframe corporativo

O mainframe como conhecemos hoje — plataforma estável, durável, corporativa — nasce da filosofia COBOL:

  • Separação entre dados e lógica

  • Programas legíveis e auditáveis

  • Longevidade acima de modismo

Tudo isso está diretamente ligado à visão de Mary Hawes.

🧠 Comentário Bellacosa Mainframe:
O mainframe não foi feito para ser bonito.
Foi feito para durar.
Mary Hawes pensava exatamente assim.


🧬 Principais trabalhos e contribuições

  • Idealizadora e articuladora do movimento que levou ao COBOL

  • Representante da Burroughs no comitê COBOL

  • Influência direta na definição de linguagens orientadas a negócio

  • Defensora precoce de padrões abertos

  • Uma das primeiras líderes femininas reais da computação corporativa

Ela não escreveu milhares de linhas de código.
Ela escreveu o manual invisível do software corporativo.


🧩 Curiosidades pouco faladas

  • Mary Hawes raramente aparece nos livros populares de história da computação

  • Seu papel foi por muito tempo “diluído” em comitês

  • Hoje, historiadores concordam: sem ela, COBOL provavelmente não existiria

  • Ela era conhecida por ser direta, objetiva e impaciente com vaidade técnica

🥚 Easter egg:
Ela defendia que código deveria ser lido por pessoas de negócio.
Décadas depois, isso ainda é um diferencial do COBOL.


👶 Conteúdo para Padawans do Mainframe

Se você está começando agora, aprenda isso com Mary Hawes:

  • Tecnologia sem visão vira sucata

  • Linguagem sem propósito vira brinquedo

  • Sistema que não dura não é sistema — é experimento

COBOL e mainframe sobreviveram porque foram pensados para o mundo real.


☕ O legado de Mary Hawes

Mary Hawes deixou algo raro:

  • Não um produto

  • Não uma patente

  • Não uma startup

Ela deixou um ecossistema inteiro funcionando por mais de 60 anos.

Cada batch que fecha banco.
Cada transação CICS que autoriza pagamento.
Cada salário que cai certo no fim do mês.

Tudo isso carrega um pouco da decisão que ela tomou em 1959.


🧠 Reflexão final do El Jefe

“Algumas pessoas escrevem código.
Outras escrevem o futuro.
Mary Hawes fez os dois — sem pedir crédito.”

Se hoje o COBOL ainda vive,
se o mainframe ainda reina silencioso,
é porque alguém, lá atrás, teve coragem de parar a indústria e dizer:

“Precisamos fazer isso direito.”


sábado, 13 de setembro de 2014

1959: a mesa onde o COBOL nasceu (e ninguém imaginava que ele ainda estaria vivo no século XXI)

 


☕ EL JEFE MIDNIGHT LUNCH

1959: a mesa onde o COBOL nasceu (e ninguém imaginava que ele ainda estaria vivo no século XXI)

Existem fotos que são apenas fotos.
E existem fotos que são documentos fundacionais da história da computação.

Essa imagem de 1959, com homens e mulheres sentados em volta de uma mesa simples, não é apenas um registro de época.
É o Big Bang do software corporativo moderno.

Ali estava o Short-Range Committee, o grupo responsável por definir as bases do que viria a ser o COBOL — a linguagem que atravessou governos, bancos, crises, modas tecnológicas e continua firme no coração do mainframe.

Vamos conhecer quem eram essas pessoas, o que representavam e por que essa mesa mudou o mundo.



🧠 O que era o Short-Range Committee?

Em 1959, o governo dos EUA, a indústria e as forças armadas tinham um problema sério:

Cada computador tinha sua própria linguagem.
Cada fornecedor falava um dialeto diferente.
E sistemas de negócio não eram portáveis.

A missão do comitê era clara e ousada:

  • Criar uma linguagem comum

  • Voltada para negócios

  • Independente de fabricante

  • Legível por humanos (não só por engenheiros)

Nascia ali o embrião do COBOL — Common Business-Oriented Language.




A história de uma foto.

👩‍💻👨‍💻 Quem estava sentado à mesa (literalmente)

🔹 Sentados (da esquerda para a direita)

Gertrude Tierney (IBM)

Representando a IBM — já naquela época a potência dominante.
Trouxe pragmatismo corporativo e visão de escala.

🧠 Curiosidade: A IBM entrou no COBOL mesmo sabendo que isso reduziria seu lock-in proprietário.


William Logan (Burroughs)

A Burroughs sempre teve uma visão mais “human-friendly” de computação.
Logan ajudou a defender uma linguagem mais próxima do inglês.


Frances “Betty” Holberton

Sim, uma das mães do COBOL.
Programadora do ENIAC, visionária, brilhante.

🥚 Easter egg:
Ela também influenciou conceitos que hoje associamos a compiladores modernos e boas práticas de software.


Daniel Goldstein (Univac)

A Univac era sinônimo de computação comercial nos anos 50.
Goldstein trouxe experiência prática de sistemas reais em produção.


Joseph Wegstein (National Bureau of Standards)

O homem da padronização.
Sem ele, COBOL talvez fosse só mais uma linguagem bonita… e inútil.


Howard Bromberg (RCA)

Representava o lado industrial pesado, preocupado com viabilidade técnica.


Mary Hawes (Burroughs)

🔥 Figura-chave e frequentemente subestimada.
Foi uma das maiores articuladoras da ideia de uma linguagem comum.

🧠 Comentário Bellacosa:
Sem Mary Hawes, talvez não existisse COBOL — ponto.


Benjamin Cheydleur (RCA)

A ponte entre teoria e implementação.


Jean Sammet (Sylvania)

Outra gigante da computação.
Mais tarde escreveria um dos primeiros livros de história das linguagens de programação.

🥚 Easter egg:
Jean Sammet foi uma das maiores defensoras da clareza sintática — algo que o COBOL carrega até hoje.


🧍‍♂️ Em pé (os bastidores da história)

Alfred Asch (U.S. Air Force)

O governo pressionava: precisava de sistemas portáveis, confiáveis e duradouros.

🧠 Spoiler: Conseguiram.


[Nome não identificado]

Sim, até a história tem registros perdidos.
Mainframe também tem isso: datasets sem catálogo 😄


William Selden (IBM)

Outro peso pesado da IBM, garantindo que o COBOL fosse implementável em escala industrial.


Charles Gaudette (Minneapolis-Honeywell)

A visão de automação industrial aplicada ao negócio.


Norman Discount (RCA)

Trabalhou fortemente na definição de estruturas e regras.


Vernon Reeves (Sylvania)

Contribuições fundamentais para a forma como dados seriam descritos.


💾 O que nasceu dessa mesa?

Dessa reunião vieram ideias que hoje parecem óbvias, mas não eram:

  • DATA DIVISION

  • Campos descritivos e autoexplicativos

  • Separação clara entre dados e lógica

  • Foco absoluto em processamento de negócios

🧠 Comentário Bellacosa Mainframe:
Enquanto outras linguagens queriam provar inteligência, o COBOL queria pagar salário no fim do mês.


🧑‍ Padawans do Mainframe, prestem atenção

Se você está começando agora e acha COBOL “velho”, lembre-se:

  • Ele foi criado por pessoas que pensavam em longevidade

  • Ele nasceu para sobreviver a mudanças de hardware

  • Ele foi feito para ser lido, auditado e mantido

Por isso ele ainda está aqui.
Não por acidente — por projeto.


☕ Reflexão final do El Jefe

“Essas pessoas não escreveram apenas uma linguagem.
Elas escreveram um pacto:
o software de negócio precisava durar mais do que modas.”

Essa foto não é nostalgia.
É arquitetura de longo prazo.


domingo, 5 de abril de 2009

COBOL: Uma Odisseia de 1959 ao IBM Z

 

Bellacosa Mainframe e uma odisseia do Cobol

☕ Um Café no Bellacosa Mainframe

COBOL: Uma Odisseia de 1959 ao IBM Z

Quando um Programador Descobre que o Código Mais Antigo da Nave Ainda Controla os Sistemas Vitais da Civilização

“Abra as portas do processamento, HAL.”
“Sinto muito, programador. O fechamento contábil ainda não terminou.”

Em algum ponto silencioso de um datacenter, protegido por portas reforçadas, sensores, câmeras, autenticação multifator e camadas de segurança que fariam a nave Discovery One parecer uma kombi espacial, existe um programa COBOL trabalhando.

Ele não aparece nos comerciais.

Não possui uma mascote colorida.

Não muda de framework a cada seis meses.

Não publica frases motivacionais sobre inovação disruptiva.

Ele apenas trabalha.

Lê registros.

Valida contas.

Calcula juros.

Atualiza saldos.

Autoriza pagamentos.

Rejeita inconsistências.

Grava resultados.

E, ao terminar, provavelmente deixa uma mensagem curta no relatório:

PROCESSAMENTO CONCLUÍDO COM SUCESSO

Enquanto desenvolvedores discutem qual linguagem dominará o futuro, esse programa continua executando uma missão iniciada décadas atrás.

Talvez tenha sido escrito quando terminais ainda não eram comuns.

Talvez tenha atravessado cartões perfurados, fitas magnéticas, discos removíveis, terminais 3270, redes privadas, interfaces gráficas, internet, APIs, microsserviços, nuvem híbrida e inteligência artificial.

O hardware mudou.

O sistema operacional evoluiu.

As interfaces se transformaram.

Mas a regra de negócio permaneceu.

Essa é a verdadeira razão pela qual o COBOL se recusa a desaparecer.

Não porque esteja preso ao passado.

Mas porque continua sustentando o presente.

E esta é a história de uma das mais impressionantes odisseias da engenharia de software.



Prólogo: o monólito verde de 1976

A capa verde do manual apresentado nesta conversa parece um monólito tecnológico.

Na parte superior, o logotipo da IBM.

No centro, em letras brancas:

IBM DOS Full American National Standard COBOL

Na lateral, uma indicação simples:

DOS/VS COBOL

Na parte inferior:

Seventh Edition — April 1976

Para um observador moderno, pode parecer apenas um manual antigo.

Para um programador mainframe, entretanto, aquilo representa uma passagem para outra era.

Em 1976, os computadores pessoais ainda não faziam parte da vida cotidiana. Não existiam navegadores, smartphones, GitHub, Docker, Kubernetes ou vídeos ensinando programação em dez minutos.

A documentação era física.

O conhecimento vinha em volumes.

O programador precisava consultar tabelas, sintaxes, restrições do compilador, formatos de registros, instruções de entrada e saída e características específicas do sistema operacional.

O manual não era um acessório.

Era parte da estação de trabalho.

Imagine um jovem programador entrando numa sala de processamento de dados em 1976. Ele encontra armários metálicos, impressoras de linha, operadores, formulários contínuos, fitas identificadas, pilhas de relatórios e um computador central que custa uma fortuna.

Em suas mãos está aquele manual verde.

Ele não sabe, mas alguns dos programas que ajudará a escrever poderão sobreviver à sua carreira inteira.

Talvez sobrevivam à empresa que os criou.

Talvez sejam migrados para plataformas sucessivas.

Talvez executem, décadas depois, num IBM Z moderno.

É como se o astronauta David Bowman encontrasse um monólito não na Lua, mas numa biblioteca técnica, e percebesse que aquele objeto contém instruções capazes de atravessar gerações inteiras de computadores.


Capítulo 1 — A missão original do COBOL

COBOL significa:

COmmon Business-Oriented Language

Ou, em português:

Linguagem Comum Orientada aos Negócios.

O nome revela sua missão.

COBOL não nasceu para ser uma linguagem experimental.

Não nasceu para impressionar matemáticos.

Não nasceu para criar efeitos visuais.

Não nasceu para construir jogos ou controlar sondas planetárias.

Ele nasceu para processar os registros do mundo empresarial.

Folhas de pagamento.

Contas bancárias.

Seguros.

Impostos.

Estoques.

Faturas.

Financiamentos.

Contratos.

Pensões.

Transações comerciais.

Registros governamentais.

Sua arquitetura foi moldada por uma pergunta muito concreta:

Como representar e processar dados empresariais de maneira clara, previsível e confiável?

Essa pergunta continua válida.

Empresas modernas ainda possuem clientes, contas, pagamentos, contratos e regras.

Os nomes das tecnologias mudaram, mas a essência do negócio continua incrivelmente parecida.

Um banco de 1976 precisava saber:

  • quem era o cliente;

  • quanto havia na conta;

  • qual valor seria debitado;

  • qual valor seria creditado;

  • qual regra deveria ser aplicada;

  • qual evidência seria produzida.

Um banco moderno precisa saber exatamente as mesmas coisas.

A diferença é que hoje as transações chegam por aplicativos, APIs, cartões, terminais, redes instantâneas e plataformas digitais.

Mas, em algum ponto do processamento, ainda existe uma regra dizendo:

IF SALDO-DISPONIVEL >= VALOR-TRANSACAO
    SUBTRACT VALOR-TRANSACAO
        FROM SALDO-DISPONIVEL
    MOVE "APROVADA" TO STATUS-TRANSACAO
ELSE
    MOVE "RECUSADA" TO STATUS-TRANSACAO
END-IF

A sintaxe pode parecer simples.

O impacto não é.

Esse pequeno bloco representa uma decisão financeira.

Ele pode autorizar a compra de alimentos, pagar uma conta médica, liberar um empréstimo ou impedir uma operação indevida.

COBOL trabalha no ponto onde código e realidade se encontram.


Capítulo 2 — A linguagem que podia ser lida

Uma das ideias centrais do COBOL era a legibilidade.

Observe este exemplo:

IF IDADE-CLIENTE GREATER THAN OR EQUAL TO 18
    MOVE "CLIENTE MAIOR DE IDADE"
      TO MENSAGEM
ELSE
    MOVE "CLIENTE MENOR DE IDADE"
      TO MENSAGEM
END-IF

Mesmo uma pessoa que nunca estudou COBOL consegue imaginar o que está acontecendo.

Essa característica não é uma fraqueza.

É uma decisão de engenharia.

Sistemas empresariais precisam ser examinados por muitas pessoas:

  • programadores;

  • analistas;

  • auditores;

  • especialistas de negócio;

  • equipes de suporte;

  • profissionais de segurança;

  • responsáveis por conformidade;

  • novos integrantes da equipe.

Num sistema de missão crítica, o código precisa sobreviver ao seu criador.

Uma rotina obscura pode parecer elegante para quem a escreveu, mas se torna perigosa quando ninguém consegue compreendê-la cinco anos depois.

COBOL foi pensado para resistir a esse problema.

Sua verbosidade frequentemente criticada é também uma forma de documentação.

COMPUTE VALOR-JUROS =
        SALDO-DEVEDOR
      * TAXA-JUROS
      / 100

Não há muito mistério.

O código declara a intenção.

Isso é especialmente importante em programas que precisam permanecer compreensíveis durante décadas.

A nave espacial pode trocar seus tripulantes.

O programa precisa continuar operando.


Capítulo 3 — O verdadeiro patrimônio não está no código

Quando alguém olha para um sistema COBOL com milhões de linhas, pode pensar:

“É apenas código antigo.”

Esse é um dos maiores erros de interpretação da história da tecnologia.

O código é apenas a superfície.

O verdadeiro patrimônio está nas regras de negócio acumuladas.

Imagine uma instituição financeira que existe desde 1965.

Ao longo das décadas, seus sistemas precisaram incorporar:

  • mudanças nas leis;

  • novas moedas;

  • alterações tributárias;

  • regras de crédito;

  • métodos de cálculo;

  • produtos bancários;

  • exceções contratuais;

  • fusões entre instituições;

  • novas políticas de segurança;

  • decisões judiciais;

  • exigências regulatórias;

  • prevenção contra fraudes;

  • mudanças contábeis;

  • integrações com outras empresas.

Cada alteração acrescentou conhecimento ao sistema.

Um programa COBOL com quarenta anos não contém apenas quarenta anos de instruções.

Ele contém quarenta anos de decisões empresariais.

Veja uma regra aparentemente estranha:

IF TIPO-CONTRATO = "P7"
   AND DATA-ADESAO < 19940701
   AND CODIGO-REGIAO NOT = 18
    PERFORM CALCULO-ESPECIAL
ELSE
    PERFORM CALCULO-PADRAO
END-IF

Um programador iniciante pode perguntar:

“Por que existe essa exceção?”

Talvez ela tenha sido criada devido a uma mudança legal ocorrida em 1994.

Talvez represente contratos antigos que mantiveram uma condição específica.

Talvez proteja clientes adquiridos numa fusão.

Talvez esteja ligada a uma decisão judicial.

Talvez ninguém da equipe atual conheça todos os detalhes.

Mas o sistema conhece.

Ele carrega aquela regra como a Discovery One carregava instruções secretas sobre sua missão.

O perigo de uma reescrita apressada é remover a condição sem compreender sua origem.

O programa moderno compilará.

Os testes superficiais passarão.

A interface ficará bonita.

E, meses depois, alguém descobrirá que milhares de contratos foram calculados incorretamente.

O erro não estava na nova linguagem.

Estava na perda de conhecimento.


Capítulo 4 — Por que “traduzir para Java” não resolve tudo

Frequentemente aparece a proposta:

“Vamos converter o COBOL para Java.”

Essa frase parece simples porque reduz o problema a uma troca de sintaxe.

Mas modernizar um sistema empresarial é muito mais complexo.

Considere este trecho:

EVALUATE TIPO-OPERACAO
    WHEN "01"
        PERFORM VALIDAR-DEPOSITO
    WHEN "02"
        PERFORM VALIDAR-SAQUE
    WHEN "03"
        PERFORM VALIDAR-TRANSFERENCIA
    WHEN OTHER
        MOVE 12 TO CODIGO-ERRO
END-EVALUATE

Em Java, poderia existir uma estrutura equivalente.

Porém, a questão central não é como converter EVALUATE para switch.

As perguntas importantes são:

Por que o código de erro é 12?

Quem interpreta esse código?

Ele aparece num relatório?

Ele é enviado a outro sistema?

Existe um programa esperando exatamente dois dígitos?

A operação "03" possui regras diferentes em finais de semana?

Há integração com CICS, Db2, VSAM ou IBM MQ?

O programa participa de uma unidade de trabalho?

O que acontece se a gravação ocorrer parcialmente?

Como o sistema realiza recuperação?

Quais controles de auditoria precisam ser preservados?

Qual volume deve ser processado?

Quanto tempo a janela batch permite?

Uma tradução automática pode converter instruções.

Ela não compreende necessariamente a missão completa.

É como reconstruir a inteligência de HAL 9000 apenas traduzindo seus comandos para outra linguagem, sem entender os objetivos contraditórios que governam seu comportamento.


Capítulo 5 — Milhões de horas de produção

Um sistema COBOL antigo possui uma característica difícil de reproduzir: tempo real de uso.

Imagine um programa executado todos os dias durante trinta anos.

Ele passou por:

  • dias comuns;

  • finais de mês;

  • finais de ano;

  • anos bissextos;

  • mudanças de moeda;

  • picos de movimento;

  • falhas de hardware;

  • recuperação de dados;

  • auditorias;

  • alterações de legislação;

  • campanhas comerciais;

  • crises econômicas;

  • migrações de plataforma.

Cada execução revelou problemas.

Cada correção fortaleceu o sistema.

Isso não significa que programas antigos sejam perfeitos.

Sistemas COBOL também possuem defeitos, dívidas técnicas, trechos obscuros e decisões ultrapassadas.

Mas muitos deles foram refinados por décadas de operação real.

Essa maturidade possui enorme valor.

Testes automatizados são fundamentais.

Ambientes de homologação são indispensáveis.

Simulações são úteis.

Porém, nada substitui completamente décadas de comportamento observado em produção.

Um programa que processou bilhões de registros acumulou uma espécie de experiência operacional.

Ele pode não possuir inteligência artificial.

Mas carrega cicatrizes.


Capítulo 6 — O hardware envelheceu, a plataforma evoluiu

Outro erro comum é imaginar que programas COBOL antigos continuam executando exatamente nas mesmas máquinas de quarenta anos atrás.

Em muitos casos, isso não é verdade.

As aplicações foram movidas por diferentes gerações de hardware e software.

A plataforma mainframe evoluiu continuamente.

O IBM Z moderno não é um computador congelado nos anos 1970.

É uma plataforma empresarial contemporânea, projetada para altos volumes, segurança, disponibilidade e integração.

O mesmo ambiente pode reunir:

  • COBOL;

  • Java;

  • Python;

  • Linux;

  • bancos relacionais;

  • mensageria;

  • APIs;

  • automação;

  • observabilidade;

  • ferramentas DevOps;

  • criptografia avançada;

  • inteligência artificial;

  • processamento transacional;

  • processamento batch.

O programa COBOL permanece porque o ecossistema se modernizou ao redor dele.

Imagine uma nave cuja estrutura central é continuamente aperfeiçoada.

Novos motores são instalados.

Os sensores são substituídos.

A navegação é atualizada.

Os canais de comunicação evoluem.

Mas o módulo que controla o oxigênio continua sendo usado porque funciona, foi testado e todos dependem dele.

Substituí-lo apenas para dizer que a nave está “mais moderna” seria irresponsável.


Capítulo 7 — A compatibilidade como filosofia

Uma das maiores forças da cultura mainframe é a continuidade.

Em muitas áreas da tecnologia, uma nova versão pode abandonar rapidamente os sistemas anteriores.

No universo empresarial, isso pode ser desastroso.

Uma empresa investe durante anos em programas, dados, processos, treinamento e integração.

Ela não pode simplesmente descartar tudo a cada mudança tecnológica.

A compatibilidade permite que investimentos antigos continuem produzindo valor.

Isso não significa nunca mudar.

Significa mudar sem destruir.

Essa é uma diferença essencial.

Modernização responsável procura combinar:

  • preservação do que funciona;

  • eliminação de riscos;

  • documentação das regras;

  • criação de testes;

  • exposição por APIs;

  • renovação de interfaces;

  • automação de entrega;

  • melhoria da observabilidade;

  • substituição gradual de componentes.

O objetivo não é conservar cada linha para sempre.

O objetivo é evitar que a modernização se transforme num ABEND corporativo.


Capítulo 8 — O aplicativo moderno e o motor invisível

Imagine uma cliente usando o celular para pagar uma conta.

Ela toca no aplicativo.

A tela mostra uma animação elegante.

Em poucos segundos, aparece:

Pagamento realizado com sucesso.

Por trás dessa experiência podem existir várias camadas:

Aplicativo móvel
       ↓
API Gateway
       ↓
Serviço Java
       ↓
IBM MQ
       ↓
Transação CICS
       ↓
Programa COBOL
       ↓
Db2 ou VSAM

A cliente não precisa conhecer essa arquitetura.

Para ela, tudo é um aplicativo moderno.

Mas o núcleo da transação pode ser um programa COBOL.

Isso demonstra uma verdade importante:

Modernização não exige necessariamente substituição total.

Um programa confiável pode ser encapsulado.

Pode receber chamadas por API.

Pode participar de fluxos modernos.

Pode interagir com aplicações web, dispositivos móveis, mensageria e nuvem híbrida.

O COBOL não precisa aparecer na tela para continuar sendo essencial.

Ele é como o computador central da nave: invisível para os passageiros, decisivo para a missão.


Capítulo 9 — Batch: o turno da madrugada

Durante o dia, sistemas online recebem transações individuais.

Durante a noite, entra em cena outro universo: o processamento batch.

É quando grandes volumes são consolidados.

Extratos são gerados.

Contas são fechadas.

Juros são calculados.

Relatórios são produzidos.

Arquivos são enviados.

Dados são reconciliados.

Um job pode executar vários passos:

//FECHAMEN JOB ...
//STEP01   EXEC PGM=VALIDA01
//ARQENT   DD DSN=BANCO.MOVIMENTO.DIA,DISP=SHR
//ARQSAI   DD DSN=BANCO.MOVIMENTO.OK,
//            DISP=(NEW,CATLG,DELETE)
//STEP02   EXEC PGM=CALCJURO
//STEP03   EXEC PGM=GERAEXTR

Para um iniciante, isso pode parecer apenas uma sequência técnica.

Para a empresa, é uma linha de produção digital.

Se o primeiro passo falha, os seguintes podem não executar.

Se um arquivo está incorreto, o fechamento pode atrasar.

Se o job perde sua janela, o sistema online do dia seguinte pode ser afetado.

Por isso o ambiente mainframe desenvolveu uma cultura intensa de disciplina operacional.

Horários.

Dependências.

Retornos.

Códigos de condição.

Recuperação.

Reprocessamento.

Auditoria.

COBOL sobreviveu também porque se encaixa extraordinariamente bem nesse universo de processamento previsível e volumoso.


Capítulo 10 — Precisão decimal: onde um centavo importa

Muitas linguagens foram criadas com forte orientação científica ou de sistemas.

COBOL foi criado para negócios.

Negócios trabalham com números decimais.

Dinheiro exige precisão.

Considere:

01  VALOR-COMPRA        PIC 9(7)V99.
01  TAXA-DESCONTO       PIC 9(3)V99.
01  VALOR-DESCONTO      PIC 9(7)V99.
01  VALOR-FINAL         PIC 9(7)V99.

COMPUTE VALOR-DESCONTO ROUNDED =
        VALOR-COMPRA * TAXA-DESCONTO / 100

COMPUTE VALOR-FINAL =
        VALOR-COMPRA - VALOR-DESCONTO

Um sistema financeiro precisa definir:

  • quantidade de casas decimais;

  • forma de arredondamento;

  • tamanho máximo;

  • sinal;

  • tratamento de overflow;

  • regras específicas do produto.

Um erro de R$ 0,01 pode parecer pequeno.

Multiplicado por milhões de transações, deixa de ser pequeno.

Além disso, o problema não é apenas o valor total.

É a confiança.

Um cliente que identifica cálculo incorreto começa a questionar todo o sistema.

COBOL foi projetado para tornar estruturas numéricas e formatos empresariais explícitos.

A PICTURE, representada por PIC, funciona como um contrato de dados.

01 VALOR-SALDO PIC S9(11)V99 COMP-3.

Essa declaração informa que existe sinal, onze posições inteiras, duas decimais e representação decimal compactada.

Para um iniciante, parece apenas sintaxe.

Para o sistema, é a forma física do dinheiro.


Capítulo 11 — O perigoso mito do software velho

“Antigo” e “ruim” não são sinônimos.

“Novo” e “bom” também não são.

Um sistema deve ser avaliado por critérios concretos:

  • atende ao negócio?

  • é confiável?

  • possui suporte?

  • é seguro?

  • consegue evoluir?

  • integra-se com outros sistemas?

  • seu custo é justificável?

  • seus riscos são conhecidos?

  • existe mão de obra?

  • há documentação e testes?

  • a arquitetura permite manutenção?

Um programa antigo pode estar bem estruturado, documentado e estável.

Um programa novo pode ser frágil, confuso e inseguro.

A data de criação não determina a qualidade.

O problema real aparece quando o sistema se torna impossível de compreender, manter ou adaptar.

Por isso a pergunta correta não é:

“O COBOL é antigo?”

A pergunta correta é:

“Este sistema ainda entrega valor com risco aceitável?”

Em muitos casos, a resposta continua sendo sim.


Capítulo 12 — Passo a passo para o Padawan COBOL

Ao encontrar um programa antigo, não tente compreender tudo de uma vez.

Aproxime-se como um astronauta examinando um artefato desconhecido.

Primeiro passo: identifique a missão

Leia o cabeçalho.

Procure comentários.

Observe o nome do programa.

Descubra quais dados entram e quais resultados saem.

Pergunte:

Qual problema empresarial este programa resolve?

Segundo passo: examine a Data Division

Comece pelos dados.

WORKING-STORAGE SECTION.

01 WS-CLIENTE.
   05 WS-CODIGO        PIC 9(8).
   05 WS-NOME          PIC X(40).
   05 WS-SALDO         PIC S9(9)V99 COMP-3.
   05 WS-STATUS        PIC X(01).

A estrutura dos dados costuma revelar grande parte da história.

Terceiro passo: localize o fluxo principal

Procure a sequência central:

PROCEDURE DIVISION.

    PERFORM INICIALIZAR
    PERFORM PROCESSAR UNTIL FIM-ARQUIVO
    PERFORM FINALIZAR

    STOP RUN.

Esse é o mapa da missão.

Quarto passo: siga cada PERFORM

Analise uma rotina por vez.

PROCESSAR.
    READ ARQUIVO-CLIENTES
        AT END
            MOVE "S" TO FIM-ARQUIVO
        NOT AT END
            PERFORM VALIDAR-CLIENTE
            PERFORM ATUALIZAR-CLIENTE
    END-READ.

Não pule diretamente para trechos complexos.

Siga o fluxo.

Quinto passo: observe arquivos e bancos

Descubra onde os dados residem.

Pode ser:

  • arquivo sequencial;

  • VSAM;

  • Db2;

  • IMS;

  • fila MQ;

  • área temporária CICS.

Sexto passo: procure códigos de retorno

IF SQLCODE NOT = ZERO
    MOVE 08 TO RETURN-CODE
    PERFORM TRATAR-ERRO
END-IF

Esses pontos revelam como o programa reage a falhas.

Sétimo passo: descubra quem chama o programa

Ele é executado por JCL?

Recebe comando CICS?

É chamado por outro COBOL?

Consome uma mensagem?

É exposto por uma API?

Nenhum programa existe isoladamente.

Oitavo passo: não altere uma regra sem contexto

Antes de remover um IF estranho, descubra:

  • quando foi criado;

  • qual problema resolveu;

  • quais dados o acionam;

  • quem depende dele;

  • quais testes existem.

A linha mais feia do programa pode ser justamente a linha que impede um desastre.


Capítulo 13 — Curiosidades da odisseia COBOL

COBOL nasceu no final da década de 1950, quando a indústria buscava uma linguagem comercial mais portável e compreensível.

Uma figura central nessa história foi Grace Hopper, pioneira na ideia de linguagens mais próximas da comunicação humana e no desenvolvimento de compiladores.

Muitos programas foram escritos numa época em que cada coluna do código possuía significado específico.

O formato tradicional incluía áreas reservadas para numeração, indicadores, conteúdo e identificação.

Daí surgiram marcas culturais conhecidas por programadores experientes, como a famosa coluna 7.

Em ambientes antigos, um asterisco nessa posição podia indicar comentário:

      * ESTE É UM COMENTÁRIO

Outro símbolo conhecido era o hífen na coluna de continuação, usado quando uma instrução precisava prosseguir na linha seguinte.

Essas características faziam sentido em cartões perfurados e formatos rígidos.

O COBOL moderno evoluiu muito e oferece formato livre, recursos estruturados, integração e capacidades que os pioneiros dificilmente imaginariam.

Ainda assim, conhecer as origens ajuda a compreender por que certos programas possuem determinada aparência.

É como encontrar uma seção antiga da Discovery One e perceber que alguns painéis foram projetados segundo tecnologias anteriores à missão atual.


Capítulo 14 — Easter eggs encontrados no setor 3270

Há uma semelhança curiosa entre 2001: Uma Odisseia no Espaço e o universo mainframe.

Na obra, o computador HAL 9000 fala com voz calma.

Ele observa tudo.

Ele controla funções críticas.

Todos dependem dele.

No mainframe, o operador também conversa com uma entidade central.

Não por voz, mas por comandos, mensagens e painéis.

HAL poderia dizer:

“Esta missão é importante demais para permitir que você execute esse job sem validar o parâmetro de data.”

Outro paralelo está no monólito.

Na história, o monólito aparece em momentos de transformação da humanidade.

No mainframe, o manual verde aparece no início da jornada do programador.

Ele também representa uma transformação: o momento em que o estudante deixa de ver COBOL como um fóssil e começa a enxergá-lo como engenharia.

E existe ainda o monólito definitivo:

IEF142I JOB12345 STEP01 - STEP WAS EXECUTED - COND CODE 0000

Para o operador, poucas mensagens possuem tanta beleza.

É o equivalente mainframe da imagem da Terra vista do espaço.


Capítulo 15 — Modernizar não é destruir a nave

Uma estratégia madura de modernização pode seguir etapas.

1. Inventariar

Quais programas existem?

Quais arquivos usam?

Quais tabelas acessam?

Quais jobs os executam?

Quais sistemas dependem deles?

2. Medir

Quais programas são mais utilizados?

Quais consomem mais recursos?

Quais causam mais incidentes?

Quais mudam com maior frequência?

3. Documentar

Mapeie regras de negócio.

Registre dependências.

Explique exceções.

Crie diagramas.

4. Testar

Construa testes de regressão.

Capture entradas e resultados conhecidos.

Compare comportamento antes e depois das mudanças.

5. Modularizar

Separe regras.

Reduza acoplamento.

Crie interfaces claras.

6. Expor serviços

Permita que aplicações modernas utilizem funções COBOL por APIs ou mensageria.

7. Automatizar

Integre compilação, testes, análise e implantação em pipelines.

8. Substituir seletivamente

Componentes problemáticos podem ser reescritos.

Mas isso deve acontecer com evidência, não por moda.

Modernização é uma cirurgia na nave em movimento.

Desligar todos os sistemas e reconstruir do zero raramente é uma opção realista.


Capítulo 16 — A geração que precisa assumir o painel

Existe um argumento frequente:

“Os programadores COBOL estão envelhecendo.”

Essa preocupação é real, mas não significa que a linguagem esteja condenada.

Significa que conhecimento precisa ser transferido.

Empresas devem formar novos profissionais.

Programadores iniciantes precisam aprender mais do que sintaxe.

Precisam compreender:

  • processos empresariais;

  • arquivos;

  • processamento batch;

  • transações online;

  • integridade;

  • recuperação;

  • auditoria;

  • desempenho;

  • segurança;

  • disciplina operacional.

O profissional COBOL não é apenas alguém que escreve MOVE.

Ele é alguém que compreende a relação entre código, dados e negócio.

Um grande programa COBOL pode ser tecnicamente simples e empresarialmente complexo.

Por isso o conhecimento do domínio vale tanto quanto o conhecimento da linguagem.


Capítulo 17 — O que realmente mantém COBOL vivo

COBOL não sobrevive apenas por causa de compatibilidade.

Ele sobrevive por uma combinação de fatores:

  1. Os sistemas continuam cumprindo funções essenciais.

  2. As regras acumuladas possuem enorme valor.

  3. A reescrita completa custa caro e envolve alto risco.

  4. A plataforma moderna continua oferecendo desempenho e suporte.

  5. O processamento empresarial combina naturalmente com os pontos fortes da linguagem.

  6. Sistemas antigos podem ser integrados a arquiteturas modernas.

  7. A continuidade operacional é mais importante do que seguir tendências.

O mercado não preserva tecnologias por caridade.

Ele preserva aquilo que continua entregando valor.

Se COBOL fosse completamente inútil, teria desaparecido há muito tempo.

Sua permanência é resultado de sua utilidade.


Epílogo — Além de Júpiter

Ao final de 2001: Uma Odisseia no Espaço, a jornada não termina numa resposta simples.

Ela termina numa transformação.

O astronauta atravessa o desconhecido e se torna algo diferente.

O programador iniciante também passa por uma transformação quando compreende o COBOL.

No começo, vê uma linguagem antiga.

Depois, vê programas extensos.

Em seguida, percebe arquivos, jobs, transações e bancos.

Mais tarde, enxerga regras de negócio.

Finalmente, entende que o mainframe não é apenas uma máquina.

É uma memória operacional da civilização.

Nele estão registrados salários, seguros, impostos, contratos, contas, benefícios, movimentos logísticos e incontáveis decisões empresariais.

O COBOL permaneceu porque foi construído para esse mundo.

Um mundo no qual os dados precisam fechar.

No qual centavos importam.

No qual auditorias exigem evidências.

No qual sistemas não podem simplesmente “tentar novamente amanhã”.

A pergunta, portanto, não deveria ser:

“Por que COBOL ainda não morreu?”

A pergunta correta é:

“Como uma linguagem criada há mais de seis décadas conseguiu continuar relevante enquanto tantas tecnologias desapareceram?”

A resposta está em sua missão.

COBOL não prometeu mudar o universo.

Prometeu processar negócios com precisão, clareza e confiabilidade.

Cumpriu essa promessa em computadores que já não existem.

Cumpre hoje em sistemas IBM Z modernos.

E poderá continuar cumprindo enquanto organizações precisarem de continuidade, controle e confiança.

Em algum datacenter, o próximo job já entrou na fila.

O JES recebeu a missão.

O programa foi carregado.

Os arquivos foram abertos.

Os registros começaram a atravessar a nave.

No console, uma mensagem aparece:

JOB COBOL001 STARTED

O monólito verde continua de pé.

A odisseia continua.

E o velho programa, silencioso como o espaço, executa mais uma vez exatamente aquilo para o qual foi criado.

BELLACOSA MAINFRAME TEMPORAL SYSTEM
> INICIANDO CONTAGEM HISTÓRICA...

COBOL 00 ANOS

Uma odisseia temporal desde 1º de abril de 1959

DATA DE ORIGEM 01/04/1959
DATA DO SISTEMA CARREGANDO...
TEMPO DECORRIDO CALCULANDO...
SISTEMAS VITAIS OPERACIONAIS
“O código muda. A regra permanece. A missão continua.”

quinta-feira, 10 de maio de 2007

O que é o banco de dados IDMS?

 

Bellacosa Mainframe o que é um banco de dados idms

O que é o banco de dados IDMS?

Se você trabalha ou pretende trabalhar com Mainframe, provavelmente ouvirá falar de Db2, IMS e, em empresas mais antigas, do IDMS.

Embora hoje o Db2 seja muito mais difundido, o IDMS (Integrated Database Management System) continua presente em diversas organizações que executam aplicações críticas desenvolvidas há décadas.


Definição simples

O IDMS é um Sistema Gerenciador de Banco de Dados (SGBD) criado originalmente pela Cullinane Corporation no início da década de 1970, posteriormente adquirido pela Computer Associates (CA Technologies) e hoje pertencente à Broadcom.

Ele foi projetado para computadores de grande porte (mainframes) e utiliza principalmente o modelo de banco de dados em rede (Network Database Model), padronizado pelo grupo CODASYL.

Em resumo:

IDMS é um banco de dados de alta performance para Mainframes baseado no modelo em rede, muito utilizado antes da popularização dos bancos relacionais.


Origem do nome

IDMS significa:

Integrated Database Management System

Ou seja:

Sistema Integrado de Gerenciamento de Banco de Dados.


Um pouco de história

Na década de 1970 praticamente não existiam bancos relacionais comerciais.

Os principais modelos eram:

  • Hierárquico (IMS)

  • Em Rede (IDMS)

  • Arquivos Sequenciais

  • VSAM

O IDMS rapidamente tornou-se um dos bancos mais utilizados em ambientes corporativos.

Era comum encontrá-lo em:

  • bancos;

  • seguradoras;

  • governos;

  • telecomunicações;

  • indústrias.


A empresa responsável

Linha do tempo:

1972

Cullinane Corporation

Cullinet Software

Computer Associates (CA)

CA Technologies

Broadcom

Mesmo após diversas aquisições, o produto continua sendo mantido.


O modelo em rede (Network Database)

O IDMS não é relacional.

Ele utiliza registros ligados diretamente entre si.

Imagine uma árvore genealógica onde uma pessoa pode possuir vários relacionamentos simultaneamente.

Exemplo:

CLIENTE
    │
    ├────────CONTA
    │
    ├────────EMPRÉSTIMO
    │
    └────────CARTÃO

Cada registro conhece diretamente seus relacionamentos.

Não existe JOIN como no SQL tradicional.


Como funciona

O programador navega pelo banco.

Em vez de perguntar:

SELECT *
FROM CLIENTE
JOIN CONTA

Ele faz algo parecido com:

Encontrar CLIENTE

↓

Ir para CONTA

↓

Ir para CARTÃO

↓

Ir para EMPRÉSTIMO

É chamada de navegação por ponteiros.


O conceito de SET

A estrutura principal do IDMS chama-se SET.

Um SET representa um relacionamento.

Exemplo:

CLIENTE

↓

SET

↓

CONTA

Ou

DEPARTAMENTO

↓

SET

↓

FUNCIONÁRIO

OWNER e MEMBER

Cada relacionamento possui:

OWNER

Registro principal.

MEMBER

Registro dependente.

Exemplo:

CLIENTE (OWNER)

↓

CONTA (MEMBER)

Banco orientado a navegação

O IDMS não procura dados como um banco SQL moderno.

Ele percorre caminhos previamente definidos.

CLIENTE

↓

CONTA

↓

MOVIMENTO

↓

LANÇAMENTO

Por isso era extremamente rápido.


Linguagens utilizadas

O IDMS possui integração com:

  • COBOL

  • PL/I

  • Assembler

  • C

O COBOL foi, de longe, a linguagem mais utilizada.


DML do IDMS

Em vez de SQL, o programador utiliza comandos específicos.

Exemplos:

  • FIND

  • GET

  • STORE

  • MODIFY

  • ERASE

  • CONNECT

  • DISCONNECT


Exemplo

Em COBOL:

FIND CLIENTE

↓

GET CONTA

↓

MODIFY CONTA

SQL existe?

Sim.

Versões modernas possuem suporte SQL.

Mas milhares de aplicações continuam usando a DML tradicional.


Estrutura física

O banco é dividido em:

  • Área (Area)

  • Página (Page)

  • Registro (Record)

  • Set

  • Segmentos

Tudo cuidadosamente organizado para reduzir acesso a disco.


Vantagens

Performance

Extremamente rápida.


Pouco espaço

Muito eficiente.


Alta estabilidade

Muitas bases funcionam há décadas.


Grande escalabilidade

Milhões de registros.


Excelente integração com COBOL

Foi desenvolvido pensando nisso.


Desvantagens

Curva de aprendizado

Maior que SQL.


Navegação complexa

Exige conhecer o modelo.


Poucos profissionais

Hoje existem poucos especialistas.


Menor flexibilidade

Mudanças estruturais costumam ser mais trabalhosas.


Onde ainda é utilizado?

Ainda pode ser encontrado em:

  • bancos;

  • seguradoras;

  • previdência;

  • órgãos públicos;

  • sistemas fiscais;

  • empresas de telecomunicações.

Principalmente em aplicações desenvolvidas entre os anos 1970 e 1990.


IDMS x IMS

IDMSIMS
RedeHierárquico
CODASYLIBM
PonteirosHierarquia
Mais flexívelMais rígido

IDMS x Db2

IDMSDb2
RedeRelacional
NavegaçãoSQL
SETJOIN
PonteirosÍndices

Curiosidades

1. O IDMS ajudou a popularizar o modelo CODASYL

Antes do domínio dos bancos relacionais, o padrão CODASYL era amplamente adotado para aplicações corporativas de alto desempenho, e o IDMS tornou-se sua implementação comercial mais conhecida.


2. Muitas empresas ainda executam aplicações IDMS

Apesar da idade da tecnologia, existem sistemas que processam operações críticas diariamente, especialmente em grandes organizações que investem em estabilidade e continuidade.


3. O desempenho sempre foi um diferencial

Como os relacionamentos são feitos por ponteiros, muitas operações de navegação podem ser extremamente rápidas, sem a necessidade de realizar junções complexas entre tabelas.


4. Modernização sem substituição

Em diversas empresas, aplicações COBOL que utilizam IDMS vêm sendo modernizadas por meio de APIs e integrações, mantendo o banco de dados em produção enquanto novas interfaces são desenvolvidas.


Erros comuns de iniciantes

"IDMS é um banco relacional"

Não. Seu modelo principal é o banco de dados em rede (Network Database) baseado no padrão CODASYL.


"Ele foi substituído completamente pelo Db2"

Embora muitas organizações tenham migrado para bancos relacionais, ainda existem ambientes produtivos que utilizam IDMS por sua estabilidade e desempenho.


"Quem aprende IDMS está estudando uma tecnologia morta"

O mercado é menor do que o de Db2, mas profissionais que dominam COBOL e IDMS continuam sendo procurados em empresas que mantêm aplicações legadas críticas.


Vale a pena aprender?

Se você pretende trabalhar em bancos, seguradoras, governo ou grandes empresas com sistemas legados, conhecer os conceitos do IDMS pode ser um diferencial importante.

Mesmo que seu foco principal seja Db2, estudar IDMS ajuda a compreender a evolução dos bancos de dados corporativos e dos modelos de navegação que influenciaram muitas tecnologias modernas.


Conclusão

O IDMS é um dos bancos de dados mais importantes da história do Mainframe. Baseado no modelo CODASYL em rede, ele foi projetado para oferecer alta performance e confiabilidade em aplicações corporativas críticas. Embora tenha sido ofuscado pelos bancos relacionais, continua presente em diversos ambientes produtivos e representa um capítulo fundamental da evolução dos sistemas de informação. Para um programador COBOL, compreender seus conceitos amplia a visão sobre arquiteturas legadas e facilita a manutenção e modernização de sistemas que ainda movimentam negócios em todo o mundo.

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...