Pular para o conteúdo principal

COBOL: A Linguagem Imortal que Controla seu Dinheiro (Edição Definitiva)

Publicado em 27 de dezembro de 202555 min de leitura
Imagem de tecnologia relacionada ao artigo cobol-bancos-mainframe-decimal-arithmetic

COBOL: A Linguagem Imortal que Controla seu Dinheiro

Se você perguntar a um estudante de TI o que ele está estudando, ele dirá React, Python, Rust ou AI. Ninguém diz "Estou estudando COBOL". A linguagem é vista como uma piada, um fóssil, algo que deveria estar em um museu ao lado dos cartões perfurados.

Mas aqui está a realidade estatística fria:

  • A cada dia, o Google processa cerca de 9 bilhões de buscas.
  • A cada dia, sistemas COBOL processam cerca de 300 bilhões de transações financeiras.

Quando você passa o cartão de crédito, quando seu salário cai na conta, quando você paga um seguro, reserva um voo ou quando o governo emite um cheque de aposentadoria: é COBOL.

Estima-se que existam mais de 250 bilhões de linhas de código COBOL ativas em produção no mundo. E esse número está crescendo, não diminuindo.

Entender por que essa tecnologia de 1959 permanece soberana é lição obrigatória de arquitetura e pragmatismo. Vamos explorar a precisão matemática decimal que a torna insubstituível e por que, em um mundo de nuvem e microsserviços, o "Big Iron" continua sendo o pilar invisível da economia global.

Parte 1: O "Santo Graal" Decimal

O Mainframe clássico e seus tapes

A principal razão pela qual o COBOL sobrevive não é inércia, nem preguiça. É matemática. Sistemas bancários exigem precisão absoluta. Se você transfere R$ 100,00, tem que chegar R$ 100,00. Não pode chegar R$ 99,99999999.

O Problema do Ponto Flutuante (IEEE 754)

Linguagens modernas (Java, C, Python, JavaScript) usam, por padrão, aritmética de ponto flutuante binário (float ou double) para representar números reais. O problema é que computadores binários não conseguem representar frações decimais simples (como 0.1 ou 0.2) com exatidão, assim como nós não conseguimos escrever 1/3 (0.333...) com exatidão em decimal.

Teste no console do seu navegador (JavaScript):

javascript
0.1 + 0.2 === 0.3
// false
// Resultado real: 0.30000000000000004

Esse erro microscópico é chamado de "erro de arredondamento". Em um jogo 3D, ninguém liga se a bala passou 0.0000001 mm para o lado. Em um banco que processa trilhões de dólares, esses erros se acumulam. Milhões de centavos desaparecem (ou aparecem) do nada nos balanços contábeis.

A Solução COBOL: PACKED-DECIMAL

O COBOL foi projetado com um tipo de dado nativo chamado Fixed Point Decimal. Ele não converte o número para binário aproximado. Ele armazena cada dígito decimal 0-9 exatamente como ele é no hardware, usando 4 bits (BCD - Binary Coded Decimal).

Exemplo de declaração COBOL:

cobol
01 SALDO-CONTA          PIC S9(13)V99 COMP-3.
  • S: Tem sinal (pode ser negativo).
  • 9(13): Tem 13 dígitos antes da vírgula.
  • V99: Tem 2 dígitos depois da vírgula (centavos) implícitos.
  • COMP-3: Formato empacotado (Packed Decimal).

Toda a matemática feita com essa variável é garantida pelo hardware do Mainframe (IBM Z-Series tem instruções de CPU específicas para somar BCDs) para ser perfeita, dígito por dígito. É a ferramenta certa para o trabalho.


Parte 2: O Ecossistema do Mainframe (Big Iron)

COBOL não roda no vácuo. Ele vive dentro de um ecossistema robusto chamado Mainframe. Esqueça a Nuvem. A Nuvem é feita de "Commodity Hardware" (milhares de computadores baratos que podem quebrar a qualquer momento, e o software lida com a falha).

O Mainframe é o oposto: Hardware Indestrutível.

  • Processadores redundantes: Se uma CPU queima a 5GHz, outra assume sem interromper o cálculo.
  • Memória com correção de erro avançada (RAIM).
  • I/O Channel Subsystem: Processadores dedicados só para mover dados de disco, liberando a CPU principal.

CICS: O Servidor de Aplicação Original

O COBOL roda frequentemente dentro de um monitor de transações chamado CICS (Customer Information Control System). O CICS é capaz de lidar com milhares de transações simultâneas de forma incrivelmente eficiente. Ele gerenciava "microserviços" décadas antes do termo existir.

Um programa COBOL/CICS bem escrito é surpreendentemente rápido. Ele lê um registro do banco de dados (DB2), atualiza o saldo e escreve o log em microssegundos.


Parte 3: A Linguagem que Fala Inglês

O COBOL foi criado por um comitê liderado informalmente pela lendária Almirante Grace Hopper. A filosofia dela era: "Linguagens de programação devem ser legíveis por gerentes de negócios, não apenas matemáticos."

Por isso, o COBOL parece inglês gritado (tudo em maiúsculas).

cobol
IF SALDO IS LESS THAN VALOR-SAQUE
    PERFORM REJEITAR-TRANSACAO
ELSE
    SUBTRACT VALOR-SAQUE FROM SALDO
    PERFORM ATUALIZAR-SALDO
END-IF.

É verboso? Sim. É fácil de entender o negócio 30 anos depois? Sim. Código C++ ou Java cheio de abstrações, classes genéricas e lambdas pode ser impenetrável. O COBOL é procedural e direto. "Pegue isso, some aquilo, grave ali". Isso facilita a manutenção de longo prazo.


Parte 4: Por Que Não Reescrever? (O Pesadelo da Migração)

Todo CIO (Chief Information Officer) de banco sonha em "Desligar o Mainframe". Eles iniciam projetos de "Modernização" que duram 5 anos e custam 500 milhões de dólares. A maioria falha.

Exemplo: Commonwealth Bank of Australia Eles conseguiram migrar para Java/SAP em 2012. Custou 750 milhões de dólares (o estimado era muito menos) e levou 5 anos. Foi um sucesso, mas o custo e o risco aterrorizaram outros bancos.

Exemplo: TSB Bank (Reino Unido - 2018) Tentaram migrar de uma plataforma legada para uma nova. Resultado: 1.9 milhão de clientes perderam acesso às contas por semanas. Custou ao banco 330 milhões de libras e a cabeça do CEO.

O Problema das Regras de Negócio Perdidas: Em um sistema de 40 anos, a documentação não existe. A "verdade" está no código. Lá no meio de 10 milhões de linhas, tem uma regra: "Se a conta for poupança rural aberta antes de 1985 e o titular tiver isenção fiscal X, aplique taxa Y." Ninguém sabe que isso existe. Ao reescrever em Java, o programador novo esquece essa regra (ou não a vê). O sistema novo entra no ar, cobra errado e o banco é processado.

"Um sistema complexo que funciona é invariavelmente descoberto como tendo evoluído de um sistema simples que funcionava. Um sistema complexo projetado do zero nunca funciona e não pode ser consertado para funcionar."


Apêndice Técnico A: O Dicionário do Mainframe

Para sobreviver em um banco, você precisa saber estes termos:

Dicionário do Mainframe

  • JCL (Job Control Language): A linguagem de script usada para dizer ao sistema operacional o que executar. É famosa por sua sintaxe horrível (//DD SYSOUT=*). É como o Bash do mainframe, só que pior.
  • Dataset: Como se chama um "arquivo" no mainframe. Ex: BANCO.PROD.CONTAS.
  • VSAM (Virtual Storage Access Method): O sistema de arquivos de alta performance da IBM. Permite acesso indexado rápido (KSDS). A maioria dos dados bancários vive aqui ou no DB2.
  • EBCDIC: O sistema de codificação de caracteres usado pela IBM. É o "rival" do ASCII. No EBCDIC, as letras não são sequenciais (H e I são vizinhos, mas I e J têm um buraco no meio). Isso causa dores de cabeça gigantescas em conversões de dados.
  • Copybook: Um arquivo que contém a definição de uma estrutura de dados (como um .h em C). Todos os programas importam o mesmo copybook para garantir que concordam sobre o layout dos dados.
  • Batch Processing: Processamento em lote. O oposto de "online". É o que roda de madrugada para fechar o balanço do dia, calcular juros de milhões de contas e gerar relatórios. O Mainframe é o rei absoluto do Batch.
  • TSO/ISPF: A tela verde (terminal) onde os programadores trabalham. É o IDE do mainframe.

Apêndice Técnico B: Estrutura de um Programa COBOL

O COBOL é rígido. Todo programa tem 4 divisões obrigatórias.

cobol
HEAD-DIVISION.
       PROGRAM-ID. HELLO-WORLD.
       
       ENVIRONMENT-DIVISION.
       CONFIGURATION-SECTION.
       * Define em qual computador vai rodar (sobra histórica).
       
       DATA-DIVISION.
       WORKING-STORAGE SECTION.
       * Define as variáveis.
       01 MENSAGEM PIC X(20) VALUE 'HELLO, BANKING WORLD'.
       01 CONTADOR PIC 9(02) VALUE ZERO.
       
       PROCEDURE-DIVISION.
       MAIN-LOGIC.
           PERFORM VARYING CONTADOR FROM 1 BY 1 UNTIL CONTADOR > 5
               DISPLAY MENSAGEM
           END-PERFORM.
           STOP RUN.

Tudo tem que estar nas colunas certas.

  • Colunas 1-6: Numeração de linha (ignorado).
  • Coluna 7: Indicador de comentário (*) ou continuação (-).
  • Colunas 8-11: Área A (Divisões, Seções).
  • Colunas 12-72: Área B (Código real).

Apêndice Técnico C: MIPS e Custos

Como o mainframe é cobrado? Não é por servidor. É por uso. A unidade é MIPS (Millions of Instructions Per Second) ou MSU (Million Service Units). A IBM cobra o software mensalmente baseado no pico de uso de CPU.

Isso cria uma obsessão por otimização. Se você economizar 1 milissegundo em uma transação que roda 10 milhões de vezes por dia, você economiza milhares de dólares por mês na conta da IBM. Por isso o código COBOL é ultra-otimizado. Programadores contam bytes e ciclos de CPU. Em um mundo de nuvem onde "máquina é barata", essa mentalidade é alienígena.


Perguntas Frequentes (FAQ)

Q: O COBOL está morto? R: Não. Ele é zumbi. Ele não cresce muito, mas não morre. Novos projetos raramente começam em COBOL, mas os sistemas vitais existentes são mantidos e expandidos.

Q: Quanto ganha um programador COBOL? R: Bem. Como a oferta de mão de obra está caindo (aposentadoria) e a demanda é constante, os salários são altos para especialistas sêniores. No entanto, é um trabalho de manutenção, não de criação inovadora.

Q: Como aprendo COBOL hoje? R: A IBM oferece cursos gratuitos e acesso a mainframes reais via o projeto Open Mainframe Project. O VS Code tem extensões excelentes para COBOL (como a da Broadcom), então você não precisa mais usar a tela verde feia se não quiser.

Q: IA vai traduzir COBOL para Java? R: A IBM lançou o Watsonx Code Assistant for Z em 2023, que usa LLMs treinados especificamente para traduzir COBOL para Java. É promissor, mas exige supervisão humana total. Traduzir sintaxe é fácil; traduzir a lógica de negócio embutida e garantir que a aritmética decimal permaneça precisa é o desafio.

Q: O que aconteceu em Nova Jersey na pandemia? R: Em abril de 2020, o governador de Nova Jersey foi à TV pedir desesperadamente por voluntários que soubessem COBOL. O sistema de seguro-desemprego do estado (feito nos anos 80) colapsou sob o volume de pedidos da COVID-19. Isso provou ao mundo que a infraestrutura crítica ainda depende desses códigos antigos.


Referências Bibliográficas

  1. IBM Redbooks. A biblioteca técnica oficial da IBM.
  2. Grace Hopper. " The Education of a Computer".
  3. Reuters. "COBOL blues". Reportagens sobre a crise de talentos.
  4. Micro Focus. Relatórios sobre o mercado de modernização.

Este artigo foi expandido em Dezembro de 2025 para incluir a crise de talentos da pandemia e as novas ferramentas de IA.

Imagem de tecnologia relacionada ao artigo cobol-bancos-mainframe-decimal-arithmetic