COBOL: O código que move o mundo (e precisa de você!)

O governador de Nova Jersey mencionou recentemente o COBOL, uma linguagem de programação com seis décadas de existência. Mas afinal, o que é exatamente o COBOL? E por que, apesar de poucos ainda saberem como utilizá-lo, ele continua sendo fundamental para o mundo financeiro?

As Raízes do COBOL

Grace Hopper foi uma figura notável. Com um doutorado em matemática pela Universidade de Yale, lecionou em Vassar e alcançou o posto de contra-almirante na Marinha dos EUA. Suas contribuições para a área da computação são tão impactantes que diversas instituições e programas foram criados em sua homenagem. O Centro Nacional de Computação Científica de Pesquisa Energética nomeou seu supercomputador Cray XE6 em sua honra. Além disso, a Marinha nomeou um destróier de mísseis teleguiados, o USS Hopper, em homenagem a ela. O lema do navio, “Aude et Effice” (“Ouse e Faça”), parece ter sido inspirado na própria Hopper.

Com o objetivo de criar uma linguagem de programação mais próxima do inglês do que a linguagem de máquina, Hopper desenvolveu o primeiro compilador. Esse avanço abriu caminho para as primeiras linguagens compiladas, como o FLOW-MATIC. Isso a levou a participar da Conferência/Comitê de Linguagens de Sistemas de Dados (CODASYL) em 1959.

Hopper também teve um papel crucial na especificação e no desenvolvimento da Linguagem Comum Orientada para Negócios (COBOL). A primeira reunião ocorreu em 23 de junho de 1959, e o relatório e especificação da linguagem COBOL foram divulgados em abril de 1960.

O Caráter Inovador do COBOL

O COBOL introduziu conceitos inovadores. Um dos mais significativos foi a capacidade de operar em hardwares de diferentes fabricantes, o que era algo inédito na época.

A linguagem era detalhada e oferecia um vocabulário semelhante ao inglês para os programadores. Ela foi concebida para lidar com grandes volumes de dados e com alta precisão matemática.

Seu vocabulário de palavras reservadas (as palavras que constituem a linguagem) chega a quase 400. Um programador combina essas palavras reservadas para criar um programa com sentido sintático.

Qualquer programador que conheça outras linguagens perceberá que 400 é um número elevado de palavras reservadas. Para fins de comparação, a linguagem C possui 32, e o Python, 33.

Outra particularidade do COBOL é a exigência de que certas linhas do programa comecem em colunas específicas. Essa característica é uma herança da época dos cartões perfurados. Hoje em dia, os programadores têm mais liberdade ao formatar o COBOL e não precisam mais usar somente letras maiúsculas. Isso torna o trabalho com a linguagem menos rígido e formal, mas ainda reflete sua origem, como demonstrado a seguir:

IDENTIFICATION DIVISION.
  PROGRAM-ID. Hello-World.
  DATA DIVISION.
  FILE SECTION.
  WORKING-STORAGE SECTION.
  PROCEDURE DIVISION.
  MAIN-PROCEDURE.
      DISPLAY "Hello world, from How-To Geek!"
      STOP RUN.
  END PROGRAM Hello-World.

O Sucesso do COBOL

A maioria das transações em caixas eletrônicos ainda utiliza o COBOL.

Por mais que possa parecer antiquado hoje, o COBOL foi revolucionário quando foi lançado. Ele encontrou grande adesão no setor financeiro, no governo federal e em grandes corporações. Isso se deve à sua escalabilidade, capacidade de processamento em lote e precisão matemática. Instalado em mainframes em todo o mundo, o COBOL se estabeleceu e prosperou, tornando-se uma tecnologia difícil de ser superada.

Nossa dependência de sistemas que ainda rodam em COBOL é surpreendente. Um relatório da Reuters de 2017 revelou estatísticas surpreendentes:

Existem 220 bilhões de linhas de código COBOL em uso atualmente.
O COBOL é a base de 43% de todos os sistemas bancários.
Sistemas baseados em COBOL processam US$ 3 trilhões em transações diárias.
O COBOL gerencia 95% de todas as operações de cartões em caixas eletrônicos.
O COBOL viabiliza 80% de todas as transações pessoais com cartões de crédito.

Como se pode observar, é difícil passar um dia sem utilizar um sistema que dependa do COBOL. Contas bancárias, serviços de compensação de cheques e infraestruturas públicas como caixas eletrônicos e semáforos ainda são controlados por esse código criado há décadas.

O Desafio do COBOL

Os programadores que conhecem COBOL estão aposentados, se aproximando da aposentadoria ou já faleceram. Estamos perdendo gradualmente as pessoas com as habilidades necessárias para manter esses sistemas essenciais em funcionamento. Programadores novos e mais jovens não têm conhecimento de COBOL, e muitos também não têm interesse em trabalhar em sistemas que exigem a manutenção de códigos antigos ou o desenvolvimento de novos códigos.

A situação é tão crítica que Bill Hinshaw, um veterano do COBOL, foi obrigado a sair da aposentadoria para fundar a COBOL Cowboys. Essa consultoria privada atende a clientes corporativos que não encontram programadores experientes em COBOL. Os “jovens” da COBOL Cowboys (cujo lema é “Not Our First Rodeo”) têm cerca de 50 anos e acreditam que 90% dos sistemas de negócios das empresas listadas na Fortune 500 são executados em COBOL.

Naturalmente, empresas privadas, corporações e bancos não são os únicos que precisam processar grandes volumes de dados financeiros. Os serviços governamentais em nível federal, estadual e local têm as mesmas necessidades. Assim como os outros, eles usam mainframes e COBOL para isso.

A terrível pandemia de coronavírus causou sofrimento, perdas e incerteza econômica para empresários, empregados e autônomos. O grande número de pessoas afastadas e demitidas em Nova Jersey fez com que o governador apelasse por programadores COBOL experientes para auxiliar os sistemas antigos do estado, que estão com dificuldades para lidar com os 326.000 novos registros.

O Projeto Open Mainframe está liderando uma iniciativa de voluntariado para ajudar. Se você acredita que pode contribuir, eles ficarão felizes em receber seu contato.

Nova Jersey não está sozinha nessa situação. Mais de 10 milhões de pessoas se inscreveram para receber auxílio-desemprego, e esse número continua crescendo. Connecticut está enfrentando dificuldades para processar 250.000 novos registros nos sistemas de 40 anos do estado.

Este é um problema generalizado e profundamente enraizado. Um relatório de 2016 do Government Accountability Office mencionou sistemas COBOL em operação em mainframes com até 53 anos de idade. Isso inclui sistemas utilizados para processar dados do Departamento de Assuntos de Veteranos, do Departamento de Justiça e da Administração da Seguridade Social.

Por que a Migração e a Modernização Não Ocorreram Antes?

A modernização desses sistemas legados não é tão simples quanto parece. Os sistemas são pilares essenciais, em operação 24 horas por dia, 7 dias por semana, nos quais se baseiam os mundos financeiro, governamental e empresarial. O código é antigo, complexo e, muitas vezes, mal ou totalmente não documentado. Além disso, ele precisa funcionar o tempo todo. A perspectiva foi comparada a retirar as hélices de um avião e tentar instalar motores a jato enquanto ele está em voo.

Além do risco, a justificativa econômica para migrar para sistemas modernos também é difícil. O montante de dinheiro investido na manutenção desses mainframes e aplicativos COBOL é impressionante. As instituições deveriam descartar tudo e começar de novo enquanto o código COBOL ainda está funcionando? É uma decisão difícil para um conselho que provavelmente não tem inclinação técnica. Uma migração do COBOL não será um processo rápido nem barato.

“Acabei de sair de uma conversão para ir de COBOL para Java”, disse Hinshaw. “Levou quatro anos e ainda não está concluído.”

Quando o Commonwealth Bank of Australia substituiu sua plataforma central COBOL em 2012, o processo levou cinco anos e teve um custo final de US$ 749,9 milhões (US$ 1 bilhão na Austrália).

E isso quando tudo corre como planejado. O banco britânico TSB foi obrigado a migrar de um sistema baseado em COBOL em 2018 devido a uma aquisição. O processo não correu bem. Como o banco ficou incapacitado de operar por vários dias, o custo da migração chegou a 330 milhões de libras. Isso foi adicionado ao custo inicial do trabalho de engenharia para a migração propriamente dita. A TSB também perdeu 49,1 milhões de libras devido a fraudes financeiras enquanto seus sistemas estavam instáveis.

A compensação aos clientes somou 125 milhões de libras, e o banco teve que gastar 122 milhões de libras contratando novos funcionários para lidar com os 204.000 casos de reclamações de clientes. O diretor-executivo renunciou ao cargo, e a empresa ainda está tentando se recuperar dos danos dois anos após o incidente.

O Dilema do COBOL

A situação não pode permanecer como está, mas a perspectiva de fazer algo a respeito não é animadora. No entanto, a única maneira de melhorar é realizar migrações controladas e cuidadosas para softwares e hardwares modernos.

Para alcançar esse objetivo sem interrupções, perda de dados e períodos de inatividade, serão necessários conhecimentos atuais e recursos financeiros, o que representa 50% da equação. A outra metade é experiência e tempo em COBOL. Infelizmente, esses são exatamente os dois ingredientes que estão em falta.

Talvez uma nova geração de “COBOL cowboys” chegue para resolver esse problema.