☕ 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

segunda-feira, 14 de janeiro de 2019

🍕 A Pizza Impossível — Crônicas do Convívio no Século XXI

 


🕯️ Poste para o Blog El Jefe
Título: 🍕 A Pizza Impossível — Crônicas do Convívio no Século XXI
(por Bellacosa Mainframe)


Existem guerras silenciosas que não aparecem no noticiário — e uma delas acontece todos os dias, nas mesas de restaurantes e nos grupos do WhatsApp que tentam decidir “onde vamos comer?”

Vivemos tempos em que um simples jantar virou um protocolo diplomático.
Antigamente bastava escolher a pizzaria da esquina, dividir a conta e rir das histórias. Hoje, o ato de comer juntos exige um conselho da ONU gastronômica: carnívoros, vegetarianos, veganos, intolerantes à lactose, alérgicos ao glúten, intolerantes à opinião alheia e os que simplesmente não gostam de nada.

Eu vivi isso.
Um relacionamento com núcleo misto — carnívoros, vegetarianos e veganos.
Parecia uma república unida de vontades.
Pedir uma pizza era um deploy logístico de alta complexidade, onde cada sabor exigia negociação, concessões, e em alguns casos, tratados de paz temporários.

Tínhamos noites em que o simples ato de pedir comida se transformava em debate filosófico:
– “Mas o queijo vegano tem gosto de sabão.”
– “E a sua calabresa tem gosto de culpa.”
– “Então pede metade de cada.”
– “Mas o molho é feito com mel!”
– “Mel não é vegano?”
E o relógio girando, a fome crescendo, e o senso de humor evaporando.



Em alguns dias, optávamos pela “solução prática”: cada um pegava o seu pedido num lugar diferente e depois nos reuníamos pra comer juntos.
Mas ali percebi a ironia: o ato de reunir separava.
Enquanto cada um defendia seu prato, a conversa se fragmentava, e o que era pra ser comunhão virava colagem.


🍷 Reflexão Bellacosa

Não é julgamento — é observação.
Aprendi que nem tudo precisa ser compatibilizado.
A vontade de agradar a todos, de nivelar diferenças, às vezes destrói o que há de mais humano: o simples prazer de estar junto.
Hoje, deixo o diplomata em casa e me sento com quem partilha o mesmo cardápio — não por exclusão, mas por sanidade.

Porque há momentos na vida em que é melhor saborear em paz do que mastigar tensões.
Nem toda mesa precisa ser redonda.
Nem toda refeição precisa ser um ato político.


🥢 Curiosidades e Easter Eggs Bellacosa Mainframe

  • 🍽️ O dilema da pizza é, na verdade, uma metáfora de sistemas complexos com parâmetros incompatíveis. Em linguagem de TI, seria o mesmo que tentar rodar um programa COBOL puro num container Docker sem runtime adequado — o resultado: conflito, atraso e fome.

  • 💡 No Japão, há um termo interessante: “kuuki yomenai” (KY) — significa “não saber ler o ar”, ou seja, não perceber o clima social. Hoje, parece que o mundo inteiro virou KY: estamos sempre interpretando errado o ambiente, o tom, o outro.

  • 🕰️ Na Roma antiga, as refeições eram momentos de comunhão e pacto; hoje, são arenas. Mudou o menu, mas o tempero da disputa continua o mesmo.

  • 🤖 No Mainframe da vida moderna, cada pessoa é um subsistema com APF Authorization próprio — e nem todos estão prontos para rodar no mesmo address space.


🍕 Epílogo Bellacosa

O século XXI ficou difícil, sim.
Mas talvez a solução esteja no básico:
um prato simples, uma boa conversa e o direito sagrado de comer sem precisar convencer ninguém do próprio cardápio.

No fim das contas, o sabor da liberdade é o único que serve pra todos.

👘 O Real e o Ficcional: Uniformes Escolares Japoneses nos Animes

 


👘 O Real e o Ficcional: Uniformes Escolares Japoneses nos Animes

🇯🇵 Origem Real do Uniforme de Marinheiro

Sim, as colegiais japonesas realmente usam uniformes inspirados em marinheiros — e isso vem de quase 100 anos atrás.

  • O modelo “sailor fuku” foi introduzido em 1920, na Fukuoka Jo Gakuin, inspirado nos uniformes navais britânicos.

  • A ideia era transmitir disciplina, pureza e espírito coletivo, valores centrais da educação japonesa da época.

  • Até hoje, muitas escolas tradicionais ainda usam esse estilo, especialmente em colégios femininos.

Mas atenção: não são todas.
Nas últimas décadas, muitas escolas migraram para uniformes tipo “blazer e gravata”, parecidos com os de escolas ocidentais.


🎌 Tipos de Uniforme no Japão Atual

  1. Sailor Fuku (セーラー服) – Clássico de marinheiro. Blusa com gola marinha, laço ou gravata curta, e saia plissada.

  2. Blazer Uniform (ブレザー制服) – O mais moderno e comum hoje. Blazer, camisa branca, gravata, e saia ou calça.

  3. Gakuran (学ラン) – Uniforme masculino tradicional, preto, gola alta, botões dourados — inspirado no exército prussiano.

  4. Casual Moderno – Escolas privadas ou internacionais permitem suéteres, cardigãs, e até tênis coloridos.


🎨 O Que é Ficção nos Animes?

Os animes romantizam e estilizam esses uniformes para dar identidade visual aos personagens.

✨ Exemplos de exageros e licenças criativas:

  • Saias mais curtas (na realidade, elas são bem mais longas, chegando até o joelho).

  • Cores vibrantes e variações fantasiosas, como golas lilás ou gravatas rosa — na vida real, as escolas seguem padrões rígidos e discretos.

  • Acessórios e meias altas viraram moda por causa dos animes, e não o contrário.

  • Uniformes idênticos em todas as estações — na vida real, há versão de verão e de inverno, com tecidos e camadas diferentes.


💡 Curiosidades Bellacosa

  • No Japão, o uniforme é símbolo de status e pertencimento. Muda o comportamento do aluno e é usado até fora da escola, como orgulho da instituição.

  • Existe até mercado de colecionadores e lojas vintage que vendem uniformes escolares originais.

  • O estilo "sailor" virou ícone mundial após Sailor Moon, que ressignificou o uniforme como símbolo de poder feminino e heroísmo.

  • Muitos artistas de anime estudam o design de uniformes reais para manter verossimilhança cultural, mas depois exageram para estilo, apelo visual e narrativa.


🧭 Dicas Para Entender Melhor nos Animes

  1. Observe o corte e o brasão — se for fiel, o autor está retratando uma escola realista.

  2. Uniformes muito elaborados indicam escolas de elite ou fantasia (como em Ouran High School Host Club).

  3. Uniformes iguais entre gêneros costumam representar igualdade — algo cada vez mais comum nas escolas reais desde 2020.

  4. Animes de época (Showa Era) geralmente mostram o gakuran e o sailor fuku tradicionais.

  5. Séries contemporâneas, como Your Name e A Silent Voice, retratam uniformes reais, modernos e discretos.


💬 Comentário Bellacosa

O uniforme japonês é um código cultural — mistura de disciplina, estética e identidade social.
Nos animes, ele vira palco de sonhos, rebeldia e romantismo.
Enquanto na vida real simboliza ordem, no anime ele simboliza emoção.
É o mesmo tecido… mas costurado com sentimentos.


❤️ Especial aos Fãs de Cultura Escolar

  • Quer ver o contraste entre real e ficção? Compare Sailor Moon (romântico e colorido) com K-On! (realista e contemporâneo).

  • No Japão, existem cafés temáticos de colegiais, mas com forte regulamentação — o que começou como curiosidade cultural acabou virando debate ético.

  • O uniforme é tão icônico que até noivas japonesas já fizeram ensaios de casamento vestidas de colegiais, como tributo à juventude.


Bellacosa conclui:
Entre o tecido e a fantasia, o Japão costura sua própria história — um botão de disciplina e um laço de emoção.
No fim, os uniformes dos animes não são apenas roupas… são símbolos de uma juventude que o mundo inteiro aprendeu a admirar.

domingo, 13 de janeiro de 2019

O Mistério das Três Portas do CICS : Quando um Jovem Programador COBOL Descobriu que uma Escolha Entre LINK, XCTL e START Poderia Decidir o Destino de Milhões de Transações

 

Bellacosa Mainframe e o misterio das 3 portas do cics

☕ Um Café no Bellacosa Mainframe

O Mistério das Três Portas do CICS

Quando um Jovem Programador COBOL Descobriu que uma Escolha Entre LINK, XCTL e START Poderia Decidir o Destino de Milhões de Transações

"Naquela noite, o relógio marcava 02h17 da madrugada. O CPD estava silencioso. Apenas o som dos discos girando quebrava o silêncio. Um jovem programador COBOL observava um abend misterioso enquanto um velho analista, conhecido apenas como Bellacosa, aproximava-se lentamente com uma xícara de café fumegante. Sem dizer uma palavra, desenhou três portas em um bloco de papel. Sobre elas escreveu apenas três nomes: LINK. XCTL. START. 'Todo programador chega a este corredor um dia', disse ele. 'O problema é que muitos escolhem a porta errada...'."


O Caso das Três Portas

Se existe um tema que separa um programador COBOL iniciante de um desenvolvedor CICS experiente, é o entendimento do Program Control.

À primeira vista, LINK, XCTL e START parecem comandos semelhantes. Todos executam outro programa. Todos transferem controle. Todos podem utilizar COMMAREA.

Mas essa semelhança é apenas superficial.

Na prática, eles representam três formas completamente diferentes de pensar uma aplicação transacional.

É como três detetives investigando o mesmo crime usando métodos distintos.

Um faz perguntas e volta com respostas.

Outro assume a investigação inteira.

O terceiro abre um novo caso enquanto continua trabalhando no atual.

Entender essa diferença é compreender uma das peças centrais da arquitetura do CICS.

E essa história começa muito antes da primeira linha de COBOL.


O CICS Nunca Perde o Controle

O primeiro erro dos iniciantes é imaginar que um programa COBOL "chama" outro programa.

Na realidade...

Quem chama é o CICS.

Seu programa apenas faz um pedido.

Imagine um grande hotel cinco estrelas.

O hóspede não entra na cozinha.

Ele não abre a porta da lavanderia.

Ele não liga diretamente para o gerente.

Tudo passa pela recepção.

O CICS funciona exatamente assim.

Quando escrevemos:

EXEC CICS LINK PROGRAM('VALIDA')
END-EXEC.

não estamos dizendo ao computador:

Execute o programa VALIDA.

Estamos dizendo ao CICS:

"Por favor, transfira o controle para VALIDA seguindo todas as regras da arquitetura."

Isso muda completamente nossa forma de pensar.

O CICS controla:

  • Memória

  • Tasks

  • Locks

  • Arquivos

  • Transações

  • Recursos

  • Segurança

  • Recuperação

Nada acontece sem sua autorização.


O Verdadeiro Significado de "Program Control"

Program Control não significa apenas mudar de programa.

Significa administrar a vida inteira da transação.

Quem continua?

Quem termina?

Quem espera?

Quem retorna?

Quem libera memória?

Quem inicia outra task?

Essas perguntas são respondidas justamente por LINK, XCTL e START.


PRIMEIRA PORTA

LINK

Na velha revista noir, Bellacosa desenha um telefone.

"LINK", diz ele.

"É como ligar para um especialista."

Você faz uma pergunta.

Ele responde.

Você continua seu trabalho.

Nada mais.


Fluxo Mental

Programa A

↓

LINK

↓

Programa B

↓

RETURN

↓

Programa A continua

Perceba que o Programa A nunca desaparece.

Ele apenas espera.


Uma Analogia Policial

Sherlock Holmes precisa descobrir se uma assinatura é falsa.

Ele chama um perito grafotécnico.

O perito faz seu trabalho.

Entrega o laudo.

Sherlock continua a investigação.

Ele não entrega o caso ao perito.

Foi apenas uma consulta.

Esse é exatamente o espírito do LINK.


Por que LINK existe?

Porque duplicar código é um crime.

Imagine um banco.

Existem milhares de programas.

Todos precisam validar CPF.

Todos precisam validar agência.

Todos precisam calcular tarifas.

Sem LINK seria algo parecido com isto:

Programa A

1000 linhas de validação

Programa B

1000 linhas iguais

Programa C

Mais 1000 linhas iguais

Resultado?

Uma manutenção impossível.

Então surgiu a ideia da modularização.

Criar um programa especializado.

Todos fazem LINK.

Todos reutilizam.


Curiosidade Histórica

Os primeiros sistemas bancários gigantes da década de 80 começaram a reduzir drasticamente o tamanho dos programas graças ao uso intensivo de LINK.

Alguns módulos chegaram a ser reutilizados por mais de 5.000 programas diferentes.

Imagine alterar uma regra tributária.

Em vez de recompilar cinco mil programas...

Recompila-se apenas um módulo.

Essa economia representa milhares de horas de trabalho.


O Stack Invisível

Existe um detalhe fascinante.

Quando fazemos LINK o CICS monta uma pilha.

Programa A

↓

Programa B

↓

Programa C

↓

Programa D

Cada programa sabe exatamente quem o chamou.

Quando termina...

Volta para quem estava esperando.

É praticamente uma pilha de execução semelhante ao que linguagens modernas como Java e C# fazem internamente.

Só que isso já existia décadas antes.


EASTER EGG Nº 1 ☕

Os programadores antigos brincavam dizendo:

"LINK é o telefone do CICS."

Você liga.

Conversa.

Desliga.

Continua a vida.


SEGUNDA PORTA

XCTL

Agora Bellacosa desenha uma flecha enorme.

Sem retorno.

"Quando atravessar essa porta..."

"...não olhe para trás."


XCTL significa substituição.

Fluxo:

Programa A

↓

XCTL

↓

Programa B

Fim.

Programa A acabou.

Nunca mais será executado.


Analogia Cinematográfica

Imagine uma corrida de revezamento.

LINK

é como emprestar uma calculadora.

Ela volta.

XCTL

é entregar o bastão.

Sua corrida terminou.

Outro atleta continua.


Quando usar?

Sempre que o programa atual terminou definitivamente.

Exemplo clássico:

LOGIN

↓

MENU

O login acabou.

Nunca mais será usado.

Então:

LOGIN

↓

XCTL MENU

Muito mais eficiente.


Economia de Recursos

Pouca gente comenta isso.

Mas XCTL ajuda o CICS a economizar memória.

Como não existe retorno...

O contexto anterior pode ser descartado.

Em um ambiente com milhares de usuários simultâneos...

Essa pequena economia torna-se gigantesca.


Uma Cidade Invisível

Imagine uma cidade.

Cada prédio representa um programa.

LINK

é visitar um prédio e voltar para casa.

XCTL

é vender sua casa.

Mudar-se definitivamente.

Nunca mais retornar.


EASTER EGG Nº 2 ☕

Existe uma frase famosa entre veteranos:

"Quem usa XCTL esperando voltar está esperando um trem que nunca passa."


TERCEIRA PORTA

START

Agora Bellacosa sorri.

"Esta porta..."

"...não leva ao próximo cômodo."

"Ela cria outro prédio."


Essa talvez seja a maior confusão dos iniciantes.

START

não chama programa.

START cria outra transação.

Parece a mesma coisa.

Mas está muito longe disso.


A Grande Diferença

LINK

continua na mesma task.

XCTL

continua na mesma task.

START

cria outra task.

Outro contexto.

Outra vida.

Outra execução.


Fluxo

Transação A

↓

START

↓

Nova Transação

Não existe espera.

Não existe retorno.

Cada uma segue seu caminho.


Imagine um Restaurante

Você pede um café.

Enquanto toma o café...

Pede também uma sobremesa para levar.

O garçom registra outro pedido.

Você continua tomando café.

Não espera a sobremesa ficar pronta.

Isso é START.


Um Banco de Verdade

Cliente faz PIX.

O sistema precisa:

✔ atualizar saldo

✔ gravar auditoria

✔ enviar SMS

✔ enviar e-mail

✔ atualizar Data Warehouse

✔ gerar estatísticas

O cliente deveria esperar tudo isso?

Claro que não.

Então:

START SMS
START EMAIL
START AUDITORIA

Enquanto isso...

A tela já responde:

Transferência concluída.


START pode ser Agendado

Poucos iniciantes sabem.

START pode acontecer:

Agora.

Daqui cinco segundos.

Daqui cinco minutos.

Daqui uma hora.

Em horário específico.

Isso permite automações extremamente sofisticadas.


Curiosidade

Muitos sistemas de cobrança utilizam START para criar processos futuros.

Por exemplo:

Hoje:

Cliente fez uma compra.

Daqui sete dias:

Enviar pesquisa de satisfação.

Tudo agendado pelo próprio CICS.


COMMAREA

A Mala de Viagem

Imagine uma mala.

Dentro dela estão documentos.

Valores.

Informações.

Essa mala é a COMMAREA.

LINK entrega a mala.

Recebe de volta.

XCTL entrega a mala.

Vai embora.

START entrega uma cópia da mala para outra viagem.

É exatamente isso.


Mas Existe Algo Melhor...

Nos sistemas modernos existem CHANNELS e CONTAINERS.

Eles resolvem várias limitações da COMMAREA:

✔ maior capacidade

✔ múltiplos objetos

✔ melhor organização

✔ integração com aplicações modernas

Em entrevistas técnicas isso costuma aparecer bastante.


O Erro Mais Comum

Iniciante:

"Vou usar START porque é mais rápido."

Veterano:

"Não."

START não acelera nada.

Ele apenas desacopla o processamento.

São conceitos completamente diferentes.


Outro Erro Clássico

Usar LINK para tudo.

Imagine:

Transferência

↓

LINK SMS

↓

LINK EMAIL

↓

LINK RELATÓRIO

↓

LINK LOG

Resultado?

O cliente espera tudo terminar.

Resposta lenta.

Sistema congestionado.


Outro Crime Arquitetural

Usar START para validação.

START VALIDA CPF

Enquanto isso...

A transferência continua.

Percebe o problema?

O dinheiro pode ser transferido antes da validação terminar.

Catástrofe.


Comparação Completa

CaracterísticaLINKXCTLSTART
Retorna ao programa chamadorSimNãoNão
Mesma TaskSimSimNão
Nova TransaçãoNãoNãoSim
Processamento AssíncronoNãoNãoSim
Ideal para reutilizaçãoSimNãoNão
Ideal para navegaçãoNãoSimNão
Ideal para backgroundNãoNãoSim

O Fluxo de um Banco Moderno

Imagine toda uma sessão bancária.

LOGIN

↓

XCTL MENU

O login desaparece.

Depois:

MENU

↓

LINK VALIDA CONTA

↓

LINK VALIDA LIMITE

↓

LINK CALCULA TARIFA

Cada módulo retorna.

Transferência concluída.

Agora:

START SMS

START EMAIL

START RELATÓRIO

START AUDITORIA

Enquanto isso:

Cliente já está iniciando outra operação.

Tudo funcionando simultaneamente.

É arquitetura.

Não mágica.


O Que Acontece Internamente?

Quando um comando é executado, o CICS atualiza diversas estruturas internas:

  • Task Control Area (TCA): controla a execução da tarefa atual.

  • Program Control Table (PCT) e Program Processing Table (PPT): ajudam a localizar e preparar programas para execução.

  • Storage Manager: administra a memória utilizada pelos programas e COMMAREAs.

  • Dispatcher: decide quando cada task pode usar a CPU.

No caso do LINK, o CICS preserva o contexto do chamador e empilha a chamada. No XCTL, substitui o programa ativo sem manter uma pilha de retorno. No START, cria uma nova entrada de task, que poderá ser despachada conforme a disponibilidade do sistema e as prioridades definidas pelo Workload Manager (WLM).

Essa infraestrutura invisível é uma das razões pelas quais um único CICS consegue atender milhares de usuários simultaneamente.


Dicas de Ouro para Iniciantes

✅ Pense primeiro no fluxo de negócio, depois escolha o comando.

✅ Pergunte sempre: "Preciso voltar para este programa?"

  • Sim → LINK.

  • Não → XCTL.

✅ Pergunte também: "Esse processamento pode acontecer depois?"

  • Sim → START.

✅ Evite criar programas monolíticos. Um bom sistema CICS é formado por módulos pequenos, especializados e reutilizáveis.

✅ Documente claramente quando um programa espera retorno e quando transfere definitivamente o controle. Isso facilita manutenção e reduz erros.


Curiosidades que Pouca Gente Conhece

  • Alguns ambientes bancários possuem módulos de validação chamados por dezenas de milhões de LINKs por dia.

  • Em aplicações críticas, uma única transação pode executar dezenas de comandos LINK antes de terminar.

  • Muitos sistemas legados utilizam cadeias de XCTL para implementar menus completos em aplicações 3270.

  • START é frequentemente usado para disparar integrações com filas, auditorias, notificações e processamento em segundo plano, reduzindo o tempo de resposta percebido pelo usuário.


O Conselho Final de Bellacosa

Bellacosa terminou o café, fechou o bloco de anotações e apontou novamente para as três portas.

— "O segredo nunca foi decorar a sintaxe."

O jovem programador olhou confuso.

— "Então qual é o segredo?"

O velho sorriu.

— "Entender o destino da transação."

Ele desenhou três frases finais:

LINK conversa.

XCTL substitui.

START cria um novo caminho.

Depois apagou as luzes do CPD.

Enquanto caminhavam pelo corredor iluminado apenas pelos painéis azuis do mainframe, Bellacosa deixou a última pista:

"Os grandes sistemas do mundo não permanecem funcionando há décadas porque usam comandos complicados. Permanecem funcionando porque seus arquitetos sempre souberam escolher a porta certa antes de atravessá-la."

Naquela madrugada, o jovem programador percebeu que o verdadeiro mistério nunca esteve nos comandos do CICS.

O verdadeiro mistério sempre foi compreender que cada transação conta uma história, e que LINK, XCTL e START são apenas maneiras diferentes de decidir como essa história continuará. Afinal, no universo do mainframe, uma escolha aparentemente simples pode determinar se milhões de transações seguirão seu caminho com segurança... ou se um novo caso será aberto para o próximo detetive do CPD investigar.

domingo, 6 de janeiro de 2019

⚓ ALMIRANTE GRACE HOPPER E O MAINFRAME QUE SE RECUSAVA A FICAR NO PASSADO

Bellacosa Mainframe fala do mainframe do futuro

☕ Um Café no Bellacosa Mainframe

⚓ ALMIRANTE GRACE HOPPER E O MAINFRAME QUE SE RECUSAVA A FICAR NO PASSADO

COBOL, Git, APIs, MQ, Kafka, CI/CD, Jenkins, OpenShift, observabilidade, segurança, IA e a estranha descoberta de que modernizar um mainframe não significa necessariamente jogar fora aquilo que funciona.



🎬 PRÓLOGO — O jovem programador e a máquina do tempo

Imagine seu primeiro dia trabalhando com mainframe.

Você aprendeu algumas coisas sobre COBOL.

Já sabe que existe:

IDENTIFICATION DIVISION.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.

Descobriu que PIC X(10) não é uma fotografia de dez pixels e que COMP-3 provavelmente vai persegui-lo em algum momento da carreira.

Então você entra no ambiente corporativo.

TSO.

ISPF.

Datasets.

JCL.

JES2.

SDSF.

CICS.

Db2.

VSAM.

De repente surge uma senhora usando uniforme da Marinha dos Estados Unidos.

Ela olha para aquele monte de tecnologia e pergunta:

Muito bem, jovem. E onde está o Git?

Silêncio.

— Git?

— Sim. E o pipeline?

Mais silêncio.

— E como essa aplicação publica uma API?

Agora o iniciante começa a suar.

— Almirante Hopper... eu só queria aprender COBOL.

Bem-vindo ao Bellacosa Mainframe.

Pegue o café.

Porque hoje vamos descobrir que aprender COBOL é apenas a porta de entrada para uma cidade tecnológica gigantesca.

E nossa guia será ninguém menos que Grace Murray Hopper, pioneira da computação, uma das figuras históricas associadas ao desenvolvimento dos primeiros compiladores e cuja trajetória ajudou a estabelecer ideias que influenciaram profundamente o nascimento das linguagens de programação de alto nível e do próprio COBOL.

Se Hopper estivesse diante de um IBM Z moderno, provavelmente reconheceria imediatamente uma ideia que atravessou toda a história da computação:

A melhor tecnologia não é necessariamente aquela que substitui tudo. É aquela que permite evoluir sem destruir o que já funciona.



⚓ CAPÍTULO 1 — COBOL NÃO É O MAINFRAME

Esse é nosso primeiro ensinamento.

Muita gente começando mistura três conceitos:

COBOL
MAINFRAME
SISTEMA LEGADO

Como se fossem sinônimos.

Não são.

COBOL é uma linguagem.

Mainframe é uma plataforma computacional.

Legado é um conceito relacionado a sistemas existentes que carregam história, regras, dependências e valor para a organização.

Uma aplicação COBOL pode executar em diferentes plataformas.

E um IBM Z executa muito mais do que COBOL.

Dentro de um ambiente moderno podemos encontrar:

COBOL
PL/I
Assembler
Java
Python
REXX
Shell
JavaScript
SQL

Além de tecnologias como:

CICS
IMS
Db2
VSAM
MQ
z/OS Connect
z/OSMF
USS

Portanto, quando alguém pergunta:

"Como modernizamos o COBOL?"

talvez esteja fazendo a pergunta errada.

A pergunta melhor é:

Como modernizamos a maneira como essa aplicação é desenvolvida, integrada, testada, entregue, observada e mantida?

Essa pequena diferença muda tudo.



🧱 CAPÍTULO 2 — NÃO DEMOLIREMOS A CATEDRAL

Imagine uma aplicação bancária escrita em COBOL há 30 anos.

Ela possui:

2 milhões de linhas de código
centenas de programas
milhares de regras
copybooks
Db2
VSAM
CICS
jobs batch
interfaces
arquivos
relatórios

Alguém entra na reunião e diz:

— Está velho. Vamos reescrever tudo em Java.

Grace Hopper lentamente coloca a xícara sobre a mesa.

Silêncio na sala.

O problema não é Java.

O problema é imaginar que idade do código determina automaticamente ausência de valor arquitetural.

Aquele COBOL pode conter regras acumuladas durante décadas:

IF CLIENTE-VIP
   AND SALDO > LIMITE-MINIMO
   AND CARTAO-ATIVO
   AND NOT BLOQUEIO-FRAUDE
      PERFORM AUTORIZAR-COMPRA.

Parece simples.

Mas talvez existam outros 300 critérios espalhados pelo sistema.

Quando reescrevemos uma aplicação, não estamos simplesmente traduzindo:

COBOL → Java

Estamos tentando transportar:

30 anos de decisões
30 anos de exceções
30 anos de legislação
30 anos de bugs corrigidos
30 anos de conhecimento institucional

É como desmontar uma catedral pedra por pedra porque alguém não gosta da cor da porta.

Modernização inteligente começa perguntando:

O que realmente precisa mudar?



💻 CAPÍTULO 3 — O PROGRAMADOR COBOL GANHA UMA NOVA OFICINA

Durante décadas, uma imagem clássica do desenvolvimento mainframe foi:

TSO
 ↓
ISPF
 ↓
EDIT
 ↓
JCL
 ↓
COMPILADOR
 ↓
LINK-EDIT
 ↓
LOADLIB

Isso continua válido.

Aliás, iniciante: aprenda isso.

Não pule ISPF.

Não pule JCL.

Não pule SDSF.

Você precisa entender a máquina antes de automatizá-la.

Mas a oficina moderna ganhou ferramentas novas.

Podemos ter:

VS Code / IDz
       ↓
      Git
       ↓
Pull Request
       ↓
Code Review
       ↓
CI/CD
       ↓
Build
       ↓
Tests
       ↓
Deploy
       ↓
z/OS

Perceba algo maravilhoso.

O COBOL continua lá.

O que mudou foi o processo ao redor dele.



🌳 CAPÍTULO 4 — GIT ENCONTRA O COBOL

Imagine dois programadores modificando PGM001.

No modelo tradicional, o controle pode depender bastante da ferramenta de SCM mainframe utilizada e dos procedimentos da empresa.

Com Git temos conceitos como:

repository
branch
commit
merge
pull request
tag

Por exemplo:

main
 │
 ├──── feature/nova-regra-cartao
 │
 │          ↓
 │
 │       alterações
 │
 │          ↓
 │
 │        commit
 │
 │          ↓
 │
 └──────── merge

O grande ganho não é apenas guardar código.

Git permite registrar a história das mudanças.

Quem alterou?

Quando?

Por quê?

Qual ticket motivou?

Qual revisão aprovou?

Qual versão entrou em produção?

Isso conversa perfeitamente com uma filosofia antiga do Bellacosa Mainframe:

Código também é documento histórico.

Aquele comentário de manutenção:

* 2026-09-17 BELLACOSA
* AJUSTE REGRA DE AUTORIZACAO

continua útil.

Mas agora existe também uma trilha externa muito mais poderosa.


⚙️ CAPÍTULO 5 — CI/CD: O ROBÔ QUE NÃO ESQUECE PASSOS

Suponha que exista um procedimento com 17 passos para publicar uma aplicação.

Humano fazendo:

1
2
3
4
5
6
...
16
17

Depois de seis meses alguém executa:

1
2
3
4
6

Cadê o passo 5?

Produção descobre.

Pipeline existe justamente para transformar procedimentos repetitivos em processos executáveis.

COMMIT
   ↓
BUILD
   ↓
TEST
   ↓
SECURITY
   ↓
PACKAGE
   ↓
DEPLOY

Ferramentas como Jenkins podem orquestrar esse fluxo.

Mas atenção para uma distinção importante:

Jenkins não é o compilador COBOL.

Ele é um orquestrador.

Pode dizer:

execute build

Depois:

execute tests

Depois:

deploy

É quase como um maestro.

Os instrumentos continuam sendo outros.


📜 CAPÍTULO 6 — JCL NÃO MORREU; GANHOU UM ROBÔ

Aqui surge uma das minhas partes favoritas.

Alguém olha CI/CD e imagina:

"Então jogamos fora o JCL."

Não necessariamente.

Podemos fazer:

Jenkins
   ↓
z/OSMF
   ↓
JES2
   ↓
JCL
   ↓
Compiler

O pipeline pode submeter um JOB.

Depois acompanhar seu retorno:

RC=0000

Tudo certo.

Prossegue.

Se receber:

RC=0008

o pipeline pode parar.

Perceba a beleza histórica disso.

Temos tecnologias de gerações completamente diferentes cooperando:

JCL      + REST
COBOL    + Git
JES2     + Jenkins
CICS     + JSON
Db2      + APIs

O mainframe não precisa fingir que nasceu ontem.

Ele simplesmente aprende a conversar com quem nasceu ontem.


🧠 CAPÍTULO 7 — DEPENDÊNCIAS: QUANDO O COPYBOOK ESPIRRA

Imagine:

COPY CUSTOMER.

Esse copybook é utilizado por 137 programas.

Você muda um campo.

Parabéns.

Agora começa a diversão.

Quem precisa recompilar?

É aqui que ferramentas modernas de build e análise de dependências tornam-se valiosas.

Podemos representar:

CUSTOMER
   │
   ├── PROG001
   ├── PROG014
   ├── PROG087
   └── PROG231

Em vez de depender exclusivamente de:

"Pergunta para o João, ele trabalha aqui desde 1998."

transformamos conhecimento institucional em informação processável por ferramentas.

Essa é uma das formas mais profundas de modernização.

Automatizar conhecimento.


🌐 CAPÍTULO 8 — O COBOL DESCOBRE A INTERNET SEM APRENDER JSON

Agora nosso programa precisa atender um aplicativo móvel.

O programador iniciante entra em pânico.

— Vou precisar colocar JSON dentro do COBOL?

Calma.

Imagine:

MOBILE
   ↓
HTTPS
   ↓
API Gateway
   ↓
z/OS Connect
   ↓
CICS
   ↓
COBOL

O cliente pode enviar:

{
  "conta": "1234567890"
}

Nosso programa pode continuar trabalhando com estruturas tradicionais:

01 LK-CONTA PIC X(10).

Uma camada intermediária realiza a transformação.

E temos um conceito importantíssimo:

Modernizar a interface não exige necessariamente modernizar internamente toda a aplicação.

Isso permite expor funções existentes como serviços modernos sem imediatamente reescrever décadas de lógica.


📬 CAPÍTULO 9 — IBM MQ: NEM TODO MUNDO PRECISA RESPONDER AGORA

Agora imagine uma compra.

Precisamos saber imediatamente se ela foi autorizada.

Isso é naturalmente síncrono:

COMPRA
  ↓
CICS
  ↓
COBOL
  ↓
APROVADA

Mas depois precisamos:

enviar e-mail
dar pontos
atualizar analytics
notificar aplicativo
alimentar antifraude

Será que tudo precisa acontecer antes de devolver "COMPRA APROVADA"?

Não.

Podemos desacoplar:

COMPRA
  ↓
CICS
  ↓
APROVADA
  ↓
 MQ
  │
  ├── Cashback
  ├── Notification
  ├── Analytics
  └── Fraud

Se o cashback estiver indisponível por cinco minutos, não necessariamente precisamos impedir a compra.

MQ ajuda a construir esse desacoplamento e confiabilidade.


📡 CAPÍTULO 10 — EVENTOS: "ALGO ACONTECEU!"

Agora avançamos.

Em vez de perguntar constantemente:

O cliente mudou?
O cliente mudou?
O cliente mudou?

podemos produzir:

CLIENTE_ALTERADO

Esse evento pode ser consumido por diferentes sistemas.

             IBM Z
               │
        CLIENTE_ALTERADO
               │
               ▼
             Kafka
               │
      ┌────────┼────────┐
      ▼        ▼        ▼
     CRM      AI     Analytics

O sistema mainframe torna-se participante de uma arquitetura orientada a eventos.

Esse é um belo exemplo de modernização sem apagar o passado.


🧪 CAPÍTULO 11 — "FUNCIONOU NA MINHA LPAR" NÃO É TESTE

O iniciante modifica o programa.

Compila.

RC=0000

E anuncia:

— Funcionou!

Hopper ergue uma sobrancelha.

Compilar não significa funcionar corretamente.

Precisamos testar comportamento.

DADO
cliente VIP

E
saldo disponível = 10.000

QUANDO
compra = 8.000

ENTÃO
resultado esperado = APROVADO

Testes automatizados permitem verificar continuamente regras conhecidas.

E aqui existe algo profundo.

Em sistemas legados, testes automatizados podem se tornar documentação viva.

Quando alguém perguntar daqui a cinco anos:

"Cliente VIP pode fazer isso?"

o teste ajuda a responder.


🔐 CAPÍTULO 12 — DEVSECOPS: SEGURANÇA NÃO É O ÚLTIMO PASSO

O modelo ruim:

DEV
 ↓
TEST
 ↓
PROD
 ↓
SEGURANÇA DESCOBRE

Modelo melhor:

             COMMIT
                │
     ┌──────────┼──────────┐
     ▼          ▼          ▼
   BUILD      TEST       SECURITY

Podemos procurar:

  • vulnerabilidades;

  • credenciais expostas;

  • problemas de dependências;

  • configurações inseguras;

  • violações de políticas.

E no mainframe continuamos tendo controles fundamentais envolvendo RACF, ACF2 ou Top Secret, certificados, TLS, SMF, auditoria e autorização.

DevSecOps não substitui RACF.

Ele amplia a segurança para todo o ciclo de desenvolvimento.


🔭 CAPÍTULO 13 — OBSERVABILIDADE: O TELEFONE NÃO É DASHBOARD

Antigamente, o melhor sistema de monitoramento de algumas empresas era:

produção caiu
     ↓
usuário percebe
     ↓
usuário telefona
     ↓
War Room

Não recomendo.

Mainframes possuem décadas de experiência em monitoramento operacional.

SMF, RMF, OMEGAMON, SDSF e outras ferramentas já forneciam visibilidade muito antes de "observability" virar palavra de conferência.

A evolução moderna é conectar os mundos.

Imagine:

Celular
  ↓
API
  ↓
Kubernetes
  ↓
Kafka
  ↓
z/OS Connect
  ↓
CICS
  ↓
COBOL
  ↓
Db2

O usuário diz:

Está lento.

Quem é culpado?

Sem telemetria, começa o campeonato corporativo:

Cloud:      "é o mainframe!"
Mainframe:  "é a rede!"
Rede:       "é a aplicação!"
Aplicação:  "é o banco!"
Banco:      "não sou eu!"

Todos inocentes.

O usuário continua esperando.


📊 CAPÍTULO 14 — MÉTRICAS, LOGS E TRACES

Três conceitos aparecem constantemente:

METRICS
LOGS
TRACES

Métricas respondem perguntas como:

quantas transações?
qual latência?
qual CPU?
quantos erros?
qual throughput?

Logs contam eventos:

programa iniciado
cliente não encontrado
timeout
erro SQL

Traces mostram a viagem da transação.

Por exemplo:

TRACE-ID = 0317

Sim.

Nosso easter egg apareceu.

Quem acompanha o Bellacosa Mainframe sabe que quando alguma coisa estranha acontece às 03:17, provavelmente teremos uma investigação.

Nosso trace percorre:

Mobile       20 ms
Gateway       7 ms
Java         31 ms
z/OS Connect 11 ms
CICS          4 ms
COBOL         3 ms
Db2         817 ms

Pronto.

Em vez de:

"O mainframe está lento."

temos:

"Esta operação específica está gastando aproximadamente 817 ms no acesso ao Db2."

Isso é uma War Room baseada em evidências.


🔬 CAPÍTULO 15 — OPENTELEMETRY E A TRANSAÇÃO VIAJANTE

OpenTelemetry aparece justamente para ajudar a padronizar telemetria distribuída.

A ideia simplificada:

Aplicações
    ↓
telemetria
    ↓
OpenTelemetry
    │
    ├── metrics
    ├── logs
    └── traces

Depois podemos integrar essa informação a plataformas de observabilidade.

Prometheus, Grafana, Elastic, Splunk, Dynatrace e outros componentes podem participar do ecossistema, dependendo da arquitetura adotada.

Mas nunca esqueça:

dashboard bonito não é observabilidade.

Observabilidade útil significa conseguir investigar comportamento.


📦 CAPÍTULO 16 — NÃO COLOQUE TUDO NUM CONTAINER SÓ PORQUE É MODERNO

Outra reunião.

Alguém anuncia:

— Vamos containerizar tudo!

Hopper procura a saída.

Containers são excelentes.

Kubernetes é excelente para determinados workloads.

OpenShift também.

Mas arquitetura não deveria ser religião.

Podemos perfeitamente ter:

                 EMPRESA
                    │
        ┌───────────┴───────────┐
        ▼                       ▼
    OpenShift                  z/OS
        │                       │
  Java / Node              CICS / IMS
        │                       │
  Microservices               COBOL
        │                       │
        └───────── API ─────────┤
                  MQ           │
                Kafka          │
                               ▼
                            Db2/VSAM

Isso é arquitetura híbrida.

Cada workload executa onde faz sentido.


🌱 CAPÍTULO 17 — STRANGLER FIG: MODERNIZANDO SEM EXPLODIR PRODUÇÃO

Temos:

SISTEMA-CARTAO

com:

autorização
faturamento
cashback
notificação
relatórios
antifraude

Em vez de:

DELETE EVERYTHING;

podemos modernizar progressivamente.

Primeiro retiramos notificações:

COBOL
 ↓
evento
 ↓
Kafka
 ↓
Notification Service

Depois talvez cashback.

Depois outra função.

O core de autorização permanece enquanto houver razões econômicas e técnicas para mantê-lo.

Essa estratégia lembra o chamado Strangler Fig Pattern.

A arquitetura nova cresce progressivamente ao redor da existente.


🗄️ CAPÍTULO 18 — NÃO ESQUEÇA ONDE MORA O TESOURO

Aplicações são importantes.

Mas dados talvez sejam ainda mais importantes.

No mainframe encontramos:

Db2
VSAM
IMS DB
datasets

A modernização precisa considerar como esses dados serão disponibilizados sem criar vinte cópias descontroladas da verdade.

Podemos usar:

APIs
eventos
CDC
replicação

CDC significa Change Data Capture.

Quando alguma coisa relevante muda, podemos capturar essa alteração e propagá-la para outros ecossistemas.

Isso ajuda analytics, integração, data lakes e aplicações de IA.


🤖 CAPÍTULO 19 — IA ENTRA NO MAINFRAME, MAS SEM A MOTOSSERRA

Então chega 2026.

Alguém digita:

"Converta meus 14 milhões de linhas COBOL para Java."

Talvez seja prudente esconder o botão ENTER.

IA pode ser extremamente interessante para legado, mas há aplicações mais inteligentes do que tradução indiscriminada.

Por exemplo:

COBOL legado
     ↓
     IA
     │
     ├── explicar código
     ├── documentar
     ├── localizar regras
     ├── sugerir testes
     ├── explicar erros
     ├── analisar dependências
     └── auxiliar manutenção

Imagine encontrar um programa de 9.000 linhas.

Em vez de começar lendo linha 1 e terminar três cafés depois na linha 9.000, ferramentas assistidas por IA podem ajudar a construir um mapa inicial.

Mas atenção.

IA pode errar.

Em sistemas críticos precisamos continuar tendo:

revisão humana
testes
evidências
controle de versão
segurança
auditoria

O compilador não aceita:

TRUST ME BRO.

Produção também não deveria aceitar.


🛠️ CAPÍTULO 20 — AUTOMAÇÃO E INFRASTRUCTURE AS CODE

Procedimentos operacionais frequentemente vivem em documentos:

Entre no ISPF, escolha opção X, abra Y, copie Z...

Funciona.

Até alguém esquecer uma linha.

Automação permite transformar procedimentos em código.

Ferramentas como Ansible podem participar da administração e automação de ambientes IBM Z.

A filosofia passa a ser:

ESTADO DESEJADO
      ↓
AUTOMAÇÃO
      ↓
ESTADO REAL

Uma palavra importante aqui é:

idempotência.

Simplificando para o iniciante:

Executar a automação novamente não deveria destruir tudo; ela deve procurar manter ou alcançar o estado definido.

Isso transforma conhecimento operacional em algo reproduzível.


🗺️ CAPÍTULO 21 — O MAPA DO MAINFRAME MODERNO

Agora podemos juntar nosso quebra-cabeça.

                     USUÁRIOS
                        │
                 Mobile / Web
                        │
                        ▼
                   API Gateway
                        │
             ┌──────────┴──────────┐
             ▼                     ▼
         OpenShift             z/OS Connect
             │                     │
       Microservices               ▼
             │                    CICS
             ├────── MQ ───────────┤
             │                     │
             ├──── Kafka ──────────┤
             │                     ▼
             │                   COBOL
             │                     │
             │               ┌─────┴─────┐
             │               ▼           ▼
             │              Db2         VSAM
             │
             ▼
        Analytics / AI

Por trás:

Developer
   ↓
VS Code / IDz
   ↓
Git
   ↓
Pull Request
   ↓
Pipeline
   ↓
Build
   ↓
Tests
   ↓
Security
   ↓
Deploy
   ↓
IBM Z

E observando tudo:

          OBSERVABILITY
               │
      ┌────────┼────────┐
      ▼        ▼        ▼
   Metrics    Logs    Traces

Agora temos a visão completa.


🎓 CAPÍTULO 22 — ROTEIRO PARA QUEM ESTÁ COMEÇANDO

Não tente aprender tudo simultaneamente.

Isso seria como tentar aprender mecânica estudando um Boeing inteiro.

Construa camadas.

Etapa 1 — Fundamentos

Aprenda:

COBOL
JCL
TSO
ISPF
datasets
JES2/SDSF

Entenda como um programa nasce e executa.

Etapa 2 — Dados

Aprenda:

VSAM
SQL
Db2

Depois explore IMS se fizer sentido para seu ambiente.

Etapa 3 — Online

Estude:

CICS
transações
programas
COMMAREA
channels/containers

Etapa 4 — Integração

Aprenda:

REST
JSON
APIs
MQ
z/OS Connect

Etapa 5 — Engenharia moderna

Entre em:

Git
branch
commit
merge
CI/CD
Jenkins
automated testing

Etapa 6 — Arquitetura

Estude:

microservices
event-driven
Kafka
containers
Kubernetes
OpenShift
hybrid cloud

Etapa 7 — Operação

Aprenda:

SMF
RMF
logs
metrics
traces
OpenTelemetry
observability

Etapa 8 — Segurança

Entenda:

RACF
identidade
autorização
TLS
certificados
DevSecOps
auditoria

Etapa 9 — Automação

Explore:

z/OSMF
REST APIs
Ansible
Infrastructure as Code

Etapa 10 — IA

Finalmente:

code explanation
documentation
test generation
code assistance
incident analysis
legacy discovery

Agora você não é simplesmente alguém que aprendeu sintaxe COBOL.

Você começou a entender engenharia de aplicações IBM Z.


🧭 CAPÍTULO 23 — A LIÇÃO DA ALMIRANTE

Nosso jovem programador finalmente olha novamente para seu pequeno programa:

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

No começo da história aquilo parecia ser COBOL.

Agora ele consegue imaginar todo o mundo ao redor:

                     Git
                      │
                      ▼
                    COBOL
                      │
                      ▼
                    Build
                      │
                      ▼
                    Tests
                      │
                      ▼
                   Pipeline
                      │
                      ▼
                     CICS
                      │
              ┌───────┼───────┐
              ▼       ▼       ▼
             API      MQ     Kafka
              │               │
              ▼               ▼
          OpenShift          Cloud
              │               │
              └───────┬───────┘
                      ▼
                Observability

Grace Hopper então aponta para a tela.

A verdadeira modernização não está em trocar uma palavra por outra.

Não está em:

COBOL → Java

ou:

Mainframe → Cloud

A transformação está em construir pontes:

LEGADO ↔ MODERNO
BATCH ↔ API
CICS ↔ MOBILE
COBOL ↔ GIT
JCL ↔ CI/CD
JES2 ↔ REST
MQ ↔ MICROSERVICES
DB2 ↔ ANALYTICS
IBM Z ↔ CLOUD
SMF ↔ OBSERVABILITY
PROGRAMADOR ↔ AUTOMAÇÃO

☕ EPÍLOGO — A CATEDRAL CONTINUA ABERTA

Existe uma mania curiosa na tecnologia de declarar coisas mortas.

COBOL morreu.

Mainframe morreu.

Batch morreu.

SQL morreu.

Data center morreu.

Toda década alguém publica um novo obituário.

Enquanto isso, sistemas continuam processando transações.

Talvez o iniciante deva aprender uma lição diferente.

Tecnologia empresarial raramente evolui simplesmente apagando o passado.

Ela evolui em camadas.

O COBOL permanece.

Mas agora está no Git.

O JCL permanece.

Mas um pipeline pode submetê-lo.

O CICS permanece.

Mas uma API pode chamá-lo.

O MQ permanece.

Mas pode conectar arquiteturas distribuídas.

O Db2 permanece.

Mas seus dados podem alimentar analytics e IA.

O IBM Z permanece.

Mas não precisa permanecer isolado.

Essa talvez seja uma das ideias mais importantes para quem começa a carreira em mainframe:

Você não está estudando apenas uma tecnologia antiga. Está estudando como décadas diferentes da história da computação conseguem continuar trabalhando juntas.

E isso muda a pergunta.

Não pergunte apenas:

"Como programo COBOL?"

Pergunte:

"Como uma mudança que fiz neste COBOL percorre Git, build, testes, segurança, CI/CD, CICS, APIs, integração, dados e observabilidade até chegar ao cliente?"

Quando conseguir responder essa pergunta, você terá atravessado uma fronteira importante.

Deixou de olhar somente para as 80 colunas.

Começou a enxergar a arquitetura.

E, em algum lugar da sala de máquinas, nossa Almirante provavelmente estaria satisfeita.

Antes de sair, porém, Hopper olha novamente para o dashboard.

Uma transação desconhecida apareceu.

Horário:

03:17:00

TRACE-ID:

BELLACOSA-0317

Origem:

UNKNOWN

Ela pega o café.

— Bellacosa...

— Sim, Almirante?

— Temos um incidente.

Continua no próximo JOB.

//BELLACOS JOB (0317),'COFFEE',
//             CLASS=A,
//             MSGCLASS=X
//*
//* NEVER UNDERESTIMATE OLD CODE
//* THAT STILL RETURNS RC=0000
//*

Um Café no Bellacosa Mainframe

Porque modernizar não é esquecer de onde viemos. É garantir que aquilo que construímos ontem ainda consiga conversar com o amanhã.

PS: Este artigo foi pensado para responder a seguinte pergunta.

Como uma empresa moderna desenvolve, integra, automatiza, observa e moderniza aplicações que rodam nesse mainframe? 



sábado, 5 de janeiro de 2019

🧰 CHECKLIST BELLACOSA DE MANUTENÇÃO MENTAL

 


🧰 CHECKLIST BELLACOSA DE MANUTENÇÃO MENTAL
(O toolkit diário para manter o cérebro rodando suave, sem abends nem travamentos)


☀️ 1. BOOT DO DIA – “Initialize System”

Logo ao acordar, evite abrir o celular.
A primeira hora do dia define a prioridade de jobs do seu emocional.
Respire, alongue, pense no que realmente importa.

O primeiro comando do dia deve vir de você, não da notificação.


💬 2. STATUS CHECK – “DISPLAY MIND,DETAIL”

No meio da manhã, faça uma autoanálise rápida:
Como estou me sentindo agora? Calmo? Tenso? Disperso?
Nomear o que sente é o mesmo que identificar o dataset antes de manipulá-lo.

Sentimento sem nome vira processo fantasma ocupando CPU emocional.


🧘‍♀️ 3. REFRESH BUFFER – “CANCEL ALL”

Durante o dia, tire micro-pausas de 5 minutos sem estímulos.
Nada de rolar tela — apenas respire, feche os olhos, escute o ambiente.
Isso reinicia o cache e traz foco de volta.

O silêncio é o comando “RESET” da mente.


4. AFTERNOON MAINTENANCE – “SORT PRIORITIES”

No meio da tarde, revise o que ainda precisa ser feito e o que pode ficar para amanhã.
Reorganize, defer, skip step, se necessário.
Aprender a priorizar é um ato de amor-próprio.

Nem todo job precisa rodar em hoje.


🌙 5. SHUTDOWN MODE – “LOGOFF PEACEFULLY”

Antes de dormir, agradeça.
Pense no que funcionou bem, e libere o que travou.
Desligue as telas, leia algo leve, ouça uma música calma.

Um bom “shutdown” garante logs limpos e sonhos desfragmentados.


🔁 ROTINA OPCIONAL – “RUN MIND CLEANER, DAILY”

  • 5 minutos de respiração consciente

  • 10 minutos de caminhada leve

  • 1 momento de riso genuíno

  • 1 conversa sincera

  • 1 ato de gentileza (mesmo anônima)

Esses comandos simples fazem tuning na alma e aumentam o throughput da paz interior.


Bellacosa Mainframe 💾🧠
Porque cuidar da mente é como manter um sistema z/OS: se você ignora o warning, o dump vem inevitável.

sexta-feira, 4 de janeiro de 2019

☕💣📼 OPERADOR, O ABEND DE SCHOOL DAYS NÃO FOI UM CASO ISOLADO!

 

Bellacosa Mainframe e os animes proibidoes estilo school days


☕💣📼 OPERADOR, O ABEND DE SCHOOL DAYS NÃO FOI UM CASO ISOLADO!

10 ANIMES PARA QUEM SOBREVIVEU AO DESASTRE OPERACIONAL DE MAKOTO ITOU

Se você terminou School Days e ficou pensando:

"Não acredito que um romance escolar terminou desse jeito..."

Prepare-se.

Existem animes que exploram traição, obsessão, psicologia, realidades alternativas, assassinatos, loops temporais e relacionamentos tão perigosos quanto um DELETE sem backup no catálogo mestre.


1. HIGURASHI NO NAKU KORO NI

Título Original

ひぐらしのなく頃に

Lançamento

2006

Personagens

  • Keiichi Maebara

  • Rena Ryugu

  • Mion Sonozaki

  • Rika Furude

Resumo

Um garoto se muda para uma vila aparentemente tranquila.

Pouco depois descobre uma série de assassinatos ligados a um festival local.

História

A cada arco a realidade parece reiniciar.

Os acontecimentos mudam.

As mortes mudam.

As respostas mudam.

Easter Egg

Os relógios e calendários escondem pistas dos loops temporais.

Curiosidade

Foi originalmente uma Visual Novel, assim como School Days.

Por que assistir?

Se você gostou do colapso psicológico.

Por que não assistir?

Violência extrema.


2. UMINEKO NO NAKU KORO NI

Título Original

うみねこのなく頃に

Lançamento

2009

Personagens

  • Battler Ushiromiya

  • Beatrice

  • Ange

Resumo

Uma família rica fica presa numa ilha.

Assassinatos começam a ocorrer.

A culpa é de uma bruxa?

Ou de um humano?

História

Uma guerra entre lógica e fantasia.

Easter Egg

Quase todos os mistérios possuem solução racional.

Curiosidade

Criado pelo mesmo autor de Higurashi.

Por que assistir?

Mistério de altíssimo nível.

Por que não assistir?

Anime adapta apenas parte da obra.


3. MIRAI NIKKI

Título Original

未来日記

Lançamento

2011

Personagens

  • Yukiteru Amano

  • Yuno Gasai

Resumo

Participantes recebem diários que mostram o futuro.

O último sobrevivente se torna deus.

História

Battle Royale psicológico.

Easter Egg

O nome Yuno lembra "YU-NO", outra obra clássica de ficção científica japonesa.

Curiosidade

Yuno tornou-se referência para o arquétipo "Yandere".

Por que assistir?

Uma das personagens mais icônicas dos animes.

Por que não assistir?

Algumas incoerências narrativas.


4. ELFEN LIED

Título Original

エルフェンリート

Lançamento

2004

Personagens

  • Lucy

  • Kouta

  • Nana

Resumo

Uma mutante escapa de um laboratório.

História

Mistura ficção científica com tragédia humana.

Easter Egg

O título vem de um poema alemão.

Curiosidade

Influenciou obras como Stranger Things.

Por que assistir?

Drama emocional devastador.

Por que não assistir?

Violência extrema.


5. WHITE ALBUM 2

Título Original

ホワイトアルバム2

Lançamento

2013

Personagens

  • Haruki

  • Setsuna

  • Kazusa

Resumo

Triângulo amoroso.

História

Diferente de School Days.

Aqui o foco é emocional.

Não físico.

Easter Egg

Referências musicais aparecem em praticamente todos os episódios.

Curiosidade

Considerado um dos romances mais maduros dos animes.

Por que assistir?

Drama romântico excelente.

Por que não assistir?

Muito sofrimento emocional.


6. KUZU NO HONKAI

Título Original

クズの本懐

Lançamento

2017

Personagens

  • Hanabi

  • Mugi

Resumo

Dois estudantes fingem namorar.

História

Uma análise brutal sobre desejos não correspondidos.

Easter Egg

As flores exibidas refletem o estado emocional dos personagens.

Curiosidade

Foi chamado de "School Days da geração moderna".

Por que assistir?

Psicologia sofisticada.

Por que não assistir?

Clima extremamente melancólico.


7. YOSUGA NO SORA

Título Original

ヨスガノソラ

Lançamento

2010

Personagens

  • Haruka

  • Sora

Resumo

Irmãos retornam à cidade natal.

História

Rotas alternativas semelhantes às Visual Novels.

Easter Egg

Cada arco corresponde a uma rota diferente do jogo.

Curiosidade

Uma das adaptações mais fiéis de Visual Novel.

Por que assistir?

Narrativa experimental.

Por que não assistir?

Tema altamente controverso.


8. SHUFFLE!

Título Original

シャッフル!

Lançamento

2005

Personagens

  • Rin

  • Kaede

  • Asa

Resumo

Romance envolvendo humanos, deuses e demônios.

História

Começa leve.

Termina surpreendentemente sombria.

Easter Egg

Vários finais da Visual Novel foram incorporados.

Curiosidade

Influenciou diversos romances escolares posteriores.

Por que assistir?

Mistura romance e fantasia.

Por que não assistir?

Primeira metade é lenta.


9. ANOTHER

Título Original

アナザー

Lançamento

2012

Personagens

  • Kouichi Sakakibara

  • Mei Misaki

Resumo

Uma turma sofre uma maldição mortal.

História

Mortes absurdamente imprevisíveis.

Easter Egg

Diversas pistas estão escondidas nos fundos das cenas.

Curiosidade

Popularizou o "guarda-chuva assassino".

Por que assistir?

Suspense constante.

Por que não assistir?

Não é romance.


10. YU-NO: KONO YO NO HATE DE KOI WO UTAU SHOUJO

Título Original

この世の果てで恋を唄う少女YU-NO

Lançamento Original

Visual Novel: 1996

Anime: 2019

Personagens

  • Takuya Arima

  • Kanna

  • Mio

  • Amanda

Resumo

Viagens entre realidades paralelas.

História

O protagonista precisa reconstruir a verdade através de múltiplas linhas temporais.

Easter Egg

Praticamente todos os finais possuem relevância para a conclusão final.

Curiosidade

Influenciou:

  • Steins;Gate

  • Re:Zero

  • Muv-Luv

Por que assistir?

Uma das obras mais importantes da ficção científica japonesa.

Por que não assistir?

O anime simplifica bastante a Visual Novel.


☕💣 Ranking Bellacosa Mainframe de Similaridade com School Days

AnimeSimilaridade
White Album 2⭐⭐⭐⭐⭐
Kuzu no Honkai⭐⭐⭐⭐⭐
Yosuga no Sora⭐⭐⭐⭐⭐
Shuffle!⭐⭐⭐⭐
Mirai Nikki⭐⭐⭐⭐
Higurashi⭐⭐⭐⭐
Umineko⭐⭐⭐
Another⭐⭐⭐
Elfen Lied⭐⭐⭐
YU-NO⭐⭐⭐

📼 Veredito Final

Se School Days foi seu primeiro contato com romances psicológicos sombrios, a sequência ideal é:

School Days → White Album 2 → Kuzu no Honkai → Yosuga no Sora → Higurashi → Umineko → YU-NO

Essa ordem aumenta gradualmente a complexidade narrativa, levando você do simples "triângulo amoroso problemático" até mistérios multidimensionais capazes de fazer um operador de mainframe revisar o mesmo dump emocional dezenas de vezes antes de encontrar a causa raiz do ABEND. ☕💣🔪📼


quinta-feira, 3 de janeiro de 2019

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

 

Bellacosa Mainframe e o CALL em programas COBOL Parte I

☕💥 A Jornada do Padawan COBOL – Parte 1

Desvendando o Universo dos CALLs no Mainframe

Ou como descobrir que chamar um programa em COBOL é quase tão importante quanto saber preparar café às 3 da manhã durante uma janela de produção

Por Vagner Bellacosa – Bellacosa Mainframe


Introdução

Todo desenvolvedor COBOL passa por um momento de iluminação.

Normalmente acontece quando ele abre um programa de produção com 30 mil linhas e encontra algo parecido com isto:

CALL 'PROG0001'
USING WS-AREA.

CALL WS-PROGRAMA
USING WS-COMMAREA.

CALL 'VALIDA01'
USING BY CONTENT WS-DATA.

CALL 'ROTINA99'
USING BY REFERENCE WS-BLOCO.

Neste momento surge a dúvida existencial:

Por que existem tantos tipos de CALL?

Qual é o mais rápido?

Qual gasta menos memória?

O que acontece dentro do z/OS?

O compilador faz mágica?

O Load Module engorda?

Como um banco executa milhões de CALLs por segundo sem explodir?

Prepare seu café.

Vamos abrir a tampa do motor do z/OS.


O que é um CALL?

Simplificando:

CALL significa pedir ajuda para outro programa.

Em vez de colocar 100 mil linhas em um único fonte, quebramos o sistema em pequenas peças reutilizáveis.

Por exemplo:

Programa principal

PROCESSA-CLIENTES

chama

VALIDA-CPF

CALCULA-JUROS

GERA-BOLETO

ENVIA-MQ

ATUALIZA-DB2

Cada um especializado.

É praticamente microserviços.

Só que inventados em 1960.


Por que IBM fez isso?

Porque memória custava uma fortuna.

Década de 70

Memória podia custar mais que um carro.

Era necessário:

reutilizar código

economizar memória

compartilhar lógica

facilitar manutenção

Assim nasceu o CALL.


Anatomia de um programa COBOL

Um programa COBOL compilado produz:

Objeto

Binder

Load Module

PDs Loadlib

Execução

Exemplo:

SYS1.LOADLIB


PROCESSA
VALIDA
JUROS
CPFCHK

O Padawan descobre o Static CALL

Exemplo

CALL 'VALIDA'

Simples.

Mas o compilador já conhece VALIDA.

Ele avisa o Binder:

Inclua VALIDA aqui.


O que acontece no LinkEdit

Binder faz:

PROCESSA


+

VALIDA


+

CPFCHK


+

JUROS


=

EXECUTÁVEL FINAL

Na memória

Antes:

PROCESSA

Depois:

PROCESSA


VALIDA


CPFCHK


JUROS

Tudo junto.

Tudo carregado.


Vantagens

Performance

Excelente.

Não precisa procurar.

Não precisa abrir bibliotecas.

Não precisa localizar módulo.

É praticamente:

BALR

Menor CPU

Menos instruções.

Menos overhead.

Menos I/O.


Desvantagens

Executável cresce.

Muito.

Exemplo

Programa principal

1 MB

Subrotinas

500 KB

Total

1,5 MB


Imagine 200 subrotinas.

Seu módulo vira um Godzilla.


Problema clássico

Padawan:

"Troquei VALIDA"

Produção:

Ainda usa antiga.

Porque precisa relinkar.


Quando usar?

Sempre que:

Programa nunca muda

Alta performance

Rotina crítica

Batch pesado

Exemplo:

Juros

Cálculo tributário

Validação interna


O Dynamic CALL aparece

Padawan evolui.

Descobre:

01 WS-PGM PIC X(8).

MOVE 'VALIDA' TO WS-PGM.

CALL WS-PGM.

O que acontece?

COBOL não sabe quem será chamado.

Somente em execução.


Busca do módulo

zOS procura:

STEPLIB

JOBLIB

LPA

LINKLIST


Exemplo

CALL CPFCHK

Sistema:

Existe?

Não.

Próximo.

Existe?

Sim.

Carrega.

Executa.


Vantagens

Flexibilidade absurda.

Pode trocar programas.

Sem recompilar.

Sem binder.

Sem relink.


Plugins COBOL

Exemplo

Cartão VISA

MOVE 'VISA0001'

Master

MOVE 'MASTER01'

PIX

MOVE 'PIX00001'

Mesmo sistema.

Rotinas diferentes.


Desvantagens

Procura programa.

Mais CPU.

Mais I/O.

Mais tempo.


Mas é lento?

Depende.

Primeira chamada.

Sim.

Segunda.

Muito rápida.

Porque pode ficar residente.


O segredo da residência

zOS é esperto.

Se programa está em memória.

Reutiliza.

Não busca novamente.


Comparação

Static

Casa própria

Dynamic

Airbnb

O executável cresce?

Static

Sim.

Dynamic

Não.

Executável principal fica pequeno.


Exemplo

Static

PROCESSA

1.5 MB

Dynamic

PROCESSA

600 KB

Subrotinas externas.


O que é mais performático?

Resposta curta.

Static.

Fim.

Mas...


O que é melhor?

Depende.

Banco.

Static.

Framework.

Dynamic.

Produtos.

Dynamic.

Rotinas financeiras.

Static.


Como o CALL funciona internamente?

Imagine isto.

Programa principal

00001000
PROCESSA

Subrotina

00025000
VALIDA

CALL executa

Guardar endereço retorno


Ir para 25000


Executar


Voltar

É praticamente um GOTO sofisticado.

Só que elegante.


Erros clássicos

S806

Programa não encontrado.

Mensagem

IEC806I

Causa

Módulo ausente.

STEPLIB errada.

Nome inválido.


S0C1

Executou lixo.

Programa corrompido.


S0C4

Endereço inválido.

Muito comum em parâmetros errados.


Como descobrir

SDSF

JESMSGLG

SYSOUT


Verificar:

STEPLIB

SYSLIB

LOADLIB


Easter Egg IBM

Muitos bancos possuem:

PROG0001

PROG0002

PROG0003

Ninguém sabe o que fazem.

Autor aposentou em 1998.

Documentação desapareceu.

Programa continua funcionando.

Todos têm medo de alterar.

É chamado:

Código Arqueológico Mainframe™


Dicas Bellacosa Mainframe

Dica 1

Static para alta frequência.


Dica 2

Dynamic para produtos.


Dica 3

Nunca fazer:

MOVE WS-USUARIO TO WS-PGM

CALL WS-PGM

Sem validar.

Pode chamar qualquer coisa.

Inclusive algo inexistente.


Dica 4

Validar sempre.

EVALUATE WS-PGM

WHEN 'CPFCHK'

WHEN 'JUROS01'

WHEN 'PIX0001'

WHEN OTHER

DISPLAY 'INVALIDO'

END-EVALUATE

Dica 5

Logar chamadas.

DISPLAY 'CALL=' WS-PGM

Ajuda muito.


A Filosofia Jedi do CALL

O Padawan iniciante pensa:

CALL serve apenas para executar outro programa.

O desenvolvedor intermediário pensa:

CALL serve para reutilizar código.

O Mestre Mainframe entende:

CALL é uma decisão arquitetural.

Ele impacta:

  • CPU

  • Memória

  • Tempo de resposta

  • Tamanho do Load Module

  • Facilidade de manutenção

  • Segurança

  • Escalabilidade

  • Observabilidade

  • Estratégia de deploy

E é exatamente por isso que, cinquenta anos depois, os sistemas bancários que movimentam bilhões de dólares diariamente ainda utilizam a mesma instrução COBOL que um programador digitou em um terminal verde na década de 1970:

CALL 'SUBPGM'

Na próxima etapa da jornada, o Padawan descobrirá que o verdadeiro poder do COBOL não está apenas em chamar programas, mas em como os dados atravessam a fronteira entre eles, mergulhando nos mistérios de BY REFERENCE, BY CONTENT, BY VALUE, ponteiros, Work-Storage, Local-Storage e Language Environment, onde vivem os temidos S0C4, os buffers compartilhados e os segredos que fazem alguns programas parecerem mágicos aos olhos dos desenvolvedores mais jovens.

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