☕ 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

terça-feira, 21 de maio de 2019

Mosteiro Nossa Senhora da Penha em Vila Velha em 1993

Andanças pelo Espirito Santo e algumas de suas cidades.


Em 1993 inciei uma aventura por alguns estados brasileiros,  na altura as fotografias eram em negativos 35 mm, muito caros, por isso fiz poucas fotos. Mas documentei os principais locais que passei no Estado do Espirito Santo.

Fiquei hospedado num albergue da juventude e da lá fiz minha exploração, passando pelo centro de  Vitoria em busca de um Banespa, pois estava sem dinheiro e naquela época cartões magnéticos só funcionavam no próprio Banco, depois atravessando a ponte em direção a Vila Velha encontrei o Convento Nossa Senhora da Penha, após subir uma viela atingi 158 metros de altura acima do nível do mar e encontrei esta joia no monte, encantado após ver as joias esculpidas em madeira no altar mor, desci andei pela praia ate encontrar uma bela orla,  com calçadão e areia dourada para finalmente encontrar um  farol que ilumina e protegeu durante anos  os navios que la navegavam.

Foi frustante ir até a fabrica dos chocolates Garoto, sem poder conhecer e nem comprar nada na loja, esperava mais, sonhava até em uma visita,  mas não rolou. Espero que gostem desta visão do Atlântico, os edifícios e arquitetura desta cidade.

#EspiritoSanto #VilaVelha #Mosteiro #NossaSenhora #Atlantico #Ponte #Vitoria #Paralelepipedo #Praia #Ilha #Farol #Enseada #Coqueiro

terça-feira, 14 de maio de 2019

O Mistério do Carimbo Invisíve : Descobriu que Milhões de Transações Dependiam de uma Palavra Chamada SYNCPOINT

 

Bellacosa Mainframe e o misterio do carimbo invisivel

☕ Um Café no Bellacosa Mainframe

O Mistério do Carimbo Invisível

Quando um Jovem Programador COBOL Descobriu que Milhões de Transações Dependiam de uma Palavra Chamada SYNCPOINT

"Toda cidade possui um juiz invisível. No CICS, ele atende pelo nome de SYNCPOINT."


Era pouco depois das duas da manhã.

No CPD, apenas o som ritmado dos equipamentos IBM preenchia o ambiente. As luzes verdes piscavam como estrelas artificiais em um universo onde bilhões de bytes viajavam silenciosamente pelos canais do mainframe.

O jovem programador Henrique havia acabado de terminar sua primeira rotina de transferência bancária em COBOL.

Estava orgulhoso.

O programa compilava.

Não havia nenhum S0C7.

Nenhum AEI9.

Nenhum ASRA.

Tudo parecia perfeito.

Mas o velho analista Augusto Bellacosa apenas sorriu, tomou mais um gole de café e perguntou:

"Muito bonito... mas quem garante que o dinheiro realmente chegou ao destino?"

Henrique congelou.

— "Como assim?"

Augusto levantou uma sobrancelha.

"Você escreveu um programa. Ainda não escreveu uma transação."

Naquela madrugada, Henrique descobriria um dos maiores segredos do CICS.

Um segredo invisível.

Chamado...

SYNCPOINT.


O que realmente é um SYNCPOINT?

Todo iniciante imagina que um programa executa linha após linha e, no final, tudo fica gravado.

No mundo do CICS isso não funciona assim.

Na verdade, o CICS trabalha com um conceito muito mais sofisticado chamado:

Unit of Work (UOW).

Uma Unit of Work é um conjunto de operações que pertencem à mesma missão.

Imagine um detetive dos filmes noir dos anos 1950.

Ele recebe um envelope.

Dentro dele existem quatro documentos.

Nenhum pode desaparecer.

Nenhum pode ser trocado.

Nenhum pode ser perdido.

Somente quando todos estiverem completos ele coloca um enorme carimbo vermelho escrito:

CONFIRMADO

Esse carimbo é o SYNCPOINT.

Até esse momento...

Nada é definitivo.


A grande mentira que todo iniciante acredita

Muitos programadores pensam:

"Fiz um REWRITE.

O registro já está salvo."

Não.

Essa é uma das maiores armadilhas do CICS.

Na realidade acontece isto:

READ UPDATE

↓

Registro bloqueado

↓

Programa altera memória

↓

REWRITE

↓

Registro continua pertencendo à transação

↓

SYNCPOINT

↓

Agora sim tudo ficou permanente.

O REWRITE altera.

O SYNCPOINT confirma.

São responsabilidades completamente diferentes.


Imagine um Cartório

Pense em um contrato.

Você assina.

A outra pessoa assina.

As testemunhas assinam.

Mas...

Enquanto o tabelião não colocar o selo oficial...

Nada possui validade jurídica.

O SYNCPOINT é exatamente esse selo.


O nascimento da Unit of Work

Toda transação CICS começa discretamente.

Usuário entra

↓

Programa inicia

↓

Lê arquivos

↓

Atualiza DB2

↓

Atualiza VSAM

↓

Grava TSQ

↓

Envia MQ

↓

...

Tudo isso ainda pertence à mesma história.

É apenas quando aparece:

EXEC CICS
     SYNCPOINT
END-EXEC.

que aquela história ganha um final definitivo.


O CICS possui memória fotográfica

Pouca gente sabe disso.

Enquanto você altera registros, o CICS praticamente fotografa o estado anterior dos dados.

Por quê?

Porque talvez precise voltar tudo.

Imagine um pintor restaurando um quadro do século XVIII.

Antes de tocar na tinta original ele tira dezenas de fotografias.

Caso algo dê errado...

Pode restaurar exatamente como estava.

O CICS faz algo parecido através dos mecanismos de recuperação e journals.


O poder escondido do Journal

Existe um personagem que quase nunca aparece nas apostilas.

O Journal.

Ele é como o diário secreto do sistema.

Ali ficam registrados acontecimentos suficientes para permitir que a recuperação seja feita com segurança.

É graças a ele que o CICS consegue dizer:

"Se algo der errado, sei exatamente como desfazer."

Sem Journal...

Rollback seria praticamente impossível.


O verdadeiro significado do COMMIT

A maioria pensa que COMMIT significa:

Gravar.

Na realidade significa muito mais.

Quando acontece um SYNCPOINT o CICS:

✔ confirma alterações no DB2

✔ confirma alterações VSAM

✔ confirma recursos recuperáveis

✔ sincroniza todos os participantes da transação

✔ grava informações de recuperação

✔ encerra a Unit of Work

✔ libera todos os locks

✔ informa aos Resource Managers que tudo terminou corretamente

É quase como um maestro encerrando uma sinfonia.


O Tribunal Supremo das Transações

Imagine um julgamento.

Cinco testemunhas.

Quatro advogados.

Um juiz.

Todos apresentam suas provas.

No final...

O juiz fala apenas uma palavra.

"Culpado."

Ou

"Inocente."

Não existe meio culpado.

O SYNCPOINT funciona exatamente assim.

Todos os recursos esperam a decisão final.


O fantasma chamado Rollback

Agora imagine outro cenário.

Henrique faz uma transferência.

Conta A

↓

Debita R$ 5.000

↓

Conta B

↓

Erro no VSAM

Sem rollback:

Conta A perdeu dinheiro.

Conta B não recebeu.

Dinheiro evaporou.

Imagine isso acontecendo milhões de vezes.

Nenhum banco sobreviveria.

Então entra em cena o segundo personagem desta história.

EXEC CICS
     SYNCPOINT ROLLBACK
END-EXEC.

O CICS olha para trás.

Lê sua memória.

E desfaz tudo.

Como se nada tivesse acontecido.

É quase uma máquina do tempo.


O poder da viagem temporal

Poucas tecnologias conseguem fazer isso tão elegantemente.

Rollback literalmente faz o sistema voltar alguns segundos.

Não todo o computador.

Apenas aquela Unit of Work.

É como rebobinar somente uma cena do filme.


Um erro clássico dos iniciantes

Henrique perguntou:

— "Então posso fazer commit depois de cada registro?"

Augusto quase derrubou o café.

— "Claro que pode."

Henrique sorriu.

Então Augusto completou.

— "E também pode destruir toda a performance do sistema."

Commits possuem custo.

Cada um envolve sincronização.

Logs.

Liberação de locks.

Comunicação entre Resource Managers.

Por isso existe um equilíbrio delicado.

Nem commits demais.

Nem commits de menos.


Quando não fazer commit?

Imagine atualizar cem registros.

Se fizer cem commits...

O sistema gastará muito tempo apenas encerrando Units of Work.

Agora imagine atualizar dez milhões de registros.

Fazer apenas um commit no final também pode ser um desastre.

Locks ficarão presos durante muito tempo.

O segredo está no equilíbrio.

Esse é um dos motivos pelos quais arquitetos de sistemas estudam cuidadosamente o tamanho ideal da UOW.


O segredo dos Locks

Outro mistério.

Muitos acreditam:

READ UPDATE

↓

REWRITE

↓

Registro liberado

Não.

O lock continua.

Somente o commit libera.

Isso explica diversos problemas de contenção.

Enquanto uma transação segura um registro...

Outra precisa esperar.


ENQ, DEQ e SYNCPOINT

Lembra dos comandos ENQ e DEQ?

Eles são parentes próximos do SYNCPOINT.

Imagine uma biblioteca.

Você pega um livro raro.

Enquanto ele está emprestado ninguém mais pode utilizá-lo.

O ENQ reserva.

O DEQ devolve.

Já o SYNCPOINT garante que todo o processo envolvendo aquele livro foi concluído corretamente antes de liberar os demais recursos associados à transação.

São mecanismos diferentes, mas frequentemente trabalham em harmonia para preservar a consistência da aplicação.


E se o computador desligar?

Essa é uma das perguntas favoritas das entrevistas IBM.

Imagine:

UPDATE DB2

↓

UPDATE VSAM

↓

Queda de energia

O CICS consulta seus registros de recuperação.

Percebe que aquela Unit of Work nunca terminou.

Resultado?

Backout automático.

O usuário talvez nem perceba.

Esse comportamento é uma das razões pelas quais bancos confiam no CICS há mais de cinco décadas.


A ligação com o DB2

Quando DB2 participa da transação, ele também espera.

Nenhuma alteração fica permanente até que o SYNCPOINT seja executado.

É como vários cofres aguardando a mesma chave.

Somente quando a chave gira...

Todos são fechados simultaneamente.


VSAM também participa

Da mesma forma:

READ UPDATE

↓

REWRITE

↓

DELETE

↓

WRITE

Tudo permanece dentro da mesma Unit of Work.

O VSAM somente considera as alterações definitivamente concluídas quando o CICS encerra a transação com sucesso.


O relacionamento com HANDLE ABEND

Em artigos anteriores vimos o HANDLE ABEND.

Agora tudo faz sentido.

HANDLE ABEND

↓

Erro inesperado

↓

Rotina de recuperação

↓

SYNCPOINT ROLLBACK

↓

RETURN

Observe como as peças começam a formar um quebra-cabeça.

O conhecimento em CICS é cumulativo.

Cada comando reforça o entendimento do anterior.


Curiosidade Histórica

Nos primeiros anos do CICS, quando bancos começaram a abandonar sistemas baseados em processamento puramente batch para operações online, um dos maiores medos era exatamente este:

"E se o sistema cair no meio de uma transferência?"

Foi o amadurecimento dos mecanismos de recuperação, journals, locks e SYNCPOINT que permitiu o crescimento dos caixas eletrônicos, do internet banking e, décadas mais tarde, dos aplicativos móveis.

Cada saque em um caixa eletrônico, cada pagamento de boleto e cada transferência eletrônica dependem, direta ou indiretamente, desses princípios.


Curiosidade Técnica

Você provavelmente já ouviu falar nas propriedades ACID dos bancos de dados.

O SYNCPOINT é uma das peças fundamentais que ajuda a concretizar esses princípios dentro do ambiente transacional do CICS:

  • Atomicidade: tudo acontece ou nada acontece.

  • Consistência: os dados permanecem válidos.

  • Isolamento: outras transações não enxergam alterações incompletas.

  • Durabilidade: após o commit, as mudanças sobrevivem até mesmo a falhas do sistema.


Dicas para quem está aprendendo COBOL+CICS

✔ Sempre pense em termos de negócio, não apenas de comandos.

✔ Antes de programar pergunte:

"Se ocorrer um erro aqui... o que deve voltar?"

✔ Nunca esqueça que REWRITE não significa commit.

✔ Aprenda a visualizar uma Unit of Work inteira antes de escrever uma linha de código.

✔ Conheça RESP e RESP2 para tratar erros antes de decidir entre continuar ou executar um rollback.

✔ Estude os journals e os mecanismos de recuperação. Eles raramente aparecem nos primeiros cursos, mas fazem enorme diferença para compreender como o CICS realmente funciona.


Easter Egg Bellacosa ☕

Existe uma antiga lenda entre programadores veteranos de mainframe.

Dizem que, nas madrugadas em que o CPD está silencioso e apenas o z/OS continua trabalhando, é possível imaginar um enorme carimbo invisível passando de transação em transação.

Cada vez que um SYNCPOINT é executado com sucesso, esse carimbo marca silenciosamente:

"Integridade preservada."

Ninguém vê.

Nenhum operador escuta.

Nenhuma tela 3270 exibe essa mensagem.

Mas, graças a esse "carimbo invisível", milhões de pessoas acordam pela manhã e encontram seus saldos bancários exatamente onde deveriam estar.

Talvez esse seja o maior elogio que uma tecnologia possa receber: funcionar tão bem que quase ninguém percebe sua existência.


O Arquivo Confidencial Bellacosa

Nome do Caso: O Carimbo Invisível

Suspeitos: REWRITE, WRITE, DELETE, UPDATE, DB2, VSAM

Investigador Principal: CICS Transaction Manager

Juiz da Operação: SYNCPOINT

Plano de Fuga: SYNCPOINT ROLLBACK

Cúmplices: Journals, Locks, Unit of Work, Resource Managers

Veredito Final: Nenhuma transação recuperável deve terminar pela metade.


Conclusão

O SYNCPOINT é muito mais do que um simples comando do CICS. Ele representa a fronteira entre o provisório e o permanente, entre uma alteração ainda reversível e uma decisão definitiva. É ele quem encerra a Unit of Work, confirma atualizações em recursos como Db2, VSAM, filas recuperáveis e outros gerenciadores de recursos, libera bloqueios e garante que todas as partes da transação caminhem juntas.

Seu contraponto, o SYNCPOINT ROLLBACK, oferece ao sistema a capacidade de voltar atrás quando algo inesperado acontece, preservando a integridade dos dados e evitando inconsistências que poderiam comprometer operações críticas.

Quando um programador COBOL entende verdadeiramente conceitos como READ UPDATE, REWRITE, ENQ, DEQ, HANDLE ABEND, journals, locks, Unit of Work e SYNCPOINT, ele deixa de apenas escrever programas e passa a compreender a engenharia invisível que mantém bancos, seguradoras, companhias aéreas e grandes empresas funcionando de forma confiável há décadas.

No fim das contas, o maior mistério do CICS nunca foi sua velocidade, nem sua idade, nem mesmo sua capacidade de processar milhões de transações por segundo.

O verdadeiro mistério é que, enquanto o mundo dorme, um pequeno comando com apenas nove letras continua decidindo, silenciosamente, o destino de fortunas, contratos, reservas de voo, prontuários médicos e incontáveis operações críticas.

E como diria Augusto Bellacosa ao terminar mais uma xícara de café diante do brilho esverdeado de um terminal 3270:

"Programas escrevem dados. Transações escrevem confiança. E confiança... sempre termina com um SYNCPOINT."

segunda-feira, 13 de maio de 2019

🎭 OS 7 ARQUÉTIPOS PSICOLÓGICOS DOS ANIMES — A PSIQUE JAPONESA EM FRAMES E PIXELS

 

Bellacosa Mainframe e os arquitetipos femininos nos animes

🎭 OS 7 ARQUÉTIPOS PSICOLÓGICOS DOS ANIMES — A PSIQUE JAPONESA EM FRAMES E PIXELS
por Bellacosa Mainframe – edição El Jefe Midnight


Os animes não são apenas entretenimento. São espelhos da alma japonesa — e, por extensão, da nossa também.
Cada personagem que amamos, odiamos ou estranhamos é um dataset simbólico, um pedaço da psique humana processado em arte.

Por trás de cada “kawaii”, “baka” e olhar que brilha, há um código emocional que traduz a forma japonesa de lidar com o mundo: a tensão entre o que se sente e o que se pode mostrar.

Vamos decodificar juntos esses padrões — os 7 arquétipos psicológicos mais recorrentes dos animes, com direito a curiosidades, comportamento, filosofia e aquele toque Bellacosa Mainframe de reflexão e ironia sutil.


💥 1. O Herói Resiliente — O Job que Nunca Termina

Exemplo: Naruto, Luffy, Deku (My Hero Academia)

O herói shōnen é a alma persistente do Japão: ele apanha, erra, sofre — mas nunca cancela o job.
É o reflexo do valor cultural do ganbaru: o esforço contínuo, mesmo quando não há garantia de vitória.
Ele simboliza o trabalhador japonês que acredita que o mérito vem da perseverança, não do resultado.

“Falhar não é o problema. Parar de tentar é que gera abend.”

Curiosidade: as bandas sonoras desses animes são compostas para aumentar o batimento cardíaco — literalmente inspirando resiliência física e emocional.


🌸 2. A Tsundere — O Firewall Emocional

Exemplo: Asuka (Evangelion), Taiga (Toradora), Misaki (Kaichou wa Maid-sama)

A tsundere é o clássico caso de “sinto muito, mas nego tudo”.
Por fora, arrogância. Por dentro, vulnerabilidade.
É o espelho da repressão emocional japonesa — o medo de mostrar carinho e perder o controle social.

Na prática, a tsundere é o RACF do afeto: só abre permissão de READ/WRITE depois de inúmeros testes de segurança (e vergonha).

“Amor, no Japão, é sempre compilado em silêncio.”

Easter-egg: “tsun” vem de tsuntsun (desprezar) e “dere” de deredere (apaixonada) — dois modos de operação da alma japonesa.


🧘 3. O Sensei Misterioso — O SYSADM Espiritual

Exemplo: Jiraiya (Naruto), Urahara (Bleach), Zoro em modo mentor

É o personagem que carrega sabedoria, humor e dor em doses iguais.
Ele representa o senpai da vida — aquele que já falhou tanto que virou filosofia.
Costuma rir quando os outros choram, e ensinar sem ensinar.

Na mente japonesa, ele é o símbolo do equilíbrio entre honra e desapego, o monge e o programador que aceitam o bug da existência sem pânico.

“Quem domina o próprio erro, domina o sistema.”

Curiosidade: muitos “senseis” têm elementos de arquétipos zen, como o koan — o ensinamento que parece confuso, mas revela algo profundo no silêncio.


🔮 4. O Anti-Herói — O Batch Sombrio

Exemplo: Light Yagami (Death Note), Lelouch (Code Geass), Eren Yeager (Attack on Titan)

Esses personagens desafiam o sistema. São o abend intencional da narrativa.
Eles surgem do cansaço com o conformismo — da vontade de romper com as regras, mesmo que isso destrua o próprio ideal.

Simbolizam o lado oculto do Japão moderno: a rebeldia silenciosa contra a obediência cega.

“Quando o sistema é injusto, o erro vira protesto.”

Curiosidade: na década de 2000, o Japão passou por um aumento real de jovens isolados (hikikomori), e muitos roteiristas usaram o anti-herói como espelho dessa frustração coletiva.


🐾 5. O Mascote Kawaii — O Processo de Alívio de Carga

Exemplo: Totoro, Pikachu, Mokona, Chopper

Nenhum anime é completo sem o mascote que quebra a tensão.
Eles são os “garbage collectors” da emoção — purificam o clima, equilibram o drama.
Na psique japonesa, o “kawaii” (fofo) é uma resposta social à dureza do cotidiano.

“Entre um deadline e outro, o Japão inventou o Pikachu.”

Curiosidade: o termo kawaii culture virou objeto de estudo sociológico — uma forma de resistência suave, quase terapêutica, à pressão adulta e corporativa.


⚔️ 6. A Guerreira Silenciosa — A Subrotina da Força Interior

Exemplo: Mikasa (Attack on Titan), Saber (Fate), Motoko Kusanagi (Ghost in the Shell)

Ela não grita, não chora, não explica — apenas age.
Carrega o peso do mundo nos ombros, como quem carrega o passado e o dever.
É o arquétipo feminino da disciplina e da honra, um eco moderno do bushido, o código samurai.

“Enquanto o mundo fala, ela executa.”

Easter-egg: o cabelo curto da maioria dessas personagens é símbolo de corte de laços — um gesto tradicional japonês de recomeço ou desapego.


🧩 7. O Amigo Inseparável — O Backup Emocional

Exemplo: Krillin (Dragon Ball), Killua (Hunter x Hunter), Shikamaru (Naruto)

O suporte, o confidente, o alívio cômico — mas também o espelho do protagonista.
Ele representa a amizade como estrutura de identidade, algo profundamente japonês: o grupo sempre vem antes do indivíduo.

“No Japão, até o herói precisa de um cluster emocional.”

Curiosidade: a morte do “melhor amigo” é um tropo recorrente — uma forma simbólica de mostrar o amadurecimento emocional do protagonista.


☕ Epílogo Bellacosa

Os animes são o mainframe emocional do Japão: cada arquétipo é um programa rodando há séculos, traduzindo as dores, as pressões e os sonhos de um povo que aprendeu a sorrir por dentro.

E nós, espectadores ocidentais, sintonizamos nesse servidor global de sentimentos, reconhecendo nas entrelinhas algo que também é nosso:
a vontade de ser livre, de amar sem culpa e de encontrar sentido no caos.

“Animes não são sobre fantasia. São sobre a verdade — contada por quem aprendeu a sonhar em silêncio.” 🌸

 

quinta-feira, 9 de maio de 2019

⛩️ YOUJI ITAMI E O GATE: USS PARA O OUTRO MUNDO DO z/OS

 

Bellacosa Mainframe apresenta o USS Unix Posix no Zos

☕ Um Café no Bellacosa Mainframe

⛩️ YOUJI ITAMI E O GATE PARA O OUTRO MUNDO DO z/OS

UNIX System Services, MVS, datasets, JCL, ISPF, zFS, shell, POSIX, RACF, EBCDIC, UTF-8, Git, APIs, Python, Java, DevOps — e o dia em que um programador COBOL atravessou um portal e descobriu que havia UNIX dentro do mainframe.



🎬 PRÓLOGO — UM GATE APARECEU NO MEIO DO ISPF

Imagine nosso jovem programador COBOL.

Chamaremos o rapaz de Padawan-01.

Depois de algumas semanas estudando mainframe, ele já estava começando a se sentir confortável.

Sabia entrar no TSO.

Conhecia o ISPF.

Já não entrava em pânico diante de:

USER01.COBOL.SOURCE
USER01.JCL
USER01.COPYLIB
USER01.LOADLIB

Conseguia navegar por um PDS, abrir um member e até escrever um pequeno programa COBOL.

Seu universo parecia perfeitamente organizado:

IBM Z
  │
  ▼
z/OS
  │
  ├── TSO
  ├── ISPF
  ├── datasets
  ├── JCL
  ├── JES2
  ├── COBOL
  ├── CICS
  ├── VSAM
  └── Db2

Até que, numa tarde aparentemente normal, apareceu um estranho portal no meio do reino.

No portal estava escrito:

UNIX SYSTEM SERVICES

O jovem olhou assustado.

— UNIX? Professor, acho que entrei no curso errado.

Sentado tranquilamente diante do terminal estava Youji Itami, protagonista de GATE, com aquela expressão típica de alguém que preferia estar cuidando de seus hobbies em vez de resolver mais uma crise internacional.

Itami olhou para o garoto.

— Não. Você continua no z/OS.

— Mas tem UNIX aqui!

— Tem.

— Shell?

— Tem.

— Diretórios?

— Tem.

grep?

— Tem.

— Processos?

— Tem.

— POSIX?

— Também.

Padawan-01 ficou alguns segundos olhando para a tela.

Itami levantou-se.

— Bem-vindo ao outro lado do GATE.

E é exatamente aqui que começa uma das descobertas mais importantes para qualquer profissional de mainframe moderno:

z/OS não é apenas MVS + datasets + JCL + ISPF.

Existe outro mundo dentro da mesma plataforma.

Seu nome é UNIX System Services — USS.



🏛️ CAPÍTULO 1 — O REINO QUE O PROGRAMADOR COBOL NÃO CONHECIA

Existe um problema curioso na maneira como muita gente aprende mainframe.

O treinamento começa corretamente por conceitos fundamentais:

  • IBM Z;

  • z/OS;

  • TSO;

  • ISPF;

  • datasets;

  • JCL;

  • JES;

  • COBOL.

Nada está errado nisso.

O problema surge quando o estudante começa a acreditar que isso é todo o z/OS.

Não é.

É como atravessar o GATE, conhecer uma única cidade da Região Especial e concluir que conhece todo aquele mundo.

O z/OS possui diferentes ambientes e modelos de utilização.

Uma visão simplificada seria:

                         z/OS
                           │
              ┌────────────┴────────────┐
              │                         │
      AMBIENTE TRADICIONAL             USS
              │                         │
            TSO                       shell
            ISPF                      files
            JCL                    directories
            JES                    processes
         datasets                    pipes
          COBOL                      POSIX
              │                         │
              └────────────┬────────────┘
                           │
                       IBM Z

Quando mostramos isso cedo ao iniciante, acontece algo importante.

Ele deixa de associar:

MAINFRAME = COBOL

e começa a compreender:

COBOL
   │
   ▼
uma das tecnologias
   │
   ▼
z/OS
   │
   ▼
uma das plataformas
   │
   ▼
IBM Z

Essa mudança mental parece pequena.

Profissionalmente, é gigantesca.



⛩️ CAPÍTULO 2 — O QUE É UNIX SYSTEM SERVICES?

UNIX System Services é um ambiente UNIX integrado ao z/OS.

Ele oferece recursos e interfaces baseados em padrões UNIX e POSIX.

Isso significa que alguém vindo de Linux ou UNIX pode encontrar conceitos extremamente familiares:

pwd
ls
cd
mkdir
cp
mv
rm
cat
grep
find
chmod
ps
kill

Padawan-01 atravessa o portal.

Do outro lado, digita:

pwd

E recebe:

/u/padawan01

Ele olha para Itami.

— Cadê meu HLQ?

Itami responde:

— Continue.

ls -l

Aparece algo parecido com:

-rw-r--r--  1 padawan users   840 Sep 17 15:30 config.json
drwxr-xr-x  2 padawan users  8192 Sep 17 15:40 scripts

— PROFESSOR! SUMIRAM OS DATASETS!

Não.

Eles não sumiram.

Você simplesmente atravessou para outro modelo de filesystem.

Essa distinção é essencial.



🗄️ CAPÍTULO 3 — DATASET NÃO É FILE

No mundo tradicional do z/OS podemos encontrar:

VAGNER.COBOL.SOURCE
VAGNER.COBOL.COPYLIB
VAGNER.JCL
VAGNER.CNTL

No USS podemos encontrar:

/u/vagner/project/src
/u/vagner/project/scripts
/u/vagner/project/config

Parece equivalente?

Em determinados contextos podemos criar analogias didáticas.

Mas cuidado.

Dataset não é simplesmente o nome mainframe para arquivo UNIX.

Da mesma maneira:

PDS/PDSE ≠ directory
member   ≠ file
HLQ      ≠ /

Existem semelhanças funcionais que ajudam o iniciante a criar referências mentais, mas as estruturas possuem características próprias.

Essa é uma excelente oportunidade para ensinar arquitetura em vez de apenas comandos.



🌳 CAPÍTULO 4 — ITAMI ENCONTRA UMA ÁRVORE NO MAINFRAME

No USS encontramos uma estrutura hierárquica típica do mundo UNIX:

/
├── bin
├── dev
├── etc
├── tmp
├── u
│   ├── itami
│   ├── padawan01
│   └── bellacosa
├── usr
└── var

Agora compare com datasets:

PADAWAN.COBOL
PADAWAN.JCL
PADAWAN.COPYLIB
PADAWAN.TEST.DATA

O primeiro modelo trabalha naturalmente com uma árvore de diretórios.

O segundo utiliza a organização e nomenclatura próprias de datasets do z/OS.

É importante conhecer ambos porque aplicações modernas no mainframe frequentemente atravessam esses mundos.

E existe aqui outro nome que o jovem programador deve aprender:

zFS

O z/OS File System, conhecido como zFS, é peça importante do filesystem utilizado pelo USS.

Podemos ter filesystems montados na hierarquia USS.

Conceitualmente:

zFS
 │
 ▼
mount
 │
 ▼
/u/projeto
 │
 ├── bin
 ├── config
 ├── logs
 └── scripts

Isso já é muito diferente da visão inicial:

MAINFRAME = PDS + JCL

O mapa ficou maior.


🐚 CAPÍTULO 5 — O DIA EM QUE O MAINFRAME RESPONDEU ls

Itami entrega o terminal ao Padawan.

— Sua missão é criar uma área de trabalho.

cd /u/padawan01
mkdir treinamento
cd treinamento

Agora:

pwd

Resultado:

/u/padawan01/treinamento

Criamos um arquivo:

echo "Hello Mainframe" > teste.txt

E verificamos:

cat teste.txt

Resultado:

Hello Mainframe

O jovem fica em silêncio.

Não apareceu ISPF.

Não apareceu JCL.

Não apareceu //SYSIN DD *.

E, mesmo assim, ele continua trabalhando no z/OS.

Esse laboratório de cinco minutos vale uma longa explicação teórica porque quebra imediatamente o estereótipo de que mainframe significa apenas terminal 3270.


🔗 CAPÍTULO 6 — ITAMI DESCOBRE O PODER DOS PIPES

No mundo UNIX existe uma filosofia extremamente elegante:

faça pequenas ferramentas realizarem tarefas específicas e combine seus resultados.

Imagine um arquivo:

application.log

Queremos encontrar erros.

grep ERROR application.log

Queremos procurar ABENDs:

grep ABEND application.log

Podemos combinar comandos:

cat application.log | grep ERROR

E criar cadeias:

cat application.log |
grep ERROR |
sort |
uniq

O símbolo:

|

é um pipe.

A saída de um comando pode alimentar outro.

Para alguém acostumado ao processamento batch, podemos fazer uma analogia.

No JCL:

INPUT
  │
  ▼
STEP01
  │
  ▼
TEMP
  │
  ▼
STEP02
  │
  ▼
OUTPUT

No shell:

INPUT → comando | comando | comando → OUTPUT

Não são exatamente a mesma arquitetura.

Mas comparar os modelos ensina algo muito mais importante do que decorar sintaxe:

fluxo de processamento.


🕵️ CAPÍTULO 7 — GREP, O DETETIVE DO GATE

Imagine um log com 200 mil linhas.

O programador abre o arquivo e começa:

FIND 'ERROR'

Itami observa.

Um minuto.

Dois minutos.

Cinco minutos.

Finalmente pergunta:

— O que você está fazendo?

— Investigando o incidente.

Itami aponta para o shell:

grep ERROR application.log

Agora queremos contar ocorrências:

grep ERROR application.log | wc -l

Queremos encontrar determinados arquivos:

find /u/projeto -name "*.log"

Queremos procurar determinado conteúdo dentro deles.

O profissional começa a construir uma nova caixa de ferramentas.

Essa habilidade torna-se especialmente valiosa em troubleshooting, automação, análise de logs e operações.


🔐 CAPÍTULO 8 — RACF ATRAVESSA O GATE

Padawan aprende:

chmod 777 deploy.sh

Itami imediatamente aparece atrás dele.

— O que você está fazendo?

— Resolvendo o problema de permissão.

Silêncio constrangedor.

Essa é outra aula importante.

No UNIX encontramos conceitos como:

owner
group
other

e permissões:

r = read
w = write
x = execute

Por exemplo:

-rwxr-x---

Podemos representar:

           USER     GROUP     OTHER

READ         X        X
WRITE        X
EXECUTE      X        X

No entanto, USS continua integrado ao modelo de segurança do z/OS.

Entram conceitos relacionados a:

SAF
RACF
UID
GID
owner
group
permissions

Portanto, ensinar USS também cria uma excelente oportunidade para ensinar segurança.

E uma regra deve ficar gravada:

chmod 777 não é estratégia de troubleshooting.

É muitas vezes a confissão:

"Não descobri qual permissão estava errada, então liberei tudo."

Em laboratório pode aparecer.

Em produção merece investigação.


👹 CAPÍTULO 9 — O MONSTRO EBCDIC ATRAVESSA O PORTAL

Itami acreditava que a missão estava tranquila.

Então chegou o verdadeiro monstro da Região Especial:

ENCODING

No mundo tradicional z/OS existe uma longa história relacionada a EBCDIC.

No mundo distribuído encontramos frequentemente:

ASCII
UTF-8

Agora imagine integração moderna:

COBOL
 │
 ▼
dados EBCDIC
 │
 ▼
API
 │
 ▼
JSON / UTF-8
 │
 ▼
aplicação distribuída

Pronto.

Temos terreno fértil para problemas.

Caracteres especiais, acentos e conversões podem produzir surpresas.

O programador manda:

JOÃO

e alguma camada mal configurada responde com algo que parece ter sido escrito por um mago bêbado da Região Especial.

Por isso, aprender USS também deveria envolver:

  • encoding;

  • code pages;

  • ASCII;

  • EBCDIC;

  • UTF-8;

  • conversão;

  • tagging de arquivos.

Não trate encoding como detalhe.

Em integração, detalhe vira incidente.


⚙️ CAPÍTULO 10 — PROCESSOS TAMBÉM EXISTEM DO OUTRO LADO

Outro conceito UNIX importante é processo.

Comandos como:

ps

permitem observar processos.

Podemos então introduzir conceitos relacionados a:

PID
process
parent process
signal
environment

E eventualmente:

kill

Aqui é preciso explicar ao iniciante que aprender comandos não significa sair executando-os indiscriminadamente.

Especialmente kill.

No mainframe, como em qualquer ambiente corporativo sério, antes de terminar alguma coisa devemos saber:

O que é?

Quem iniciou?

Quem depende disso?

Qual impacto?

Existe procedimento operacional?

O botão funciona.

O problema é descobrir o que acontece depois que você aperta.


🚪 CAPÍTULO 11 — BPXBATCH: UM PORTAL DENTRO DO PORTAL

Agora Itami encontra algo particularmente interessante.

Os dois mundos podem conversar.

Um exemplo conceitual importante é BPXBATCH.

Podemos ter:

JCL
 │
 ▼
BPXBATCH
 │
 ▼
USS
 │
 ▼
shell / programa

Isso destrói a ideia de que existem dois sistemas completamente separados:

MVS      USS
 │        │
X        X

Uma representação melhor seria:

                  z/OS
                    │
          ┌─────────┴─────────┐
          │                   │
       clássico              USS
          │                   │
         JCL                shell
         JES                files
      datasets             processes
          │                   │
          └─────────┬─────────┘
                    │
                integração

É o GATE funcionando nos dois sentidos.


🌐 CAPÍTULO 12 — DO OUTRO LADO EXISTIAM APIs

Agora começamos a entender por que USS é tão relevante numa formação moderna.

O jovem programador pode encontrar tecnologias e conceitos como:

shell
SSH
Git
Java
Python
JSON
XML
REST
automação
CI/CD
APIs

Isso não significa que USS seja simplesmente Linux.

Esse erro também deve ser evitado.

USS não é "Ubuntu escondido dentro do z/OS".

Existem padrões e conceitos familiares ao universo UNIX, mas estamos dentro da arquitetura, segurança, operação e características do z/OS.

É justamente isso que torna o assunto interessante.


🧬 CAPÍTULO 13 — GIT ENCONTRA COBOL

Agora imagine um programador moderno.

Ele escreve COBOL.

Mas seu código está versionado.

Temos:

Developer
    │
    ▼
   Git
    │
    ▼
Pipeline
    │
    ├── build
    ├── test
    ├── quality gate
    ├── security
    └── deploy
           │
           ▼
          z/OS

De repente, conhecimentos de USS tornam-se extremamente úteis.

O profissional não vive necessariamente apenas em:

3270 → TSO → ISPF

Ele pode transitar por:

                    DEVELOPER
                        │
       ┌────────────────┼────────────────┐
       │                │                │
     ISPF              USS             IDE
       │                │                │
     COBOL            shell             Git
       │                │                │
       └────────────────┼────────────────┘
                        │
                      CI/CD
                        │
                       API
                        │
                      z/OS

Isso muda inclusive nossa definição de "programador mainframe".


🐍 CAPÍTULO 14 — PYTHON, JAVA E OS NOVOS HABITANTES DA REGIÃO ESPECIAL

Outro erro comum é imaginar:

mainframe = COBOL

COBOL continua importantíssimo.

Mas IBM Z e z/OS não são sinônimos de COBOL.

No ecossistema moderno podemos encontrar outras linguagens e runtimes.

Isso abre possibilidades relacionadas a Java, Python, shell scripting e outras tecnologias.

Não significa substituir COBOL gratuitamente.

Imagine um programa COBOL que processa milhões de transações diariamente há vinte anos e funciona perfeitamente.

Alguém chega:

— Vamos reescrever porque COBOL é velho.

Itami provavelmente perguntaria:

— Qual problema estamos tentando resolver?

Essa deveria ser sempre a pergunta.

Modernização séria começa pelo problema, não pela idade da linguagem.


🏗️ CAPÍTULO 15 — MODERNIZAR NÃO SIGNIFICA DEMOLIR A CIDADE

Esse talvez seja o ensinamento mais importante.

Modernização pode significar:

Git
CI/CD
APIs
automação
observabilidade
novas interfaces
melhores testes
segurança
integração

sem necessariamente significar:

APAGUE TODO O COBOL!

Imagine:

            SISTEMA EXISTENTE
                   │
              COBOL/CICS
                   │
              lógica madura
                   │
         ┌─────────┴─────────┐
         │                   │
        API                  MQ
         │                   │
         └─────────┬─────────┘
                   │
             novos canais

O patrimônio existente continua entregando valor enquanto novas formas de acesso e desenvolvimento são incorporadas.

É a diferença entre modernizar a cidade e incendiar a cidade para construir outra.


🧪 CAPÍTULO 16 — O LABORATÓRIO DOS PADAWANS

Se eu estivesse estruturando essa formação, USS não seria apenas PowerPoint.

Itami entregaria uma missão.

MISSÃO 1 — Descubra onde você está

pwd

MISSÃO 2 — Veja o território

ls -l

MISSÃO 3 — Construa sua base

mkdir treinamento
cd treinamento

MISSÃO 4 — Crie informação

echo "Hello z/OS" > hello.txt

MISSÃO 5 — Leia

cat hello.txt

MISSÃO 6 — Copie

cp hello.txt copia.txt

MISSÃO 7 — Mova

mv copia.txt backup.txt

MISSÃO 8 — Investigue

grep "z/OS" hello.txt

MISSÃO 9 — Procure

find . -name "*.txt"

MISSÃO 10 — Entenda permissões

ls -l

Depois:

chmod 750 algum_script.sh

Mas somente depois de explicar por quê.

MISSÃO 11 — Crie um shell script

Algo simples:

#!/bin/sh

echo "Bom dia, Padawan."
date
pwd

Então execute e observe.

O objetivo não é transformar o aluno em administrador UNIX em uma tarde.

O objetivo é retirar o medo.


🔥 CAPÍTULO 17 — O DESAFIO FINAL DE ITAMI

Agora entregamos:

incident.log

Com milhares de registros.

A missão:

Localize todos os ERROR.

Depois:

Localize todos os ABEND.

Depois:

Conte-os.

Depois:

Gere um arquivo apenas com as ocorrências.

Depois:

Descubra quais mensagens se repetem.

Agora o aluno começa a combinar:

grep
sort
uniq
wc

Nesse momento aconteceu algo importante.

Ele não está mais decorando UNIX.

Está pensando UNIX.

Essa diferença vale ouro.


🎓 CAPÍTULO 18 — QUANDO ENSINAR USS?

Eu não esconderia USS no final da formação como "conteúdo avançado".

Colocaria relativamente cedo.

Algo como:

IBM Z
  ↓
arquitetura
  ↓
z/OS
  ↓
TSO/ISPF
  ↓
datasets
  ↓
JCL/JES
  ↓
COBOL básico
  ↓
════════════════════
     ABRE-SE O GATE
════════════════════
  ↓
USS
  ├── filesystem
  ├── shell
  ├── zFS
  ├── POSIX
  ├── processos
  ├── pipes
  ├── permissões
  ├── RACF/SAF
  └── encoding
  ↓
Db2 / VSAM
  ↓
CICS
  ↓
MQ
  ↓
APIs
  ↓
Git
  ↓
CI/CD
  ↓
observabilidade
  ↓
modernização

Depois USS reaparece continuamente.

Essa é a chave.

Não deveria existir:

"Aula de USS concluída. Nunca mais falaremos disso."

USS precisa reaparecer quando estudamos segurança, desenvolvimento, integração, APIs, DevOps, automação e troubleshooting.


🧠 CAPÍTULO 19 — DE PROGRAMADOR COBOL PARA PROFISSIONAL z/OS

Esse é o verdadeiro objetivo.

Começamos com:

PROGRAMADOR COBOL

Depois adicionamos:

COBOL
JCL
ISPF
datasets

Depois:

CICS
Db2
VSAM
MQ

E finalmente:

USS
Git
APIs
shell
Python
Java
CI/CD
observabilidade
segurança

A pessoa começa a compreender o ecossistema.

Então podemos mudar a placa:

PROGRAMADOR COBOL
        ↓
DESENVOLVEDOR MAINFRAME
        ↓
PROFISSIONAL z/OS
        ↓
PROFISSIONAL IBM Z

Não porque abandonou COBOL.

Mas porque entendeu onde COBOL vive.


🥚 EASTER EGG — INCIDENTE 03:17

No final do laboratório, Itami entrega uma última missão.

Existe um arquivo misterioso:

/u/padawan/logs/gate.log

Padawan executa:

grep "03:17" /u/padawan/logs/gate.log

A tela responde:

03:17:00 BPXF024I GATE OPENED
03:17:01 PADAWAN ENTERED UNIX SYSTEM SERVICES
03:17:02 PADAWAN DISCOVERED GREP
03:17:03 PADAWAN STOPPED SEARCHING 300000 LINES MANUALLY
03:17:04 ITAMI REQUESTED COFFEE
03:17:05 BELLACOSA REQUESTED ANOTHER INCIDENT

O aluno olha para Itami.

— Professor... o que significa 03:17?

Itami toma um gole de café.

— Algumas coisas no mainframe você descobre sozinho.


☕ EPÍLOGO — O GATE NUNCA MAIS SE FECHOU

Padawan-01 voltou ao ISPF.

A tela era exatamente a mesma.

ISPF PRIMARY OPTION MENU

Mas alguma coisa havia mudado.

Não no mainframe.

Nele.

Antes enxergava:

MAINFRAME
   =
COBOL + JCL + ISPF

Agora enxergava:

                         IBM Z
                           │
                          z/OS
                           │
            ┌──────────────┼──────────────┐
            │              │              │
         CLÁSSICO         USS          MODERNO
            │              │              │
          COBOL           zFS            Git
           JCL           shell           APIs
          ISPF           POSIX          CI/CD
          CICS          processes       Java
          VSAM           pipes          Python
           Db2          security     observability
            │              │              │
            └──────────────┼──────────────┘
                           │
                    MAINFRAME MODERNO

Itami caminhou novamente em direção ao GATE.

Antes de atravessar, virou-se para o jovem programador.

— Você ainda gosta de COBOL?

— Muito.

— Ótimo. Continue estudando.

— Então por que me mostrou tudo isso?

Itami apontou para o enorme IBM Z atrás deles.

— Porque COBOL é uma linguagem. Isso aqui é uma plataforma.

E talvez essa seja uma das lições mais importantes que podemos ensinar para uma nova geração de profissionais.

COBOL continua sendo parte extraordinariamente importante da história e do presente do mainframe.

JCL continua importante.

ISPF continua importante.

Datasets continuam importantes.

CICS, Db2, VSAM, JES e RACF continuam importantes.

Mas ensinar somente isso cria uma janela estreita para uma plataforma gigantesca.

UNIX System Services abre outra janela.

Ali aparecem filesystem hierárquico, shell, POSIX, processos, pipes, permissões, zFS, integração com segurança do z/OS, encoding, automação e ferramentas modernas.

Depois surgem Git, APIs, Java, Python, CI/CD e novas formas de desenvolver e operar aplicações.

É nesse momento que o jovem deixa de perguntar:

"Como faço isso em COBOL?"

e começa a perguntar:

"Qual é a melhor maneira de resolver este problema no z/OS?"

Essa segunda pergunta forma profissionais muito mais completos.

Porque o futuro do mainframe não está em escolher entre o mundo antigo e o mundo novo.

Está em entender como os dois mundos atravessam o mesmo GATE.

E o profissional que consegue caminhar tranquilamente entre:

ISPF
 ↕
USS
 ↕
Git
 ↕
APIs
 ↕
CI/CD
 ↕
Cloud

sem esquecer de COBOL, JCL, CICS, Db2 e RACF não é apenas alguém mantendo sistemas antigos.

Ele está aprendendo a trabalhar com uma plataforma que passou décadas fazendo algo extremamente difícil:

evoluir sem obrigar o mundo inteiro a começar novamente do zero.

Itami provavelmente aprovaria.

Especialmente se a missão terminasse cedo o suficiente para ele voltar aos seus hobbies.

E o Bellacosa?

Provavelmente estaria no outro lado do GATE perguntando:

WHO CHANGED THIS FILE AT 03:17?

Um Café no Bellacosa Mainframe

"Existem dois tipos de programadores z/OS: aqueles que já atravessaram o GATE para o USS... e aqueles que ainda estão procurando a opção dele no menu do ISPF."

quarta-feira, 8 de maio de 2019

🐶 Mumbly e o Mistério do Mainframe que Jurava Estar Seguro

 

Bellacosa Mainframe e o mistério do mainframe que jurava estar seguro

☕ Um Café no Bellacosa Mainframe

🐶 Mumbly e o Mistério do Mainframe que Jurava Estar Seguro

Firewalls, criptografia, autenticação, RACF, Zero Trust, ameaças, insiders, Red Team e aquele acesso das 03:17 que estava perfeitamente autorizado — mas não deveria estar acontecendo.

Há personagens que chegam a uma investigação arrombando portas, apontando armas e gritando ordens.

Mumbly não.

Ele aparece de sobretudo, dirige uma lata-velha, resmunga alguma coisa incompreensível e fica olhando para o suspeito com aquela expressão de quem já percebeu algo que ninguém mais percebeu.

E então vem aquela risadinha.

Heh-heh-heh-heh-heh...

Perfeito para investigar cybersecurity.

Porque segurança de computadores tem uma característica curiosa: quando ocorre um grande incidente, frequentemente descobrimos que várias partes do sistema estavam funcionando exatamente como foram configuradas para funcionar.

O firewall permitiu a conexão.

O certificado era válido.

A criptografia funcionou.

A senha estava correta.

O MFA foi aprovado.

O RACF autorizou.

O CICS executou.

O COBOL retornou RETURN-CODE = 0.

E alguém acabou de fazer algo que jamais deveria ter acontecido.

Mumbly ergueria uma sobrancelha.

Heh-heh-heh...

Temos um caso.

Antes de entrar na LPAR, vale apresentar nosso investigador. The Mumbly Cartoon Show foi produzido pela Hanna-Barbera e estreou nos Estados Unidos em 11 de setembro de 1976. Foram produzidos 16 episódios, com Mumbly dublado originalmente por Don Messick e Chief Schnooker por John Stephenson. O cão detetive de sobretudo trabalhava solucionando crimes enquanto seu chefe humano nem sempre demonstrava a mesma competência. (Wikipedia)

No Brasil, ficou conhecido como Rabugento, o Cão Detetive, com Pietro Mário na voz do protagonista e Guálter de França como Chefe Sinuca na dublagem registrada pela Herbert Richers. (DB - Dublagem Brasileira)

E existe uma conexão especialmente divertida: Mumbly é frequentemente descrito como uma paródia canina do detetive Columbo — sobretudo, comportamento aparentemente desajeitado, insistência e aquela capacidade de incomodar o suspeito até a verdade aparecer.  

Exatamente o método que usaremos.



🕵️ CAPÍTULO 1 — O sistema estava seguro

Nosso caso começa numa grande empresa fictícia.

Chamaremos de:

BELLACOSA BANK

O diretor pergunta ao responsável pela infraestrutura:

— Nosso sistema está protegido?

Resposta:

— Claro!

E começa o inventário:

Firewall .............. ✔
WAF ................... ✔
TLS ................... ✔
AES ................... ✔
MFA ................... ✔
RACF .................. ✔
SIEM .................. ✔
Antivírus ............. ✔
Backups ............... ✔

Mumbly olha para a lista.

Hmmmmmm...

E resmunga.

Porque o primeiro erro de cybersecurity está diante dele:

ter controles de segurança não significa necessariamente estar seguro.

Essa diferença parece filosófica, mas é engenharia.

Um firewall resolve determinados problemas.

Criptografia resolve outros.

MFA resolve outros.

RACF resolve outros.

Nenhum deles consegue responder sozinho à pergunta:

“O sistema está fazendo somente aquilo que deveria fazer?”

É aí que começa nossa investigação.



🔥 CAPÍTULO 2 — O primeiro suspeito: Firewall

Durante muito tempo aprendemos segurança usando a metáfora do castelo:

             INTERNET
                 |
                 |
          +-------------+
          |  FIREWALL   |
          +-------------+
                 |
       =====================
       REDE CORPORATIVA
       =====================
           |          |
        SERVER      SERVER

Do lado de fora estão os bárbaros.

Dentro das muralhas estão os cidadãos confiáveis.

É uma metáfora útil.

Mas perigosa.

Porque cria uma conclusão implícita:

EXTERNO = NÃO CONFIÁVEL
INTERNO = CONFIÁVEL

Mumbly atravessa o firewall, olha para trás e resmunga:

Hmmmm...

O firewall nunca prometeu isso.

Ele controla comunicações segundo determinadas políticas.

Um packet filter poderia encontrar:

SOURCE      = 192.168.20.10
DESTINATION = 10.20.10.50
PROTOCOL    = TCP
PORT        = 443

e decidir:

ALLOW

Isso significa:

essa comunicação atende à política.

Não significa:

essa pessoa é honesta.

Nem:

essa operação é legítima.

Muito menos:

o que acontecer dentro dessa conexão será seguro.



🧱 CAPÍTULO 3 — Nem todo firewall é igual

O primeiro dos nossos infográficos apresentava diversos tipos de firewall.

A ideia geral está correta, mas precisamos separar tecnologias, arquiteturas e gerações.

Um packet-filtering firewall trabalha principalmente com características dos pacotes.

Um firewall stateful vai além.

Ele mantém contexto sobre conexões.

Simplificando:

SOURCE       PORT     DESTINATION    PORT     STATE

10.1.1.20    49152    10.2.1.30      443      ESTABLISHED
10.1.1.21    50233    10.2.1.31      22       ESTABLISHED

Agora o equipamento pode perguntar:

“Este pacote pertence a uma comunicação que já conheço?”

É uma enorme evolução sobre examinar pacotes isoladamente.

Mas ainda existe um problema.

Imagine:

HTTPS
TCP/443

Perfeitamente permitido.

Dentro dele:

POST /transfer

E dentro dessa requisição:

{
  "origem": "12345",
  "destino": "98765",
  "valor": 9800000
}

O firewall pode estar completamente satisfeito.

Mumbly não.



🌐 CAPÍTULO 4 — Então aparece o WAF

Agora acrescentamos outra camada:

INTERNET
   |
   v
FIREWALL
   |
   v
WAF
   |
   v
API GATEWAY
   |
   v
APPLICATION

O Web Application Firewall consegue observar aspectos específicos do tráfego HTTP/HTTPS e aplicar políticas relacionadas à aplicação.

Isso melhora enormemente nossa defesa.

Mas novamente:

WAF ALLOWED

não significa:

BUSINESS TRANSACTION IS LEGITIMATE

Essa diferença será fundamental quando chegarmos ao COBOL.



🔐 CAPÍTULO 5 — O segundo suspeito: criptografia

Mumbly encontra uma placa:

AES-256

O administrador sorri.

— Nossos dados são criptografados!

Mumbly responde:

Hmmmm...

Excelente.

Mas onde estão as chaves?

Silêncio.

Essa pergunta muda completamente a investigação.

Criptografia simétrica, como AES, utiliza segredo compartilhado para proteger dados.

Criptografia de chave pública trabalha com uma estrutura envolvendo chave pública e privada.

Na prática, sistemas modernos frequentemente combinam mecanismos.

Conceitualmente:

CRIPTOGRAFIA ASSIMÉTRICA
          |
          v
ESTABELECIMENTO DE CONFIANÇA/
SEGREDO DE SESSÃO
          |
          v
CRIPTOGRAFIA SIMÉTRICA
          |
          v
GRANDE VOLUME DE DADOS

Por quê?

Entre outros motivos, desempenho e características distintas dos algoritmos.

Mas nosso detetive não está interessado apenas no algoritmo.

Está procurando confiança.


🗝️ CAPÍTULO 6 — Quem guarda a chave da chave?

Imagine que CUSTOMER.DATA esteja perfeitamente criptografado.

Fantástico.

Agora alguém encontra no programa:

01  WS-CRYPTO-KEY PIC X(32)
    VALUE 'MINHA-SUPER-CHAVE-SECRETA'.

Mumbly começa a rir.

Heh-heh-heh-heh-heh...

A matemática continua funcionando.

A arquitetura de segurança, não.

O problema real passa a incluir:

Quem cria a chave?

Quem possui acesso?

Onde ela fica?

Pode ser exportada?

Como ocorre a rotação?

Quem consegue substituí-la?

Existe auditoria?

Existe separação de funções?

Existe hardware dedicado para protegê-la?

É aí que o mundo IBM Z fica fascinante.

Entram elementos como ICSF, hardware criptográfico, certificados, key rings e políticas de acesso.

Segurança criptográfica empresarial não é:

AES = ON

É um ecossistema.


🚚 CAPÍTULO 7 — Data at rest, data in transit e data in use

Mumbly encontra três salas.

Na primeira:

DATA AT REST

São datasets, bancos, arquivos, volumes e backups.

Na segunda:

DATA IN TRANSIT

São dados atravessando redes.

Na terceira:

DATA IN USE

Agora a coisa fica interessante.

Porque podemos possuir:

DISK
  ↓
ENCRYPTED DATA
  ↓
APPLICATION
  ↓
DECRYPT
  ↓
PROCESSING

Em algum momento uma aplicação autorizada precisa utilizar os dados.

Consequentemente:

criptografia não substitui controle de acesso.

E controle de acesso não substitui criptografia.

Essa é a essência de defense in depth.


🪪 CAPÍTULO 8 — Mumbly pergunta: “Quem é você?”

Chegamos à autenticação.

Temos senha.

PIN.

OTP.

Biometria.

Certificados.

Tokens.

Security keys.

Passwordless.

MFA.

Mas antes de decorar tecnologias precisamos aprender uma separação fundamental:

IDENTIFICATION
      ↓
Quem você afirma ser?

AUTHENTICATION
      ↓
Você consegue provar?

AUTHORIZATION
      ↓
O que você pode fazer?

Um usuário pode autenticar corretamente e continuar sem autoridade para determinado recurso.

Essa distinção é essencial no mainframe.


🏦 CAPÍTULO 9 — RACF entra na delegacia

Imagine:

USERID ABC123
PASSWORD ********

Autenticação concluída.

Mas ABC123 tenta acessar:

BANK.PROD.CUSTOMER.MASTER

Agora precisamos perguntar:

ABC123 possui READ?

Talvez sim.

Depois:

Possui UPDATE?

Talvez não.

E:

ALTER?

Definitivamente esperamos que isso tenha sido pensado cuidadosamente.

Esse é o princípio de least privilege:

conceder somente os privilégios necessários para executar determinada função.

Um desenvolvedor COBOL iniciante precisa compreender isso muito cedo.

Seu programa não vive sozinho.

Ele executa dentro de uma arquitetura de identidade e autorização.


🧑‍💻 CAPÍTULO 10 — Então Mumbly encontra o COBOL

Aqui nossa investigação muda.

O sistema é:

Mobile App
    |
   TLS
    |
   WAF
    |
API Gateway
    |
z/OS Connect
    |
   CICS
    |
   RACF
    |
PGMPAY01
    |
   Db2

Uma requisição chegou.

Firewall:

OK

WAF:

OK

TLS:

OK

Identidade:

OK

RACF:

OK

CICS:

OK

E agora o programa recebe:

TRANSFER-AMOUNT = 9.800.000

Quem decide se aquela transferência faz sentido?

Talvez seja justamente o sistema de negócio.


💰 CAPÍTULO 11 — Uma linha COBOL também pode ser cybersecurity

Considere:

IF TRANSFER-AMOUNT > DAILY-LIMIT
    MOVE 'Y' TO ADDITIONAL-REVIEW
END-IF.

Isso parece uma regra bancária.

E é.

Mas também constitui controle de risco.

Podemos adicionar:

IF DESTINATION-COUNTRY NOT = CUSTOMER-USUAL-COUNTRY
   AND TRANSFER-AMOUNT > HIGH-RISK-LIMIT
       PERFORM REQUEST-ADDITIONAL-VALIDATION
END-IF.

Então descobrimos três níveis diferentes:

NETWORK AUTHORIZATION
        |
        | Posso estabelecer comunicação?
        v

SYSTEM AUTHORIZATION
        |
        | Posso acessar o recurso?
        v

BUSINESS AUTHORIZATION
        |
        | Posso executar ESTA operação?
        v

TRANSACTION

E é nesse terceiro nível que milhões de linhas COBOL sustentam controles críticos de negócio.


💣 CAPÍTULO 12 — Mumbly encontra um usuário perfeitamente legítimo

Às 03:17...

Sim, exatamente 03:17.

Um registro aparece:

USER ABC123
LOGIN SUCCESSFUL

Nada estranho.

Depois:

03:17:03 CUSTOMER READ
03:17:04 ACCOUNT READ
03:17:05 ACCOUNT READ
03:17:06 ACCOUNT READ
03:17:07 ACCOUNT READ

Alguns minutos depois:

38.421 RECORDS ACCESSED

RACF diz:

AUTHORIZED

Mumbly:

Hmmmmmmmmmm...

Normalmente ABC123 consulta 30 registros por dia.

Agora consultou 38 mil.

Essa é uma descoberta extraordinariamente importante:

acesso autorizado pode produzir comportamento malicioso.


👤 CAPÍTULO 13 — O insider não precisa derrubar a porta

O atacante externo pode precisar superar:

Firewall
WAF
MFA
RACF
Segmentation
Application Security

O insider talvez possua:

USERID válido
equipamento válido
VPN válida
acesso válido
conhecimento interno
autorizações legítimas

Seu caminho começa vários quilômetros depois da muralha.

Por isso:

AUTHENTICATED

não significa:

TRUSTED FOREVER

E:

AUTHORIZED

não significa:

BEHAVIOR IS LEGITIMATE

Mumbly encontrou uma pista importante.


🎬 CAPÍTULO 14 — Uma fotografia não resolve o caso

Veja:

ABC123 READ CUSTOMER

Parece normal.

📸 Temos uma fotografia.

Agora:

03:17 Login incomum
03:18 Dataset sensível
03:19 Volume anormal
03:20 Nova aplicação
03:21 Consulta em massa
03:22 Transferência externa

Temos um filme.

🎬

Esse princípio ajuda a compreender SIEM, correlação, analytics e detecção comportamental.

Podemos coletar informações de várias fontes:

RACF ──────┐
SMF ───────┤
CICS ──────┤
Db2 ───────┤
MQ ────────┼──> CORRELATION
TCP/IP ────┤          |
WAF ───────┤          v
API ───────┤       ANALYTICS
Cloud ─────┘          |
                      v
                    ALERT

Uma ocorrência talvez não diga nada.

A sequência conta uma história.

Mumbly sempre soube disso.

Um detetive não resolve crimes olhando apenas para uma pegada.

Ele procura relações entre pistas.


🧮 CAPÍTULO 15 — Risk Scoring entra na investigação

Agora podemos transformar contexto em risco.

Não existe uma fórmula universal como esta, mas podemos imaginar pedagogicamente:

RISK SCORE =
    IDENTITY
  + DEVICE
  + NETWORK
  + BEHAVIOR
  + TRANSACTION
  + RESOURCE
  + THREAT CONTEXT

ABC123:

Known user ..................  0
Known workstation ...........  0
Unusual hour ................ 15
Sensitive resource .......... 20
Abnormal volume ............. 30
New destination ............. 20
Privilege anomaly ........... 30
                              ---
                              115

Em vez de simplesmente:

ALLOW
DENY

podemos pensar em respostas graduais:

ALLOW

ALLOW + MONITOR

STEP-UP AUTHENTICATION

LIMIT

REQUIRE APPROVAL

ISOLATE

DENY

OPEN INCIDENT

Isso representa uma evolução enorme da segurança binária.


🏰 CAPÍTULO 16 — Mumbly derruba o castelo

Finalmente chegamos ao Zero Trust.

O modelo antigo poderia implicitamente favorecer:

OUTSIDE
   ↓
UNTRUSTED

INSIDE
   ↓
TRUSTED

Zero Trust questiona essa confiança implícita.

Uma arquitetura mais madura pensa:

IDENTITY
    +
DEVICE
    +
RESOURCE
    +
CONTEXT
    +
POLICY
    +
RISK
    ↓
ACCESS DECISION

E mesmo depois de permitir:

CONTINUE OBSERVING

Esse último detalhe é fundamental.

Autorização não precisa representar um cheque em branco eterno.


🕸️ CAPÍTULO 17 — O Red Team pergunta algo diferente

Chegou a hora de Mumbly vestir o chapéu de Red Team.

Um teste superficial pergunta:

Como atravesso o firewall?

Um raciocínio muito mais interessante pergunta:

Onde esta organização deposita confiança?

Veja:

                    PRODUCTION
                  /      |      \
               CICS     DB2      MQ
                |        |        |
              COBOL     DBA    SERVICE
                |        |        |
               DEV     ADMIN    VENDOR
                 \       |       /
                    IDENTITY
                       |
                    HELPDESK

Isso é um grafo de confiança.

Agora existe uma pergunta deliciosamente Mumbly:

Qual caminho até produção possui menos resistência?

Talvez atacar:

Internet
→ Firewall
→ WAF
→ API
→ z/OS

seja difícil.

Mas existe:

Usuário
→ Helpdesk
→ Reset
→ Credencial
→ VPN
→ Ambiente interno

Ou:

Fornecedor
→ Service Account
→ Integração
→ MQ
→ Aplicação

Ou ainda:

Developer
→ Repository
→ Pipeline
→ Build
→ Load Library
→ Production

O Red Team não precisa necessariamente destruir a muralha.

Ele procura uma porta que alguém já deixou aberta.


📦 CAPÍTULO 18 — O assassino pode estar no pipeline

Mumbly encontra:

PGMPAY01.cbl

O fonte está perfeito.

Code review:

PASS

Testes:

PASS

Análise:

PASS

Mas existe uma cadeia:

SOURCE
  ↓
COPYBOOK
  ↓
REPOSITORY
  ↓
BUILD
  ↓
COMPILER
  ↓
LINK
  ↓
LOADLIB
  ↓
DEPLOY
  ↓
PRODUCTION

Comprometa uma etapa da cadeia e talvez você não precise alterar diretamente o fonte analisado.

Esse é o motivo pelo qual supply-chain security se tornou tão importante.

A pergunta deixa de ser:

O código está correto?

e vira:

Conseguimos provar que aquilo executando em produção corresponde ao artefato que acreditamos ter construído?

Essa é outra investigação inteira.


👻 CAPÍTULO 19 — O suspeito que ninguém interrogou: Service Account

Mumbly consulta a lista de usuários.

Humanos:

VAGNER01
MARIA02
JOAO03

E depois:

SVCMQ001
SVCBATCH
SVCAPI
CICSPROD

Hmmmmm...

Máquinas também possuem identidades.

Aplicações precisam conversar:

CICS
 ↓
MQ
 ↓
SERVICE
 ↓
API
 ↓
DATABASE

Um service account criado dez anos atrás pode ter acumulado privilégios porque, a cada problema, alguém decidiu:

“Libera mais um acesso para o batch funcionar.”

Depois de quinze anos:

SVCBATCH
    |
    +-- CUSTOMER.*
    +-- ACCOUNT.*
    +-- PAYMENT.*
    +-- CLAIMS.*
    +-- REPORT.*
    +-- ADMIN.*

Ele virou um fantasma com as chaves do prédio inteiro.

Essa é security debt.


🧑‍🔧 CAPÍTULO 20 — E o erro humano?

Um dos infográficos inclui corretamente erro humano entre ameaças.

Isso merece atenção.

Nem todo incidente nasce de:

EVIL HACKER

Pode nascer de:

PERMIT *

quando deveria ser:

PERMIT RESOURCE.X

Pode ser um certificado expirado.

Uma ACL errada.

Uma configuração esquecida.

Um dataset copiado para homologação contendo dados reais.

Um log com informação sensível.

Um backup sem a proteção esperada.

Um usuário que recebeu privilégio temporário e nunca o perdeu.

Ou simplesmente:

“Deixa assim porque está funcionando.”

Mumbly odeia essa frase.

Heh-heh-heh-heh...


🎩 CAPÍTULO 21 — White Hat, Black Hat e a confusão dos chapéus

O último infográfico tenta classificar hackers.

Serve como introdução, mas é perigoso transformar todos os “chapéus” em taxonomia rígida.

É melhor classificar atores em dimensões.

Autorização

AUTHORIZED
UNAUTHORIZED

Motivação

Financial
Espionage
Ideological
Revenge
Curiosity
Sabotage

Relação

External
Internal
Partner
Supplier

Capacidade

Low
Medium
High
Advanced

Recursos

Individual
Criminal organization
Corporate
State-supported

Assim conseguimos construir modelos de ameaça muito melhores.

Um adolescente usando ferramentas prontas e uma equipe altamente financiada podem explorar a mesma vulnerabilidade.

Mas representam riscos completamente diferentes.


🛡️ CAPÍTULO 22 — Prevent não basta

Mumbly olha novamente nossa arquitetura.

Encontramos:

Firewall
MFA
RACF
TLS
Encryption
WAF

Tudo isso é importantíssimo.

Mas segurança precisa pensar em todo o ciclo:

              GOVERN
                 |
              IDENTIFY
                 |
              PROTECT
                 |
               DETECT
                 |
              RESPOND
                 |
              RECOVER
                 |
                 +------+
                        |
                        v
                    aprender

Essa visão é muito próxima da estrutura do NIST Cybersecurity Framework 2.0, que organiza os resultados de cybersecurity nas funções Govern, Identify, Protect, Detect, Respond e Recover. (Wikipedia)

O ponto pedagógico permanece: prevenção é somente parte do trabalho.


🚨 CAPÍTULO 23 — Assume Breach

Existe uma pergunta desconfortável que Mumbly faria:

E se o atacante já estiver dentro?

Essa pergunta muda completamente o projeto.

Em vez de:

COMO IMPEDIMOS A ENTRADA?

também perguntamos:

COMO LIMITAMOS O MOVIMENTO?

COMO DETECTAMOS?

COMO CONTEMOS?

COMO PRESERVAMOS EVIDÊNCIAS?

COMO RECUPERAMOS?

COMO SABEMOS O QUE FOI AFETADO?

A arquitetura precisa sobreviver à falha de um controle.

Essa é uma maneira poderosa de compreender defense in depth.


🔬 CAPÍTULO 24 — O programador COBOL também faz parte da defesa

Essa talvez seja a descoberta mais importante deste artigo.

O programador iniciante frequentemente imagina:

SEGURANÇA
   =
EQUIPE DE SEGURANÇA

Não.

Quem escreve:

IF USER-ROLE = 'ADMIN'

está implementando uma decisão de segurança.

Quem escreve:

DISPLAY CUSTOMER-CARD-NUMBER

pode estar criando exposição de dados.

Quem decide registrar:

PASSWORD=XXXXXXXX

em log está tomando uma decisão de segurança.

Quem cria:

IF AMOUNT > LIMIT
   PERFORM VALIDATE
END-IF

pode estar implementando controle antifraude.

Quem ignora:

RETURN-CODE

pode transformar uma falha de segurança em comportamento inesperado.

Cybersecurity não começa no firewall.

Nem termina no RACF.

Ela atravessa o software.


🧠 CAPÍTULO 25 — Mumbly finalmente monta o quadro

Na parede da delegacia temos todas as pistas:

                   CYBERSECURITY
                         |
         +---------------+---------------+
         |               |               |
       PEOPLE          PROCESS        TECHNOLOGY
         |               |               |
         +---------------+---------------+
                         |
                       ASSET
                         |
                      THREATS
                         |
                  ATTACK SURFACE
                         |
                      CONTROLS
                         |
         +---------------+---------------+
         |               |               |
      PREVENT          DETECT          RESPOND
         |               |               |
      Firewall          SMF             SOC
      RACF              Logs            IR
      MFA               SIEM            Isolate
      TLS               UEBA            Recover
      Crypto            Alerts          Forensics
         \               |               /
          +--------------+--------------+
                         |
                      EVIDENCE
                         |
                       RISK
                         |
                    GOVERNANCE

E no centro disso tudo:

                     BUSINESS
                        |
                        v
                      COBOL
                        |
             +----------+----------+
             |          |          |
            CICS       Db2         MQ
             \          |          /
              +---------+---------+
                        |
                       z/OS
                        |
                       IBM Z

Agora finalmente enxergamos o sistema inteiro.


🐶 CAPÍTULO 26 — Mumbly resolve o caso

Chefe Sinuca entra correndo.

— Mumbly! Descobri! O firewall estava funcionando!

Mumbly:

Hmmmm.

— O MFA também!

Hmmmm.

— O certificado era válido!

Hmmmm.

— RACF autorizou!

Hmmmm.

— O programa COBOL terminou com CC 0000!

Mumbly sorri.

Heh-heh-heh-heh-heh...

Porque essa era justamente a pista.

Nada havia “quebrado”.

O usuário possuía uma identidade legítima.

A comunicação era permitida.

O canal estava criptografado.

O recurso estava autorizado.

A transação tecnicamente funcionou.

Mas às 03:17, aquela identidade começou a executar uma sequência de operações incompatível com seu comportamento normal, em volume incomum, sobre recursos sensíveis.

O sistema tradicional perguntava:

WHO ARE YOU?

Depois evoluiu para:

WHO ARE YOU?
ARE YOU AUTHORIZED?

A segurança moderna precisa continuar:

WHO ARE YOU?

WHAT DEVICE?

FROM WHERE?

WHAT RESOURCE?

WHAT OPERATION?

WHEN?

HOW MUCH?

HOW OFTEN?

IS THIS NORMAL?

WHAT CHANGED?

WHAT IS THE CURRENT RISK?

SHOULD WE CONTINUE TRUSTING THIS SESSION?

Mumbly não encontrou uma porta arrombada.

Encontrou algo muito mais interessante:

uma cadeia de confiança que continuou confiando quando já deveria ter começado a desconfiar.


☕ EPÍLOGO — O firewall não era o culpado

É tentador terminar uma aula de cybersecurity dizendo:

“Precisamos de firewalls melhores.”

Mas Mumbly provavelmente resmungaria.

O firewall fez seu trabalho.

O RACF fez seu trabalho.

A criptografia fez seu trabalho.

O CICS fez seu trabalho.

O COBOL fez exatamente aquilo que alguém havia programado.

Esse é precisamente o problema.

Segurança madura não pode ser reduzida à existência de ferramentas.

Precisamos perguntar continuamente:

QUEM
   ↓
FAZ O QUÊ
   ↓
SOBRE QUAL RECURSO
   ↓
EM QUAL CONTEXTO
   ↓
COM QUAL PRIVILÉGIO
   ↓
PRODUZINDO QUAL COMPORTAMENTO
   ↓
GERANDO QUAL RISCO

Por isso aqueles cinco infográficos aparentemente simples — Firewall, Criptografia, Autenticação, Ameaças e Hackers — acabam nos levando a uma discussão muito maior sobre IAM, RACF, least privilege, defesa em profundidade, Zero Trust, SIEM, UEBA, Risk Scoring, supply chain, insider threat, Red Team, observabilidade, resposta a incidentes e segurança de aplicações COBOL.

E talvez exista uma lição ainda mais bonita para quem está começando no mainframe.

Não olhe para um programa COBOL simplesmente como:

INPUT
  ↓
PROCESS
  ↓
OUTPUT

Olhe assim:

IDENTITY
    ↓
AUTHORIZATION
    ↓
INPUT
    ↓
BUSINESS RULES
    ↓
RISK CONTROLS
    ↓
TRANSACTION
    ↓
DATA
    ↓
AUDIT TRAIL

Porque aquele velho programa de quarenta anos pode não ser apenas um sistema que calcula juros, liquida pagamentos ou atualiza uma conta.

Ele pode ser uma das últimas linhas de defesa do negócio.

E quando alguém disser:

“Mas o usuário estava autenticado...”

talvez seja hora de vestir o sobretudo, olhar novamente os SMF records, correlacionar CICS, Db2, RACF, MQ e logs da aplicação e perguntar:

“Autenticado, sim. Mas deveria estar fazendo isso?”

Do fundo do Data Center ouvimos:

Heh-heh-heh-heh-heh...

Mumbly encontrou outra pista. 🐶🔎




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