☕ 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 I. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta I. Mostrar todas as mensagens

segunda-feira, 9 de novembro de 2026

📚 FAIRY TAIL: LEVY McGARDEN DECIFRA O FEITIÇO SECRETO DA IBM — COMO ACELERAR UM COBOL DE 30 ANOS SEM ALTERAR UMA LINHA DO CÓDIGO!


☕ UM CAFÉ NO BELLACOSA MAINFRAME

📚 FAIRY TAIL: LEVY McGARDEN DECIFRA O FEITIÇO SECRETO DA IBM — COMO ACELERAR UM COBOL DE 30 ANOS SEM ALTERAR UMA LINHA DO CÓDIGO!

Bellacosa Mainframe — Arqueologia da Computação, COBOL, IBM Z, Inteligência Artificial e os Mistérios da Tecnologia

Uma aventura sob a tutela de Levy McGarden, de Fairy Tail, para descobrir por que modernizar um sistema não significa necessariamente reescrevê-lo.



🎬 Prólogo — 03h17: um livro de 1995 começou a brilhar no CPD

Magnolia estava silenciosa.

Na sede da guilda Fairy Tail, quase todos dormiam. Natsu Dragneel provavelmente sonhava com alguma batalha envolvendo dragões. Happy sonhava com peixes. Lucy Heartfilia tentava encontrar alguns minutos de tranquilidade.

Mas Levy McGarden continuava acordada.

Sobre sua mesa havia um livro muito diferente dos grimórios encontrados nas antigas bibliotecas de Fiore.

A capa estava desbotada.

O título dizia:

ENTERPRISE COBOL — SISTEMA DE FATURAMENTO — 1995

Levy ajeitou a faixa nos cabelos azuis e começou a examinar as páginas.

       IDENTIFICATION DIVISION.
       PROGRAM-ID. FATURA95.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-VALOR PIC 9(9)V99 COMP-3.
       01 WS-TAXA  PIC 9V9999 COMP-3.
       01 WS-TOTAL PIC 9(9)V99 COMP-3.

       PROCEDURE DIVISION.
           MOVE 15000 TO WS-VALOR
           MOVE 0.0250 TO WS-TAXA

           COMPUTE WS-TOTAL =
               WS-VALOR * WS-TAXA

           DISPLAY WS-TOTAL
           GOBACK.

— Que linguagem interessante! — exclamou.

Levy estava acostumada a decifrar inscrições antigas, símbolos mágicos e alfabetos desaparecidos. Entretanto, aquele código apresentava uma peculiaridade.

Não parecia uma língua morta.

Muito pelo contrário.

Segundo a documentação que acompanhava o livro, programas semelhantes ainda processavam operações em bancos, seguradoras, indústrias e grandes organizações.

Gajeel Redfox apareceu na porta.

— Ei, baixinha! Por que está lendo esse negócio antigo?

— Porque descobri algo extraordinário, Gajeel! Um programa pode ter trinta anos e continuar executando perfeitamente.

— E daí?

Levy mostrou uma segunda página.

Nela aparecia uma expressão misteriosa:

IBM COBOL Elevate for z/OS — Accelerate

Abaixo, uma frase em alemão:

COBOL schneller. Sourcecode unverändert.

Em português:

COBOL mais rápido. Código-fonte inalterado.

Gajeel franziu a testa.

— Quer dizer que podemos deixar o programa mais forte sem mudar suas palavras?

Levy sorriu.

— Exatamente. E vamos descobrir como isso funciona.

Naquela madrugada começava uma das investigações mais curiosas da história da guilda.



📖 Capítulo I — Quem é Levy McGarden e por que ela é a professora ideal para ensinar COBOL?

Levy McGarden é uma personagem criada por Hiro Mashima para o universo de Fairy Tail, mangá iniciado em 2006.

Integrante da guilda Fairy Tail e do grupo Shadow Gear, Levy não costuma resolver seus desafios apenas por meio de força física.

Sua principal especialidade é o conhecimento.

Ela estuda idiomas, interpreta textos antigos, investiga documentos e utiliza uma forma de magia conhecida como Solid Script, capaz de materializar palavras e produzir efeitos mágicos.

É uma escolha particularmente interessante para acompanhar nossa investigação.

Porque um programa de computador também começa como linguagem escrita.

Um programador utiliza palavras, regras e estruturas para representar instruções.

Entretanto, diferentemente da magia de Levy, um computador não compreende diretamente a intenção humana.

Ele precisa de um processo de tradução.

No COBOL, esse processo envolve o compilador.

Imagine que Levy escreva a palavra:

FIRE

Em seu universo, a magia pode transformar a palavra em uma manifestação de fogo.

Agora imagine um programador COBOL escrevendo:

       ADD 100 TO WS-SALDO.

O computador não executa literalmente as letras ADD, TO e WS-SALDO.

O compilador analisa a instrução e gera uma representação executável adequada à arquitetura de destino.

A relação é semelhante apenas como metáfora: nos dois casos, existe uma linguagem cuja interpretação produz um resultado.

Mas, na computação, esse resultado depende de regras formais, tipos de dados, arquitetura de processadores e instruções de máquina.

Primeira lição de Levy: compreender a linguagem é o primeiro passo para compreender o sistema.

E, no caso do COBOL, muitas decisões importantes acontecem depois que o programador termina de escrever o fonte.



🖥️ Capítulo II — 1959: o nascimento de uma linguagem que se recusou a desaparecer

Levy abriu um segundo livro.

Na primeira página havia uma data:

1959.

Foi naquele ano que surgiu o esforço de padronização que originaria o COBOL, sigla de Common Business-Oriented Language.

Naquela época, computadores eram equipamentos enormes, caros e utilizados principalmente por governos, universidades e grandes organizações.

Os sistemas empresariais precisavam processar folhas de pagamento, contas, registros contábeis, estoques e operações financeiras.

O problema era que os computadores eram muito diferentes entre si.

Uma aplicação escrita para determinada máquina frequentemente precisava passar por adaptações significativas para executar em outra.

O COBOL foi concebido com uma preocupação importante: permitir que as regras de processamento de negócios fossem expressas de maneira relativamente próxima da linguagem humana, com forte orientação a dados e registros.

Por isso encontramos construções como:

       IF WS-SALDO > WS-LIMITE
           DISPLAY "LIMITE EXCEDIDO"
       END-IF.

Mesmo alguém que nunca estudou COBOL consegue perceber parte da intenção.

Se o saldo ultrapassar o limite, exiba uma mensagem.

Mas Levy encontrou outra característica essencial.

O COBOL não foi desenvolvido apenas para produzir resultados rapidamente.

Ele também deveria representar regras empresariais com precisão.

Em sistemas financeiros, pequenas diferenças podem ser inaceitáveis.

Uma alteração indevida no arredondamento de juros, por exemplo, pode provocar divergências quando aplicada a milhões de contratos.

Por isso, programas antigos podem carregar conhecimentos valiosos que não estão documentados em nenhum outro lugar.

Uma linha de código pode representar uma exigência legal.

Um cálculo pode reproduzir uma convenção financeira.

Uma validação aparentemente desnecessária pode ter sido introduzida após um incidente ocorrido décadas atrás.

Levy percebeu o perigo.

— Gajeel, imagine encontrar um grimório com trezentos anos de conhecimento. Você arrancaria suas páginas apenas porque a capa ficou velha?

— Claro que não!

— Então por que algumas empresas imaginam que modernizar COBOL significa necessariamente reescrever tudo?

A pergunta nos leva ao próximo capítulo.



🏰 Capítulo III — IBM Z: o castelo onde vivem os programas antigos

Em nossa aventura, a guilda encontra uma instalação tecnológica tão impressionante quanto qualquer fortaleza de Fiore.

No centro da sala existe um sistema IBM Z.

Os mainframes IBM são computadores empresariais projetados para executar cargas de trabalho críticas, com recursos de disponibilidade, segurança, virtualização e processamento de transações.

Eles são utilizados em diferentes setores, incluindo serviços financeiros, seguros e administração pública.

Mas existe uma confusão muito comum entre iniciantes:

Mainframe não é sinônimo de COBOL.

O mainframe é a plataforma computacional.

O COBOL é uma das linguagens utilizadas para construir aplicações.

O z/OS é um sistema operacional para IBM Z.

E há muitos outros componentes importantes nesse universo:

  • JCL: define e controla a execução de trabalhos batch.

  • CICS: fornece infraestrutura para processamento transacional.

  • Db2: sistema gerenciador de banco de dados relacional.

  • VSAM: método de acesso e organização de conjuntos de dados.

  • RACF: componente de controle de acesso e segurança.

  • SDSF: interface para acompanhar jobs, filas, mensagens e execução.

  • SMF e RMF: fontes importantes para analisar utilização de recursos e desempenho.

Levy fez uma anotação:

Um programa COBOL não existe isoladamente. Ele faz parte de um ecossistema.

Isso será importante ao estudar o IBM COBOL Elevate.

Porque nem todo problema de desempenho de uma aplicação COBOL é provocado pelo código gerado pelo compilador.

Um programa pode estar esperando um banco de dados.

Pode estar lendo arquivos excessivamente.

Pode sofrer contenção de recursos.

Ou pode executar um algoritmo pouco eficiente.

Antes de tentar melhorar o desempenho, precisamos descobrir onde está o verdadeiro problema.


⚡ Capítulo IV — O feitiço Accelerate: otimizar o executável sem recompilar o código-fonte

Levy encontrou o primeiro grande segredo da investigação.

Um programa COBOL possui diferentes representações ao longo de seu processo de construção.

Inicialmente temos o código-fonte, escrito pelo programador.

Em seguida, o compilador traduz as instruções e produz código objeto.

O processo de linkedição reúne componentes e cria um artefato executável, como um load module ou program object.

É esse artefato que o ambiente de execução utiliza.

Para entender a diferença, imagine uma receita de pão.

O código-fonte é a receita escrita.

A compilação corresponde, de maneira simplificada, ao processo de transformar as instruções em algo executável.

O módulo resultante é o produto preparado para utilização.

A analogia tem limites, mas ajuda a compreender a separação entre fonte e executável.

Agora considere um programa compilado muitos anos atrás.

Seu compilador produziu instruções adequadas à tecnologia disponível naquela época.

Entretanto, processadores IBM Z mais recentes podem oferecer possibilidades adicionais de execução eficiente.

O Accelerate, componente do IBM COBOL Elevate for z/OS, foi apresentado pela IBM para identificar e otimizar aplicações COBOL elegíveis no nível binário, sem exigir alterações no código-fonte nem uma recompilação convencional.

Isso significa que a ferramenta trabalha sobre o programa executável existente.

O ponto é especialmente interessante quando uma empresa possui sistemas antigos e deseja melhorar seu desempenho antes de iniciar uma migração completa de compilador.

Exemplo didático

Imagine um programa chamado FATURA95.

A aplicação foi compilada com uma geração antiga de compilador e executa milhões de operações.

O arquivo-fonte permanece:

FATURA95.cbl

O ambiente também possui o módulo executável correspondente.

Com uma ferramenta de otimização binária, um módulo elegível pode ser analisado e transformado em uma versão executável otimizada.

O fonte original permanece intacto.

Levy fez uma comparação com sua magia Solid Script.

— É como melhorar a eficiência de um feitiço já preparado sem alterar as palavras do grimório!

Mas existe uma advertência importante.

O Accelerate não deve ser descrito como uma ferramenta capaz de reinventar automaticamente qualquer algoritmo empresarial.

A documentação pública de apresentação do produto não detalha exaustivamente todas as transformações internas realizadas em cada programa.

Também não existe garantia universal de ganho.

A compatibilidade, o comportamento funcional e os resultados de desempenho precisam ser validados.

Segunda lição de Levy: preservar o código-fonte não elimina a necessidade de testar o executável otimizado.


🔍 Capítulo V — O ancestral do feitiço: IBM Automatic Binary Optimizer

Ao continuar pesquisando, Levy fez uma descoberta inesperada.

A IBM já trabalhava com otimização binária antes de 2026.

Uma tecnologia importante nessa história é o IBM Automatic Binary Optimizer for z/OS, frequentemente chamado de ABO.

Ele foi desenvolvido para permitir que determinados programas COBOL compilados anteriormente fossem otimizados sem exigir acesso ao código-fonte.

Isso é particularmente relevante em ambientes empresariais antigos.

Imagine uma instituição que preserva o executável de uma aplicação, mas perdeu parte dos arquivos-fonte originais.

Tal situação representa um problema sério de manutenção.

A organização pode conseguir continuar executando o módulo, mas modificar sua lógica torna-se muito mais difícil.

A otimização binária oferece um caminho para melhorar determinados aspectos do executável sem reconstruir imediatamente toda a aplicação.

Entretanto, Levy percebeu um detalhe fundamental:

Otimização binária não equivale à recuperação do código-fonte perdido.

O problema da manutenção continua existindo.

Da mesma forma, a otimização não substitui a necessidade de documentação, controle de versões, testes e planejamento de continuidade operacional.

A novidade do COBOL Elevate está em reunir diferentes abordagens de modernização em uma proposta integrada.


🧙 Capítulo VI — Upgrade: quando o compilador também precisa evoluir

Levy abriu um terceiro grimório.

A capa dizia:

Enterprise COBOL 6

O componente Upgrade do COBOL Elevate procura auxiliar organizações que precisam atualizar suas aplicações para gerações modernas do compilador Enterprise COBOL.

Diferentemente do Accelerate, aqui estamos falando de uma migração que envolve o código-fonte, o processo de compilação e possíveis adaptações.

E por que isso pode ser complicado?

Porque uma aplicação desenvolvida décadas atrás pode depender de opções de compilação, representações de dados e comportamentos históricos.

O perigo dos dados numéricos inválidos

Considere:

       01 WS-IDADE PIC 9(3).

O programador declarou um campo numérico de três posições.

O sistema espera valores como:

018

052

067

Mas imagine que, por um problema em uma interface antiga, o campo receba bytes que representem:

12A

Agora temos dados incompatíveis com a declaração numérica.

Se o programa executar operações aritméticas ou comparações sobre esse conteúdo, o comportamento pode depender de vários fatores, incluindo formato de dados e opções de compilação.

Ao migrar de compilador, certas diferenças podem expor problemas que anteriormente passavam despercebidos.

A solução correta é investigar o dado inválido e o comportamento esperado, não simplesmente presumir que o novo compilador esteja errado.

Onde entra a inteligência artificial?

Segundo a IBM, o Upgrade oferece recursos de avaliação e assistência à remediação, incluindo suporte orientado por IA em etapas da modernização.

Isso pode ajudar equipes a identificar incompatibilidades, compreender alterações necessárias e acelerar o trabalho de migração.

Mas a validação humana permanece indispensável.

Uma sugestão tecnicamente plausível pode alterar uma regra empresarial histórica.

Levy entendeu imediatamente.

— Uma palavra de magia pode estar escrita corretamente e ainda produzir o efeito errado se não conhecermos sua finalidade!

Terceira lição de Levy: atualizar o compilador é um projeto de compatibilidade e governança, não apenas uma operação técnica.


📊 Capítulo VII — Performance Insights: descobrir onde a magia está desperdiçando energia

Até agora investigamos o executável e o compilador.

Mas existe um terceiro problema.

E se o próprio algoritmo for ineficiente?

Imagine este exemplo didático:

       PERFORM VARYING WS-I FROM 1 BY 1
           UNTIL WS-I > 10000

           PERFORM VARYING WS-J FROM 1 BY 1
               UNTIL WS-J > 10000

               IF CLIENTE-ID(WS-I) =
                  PEDIDO-ID(WS-J)
                   ADD 1 TO WS-TOTAL
               END-IF

           END-PERFORM

       END-PERFORM.

O programa percorre uma tabela de dez mil clientes.

Para cada cliente, percorre dez mil pedidos.

Isso pode resultar em:

10.000 × 10.000 = 100 milhões de comparações.

Levy ficou horrorizada.

— Cem milhões? Mas por que não organizar os registros antes?

Essa é exatamente a pergunta que um especialista em desempenho deve fazer.

Dependendo das características dos dados, podemos empregar algoritmos mais eficientes, técnicas de ordenação, pesquisas indexadas ou operações apropriadas no banco de dados.

Uma alternativa poderia ser ordenar dois conjuntos de registros por uma mesma chave e percorrê-los de maneira coordenada.

Em condições adequadas, isso reduz enormemente o número de comparações.

Entretanto, implementar tal estratégia exige considerar duplicidades, integridade dos dados e regras de associação.

O Performance Insights foi concebido para apoiar esse tipo de investigação por meio de análise estática, dinâmica e informações de execução, associando oportunidades de melhoria a trechos do programa.

É importante compreender a diferença:

O Accelerate procura melhorar o código executável elegível.

O Performance Insights ajuda a identificar problemas de desempenho cuja solução pode exigir alterações na aplicação.

Nem toda recomendação necessariamente envolve reescrever o programa inteiro.

Às vezes, uma alteração localizada pode produzir ganhos significativos.

Quarta lição de Levy: antes de modificar milhares de linhas, descubra quais realmente precisam de atenção.


💰 Capítulo VIII — A armadilha dos 86%: desempenho não é uma única medida

A imagem que iniciou nossa investigação apresenta um exemplo:

Antes: 2.100 transações por segundo.

Depois: 3.900 transações por segundo.

Isso representa um aumento aproximado de 85,7% no throughput.

É um número expressivo.

Mas Levy encontrou uma armadilha.

A imagem não demonstra, por si só, que esses valores tenham sido medidos em um benchmark oficial do produto.

Devemos considerá-los ilustrativos, a menos que sua origem experimental seja documentada.

Além disso, diferentes métricas respondem a perguntas diferentes.

CPU time representa o tempo de processador consumido.

Elapsed time representa o tempo total entre o início e o término de uma execução.

Throughput representa a quantidade de trabalho concluída por unidade de tempo.

Response time representa o tempo necessário para responder a determinada solicitação ou transação.

Imagine que um job consuma 1.000 segundos de CPU e leve 30 minutos para terminar.

Depois de uma otimização, ele passa a consumir 800 segundos de CPU.

Obtivemos uma redução de 20% no consumo de CPU.

Mas o job pode continuar levando quase 30 minutos se a maior parte do tempo for gasta esperando operações de entrada e saída ou recursos externos.

Por outro lado, reduzir CPU pode liberar capacidade importante em um ambiente com alta concorrência.

E quanto custa essa economia?

Depende.

No mainframe, o custo real está relacionado ao modelo de contratação, licenciamento, capacidade e características da utilização.

Não seria correto calcular automaticamente uma economia financeira de 20% apenas porque determinado programa passou a utilizar 20% menos CPU.

A redução pode gerar benefícios operacionais mesmo quando não altera imediatamente a fatura.

Por exemplo, pode ampliar a capacidade disponível para outras cargas de trabalho.

Levy anotou no quadro:

Medir primeiro. Interpretar depois. Decidir por último.


🏦 Capítulo IX — Outubro de 2026: Accelerate chega a um território importante do CICS

Uma das informações mais interessantes da documentação recente do produto aparece na atualização associada à APAR PH73532 e à PTF UO09993, de outubro de 2026.

A IBM documentou a ampliação do suporte às tarefas Identify e Optimize para aplicações COBOL executadas sob CICS.

Isso merece atenção.

O CICS Transaction Server é utilizado para processamento de transações empresariais e integrações com aplicações.

Imagine uma aplicação bancária em que o cliente consulta o saldo de sua conta.

Uma representação simplificada do caminho seria:

Terminal ou aplicação cliente

↓

CICS Transaction Server

↓

Programa COBOL

↓

Db2 ou VSAM

↓

Resposta ao usuário

Se parte significativa do consumo de CPU estiver dentro de um módulo COBOL elegível, uma otimização binária poderá representar uma oportunidade.

Mas não devemos confundir essa possibilidade com uma melhoria universal de todas as transações CICS.

Uma transação pode depender muito mais de consultas Db2, comunicação de rede ou contenção de recursos do que do processamento interno do módulo COBOL.

A otimização não corrige automaticamente todos esses gargalos.

Levy fez outra observação:

— Melhorar a espada de Gajeel não resolve o problema se ele estiver esperando a porta da fortaleza abrir!

A metáfora é adequada.

Para melhorar um sistema, precisamos identificar o recurso que realmente limita o desempenho.


🧪 Capítulo X — Laboratório da Levy: como investigar um programa COBOL passo a passo

Chegou a hora de transformar a teoria em um exercício prático.

Vamos imaginar uma empresa que possui um programa chamado FECHAM01, responsável por parte de seu fechamento diário.

Passo 1 — Descobrir o que o programa faz

Antes de qualquer otimização, precisamos compreender sua finalidade.

O programa lê arquivos?

Consulta Db2?

Atualiza registros?

Gera relatórios?

Executa rotinas de cálculo?

Tem requisitos especiais de arredondamento?

A primeira missão do iniciante é produzir um pequeno mapa funcional.

Passo 2 — Identificar o ambiente

Registre a versão do z/OS, as características do ambiente IBM Z, as versões de runtime relevantes e, quando possível, as informações sobre o compilador original.

Também é importante conhecer as bibliotecas de carga, dependências e procedimentos de execução.

O inventário evita decisões baseadas em suposições.

Passo 3 — Obter uma linha de base

Execute o programa em condições controladas.

Registre o consumo de CPU, o tempo total, os volumes processados e os resultados produzidos.

Para jobs batch, ferramentas e informações obtidas a partir do SDSF e de registros SMF podem ajudar nessa atividade.

O objetivo é estabelecer uma referência confiável.

Sem ela, não saberemos se houve melhoria.

Passo 4 — Investigar os candidatos à otimização

Em uma instalação licenciada e configurada do COBOL Elevate, consulte a documentação correspondente à versão e aos níveis de manutenção aplicados.

Utilize os procedimentos oficiais do Accelerate para identificar módulos elegíveis.

Não devemos presumir que qualquer load module possa ser otimizado.

A elegibilidade precisa ser verificada.

Passo 5 — Preservar os artefatos originais

Antes de qualquer transformação, preserve cópias controladas dos módulos originais.

Documente a versão anterior e a nova versão.

Mantenha um procedimento de rollback.

Isso é particularmente importante em aplicações críticas.

Passo 6 — Executar a otimização em ambiente apropriado

A transformação deve seguir os comandos e procedimentos documentados pela IBM para a instalação específica.

Não é recomendável improvisar parâmetros de ferramentas corporativas.

O resultado precisa permanecer identificado e separado dos artefatos de produção até a conclusão dos testes.

Passo 7 — Comparar os resultados funcionais

Aqui começa a parte mais importante.

O programa otimizado precisa produzir os mesmos resultados empresariais esperados.

Compare arquivos de saída, totais financeiros, registros atualizados e códigos de retorno.

Inclua valores extremos, dados históricos e situações de erro.

Um ganho de desempenho que altera indevidamente o resultado contábil não é uma melhoria aceitável.

Passo 8 — Medir novamente

Execute cargas equivalentes e compare resultados.

Procure controlar variações de volume, concorrência, cache e condições do ambiente.

Um único teste pode produzir conclusões enganosas.

Sempre que possível, execute múltiplas medições e compare a variabilidade.

Passo 9 — Avaliar o ganho econômico

Uma melhoria de CPU pode justificar a otimização.

Mas também precisamos considerar testes, operação, licenciamento, manutenção e riscos.

A decisão deve incluir todos esses fatores.

Passo 10 — Documentar e ensinar

Levy considera este passo indispensável.

Registre o que foi feito, por que foi feito, quais resultados foram obtidos e como reproduzir o processo.

A documentação evita que a próxima geração precise redescobrir tudo.


🗃️ Capítulo XI — Um primeiro exemplo de JCL para quem nunca trabalhou num mainframe

Levy encontrou outro documento e começou a sorrir.

— Gajeel, você conhece JCL?

— Isso é alguma guilda rival?

— Não! É Job Control Language!

No ambiente z/OS, JCL é utilizado para descrever trabalhos batch e os recursos necessários para sua execução.

Considere esta estrutura simplificada:

//LEVYJOB  JOB (ACCT),'LEVY TESTE',
//             CLASS=A,MSGCLASS=X
//STEP01   EXEC PGM=FECHAM01
//STEPLIB  DD DSN=LAB.COBOL.LOAD,DISP=SHR
//ENTRADA  DD DSN=LAB.TESTE.ENTRADA,DISP=SHR
//SAIDA    DD DSN=LAB.TESTE.SAIDA,
//            DISP=SHR
//SYSOUT   DD SYSOUT=*

Vamos interpretar as instruções.

JOB identifica o trabalho e fornece parâmetros de execução.

EXEC PGM=FECHAM01 solicita a execução do programa indicado.

STEPLIB informa uma biblioteca onde o sistema poderá procurar o módulo executável.

ENTRADA e SAIDA são nomes DD utilizados para associar conjuntos de dados aos recursos esperados pelo programa.

SYSOUT direciona uma saída para a infraestrutura de spool.

Esse exemplo pressupõe que os datasets e o programa já existam e que o conteúdo da DD SAIDA possa ser utilizado dessa maneira.

É apenas um modelo didático; os parâmetros devem ser adaptados ao ambiente.

E uma observação essencial:

Esse JCL não realiza otimização binária.

Ele demonstra como um programa pode ser executado em um ambiente de laboratório.

O Accelerate possui seus próprios procedimentos documentados.

A distinção é importante para evitar que iniciantes confundam execução de um programa com transformação de seu executável.


🐉 Capítulo XII — Gajeel pergunta: por que não reescrever tudo em Java?

Gajeel estava perdendo a paciência.

— Levy, se esse programa tem trinta anos, por que não escrever outro?

Levy fechou o livro.

— Porque um programa empresarial é muito mais do que suas linhas de código.

Imagine uma aplicação bancária desenvolvida durante décadas.

Ela pode conter regras de juros, tarifas, impostos, exceções, integração com sistemas externos e condições particulares de contratos antigos.

Mesmo quando o código é compreensível, reproduzir exatamente seu comportamento pode ser difícil.

Uma reescrita exige descobrir todas as regras, inclusive aquelas que não foram documentadas.

Também é necessário reconstruir integrações, executar testes extensos, migrar dados e preparar procedimentos de recuperação.

Isso pode ser justificável em determinadas situações.

Mas não deve ser considerado automaticamente a melhor alternativa.

A modernização de sistemas pode envolver diferentes estratégias:

Preservar e otimizar.

Atualizar o compilador.

Refatorar módulos específicos.

Expor funcionalidades por APIs.

Substituir partes do sistema.

Ou realizar uma reescrita completa quando a análise justificar o investimento.

O erro é escolher a solução antes de compreender o problema.

Levy encontrou uma frase que parecia perfeita para o quadro da guilda:

A idade de um programa não determina, sozinha, seu valor tecnológico.


🧠 Capítulo XIII — Inteligência artificial: uma nova aprendiz na biblioteca da Levy

No universo de Fairy Tail, Levy consegue interpretar inscrições que muitos outros personagens não compreendem.

No universo corporativo, ferramentas de inteligência artificial podem ajudar a analisar programas antigos, explicar estruturas e apoiar investigações técnicas.

Imagine um arquivo COBOL com vinte mil linhas.

Um desenvolvedor recém-contratado precisa compreender suas divisões, variáveis, parágrafos e integrações.

A IA pode oferecer explicações iniciais, identificar referências a campos e apoiar a documentação.

Também pode ajudar a investigar padrões conhecidos durante uma migração de compilador.

Mas existe um risco importante.

Modelos de IA podem produzir interpretações incorretas, inclusive com aparência de segurança.

Por isso, suas sugestões precisam ser verificadas contra o código, os dados, a documentação e os requisitos empresariais.

O mistério dos 360 dias

Considere:

       COMPUTE WS-JUROS =
           WS-CAPITAL *
           WS-TAXA *
           WS-DIAS / 360.

Um assistente de IA poderia sugerir utilizar 365 dias porque esse é o número de dias de um ano civil comum.

Mas será que isso estaria correto?

Não necessariamente.

Em finanças existem diferentes convenções de contagem de dias, aplicáveis conforme o produto e o contrato.

O divisor 360 pode fazer parte da regra de cálculo.

Alterá-lo sem compreender sua origem pode produzir resultados incorretos.

Essa é uma das grandes lições da modernização assistida por inteligência artificial.

Compreender o texto de um programa não significa automaticamente compreender sua intenção empresarial.

Levy seria uma excelente professora justamente porque não se limita a reconhecer símbolos.

Ela procura entender o contexto de cada inscrição.


🧩 Capítulo XIV — Easter eggs: cinco segredos escondidos nesta aventura

Easter egg 1 — A magia Solid Script e o código-fonte

A magia de Levy utiliza palavras que produzem efeitos.

No COBOL, as instruções também produzem efeitos, mas somente após sua interpretação pelo compilador e execução na plataforma.

A semelhança é uma metáfora sobre linguagens formais.

Easter egg 2 — O tesouro que ninguém queria abrir

Um programa antigo pode conter regras empresariais valiosas que sobreviveram aos próprios criadores.

O desafio da arqueologia de software é recuperar e preservar esse conhecimento.

Easter egg 3 — O dragão invisível

O verdadeiro inimigo do desempenho nem sempre aparece no código-fonte.

Pode estar em uma consulta SQL, numa espera por I/O, em contenção de recursos ou em um algoritmo inadequado.

Easter egg 4 — O livro que funciona sem o autor

Um módulo compilado pode continuar funcionando mesmo quando os desenvolvedores originais já deixaram a organização.

Mas isso não significa que o sistema seja facilmente modificável.

Executabilidade e manutenibilidade são propriedades diferentes.

Easter egg 5 — O feitiço que não pode errar um centavo

Um sistema financeiro pode executar milhões de cálculos corretamente durante décadas.

Ao modernizá-lo, precisamos preservar os resultados esperados.

O desempenho é importante, mas a integridade da informação é indispensável.


📚 Capítulo XV — Dez dicas de Levy para quem está começando em COBOL

1. Aprenda a estrutura da linguagem. Comece pelas divisões, variáveis, instruções de movimentação, condições e repetições.

2. Entenda os tipos de dados. Estude PIC, COMP, COMP-3, campos numéricos editados e suas representações.

3. Aprenda JCL. Sem ele, você terá dificuldade para compreender muitos processamentos batch no z/OS.

4. Explore TSO/ISPF. Conhecer bibliotecas, membros e edição de datasets é parte importante da rotina de mainframe.

5. Aprenda SDSF. Saber consultar a execução de um job é essencial para diagnosticar falhas.

6. Estude Db2 e VSAM. Muitos programas COBOL dependem diretamente dessas tecnologias.

7. Conheça o compilador. Investigue mensagens, opções de compilação e diferenças entre gerações.

8. Não confunda desempenho com consumo de CPU. Uma aplicação pode ser limitada por vários recursos.

9. Teste antes de otimizar e depois de otimizar. Sem uma linha de base e testes comparáveis, você não consegue demonstrar melhorias com segurança.

10. Preserve o conhecimento empresarial. Documente regras, exceções e decisões. Um bom programador não é apenas alguém que escreve código, mas alguém que compreende o sistema.


🌍 Capítulo XVI — O impacto cultural: por que COBOL continua provocando debates?

Existe uma curiosidade histórica interessante.

Durante décadas, sucessivas gerações de profissionais anunciaram que linguagens antigas desapareceriam diante de novas tecnologias.

Surgiram linguagens estruturadas, orientação a objetos, aplicações web, serviços distribuídos, computação em nuvem e inteligência artificial generativa.

Entretanto, muitas organizações continuaram utilizando aplicações COBOL.

A explicação não está apenas na dificuldade de substituir sistemas.

Em muitos casos, essas aplicações cumprem funções empresariais importantes e apresentam comportamento conhecido, integração consolidada e histórico de operação.

Isso não significa que sejam perfeitas.

Sistemas antigos podem enfrentar problemas reais de manutenção, documentação, dependências, recrutamento e evolução arquitetural.

Mas também não significa que devam ser descartados apenas por sua idade.

O COBOL Elevate representa uma resposta a esse dilema: melhorar partes do ambiente existente sem tratar a reescrita como única estratégia possível.

Para o profissional iniciante, essa realidade representa uma oportunidade de desenvolver conhecimentos que combinam programação, arquitetura, operações e entendimento de negócios.

Não basta conhecer sintaxe.

É necessário compreender como o sistema funciona como um todo.


🏁 Epílogo — 05h42: Levy termina a leitura do grimório

A madrugada havia terminado.

A luz do amanhecer atravessava as janelas da guilda Fairy Tail.

Levy fechou o livro de 1995.

Gajeel, que havia acompanhado a investigação, olhou para a última página.

— Então conseguimos deixar o programa mais rápido sem alterar sua magia?

Levy respondeu com cuidado.

— Em determinadas condições, sim. Mas primeiro precisamos descobrir se ele é elegível, medir o desempenho e comprovar que o resultado continua correto.

— E se o problema estiver na maneira como o programa foi escrito?

— Então teremos que investigar o código-fonte.

— E se o compilador estiver ultrapassado?

— Podemos planejar uma atualização.

— E se não soubermos por que determinada regra existe?

Levy sorriu.

— Então precisaremos estudar sua história.

A resposta parecia resumir tudo o que haviam aprendido.

O IBM COBOL Elevate oferece três abordagens complementares: otimização binária com Accelerate, atualização assistida de compiladores com Upgrade e investigação de oportunidades de desempenho com Performance Insights.

Nenhuma delas elimina a necessidade de conhecer o ambiente, preservar as regras empresariais e validar os resultados.

Mas juntas representam uma maneira muito interessante de pensar a evolução dos sistemas.

Levy escreveu a última frase no quadro:

O verdadeiro poder de uma linguagem não está apenas nas palavras que conseguimos modificar, mas também no conhecimento que conseguimos preservar.

E, em algum lugar de um CPD, um programa COBOL criado em 1995 continuava executando.

Talvez ainda tivesse muitas décadas de trabalho pela frente.

Porque o futuro da computação nem sempre começa com um programa novo. Às vezes começa quando finalmente aprendemos a compreender o antigo.


📚 Referências e leituras complementares

Bellacosa Mainframe — Arqueologia da Computação, COBOL, IBM Z, Inteligência Artificial e as histórias escondidas nos sistemas que nunca pararam de funcionar.

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