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

segunda-feira, 7 de setembro de 2026

Guilherme de Baskerville Entra no CPD — O Nome dos Pedreiros na Catedral de 80 Colunas

 

☕ Um Café no Bellacosa Mainframe

Guilherme de Baskerville Entra no CPD — O Nome dos Pedreiros na Catedral de 80 Colunas

Ou: como cartões perfurados, datasets de 80 bytes, COBOL, PL/I, Assembler, Natural, XML, JSON, APIs e décadas de retrocompatibilidade transformaram programas legados em catedrais construídas por gerações de artesãos quase anônimos





Prólogo — O nome estava na pedra

Guilherme de Baskerville não começou examinando o código.

Isso surpreendeu o jovem programador.

Havia milhares de linhas COBOL diante deles, algumas tão antigas que ninguém presente no CPD sabia explicar completamente sua origem. O programa havia sobrevivido a reorganizações, mudanças de hardware, novos compiladores, novas moedas, novas legislações e incontáveis projetos de modernização.

— Mestre, não deveríamos procurar primeiro a PROCEDURE DIVISION?

Guilherme aproximou-se do terminal.

No alto do fonte havia algo aparentemente banal:

*****************************************************************
* J. PEREIRA
* 17/08/1983
* ALTERADA ROTINA DE FATURAMENTO
*****************************************************************
* M. SANTOS
* 04/02/1987
* INCLUIDO NOVO TIPO DE MOVIMENTO
*****************************************************************
* R. ALMEIDA
* 22/09/1994
* ADEQUACAO NOVA REGRA MONETARIA
*****************************************************************

Continuava.

Uma tela.

Duas.

Dez.

Dezenas de nomes.

Guilherme permaneceu em silêncio.

— O que procura? — perguntou o aprendiz.

— Não procuro — respondeu ele. — Estou prestando homenagem.



1. O programa legado possui uma memória

Quando encontramos um programa COBOL, PL/I, Natural ou Assembler com décadas de existência, frequentemente encontramos também algo que os manuais tratam simplesmente como change history.

Nome ou USER-ID.

Data.

Descrição da alteração.

Três ou quatro linhas cercadas por asteriscos.

*****************************************************************
* JCARLOS
* 14/06/1988
* CORRECAO CALCULO DE JUROS
*****************************************************************

Tecnicamente, aquilo é documentação.

Mas depois de quarenta anos transforma-se em algo diferente.

É memória institucional.

Talvez ninguém saiba mais quem foi JCARLOS.

Seu USER-ID provavelmente desapareceu há décadas.

O sistema de chamados usado naquela alteração talvez nem exista.

A documentação funcional pode ter sido perdida.

O departamento pode ter mudado de nome cinco vezes.

JCARLOS pode estar aposentado.

Pode morar do outro lado do mundo.

Pode ter falecido.

Mas alguma coisa permaneceu:

* JCARLOS
* 14/06/1988
* CORRECAO CALCULO DE JUROS

O programa lembra.



2. As assinaturas dos pedreiros

Nas antigas construções europeias podemos encontrar marcas deixadas por pedreiros e artesãos.

Isso oferece uma metáfora extraordinária para software legado.

Imagine uma catedral.

Um homem trabalha numa pedra.

Ele não projetou o edifício inteiro.

Não escolheu necessariamente onde ficaria a torre.

Não decidiu a doutrina representada nos vitrais.

Seu nome provavelmente nunca aparecerá num livro de história.

Mas aquela pedra passou pelas mãos dele.

Então deixa uma marca.

Séculos depois alguém a encontra.

No mainframe fazemos algo assustadoramente parecido:

*****************************************************************
* MFERREIRA
* 11/03/1991
* INCLUIDA VALIDACAO DO MOVIMENTO 07
*****************************************************************

Não significa:

Eu construí este sistema.

Significa:

Esta pedra passou pelas minhas mãos.

E isso muda completamente nossa maneira de olhar um fonte antigo.



3. Nenhum programador construiu a catedral

Um dos grandes erros quando falamos de software é imaginar um programa como criação de uma única pessoa.

Em sistemas corporativos longevos isso frequentemente não existe.

O programa pode ter nascido assim:

1981  JOAO
      criação

Depois:

1984  MARIA
      nova modalidade

Depois:

1987  CARLOS
      novo processamento

Depois:

1994  ANA
      mudança monetária

Depois:

1999  ROBERTO
      adequação Y2K

E continua:

2004
2008
2012
2017
2020
2026

Quando chegamos ao programa em 2026, não estamos diante do trabalho de João.

Estamos diante de:

João + Maria + Carlos + Ana + Roberto + dezenas ou centenas de pessoas.

A criatura nasceu, cresceu e foi modificada.

Algumas partes desapareceram.

Outras sobreviveram.

Outras foram reconstruídas.

O programa tornou-se uma obra coletiva.

Exatamente como uma catedral que atravessou gerações.



4. Guilherme faz a primeira pergunta

O jovem programador apontou para uma rotina.

— Isto está horrível. Podemos remover?

Guilherme respondeu:

— Por que ela existe?

— Não sei.

— Então ainda não sabemos se podemos removê-la.

Essa talvez seja uma das regras mais importantes para quem começa a trabalhar com legado.

Código estranho não significa automaticamente código inútil.

Às vezes é lixo.

Às vezes é dívida técnica.

Às vezes é uma gambiarra histórica.

Mas às vezes é a última manifestação de uma regra de negócio que ninguém mais documentou.

Você encontra:

IF WS-TIPO = 7
   PERFORM 8000-TRATA-ESPECIAL
END-IF

E pensa:

Que porcaria é essa?

Procura no cabeçalho:

*****************************************************************
* MROCHA
* 18/09/1989
* CORRECAO PROCESSAMENTO MOVIMENTO TIPO 7
*****************************************************************

Agora existe uma pista.

Não temos a resposta.

Temos uma evidência.

Guilherme de Baskerville certamente aprovaria a diferença.


5. O programa também possui camadas arqueológicas

Programas legados podem carregar algo ainda mais interessante.

Eles registram a própria evolução da informática.

Imagine um sistema criado no começo dos anos 1980.

Sua primeira versão pode ter sido essencialmente:

arquivo
   |
COBOL
   |
arquivo

Depois apareceu VSAM.

Depois Db2.

Depois CICS.

Depois MQ.

Então alguém precisou conectá-lo ao mundo distribuído.

Chegaram HTML e aplicações Web.

Depois XML.

SOAP.

Java.

JSON.

REST.

APIs.

Cloud.

Containers.

Eventos.

De repente temos:

                    MOBILE
                       |
                    HTTPS
                       |
                 API GATEWAY
                       |
                     JSON
                       |
                     REST
                       |
                z/OS CONNECT
                       |
                     CICS
                       |
                     COBOL
                  /    |    \
                Db2   VSAM   MQ
                              |
                         SISTEMA CLOUD

E em algum lugar no centro dessa arquitetura ainda existe:

       PERFORM 300-CALCULAR-JUROS

escrito originalmente quando ninguém possuía um smartphone.

Frankenstein?

Talvez.

Mas existe uma interpretação mais interessante.

Estratigrafia computacional.


6. Frankenstein entra na catedral

Chamamos esses sistemas de Frankenstein porque encontramos tecnologias de épocas completamente diferentes costuradas umas às outras.

Assembler.

COBOL.

PL/I.

Natural.

JCL.

VSAM.

IMS.

Db2.

CICS.

MQ.

HTML.

XML.

SOAP.

Java.

JSON.

REST.

Cloud.

Mas uma catedral construída durante séculos também pode apresentar estilos diferentes.

Uma parte pertence a determinada época.

Outra foi reconstruída.

Uma capela apareceu posteriormente.

Um órgão foi substituído.

Um vitral é muito mais recente.

Uma restauração contemporânea introduziu outra marca.

O historiador não olha imediatamente para aquilo e diz:

Que arquitetura inconsistente!

Ele pergunta:

O que aconteceu aqui?

Essa é a diferença entre simplesmente programar e fazer arqueologia de software.


7. O astronauta na catedral

Existe um caso delicioso na Catedral Nova de Salamanca.

Durante uma restauração realizada em 1992, foi acrescentada à ornamentação uma figura de astronauta.

A catedral começou a ser construída séculos antes da exploração espacial.

Mas ali está ele.

Um astronauta na pedra.

Não é medieval.

Não tenta fingir que é.

Ele registra a época da intervenção.

E nossos programas fazem exatamente isso.

Imagine:

*****************************************************************
* JPEREIRA
* 1983
* CRIACAO
*****************************************************************

*****************************************************************
* MROCHA
* 1995
* INTEGRACAO DB2
*****************************************************************

*****************************************************************
* CSOUZA
* 2003
* INTERFACE XML
*****************************************************************

*****************************************************************
* AFERREIRA
* 2018
* RETORNO JSON
*****************************************************************

*****************************************************************
* VBELLACOSA
* 2026
* INTEGRACAO API REST
*****************************************************************

REST é o astronauta esculpido na catedral COBOL.

Ele não precisa destruir aquilo que veio antes.

Ele demonstra que a construção chegou viva até outra época.


8. O mistério das 80 colunas

Então Guilherme encontrou outra pista.

RECFM=FB
LRECL=80

O jovem programador riu.

— Outra velharia.

Guilherme olhou para ele.

— Oitenta por quê?

Silêncio.

É exatamente aqui que muita gente conhece apenas um terço da história.

O cartão perfurado IBM que se tornou um símbolo da computação possuía 80 colunas. A própria IBM registra que o cartão de 80 colunas foi introduzido em 1928 e tornou-se extremamente disseminado no processamento de informações.

Depois olhamos para o formato tradicional do fonte COBOL:

1 - 6    Sequence Number Area
7        Indicator Area
8 - 11   Area A
12 - 72  Area B
73 - 80  Comment/Identification Area

A documentação atual da IBM ainda descreve explicitamente uma linha fonte COBOL de 80 caracteres, dividida nessas áreas.

Isso significa que aquele número aparentemente arbitrário possui ancestralidade.


9. O cartão desapareceu; sua sombra permaneceu

Essa é uma das coisas mais fascinantes da computação.

Uma limitação física pode transformar-se em convenção.

A convenção transforma-se em padrão.

O padrão influencia software.

O software cria dependências.

As dependências exigem compatibilidade.

Décadas depois a causa física desapareceu, mas seus descendentes permanecem.

Podemos representar assim:

CARTAO PERFURADO
       |
       v
  80 COLUNAS
       |
       v
FORMATO DE FONTE
       |
       v
 FERRAMENTAS
       |
       v
 DATASETS
       |
       v
 COMPATIBILIDADE
       |
       v
     2026

Inclusive documentação atual de ferramentas IBM continua reconhecendo áreas de numeração nas colunas 1–6 e 73–80 para fontes COBOL.

O cartão morreu.

A geometria sobreviveu.


10. O dataset de 80 bytes é uma rua romana

Imagine caminhar por uma cidade europeia.

Existe uma rua estranhamente curva.

Para um urbanista moderno, aquela curva parece irracional.

Até alguém explicar:

A estrada romana passava aqui.

A cidade desapareceu.

Impérios desapareceram.

Veículos mudaram.

Mas a rua continuou obedecendo a uma decisão tomada dois mil anos antes.

No mainframe:

LRECL=80

pode desempenhar papel semelhante.

Não significa que todo dataset de 80 bytes exista porque era cartão perfurado — seria uma simplificação histórica perigosa.

Significa que 80 tornou-se um número estruturalmente importante em um ecossistema profundamente influenciado pelo cartão e pelos formatos derivados dele.

Essa nuance importa.

O arqueólogo não inventa explicações.

Ele procura evidências.


11. A retrocompatibilidade é a argamassa

Agora chegamos à característica que permitiu que nossa catedral continuasse crescendo:

retrocompatibilidade.

A IBM fez algo extraordinariamente difícil ao longo da evolução do mainframe: preservar caminhos de continuidade enquanto hardware e software avançavam.

A própria IBM descreve os sistemas IBM Z atuais como descendentes diretos da linhagem System/360 e System/370 e afirma que muitas aplicações antigas puderam continuar funcionando em sistemas posteriores.

Isso não significa:

Qualquer programa de 1964 roda magicamente e sem qualquer consideração num z17 de 2026.

Seria falso.

Existem releases suportados, requisitos, PTFs, produtos, dependências, mudanças arquiteturais e processos de migração.

Por exemplo, a matriz atual do z17 estabelece explicitamente quais versões de z/OS são suportadas e quais exigem manutenção apropriada.

Retrocompatibilidade não é magia.

É engenharia.


12. A decisão caríssima de não demolir a cidade

Imagine se toda evolução tecnológica significasse:

NOVO HARDWARE
      |
      v
JOGUE FORA O SOFTWARE
      |
      v
REESCREVA TUDO

Para uma pequena aplicação talvez seja possível.

Agora imagine um banco.

Uma seguradora.

Uma companhia aérea.

Um governo.

Uma indústria.

Décadas de:

  • regras de negócio;

  • cálculos;

  • exceções;

  • layouts;

  • integrações;

  • arquivos;

  • programas;

  • transações;

  • conhecimento operacional.

A retrocompatibilidade protege algo muito maior que o executável.

Ela ajuda a preservar investimento e conhecimento acumulado.

A IBM inclusive descreve historicamente ciclos longos de hardware e caminhos de upgrade entre famílias como mecanismos de proteção do investimento e extensão da vida dos ativos.

Isso explica parte da longevidade dessas catedrais.


13. Manutenção também é construção

Existe uma injustiça profissional curiosa.

Quem cria algo novo é chamado de construtor.

Quem mantém algo antigo frequentemente é tratado como alguém que apenas “faz manutenção”.

Uma catedral demonstra o absurdo dessa distinção.

Sem manutenção:

o telhado infiltra.

A madeira apodrece.

A pedra racha.

O vitral quebra.

A torre fica instável.

Depois de séculos, não existe mais catedral.

Portanto, o restaurador também participa da construção da longevidade.

No software acontece o mesmo.

Quem resolveu o problema em 1991 ajudou o programa a chegar a 1992.

Quem resolveu Y2K ajudou-o a chegar a 2000.

Quem migrou o compilador ajudou-o a continuar.

Quem abriu uma API em 2026 talvez permita que a regra de negócio sobreviva por outra década.

Manter também é construir.


14. Modernização não precisa significar demolição

Aqui mora outra lição importante para o programador COBOL iniciante.

Modernizar não significa necessariamente:

DELETE COBOL.

Pode significar:

                APLICACAO MODERNA
                       |
                     REST
                       |
                     JSON
                       |
                  INTEGRACAO
                       |
                     CICS
                       |
                     COBOL
                       |
                      Db2

Uma parte continua.

Outra é substituída.

Uma interface nasce.

Uma rotina é refatorada.

Uma dependência desaparece.

Outra surge.

A catedral continua em funcionamento durante a reforma.

Isso é muito diferente de demolir o edifício e prometer que construiremos outro antes do próximo fechamento contábil.


15. Mas não transforme história em religião

Guilherme levantaria o dedo aqui.

Respeitar o legado não significa venerar todo código antigo.

Existe código ruim.

Existe redundância.

Existe rotina morta.

Existe tecnologia cujo custo de manutenção deixou de fazer sentido.

Existe vulnerabilidade.

Existe dívida técnica.

Existe arquitetura que precisa desaparecer.

A arqueologia serve justamente para evitar dois extremos:

Tudo antigo é lixo.

e:

Tudo antigo deve ser preservado.

O restaurador competente pergunta:

O que isto sustenta?

Por que existe?

Quem depende disso?

Qual risco existe em removê-lo?

Existe alternativa melhor?

Como provar que o comportamento continuará correto?

Só então pega o martelo.


16. O comentário pode ser a última testemunha

Agora imagine isto:

       IF WS-CODIGO = 47
          MOVE 'S' TO WS-TRATAMENTO
       END-IF

Ninguém sabe explicar.

Git?

O programa é décadas anterior à adoção de Git pela organização.

Ticket?

Desapareceu.

Documento?

Não encontrado.

Analista funcional?

Aposentou-se em 2007.

Então você sobe até o cabeçalho:

*****************************************************************
* ACOSTA
* 23/05/1993
* TRATAMENTO ESPECIAL CLIENTES CONVENIO 47
*****************************************************************

Não solucionamos o mistério.

Mas encontramos uma testemunha.

E talvez seja a última.

Por isso apagar comentários históricos indiscriminadamente durante uma “limpeza” pode equivaler a restaurar uma catedral lixando as inscrições das pedras.


17. O Frankenstein contém conhecimento

Voltemos ao nosso monstro:

Assembler
   |
COBOL
   |
CICS
   |
Db2
   |
MQ
   |
XML
   |
SOAP
   |
Java
   |
JSON
   |
REST
   |
Cloud

Parece absurdo.

Mas cada camada pode representar uma pergunta que a organização precisou responder:

Como processaremos isto?

Como armazenaremos isto?

Como permitiremos transações online?

Como integraremos sistemas?

Como falaremos com aplicações Web?

Como exporemos serviços?

Como integraremos cloud e mainframe?

O Frankenstein deixa então de ser apenas um acidente.

Transforma-se num mapa das necessidades empresariais através do tempo.


18. Easter egg — o sino toca RC=0000

Guilherme terminou sua investigação.

O JOB foi submetido.

O jovem programador observava SDSF.

Esperaram.

Então surgiu:

COND CODE 0000

— Mestre, terminou.

Guilherme sorriu.

— Não. Apenas tocou o sino.

— Sino?

— Toda catedral possui um.

E desde então o aprendiz nunca mais viu um RC=0000 da mesma maneira.


19. O dia em que a catedral fechar

Existe ainda uma cena que raramente imaginamos.

Algum dia um desses programas executará pela última vez.

Talvez depois de quarenta anos.

Talvez cinquenta.

O scheduler deixará de chamá-lo.

O dataset será arquivado.

O load module desaparecerá da biblioteca de produção.

Outro sistema assumirá sua função.

E finalmente teremos:

LAST EXECUTION
RC=0000

Nesse momento seria justo abrir o fonte uma última vez.

Subir até o início.

E ler.

*****************************************************************
* JOAO
* 1981
*****************************************************************

*****************************************************************
* MARIA
* 1985
*****************************************************************

*****************************************************************
* CARLOS
* 1992
*****************************************************************

...

*****************************************************************
* ULTIMO PROGRAMADOR
* 20XX
*****************************************************************

Talvez existam cem nomes.

Talvez duzentos.

Nenhum deles construiu sozinho aquela catedral.

Mas sem eles ela não teria chegado ao último processamento.


20. O programador iniciante precisa aprender a ler pedras

Quando você começar a trabalhar num programa legado, resista à tentação de ir imediatamente para:

PROCEDURE DIVISION.

Leia o cabeçalho.

Leia os comentários.

Observe datas.

Procure padrões.

Veja quando determinadas rotinas apareceram.

Pergunte por que existe determinado layout.

Investigue aquele LRECL=80.

Observe os copybooks.

Descubra quem produz os arquivos.

Descubra quem os consome.

Veja JCL.

Procure dependências CICS, Db2, MQ, VSAM.

Leia antes de julgar.

O primeiro dever do arqueólogo não é cavar.

É compreender o terreno.


Epílogo — O próximo nome

Antes de sair do CPD, Guilherme voltou ao início do programa.

Havia espaço para uma nova inscrição.

O jovem havia terminado sua primeira manutenção importante.

Digitou:

*****************************************************************
* NOVO PROGRAMADOR
* 07/09/2026
* ADEQUACAO DA INTERFACE PARA NOVO SERVICO
*****************************************************************

Ficou olhando.

Acima dele havia nomes de pessoas que trabalharam naquele programa antes mesmo de ele nascer.

— Estranho — disse. — Parece que meu nome não deveria estar junto dos deles.

Guilherme respondeu:

— Agora compreendeu.

— O quê?

— A catedral nunca foi deles.

O jovem esperou.

— Tampouco é sua.

E então veio a lição final:

Você apenas recebeu a chave por algum tempo.

Talvez seja essa a melhor definição de trabalhar com sistemas legados.

Não somos proprietários absolutos deles.

Somos seus guardiões temporários.

Recebemos programas construídos por pessoas que não conhecemos.

Encontramos suas assinaturas entre asteriscos.

Descobrimos decisões tomadas quando computadores, empresas e o próprio mundo eram diferentes.

Preservamos o que ainda possui valor.

Corrigimos aquilo que envelheceu.

Retiramos aquilo que se tornou perigoso.

E acrescentamos as tecnologias da nossa época.

O pedreiro deixou sua marca.

O escultor deixou sua criatura fantástica.

O restaurador deixou um astronauta.

O programador de 1983 deixou COBOL.

O de 2003 deixou XML.

O de 2026 deixou JSON e uma API.

Algum outro, no futuro, acrescentará algo cujo nome ainda nem conhecemos.

E talvez, antes de modificar o programa, ele suba algumas páginas e encontre:

*****************************************************************
* V. BELLACOSA
* 2026
* ...
*****************************************************************

Não saberá exatamente quem foi aquele homem.

Talvez procure.

Talvez não.

Mas durante alguns segundos saberá uma coisa:

outro artesão trabalhou naquela pedra antes dele.

E é isso que torna o legado tão diferente de simplesmente possuir código antigo.

O legado não é aquilo que ficou velho.

Legado é aquilo que alguém construiu bem o bastante para chegar até nós — e que nós cuidamos bem o bastante para entregar ao próximo.

Os cartões desapareceram.

As perfuradoras silenciaram.

Os terminais mudaram.

As máquinas foram substituídas.

As linguagens ganharam companheiras.

Vieram bancos relacionais, mensagens, Web, XML, JSON, APIs, cloud e IA.

Mas em algum dataset ainda encontramos:

RECFM=FB
LRECL=80

E em algum fonte ainda encontramos:

*****************************************************************
* NOME
* DATA
* O QUE FOI FEITO
*****************************************************************

São duas inscrições da mesma civilização.

Uma conta como construíamos.

A outra conta quem construiu.

E enquanto aquela catedral continuar processando transações, calculando valores, movimentando negócios e terminando suas madrugadas com:

RC=0000

o sino continuará tocando.

Para os usuários, será apenas mais um processamento concluído.

Para quem aprendeu a ler as pedras, porém, haverá ali algo muito maior:

cinquenta anos de engenheiros, analistas, operadores e programadores dizendo silenciosamente através do código:

Nós estivemos aqui.



quinta-feira, 30 de abril de 2026

💾🔥 HLASM: O “MICROCÓDIGO HUMANO” QUE DOMA O MAINFRAME — DIRETO DO FERRO PARA A HISTÓRIA 🔥💾

 

Bellacosa Mainframe apresenta o HLASM

💾🔥 HLASM: O “MICROCÓDIGO HUMANO” QUE DOMA O MAINFRAME — DIRETO DO FERRO PARA A HISTÓRIA 🔥💾

Se tem uma linguagem que não conversa com o sistema… ela conversa com o hardware. E faz isso com elegância brutal. Bem-vindo ao universo do HLASM — onde cada instrução é praticamente um pulso elétrico com intenção.


🧬 ORIGEM: DO ASM/360 AO HLASM

A história do HLASM começa lá atrás, com o lendário IBM System/360 (1964). Na época, o assembler era o ASM/360, evoluindo depois para:

  • Assembler F
  • Assembler H
  • Assembler XF
  • E finalmente o HLASM

📅 Lançamento do HLASM: década de 1990 (oficialmente por volta de 1992–1994), acompanhando a evolução dos sistemas z/OS

👉 A ideia foi clara:
Manter o poder do assembler, mas adicionar recursos “high level” como:

  • macros mais poderosas
  • melhor diagnóstico
  • estruturação mais legível
  • integração moderna com o ambiente z/OS

⚙️ O QUE TORNA O HLASM DIFERENTE?

HLASM não é “baixo nível raiz”. Ele é um assembler evoluído, com inteligência embutida.

💡 Destaques:

  • Macros sofisticadas (quase uma metalinguagem)
  • Controle avançado de fluxo
  • Suporte a debug e listagens detalhadas
  • Integração com ferramentas modernas IBM
  • Performance absurda (nível hardware)

👉 Em resumo:
Você escreve assembler… mas com superpoderes.


🏛️ COMPATIBILIDADE: A RELÍQUIA QUE NUNCA MORRE

HLASM mantém compatibilidade com décadas de código legado.

Isso significa:

  • Código dos anos 70 ainda roda hoje 😳
  • Integra com:
    • CICS
    • DB2
    • IMS
  • Funciona perfeitamente nos atuais IBM Z

👉 Isso não é retrocompatibilidade…
É imortalidade corporativa.


🧠 FILOSOFIA: QUANDO VOCÊ PENSA COMO O PROCESSADOR

Programar em HLASM é entender:

  • registradores
  • endereçamento
  • instruções de máquina
  • pipeline do processador

É quase como conversar direto com a CPU:

“Carregue isso. Compare aquilo. Salte agora.”

Sem intermediários. Sem abstrações.


⚔️ HLASM vs ASSEMBLY DO MUNDO PC

Agora começa a parte divertida 😄

🖥️ x86 / x64 (PC, Windows, Linux, macOS)

  • Usado em NASM, MASM
  • Arquiteturas:
    • 8 bits (8080, 8085)
    • 16 bits (8086)
    • 32 bits (80386)
    • 64 bits (x86-64)

👉 Características:

  • Forte dependência de registradores limitados
  • Segmentação histórica (16 bits)
  • Instruções mais “bagunçadas” (CISC complexo)

🧊 HLASM (Mainframe)

  • Arquitetura limpa e consistente desde o System/360
  • Registradores bem definidos (R0–R15)
  • Endereçamento poderoso
  • Foco em processamento massivo e confiabilidade

👉 Diferença brutal:

AspectoHLASMx86/x64
EstabilidadeDécadas sem rupturaMudanças constantes
LegadoTotalmente preservadoParcial
ClarezaAlta consistênciaMuitas exceções
PerformanceOtimizado para I/O e batchOtimizado para geral

🧪 CURIOSIDADES QUE POUCA GENTE SABE

💡 HLASM é usado até hoje em:

  • Núcleos bancários
  • Sistemas de pagamento
  • Processamento de milhões de transações por segundo

💡 Muitas rotinas críticas em COBOL chamam HLASM por baixo

💡 Algumas empresas NUNCA reescreveram seus códigos assembler… só foram evoluindo

💡 HLASM é tão eficiente que às vezes substitui C/C++ em partes críticas


🛠️ DICAS DE OURO (ESTILO BELLACOSA 😎)

🔥 1. Aprenda registradores como extensão do seu cérebro
R1 não é número… é propósito.

🔥 2. Domine macros
Macro em HLASM = produtividade + elegância

🔥 3. Leia listagens (LISTING)
É ali que você vira mestre.

🔥 4. Entenda o fluxo de execução real
Branch errado = desastre silencioso

🔥 5. Combine com COBOL
COBOL + HLASM = performance + legibilidade


🧾 COMENTÁRIO REALISTA (SEM ROMANTIZAR)

HLASM não é para iniciantes.

Ele exige:

  • disciplina
  • atenção absurda
  • entendimento profundo do sistema

Mas em troca?

👉 Você ganha controle TOTAL.


🧠 ANALOGIA FINAL

Se linguagens modernas são:

  • Java = carro automático
  • Python = carro elétrico
  • C = carro manual esportivo

👉 HLASM é:

um caça supersônico com painel analógico.

Você não dirige…
Você pilota.


🚀 FECHAMENTO

O HLASM não é só uma linguagem.

É um legado vivo.
Uma ponte entre 1964 e o futuro.
Um lembrete de que, às vezes…

👉 o caminho mais direto ainda é o mais poderoso.


domingo, 22 de fevereiro de 2026

🔥 31 Bits?! O Bug que Virou Arquitetura: o Segredo Oculto do MVS que Quase Quebrou o Mainframe (e Salvou Tudo)

 

Bellacosa Mainframe explica os 31 bits de endereçamento de memoria no IBM MVS


🔥 “31 Bits?! O Bug que Virou Arquitetura: o Segredo Oculto do MVS que Quase Quebrou o Mainframe (e Salvou Tudo)”

Se você chegou até aqui, jovem padawan do aço e silício… prepare-se: essa não é só uma história técnica — é um daqueles momentos em que uma limitação virou genialidade.

Hoje você vai entender por que o MVS roda em 31 bits, mesmo em um mundo que já flertava com 32 bits — e como isso se conecta diretamente com compatibilidade, performance e… um bit que virou lenda. 🧠⚡


🧠 O Contexto: Quando 32 bits Ainda Era Ficção Científica Prática

Voltamos para os anos 70/80, época do OS/360 e da evolução para o MVS.

Naquele tempo:

  • 24 bits era o padrão (endereçamento até 16 MB 😱)
  • A IBM precisava evoluir
  • Mas não podia quebrar NADA do que já existia

💡 Tradução Bellacosa:

“Evoluir sem quebrar legado — o esporte olímpico do mainframe.”


⚙️ A Chegada dos 32 bits… com um Plot Twist

Quando a IBM decidiu expandir para 32 bits, veio o dilema:

👉 Como crescer sem destruir milhares de aplicações escritas para 24 bits?

A solução foi engenhosa e ousada:

➡️ Usar apenas 31 bits para endereço
➡️ E reservar 1 bit para controle


💥 O Bit 0: O Verdadeiro Protagonista

Aqui entra o easter egg mais clássico do mundo mainframe:

O bit mais significativo (bit 0) foi separado para indicar o modo de endereçamento.

📌 Resultado:

Bit 0Significado
0Endereço válido (modo 31 bits)
1Controle especial (ex: retorno de subrotina)

💡 Isso permitia:

  • Misturar código 24 bits com 31 bits
  • Manter compatibilidade TOTAL
  • Evitar crashes catastróficos

🧬 O Nascimento do “Modo 31”

O MVS passou a operar em algo híbrido:

  • 24-bit mode (legado)
  • 31-bit mode (expansão)

E isso foi formalizado em arquiteturas como:

👉 System/370-XA


🎮 Exemplo Prático (Estilo Raiz)

Imagine um programa chamando uma subrotina:

BALR R14,R15

O endereço de retorno fica no registrador com o bit 0 ligado (1).

🔍 Isso significa:

“Ei! Isso não é um endereço comum — é um ponteiro de controle!”

🔥 Resultado:

  • O sistema sabe diferenciar código de controle
  • Evita confusão com endereços reais
  • Permite transições seguras entre modos

🧪 Analogias para Padawans

Pense assim:

O MVS usa 31 bits como endereço e guarda o último bit como se fosse um "selo VIP" no ingresso 🎟️

  • Sem selo → endereço normal
  • Com selo → instrução especial

🧠 Por que isso foi GENIAL?

Porque resolveu 3 problemas gigantes de uma vez:

1. 🛡️ Compatibilidade absoluta

Programas antigos continuaram funcionando.

2. 🚀 Expansão de memória

Sai de 16 MB → até 2 GB

3. 🧩 Controle inteligente

O sistema ganhou uma forma de distinguir contextos sem custo extra


🐣 Easter Egg que poucos contam

Muitos bugs clássicos em assembler vinham de:

👉 esquecer de limpar o bit 0

Resultado?

💥 Endereço inválido
💥 S0C4 (proteção)
💥 Caos existencial do operador


⚡ Comentário Bellacosa Mainframe

Se você acha isso gambiarra…

💬 “No mundo distribuído, isso seria um workaround.
No mainframe… virou ARQUITETURA OFICIAL.”

E mais:

👉 Essa decisão influenciou diretamente o caminho até o 64 bits no z/Architecture


🚀 Moral da História

O MVS não é 31 bits por limitação.

Ele é 31 bits por estratégia, elegância e sobrevivência.

Às vezes, a melhor inovação não é avançar tudo…
é avançar sem quebrar nada.


🔥 TL;DR para o Padawan Apressado

  • MVS usou 31 bits para endereço
  • 1 bit virou controle (bit 0)
  • Garantiu compatibilidade com 24 bits
  • Evitou reescrever o mundo inteiro
  • Criou um dos hacks mais elegantes da história da computação 

sábado, 21 de fevereiro de 2026

📊 Da Era dos 16MB ao Infinito: A Linha do Tempo que Explica 24 → 31 → 64 bits no Mainframe

 

Bellacosa Mainframe explica o endereçamento de memoria no IBM Mainframe 24 31 e 64 bits

📊 “Da Era dos 16MB ao Infinito: A Linha do Tempo que Explica 24 → 31 → 64 bits no Mainframe”

Prepare-se, padawan… agora você vai enxergar a evolução do mainframe como um verdadeiro mapa de poder computacional — cada salto não foi só técnico… foi uma jogada estratégica digna de xadrez. ♟️


🟢 1. Era 24 bits — O Mundo Cabia em 16MB

🔹 Contexto

  • Arquitetura do OS/360
  • Endereçamento: 24 bits
  • Limite: 16 MB

🧠 O que isso significava?

  • Tudo precisava caber em um espaço minúsculo
  • Programas eram ultra otimizados
  • Overlays eram comuns (carregar partes do programa sob demanda)

💬 Bellacosa insight:

“Aqui nasceu o DNA da eficiência — cada byte valia ouro.”


🟡 2. Era 31 bits — O Hack Mais Elegante da História

🔹 Contexto

  • Evolução para o MVS
  • Introdução da System/370-XA

⚙️ O que mudou?

  • Endereçamento: 31 bits (não 32!)
  • Limite: 2 GB
  • 1 bit reservado (bit 0) para controle

🔥 O pulo do gato:

  • Compatibilidade TOTAL com 24 bits
  • Mistura de modos (24 + 31)
  • Controle inteligente via bit mais significativo

🧪 Conceito-chave:

O endereço não é só endereço — ele carrega “intenção”

💬 Bellacosa insight:

“Enquanto o mundo queria mais bits… o mainframe queria mais inteligência.”


🔵 3. Era 64 bits — O Universo Expandido

🔹 Contexto

  • Arquitetura moderna: z/Architecture
  • Sistemas como z/OS

🚀 O que mudou?

  • Endereçamento: 64 bits
  • Limite teórico: exabytes
  • Espaço virtual gigantesco

🧠 Novos conceitos:

  • Above the bar / below the bar
  • Memory objects
  • Large memory exploitation

💬 Bellacosa insight:

“Agora não é mais sobre caber… é sobre escalar sem limites.”


📊 Timeline Simplificada (Estilo Raiz)

1970s ───────────────► 24 bits (16 MB)
OS/360

1980s ───────────────► 31 bits (2 GB)
MVS / System/370-XA
(bit 0 reservado 👀)

2000+ ───────────────► 64 bits (exabytes)
z/Architecture / z/OS

🧬 Conexão Evolutiva (O Segredo por Trás)

EraProblemaSoluçãoFilosofia
24 bitsMemória limitadaOtimização extrema“Faça caber”
31 bitsCrescer sem quebrarBit de controle“Evolua com legado”
64 bitsEscalabilidadeEspaço massivo“Expanda sem limites”

🐣 Easter Egg de Mestre

Mesmo no mundo 64 bits…

👉 O conceito de “compatibilidade com legado” continua vivo
👉 E o espírito do bit 0 ainda ecoa nas decisões de design

💥 Ou seja:

O passado do mainframe nunca foi descartado — ele foi incorporado


⚡ Fechamento Estilo Bellacosa

Se você entendeu essa timeline, você desbloqueou algo raro:

🧠 Você não vê mais bits… você vê decisões arquiteturais

Porque no mainframe:

Cada bit tem história
Cada limitação vira estratégia
E cada evolução respeita o passado

 

domingo, 1 de junho de 2025

☕💣🚀 PADAWAN, O ASSEMBLER NÃO É UMA LINGUAGEM. É O MOMENTO EM QUE VOCÊ PARA DE DISCUTIR COM O COMPUTADOR E COMEÇA A CONVERSAR DIRETAMENTE COM A CPU!

Bellacosa Mainframe e a linguagem assembler em mainframe o mitico hlasm

☕💣🚀 PADAWAN, O ASSEMBLER NÃO É UMA LINGUAGEM. É O MOMENTO EM QUE VOCÊ PARA DE DISCUTIR COM O COMPUTADOR E COMEÇA A CONVERSAR DIRETAMENTE COM A CPU!

As Lições Ocultas do Curso IBM z/Architecture Assembler Language – Part 2

Existe um momento na vida de todo profissional de Mainframe em que COBOL deixa de ser suficiente.

Não porque COBOL seja limitado.

Não porque o Mainframe seja antigo.

Mas porque surge uma pergunta perigosa:

"O que realmente acontece quando meu programa executa?"

É nesse momento que nasce o interesse pelo Assembler.

O curso IBM EZ341G — z/Architecture Assembler Language Part 2: Machine Instructions — não ensina apenas instruções. Ele ensina como o processador IBM Z pensa.

E isso muda tudo.


O Grande Segredo: Tudo é Registrador

Durante o curso inteiro existe uma mensagem escondida:

LH    3,NUM
AR    3,4
CR    3,5
BE    IGUAL

Tudo gira em torno dos registradores.

Quando um programador COBOL escreve:

ADD VALOR-A TO VALOR-B

o compilador transforma isso em dezenas de instruções de máquina.

O processador não entende COBOL.

Não entende Java.

Não entende Python.

Ele entende apenas instruções.

E quase todas elas envolvem registradores.


A Regra de Ouro: Se Tem G, Pense em 64 Bits

Uma das maiores pegadinhas do curso é distinguir instruções de 32 e 64 bits.

O padrão da IBM é elegantemente simples:

G = Grande = 64 bits

Exemplos:

LG
LGR
LGFI
AG
AGFI
CG
CGR

Todos trabalham sobre o registrador completo.

Já:

L
A
C
AFI

operam apenas sobre a low half do registrador.

Essa pequena letra "G" aparece em dezenas de questões do exame.


O Mistério do Condition Code

O Condition Code é provavelmente o conceito mais importante do curso.

Após uma comparação:

CR  3,4

a CPU grava um valor invisível dentro do PSW.

Esse valor é:

CC=0 Equal
CC=1 Low
CC=2 High

Depois disso:

JE    IGUAL
JL    MENOR
JH    MAIOR

tomam decisões baseadas nesse resultado.

Perceba a beleza do mecanismo.

O processador não executa "IF".

Ele apenas produz Condition Codes.

Todo o resto é interpretação.


O Macete 8421

Outro conceito que aparece repetidamente no exame:

8 = Zero
4 = Minus
2 = Plus
1 = Overflow

Esse é o famoso padrão das máscaras de branch.

Por isso:

JZ
JM
JP
JO

são apenas apelidos amigáveis para máscaras numéricas.

Quando você entende isso, dezenas de Extended Mnemonics deixam de ser um problema.


Packed Decimal: A Religião Financeira do Mainframe

Se existe uma tecnologia que sobreviveu a todas as modas da computação, é o Packed Decimal.

Enquanto o restante do mundo usa floating point para tudo, bancos continuam confiando bilhões de dólares diariamente em instruções como:

AP
SP
MP
DP
CP

O motivo é simples.

Dinheiro não tolera aproximações.


Como Reconhecer um Packed Decimal Válido

Muitos alunos perdem pontos porque esquecem uma regra básica.

Os dígitos devem conter:

0-9

E o último nibble deve conter um sinal:

C
D
F

Exemplos válidos:

123C
123D
550F

Exemplos inválidos:

12AC
00C1
1ABC

Quando isso acontece:

S0C7
Data Exception

O famoso terror dos programadores COBOL.


O Verdadeiro Significado do S0C7

Muitos iniciantes acreditam que:

S0C7 = erro de COBOL

Errado.

O S0C7 é um erro da CPU.

Ela tentou executar uma operação decimal e encontrou dados inválidos.

O COBOL apenas estava no lugar errado na hora errada.


Multiplicação: Onde Todo Mundo Erra

As instruções:

M
MR
MP

parecem simples.

Mas escondem algumas das regras mais cruéis da arquitetura.

Por exemplo:

MR 2,3

não multiplica R2 por R3.

Na verdade utiliza:

Par R2-R3

e coloca o resultado distribuído entre os dois registradores.

Essa é uma das pegadinhas favoritas da IBM.


Divisão: A Arte de Produzir S0CB

A instrução:

DP

é responsável por um dos abends mais famosos do mundo Mainframe:

S0CB
Decimal Divide Exception

Ele ocorre quando:

  • O divisor é zero.

  • O quociente não cabe no campo de destino.

Ou seja, a CPU está protegendo seus dados.


SRP: A Instrução que Parece Magia

Poucas instruções impressionam tanto quanto:

SRP

Shift and Round Packed.

Com ela podemos:

123.95 -> 123
123.95 -> 124
55 -> 5500

Tudo sem realizar multiplicações ou divisões explícitas.

Na prática, SRP é uma calculadora financeira embutida no hardware.


ED: O Momento em que o Mainframe Aprende a Falar com Humanos

Packed Decimal é excelente para cálculos.

Mas humanos não gostam de ler:

12345C

É aí que entra:

ED

A instrução EDIT.

Ela transforma números internos em formatos amigáveis:

12.345,67
24.00
999.99

O ED é literalmente a ponte entre o mundo da CPU e o mundo dos relatórios.


O Poder das Máscaras

A maioria dos alunos demora para perceber que:

ED

não faz a formatação.

Quem faz é a máscara.

Por isso encontramos padrões como:

20
21
4B
6B
40

onde:

20 = Digit Selector
21 = Significance Starter
4B = Ponto Decimal
6B = Vírgula
40 = Espaço

É um mecanismo brilhante criado décadas antes da maioria das linguagens modernas.


O Que o Curso Realmente Ensina

Oficialmente o curso fala sobre:

  • LOAD

  • STORE

  • ADD

  • SUBTRACT

  • MULTIPLY

  • DIVIDE

  • COMPARE

  • BRANCH

  • CHARACTERS

  • PACKED DECIMAL

Mas na prática ele ensina algo muito mais profundo.

Ele mostra que toda linguagem moderna, toda API, todo framework e toda aplicação corporativa acabam reduzidos a algumas operações fundamentais:

Mover dados
Somar
Subtrair
Comparar
Desviar
Formatar

O Mainframe apenas faz isso de forma extremamente explícita.


Conclusão

☕💣🚀 PADAWAN, quando você aprende Assembler, descobre um segredo que poucos profissionais conhecem.

O computador nunca executou COBOL.

Nunca executou Java.

Nunca executou Python.

Ele sempre executou instruções de máquina.

O Assembler apenas remove o tradutor e permite que você converse diretamente com a arquitetura IBM Z.

E quando isso acontece, você deixa de ser apenas um programador.

Você começa a entender como a própria CPU pensa.


terça-feira, 2 de julho de 2019

☕💥 A Jornada do Padawan COBOL – Parte 7 Desvendando o Universo dos CALLs no Mainframe

 

Bellacosa Mainframe explica o CALL em COBOL Parte VII

☕💥 A Jornada do Padawan COBOL – Parte 7

Desvendando o Universo dos CALLs no Mainframe

BALR, BASR, BASSM, SVC, PC, TCB, SRB, Cross Memory, zIIP e os Segredos dos Sysprogs Jedi do IBM Z

Ou como descobrir que, por trás de um simples CALL COBOL, existe um universo de instruções Assembly capaz de processar bilhões de transações por dia

Por Vagner Bellacosa – Bellacosa Mainframe


O dia em que o Padawan descobre que COBOL é apenas uma ilusão confortável

Até agora descobrimos:

✔ Static CALL

✔ Dynamic CALL

✔ Binder

✔ LE

✔ CICS

✔ APIs

✔ MQ

✔ REST

Mas existe algo que poucos desenvolvedores COBOL enxergam.

Quando você escreve:

CALL 'SUBPGM'

O hardware IBM Z não entende COBOL.

Ele entende.

Instruções Assembly

E é aqui que começa a verdadeira aventura.


O que existe por trás do CALL

Imagine:

Programa COBOL

↓

Compilador

↓

LE

↓

Assembler

↓

CPU z16


O processador executa algo semelhante a:

BALR R14,R15

ou

BASR R14,R15

BALR

Branch and Link Register

O avô do CALL.


Exemplo

BALR 14,15

O que faz?

Salva endereço retorno.

Desvia execução.


Visualmente


MAIN


00010000


BALR


↓


SUBPGM


00025000


EXECUTA


RETORNA




BASR

Mais moderno.


Branch and Save Register


Mesmo conceito.

Melhor otimização.


BASSM

Território Jedi.

Poucos entram.


Branch And Save And Set Mode


Troca modo.

24 bits.

31 bits.

64 bits.


Exemplo

BASSM R14,R15

Por que existe?

Compatibilidade.

Programas antigos.

AMODE mistos.


O conceito de Supervisor

Padawan acredita.

Programa faz tudo.

IBM sorri.


Usuário

não faz quase nada.


Sistema faz.


SVC

Supervisor Call


Programa pede ajuda.


Exemplo

SVC 99

Sistema operacional assume.

Executa.

Retorna.


Exemplos famosos

SVC 13

ABEND


SVC 99

Dynamic Allocation


SVC 19

OPEN


O Program Call

PC Instruction


Mais rápido.

Mais seguro.

Cross Memory.


Muito usado por:

RACF

DB2

JES2

SAF


Cross Memory

Território dos Sysprogs.


Endereço A

fala com

Endereço B


Visualmente


USER SPACE


↓


PC


↓


DB2 SPACE


↓


RETORNA



TCB

Task Control Block


Representa.

Uma tarefa.


CICS

Muitos TCBs.


Batch

Normalmente um.


SRB

Service Request Block


Mais leve.

Mais rápido.


Menos overhead.


Muito usado.

RMF

SMF

DB2


TCB versus SRB

CaracterísticaTCBSRB
PesoMédioLeve
CPUNormalMelhor
WAITSimNão
PerformanceBoaExcelente

zIIP

O sonho do financeiro.


Specialty Engine


Pode executar:

XML

Java

MQ

DRDA

REST

Analytics


CPU geral agradece.


HiperDispatch

Poucos conhecem.

IBM adora.


Mantém afinidade.

CPU cache.


Melhora latência.


LE Internals

Language Environment.


Controla.

Heap

Stack

Condition Handler

Exceptions

Threads

Storage


O Condition Handler

Exemplo

ON EXCEPTION

LE intercepta.

Processa.

Retorna.


Como nasce um S0C4

Programa

↓

CALL

↓

LE

↓

Assembler

↓

PSW

↓

Address Exception

↓

ABEND


O PSW

Program Status Word


Coração do processador.


Guarda

Modo

Estado

Máscaras

Endereço


IPCS mostra.


Registradores

IBM Z possui

16 registradores


R14

Retorno


R15

Entrada


R13

Save Area


Veteranos decoram.


Save Area

Mágica antiga.


Assembler

STM 14,12,12(13)

Salva contexto.


Retorna depois.


Porque COBOL parece mágico

O compilador faz.

Tudo isso.

Automaticamente.


Padawan escreve

CALL 'PAGTO'

IBM executa.

Milhares.

De instruções.


Dicas Bellacosa

Dica 1

Nunca ignore PSW.


Dica 2

Aprenda registradores.


Dica 3

Entenda LE.


Dica 4

Conheça SVC99.


Dica 5

Estude TCB.


Dica 6

SRB é ouro.


Dica 7

zIIP economiza dinheiro.


Easter Egg Mainframe

Existe um grupo de profissionais.

Que olha isto.

BALR 14,15

E imediatamente sabe.

AMODE.

RMODE.

PSW.

TCB.

Offset.

Storage Key.

Cross Memory.

PC Bit.

SRB.


São conhecidos pelos desenvolvedores COBOL como:

Os Sysprogs Jedi


Checklist Jedi da Parte 7

✅ Entender BALR

✅ Entender BASR

✅ Conhecer BASSM

✅ Saber SVC99

✅ Estudar LE

✅ Aprender TCB

✅ Aprender SRB

✅ Conhecer Cross Memory

✅ Entender PSW

✅ Conhecer IPCS

✅ Aproveitar zIIP

✅ Ler Assembly sem medo


A Filosofia Jedi do CALL – Parte 7

O Padawan iniciante acredita:

COBOL chama COBOL.

O desenvolvedor intermediário pensa:

COBOL usa LE.

O especialista entende:

COBOL é uma linguagem elegante construída sobre décadas de engenharia do z/Architecture, Assembly, supervisão do z/OS e mecanismos extremamente otimizados de gerenciamento de contexto.

E o Mestre Mainframe compreende algo ainda mais profundo:

Um simples CALL 'SUBPGM' é apenas a ponta visível de uma cadeia tecnológica refinada ao longo de mais de cinquenta anos, permitindo que um IBM Z execute bilhões de instruções por segundo com níveis de disponibilidade, segurança e eficiência que ainda hoje servem de referência para toda a indústria.


Próxima aventura do Padawan COBOL – Parte 8

"As Últimas Runas do Mainframe: DLLs Avançadas, Metal C, Callable Services, SAF, RACF, PC-Bit, APF, Dataspaces, Hiperspaces, Coupling Facility e os segredos que poucos profissionais IBM Z dominam."


sábado, 15 de agosto de 2015

🌌 O Primeiro Programa no Mainframe: A Jornada do Padawan na Galáxia do COBOL

 

Bellacosa Mainframe e o primeiro programa cobol

🌌 O Primeiro Programa no Mainframe: A Jornada do Padawan na Galáxia do COBOL

Por Vagner Bellacosa — Bellacosa Mainframe Chronicles


“Antes de um Jedi empunhar seu sabre de luz, ele aprende a sentir a Força. No Mainframe, antes de rodar um programa, o Padawan precisa aprender a sentir o zumbido do MVS.”
— Mestre Bellacosa


🚀 Capítulo 1: O Despertar do Terminal

Todo Jedi Mainframe começa no TSO/ISPF, o templo sagrado onde o código nasce.
Aqui, não há cliques, não há mouse, só o poder dos comandos.

🌀 Dica do Mestre:
TSO significa Time Sharing Option. É o modo como o z/OS permite que vários usuários interajam simultaneamente com o sistema.
O ISPF (Interactive System Productivity Facility) é o ambiente gráfico textual — sim, gráfico de ASCII, mas ainda assim — onde tudo acontece.

Para começar:

  1. Entre no TSO (geralmente com um logon ID e senha).

  2. Ao ver o menu do ISPF, escolha a opção 2 – Edit.

  3. Crie seu primeiro dataset para o código-fonte:

    CREATE 'USERID.COBOL.SOURCE'

    (substitua USERID pelo seu logon)


🧙‍♂️ Capítulo 2: Invocando o Espírito do COBOL

Dentro do dataset USERID.COBOL.SOURCE, vamos escrever o primeiro feitiço:

IDENTIFICATION DIVISION. PROGRAM-ID. HELLOMF. PROCEDURE DIVISION. DISPLAY 'HELLO MAINFRAME WORLD!'. STOP RUN.

💡 Curiosidade Bellacosa:
O primeiro programa COBOL Hello World rodou em 1959. Desde então, milhões de “HELLOs” ecoaram nos datacenters do mundo — inclusive em satélites e sistemas bancários.

🧩 Easter Egg Técnico:
Se você escrever DISPLAY 'HELLO WORLD' sem o ponto final (.), o compilador pode engasgar!
No COBOL, o ponto é sagrado — é o ponto final das sentenças, não só da gramática. 😉


🧰 Capítulo 3: O Ritual do JCL

Nenhum programa vive sem o JCL (Job Control Language) — o pergaminho que instrui o Mainframe a compilar e executar seu código.

Crie outro dataset:

CREATE 'USERID.JCL'

Agora o job:

//HELLOJOB JOB 'COBOL TEST',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //STEP1 EXEC PGM=IGYCRCTL //COBOL.SYSIN DD DSN=USERID.COBOL.SOURCE(HELLOMF),DISP=SHR //COBOL.SYSLIN DD DSN=&&LOADSET,UNIT=VIO,SPACE=(CYL,(1,1)),DISP=(MOD,PASS) //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //STEP2 EXEC PGM=HELOWMF //STEPLIB DD DSN=USERID.LOADLIB,DISP=SHR //SYSOUT DD SYSOUT=*

⚙️ Explicando o feitiço:

  • JOB é o início da magia — identifica o job ao JES2, o oráculo do spool.

  • EXEC chama o compilador (IGYCRCTL) e depois o programa.

  • SYSOUT=* manda a saída para o spool, visível com o comando SDSF ou OUTLIST.

🪄 Easter Egg Jedi:
O compilador COBOL chama o “IGYCRCTL” (IBM Guy’s Compiler Routine Control) — sim, o “IGY” vem da IBM Guy, apelido do engenheiro que escreveu o protótipo original em 1959 (piada interna).


🖥️ Capítulo 4: Invocando o Spool

Após submeter o job com o comando SUBMIT, use:

=SD

ou

SDSF -> ST (Status)

Para ver o job rodando. Quando terminar, veja a saída (? ou S).

Se tudo der certo, o spool mostrará:

HELLO MAINFRAME WORLD!

🎉 Parabéns, Padawan!
Você acaba de executar seu primeiro programa em um dos sistemas mais poderosos e estáveis do planeta.


🧭 Capítulo 5: As Trilhas do Aprendizado

Agora que sentiu o gosto da Força, siga o mapa dos próximos passos:

NívelMissãoFerramentaDica do Mestre
🥉 InicianteCriar programas COBOL simplesISPF EditSempre compile com atenção às mensagens IGY*
🥈 AprendizManipular VSAMIDCAMS + COBOLAprenda REDEFINES e FILE STATUS
🥇 CavaleiroCriar programas CICSCEDA + BMSDomine COMMAREA e LINKAGE SECTION
🧙 MestreCriar Web Services no z/OSCICS Web Services / z/OS ConnectCOBOL + JSON = futuro clássico

☕ Curiosidade Bellacosa:

  • O z/OS ainda roda código compilado há 40 anos — sim, o seu HELLOMF pode rodar em 2065 se bem armazenado.

  • Em alguns bancos, a política é: “nunca mexa em programa que funciona há mais de 20 anos” — o código é tratado como reliquia sagrada.

  • O STOP RUN. equivale ao “May the Force be with you” do COBOL — encerra o ciclo do programa com honra.


🌠 Conclusão: O Caminho do Código Antigo

O Mainframe não é um sistema — é uma filosofia.
Cada tela azul do ISPF é um portal para o passado, e cada DISPLAY é um elo com o futuro.
Ser um Padawan Mainframe é aprender que, antes de tudo, o poder está na paciência, na curiosidade e no amor por sistemas que nunca morrem.


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