☕ 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

sábado, 1 de maio de 2021

💀🔥 “Seu RACF está seguro… ou você só acha?”

 

Bellacosa Mainframe alerta sobre riscos no racf mal configurado

💀🔥 “Seu RACF está seguro… ou você só acha?”

🧠 Checklist de Auditoria RACF nível banco (com segredos que ninguém te conta)

“RACF não falha…
quem falha é quem confia demais nele.”


🧠 📜 Contexto histórico (o começo de tudo)

O RACF nasceu nos anos 70 junto com o z/OS (antes MVS).

👉 Naquela época:

  • segurança era controle de acesso
  • hoje é sobrevivência digital

💡 Curiosidade:

RACF foi um dos primeiros sistemas do mundo a implementar controle centralizado de identidade — antes do conceito de IAM moderno.


💀🔥 O CHECKLIST QUE SEPARA AMADOR DE BANCO


🧨 1. *PUBLIC — o vilão silencioso

👉 Procure:

// quem tem acesso aberto?
RLIST DATASET * AUTHUSER(*)

💥 Red flag:

  • datasets críticos com:
ID(*PUBLIC) ACCESS(READ ou UPDATE)

🔥 Insight Bellacosa:

80% das falhas começam aqui.


🧠 2. Usuários com SPECIAL / OPERATIONS

👉 Liste:

SEARCH CLASS(USER) MASK(*) SPECIAL

💥 Risco:

  • acesso total ao RACF

🎯 Dica senior:

  • separar:
    • ADMIN ≠ AUDITOR

⚙️ 3. Grupos com autoridade excessiva

👉 Verifique:

LISTGRP * OMVS

💥 Problema:

  • grupo herdando privilégio indevido

🔥 Easter egg:

Um grupo mal configurado é pior que um usuário root.


🧬 4. Programas APF e AC=1

👉 Verifique APF:

D PROG,APF

💥 Risco:

  • execução em modo supervisor

🎯 Ataque clássico:

  • inserir loadlib malicioso

🔐 5. Password Policy (o calcanhar de aquiles)

👉 Cheque:

SETROPTS LIST

💥 Problemas comuns:

  • senha simples
  • sem expiração
  • sem history

🔥 Curiosidade:

Já vi banco com senha “123456” em ambiente produtivo.


🌐 6. FACILITY class (o “backdoor oficial”)

👉 Verifique:

RLIST FACILITY *

💥 Risco:

  • permissões ocultas

🎯 Exemplo crítico:

  • BPX.* (Unix System Services)

🧑‍💻 7. USS (Unix no mainframe = Linux feelings)

👉 Verifique:

LISTUSER USER OMVS

💥 Risco:

  • UID 0 (root)

🔥 Insight:

USS é o ponto favorito de pivot de atacante moderno.


🧾 8. Logging / SMF (sem isso você está cego)

👉 Cheque:

  • SMF 80 (RACF)
  • SMF 30 (jobs)

💥 Problema:

  • logs incompletos

🎯 Dica:

  • integrar com SIEM

🧠 9. Started Tasks (STC) — privilégio invisível

👉 Verifique:

RLIST STARTED *

💥 Risco:

  • tarefas com privilégios elevados

🔥 Easter egg:

STC mal protegido = root invisível rodando 24x7


🔗 10. Integrações externas (o novo campo de batalha)

👉 Verifique:

  • CICS
  • z/OS Connect

💥 Risco:

  • acesso indireto ao core

🎯 Realidade:

O ataque não entra pelo mainframe… entra pela API.


💀🔥 CHECKLIST RÁPIDO (modo auditor)

✔️ Nenhum dataset crítico com *PUBLIC
✔️ SPECIAL restrito e auditado
✔️ APF controlado
✔️ Senha forte e rotacionada
✔️ SMF ativo e monitorado
✔️ USS sem UID 0 indevido
✔️ FACILITY revisada
✔️ STC mapeado
✔️ Integrações seguras


🧠💣 Fluxo real de ataque (pra abrir a mente)

  1. credencial fraca
  2. acesso TSO/FTP
  3. enumeração RACF
  4. exploração (APF / FACILITY / USS)
  5. persistência
  6. exfiltração

🧬 Easter Eggs que só senior percebe

💡 RACF não protege dataset não catalogado direito
💡 APF + AC=1 = execução nível kernel
💡 FACILITY é mais perigosa que DATASET
💡 USS é o “Linux escondido” do mainframe


🏦 Realidade nível banco

👉 Banco não confia em RACF…
👉 Banco audita RACF o tempo todo


🔥 Frase final estilo Bellacosa

“Se você não auditou seu RACF hoje…
alguém pode estar usando ele melhor que você.”

 

sexta-feira, 30 de abril de 2021

🧠 COBOL + Redes Neurais no IBM Mainframe

 



🧠 COBOL + Redes Neurais no IBM Mainframe

Dá pra fazer? Deve-se fazer? Quando faz sentido?

❌ O que NÃO faz sentido (sem romantizar)

COBOL foi criado para:

  • Processamento transacional

  • Lógica determinística

  • Alta confiabilidade

  • Baixo erro

  • Cálculo financeiro exato

  • Batch e OLTP

Redes neurais exigem:

  • Álgebra linear pesada

  • Matrizes gigantes

  • Operações vetoriais

  • Floating point intensivo

  • GPUs / TPUs

  • Bibliotecas como TensorFlow, PyTorch, JAX

👉 COBOL não tem:

  • Tipos numéricos adequados para ML moderno

  • Bibliotecas matemáticas otimizadas

  • Ecossistema científico

  • Performance vetorial competitiva

Criar uma rede neural em COBOL seria como usar um martelo para fazer microcirurgia.

É possível teoricamente?
Sim.

É profissionalmente aceitável?
Não.


⚠️ O erro clássico do padawan

“Mas o mainframe é poderoso, tem muita CPU, então dá pra rodar IA nele!”

Poder computacional ≠ arquitetura adequada.

Mainframe é otimizado para:

  • Throughput transacional

  • I/O previsível

  • CPU serial eficiente

  • Custos controlados por MIPS

IA moderna é:

  • Explosão de ponto flutuante

  • Paralelismo massivo

  • GPUs

  • Custo computacional brutal

👉 Rodar treino de rede neural em z/OS = queimar MIPS e dinheiro 🔥


✅ Onde o Mainframe ENTRA de forma inteligente

Agora vem a parte que ninguém do hype explica direito.

🧩 Arquitetura moderna REAL (usada por bancos e seguradoras)

[ Mobile / Web ] | v [ API / Microservices ] | v [ IA / ML (Python, GPUs, Cloud) ] | v [ Mainframe COBOL (CICS / Batch) ]

🎯 Papel do COBOL:

  • Fornecer dados confiáveis

  • Executar regras críticas

  • Tomar decisões finais

  • Persistir resultados

  • Garantir consistência financeira

🎯 Papel da IA:

  • Classificar

  • Prever

  • Detectar padrões

  • Score de risco

  • Fraude

  • Recomendação

A IA sugere.
O COBOL decide e executa.


🧠 Exemplo realista

💳 Detecção de fraude bancária

  1. Transação entra no CICS

  2. COBOL chama API de IA

  3. Modelo retorna score (ex: 0.87 risco)

  4. COBOL aplica regras:

    • Limite?

    • Cliente VIP?

    • Horário?

  5. COBOL aprova, nega ou solicita validação

➡️ COBOL governa
➡️ IA auxilia


🧪 “Mas posso rodar IA no próprio mainframe?”

⚠️ Com MUITAS ressalvas

Possibilidades existentes:

  • Linux on Z

  • Containers no zCX

  • Python rodando no Linux on Z

  • Inferência simples (não treino)

Mesmo assim:

  • ❌ Treinar modelos grandes → NÃO

  • ⚠️ Inferência pequena → talvez

  • 💰 Custo ainda alto comparado à cloud GPU

Mainframe não é substituto de GPU.


🧙 Easter-eggs de veterano

  • COBOL é determinístico; IA é probabilística

  • Reguladores confiam mais em COBOL do que em redes neurais “caixa-preta”

  • Muitos bancos exigem:

    • IA para análise

    • COBOL para decisão final

  • Explicabilidade (XAI) ainda é fraca — COBOL reina nisso


🛣️ Caminho correto para o dev padawan

Se você é dev e quer unir Mainframe + IA, faça assim:

🥋 Stack recomendada

  • COBOL + CICS / Batch

  • APIs REST

  • Python (ML)

  • Kafka / MQ

  • DB2 / VSAM

  • Cloud híbrida

📚 Aprenda:

  • Como o COBOL expõe serviços

  • Como consumir APIs externas

  • Como versionar modelos

  • Como validar decisões automatizadas

  • Como não estourar MIPS 😈


🧠 Resposta final (sem rodeio)

PerguntaResposta
Criar rede neural em COBOL?❌ Não faz sentido
Usar mainframe em soluções com IA?✅ Sim
COBOL como motor de decisão?✅ Absolutamente
Treinar ML no z/OS?❌ Financeiramente suicida
Arquitetura híbrida?🔥 Caminho real

☕ Palavra final do El Jefe

IA sem governança é risco.
COBOL sem IA perde competitividade.
Juntos, cada um no seu lugar, eles mandam no jogo.

Mainframe não é cérebro artificial.
É coluna vertebral.

E coluna não pensa —
ela sustenta tudo.


quinta-feira, 29 de abril de 2021

🗾✨ Golden Week — O Japão em Modo Férias, Tradição e Caos Organizado ✨🗾

 

Bellacosa Mainframe e o golden week

🗾✨ Golden Week — O Japão em Modo Férias, Tradição e Caos Organizado ✨🗾
Por El Jefe, direto do Bellacosa Mainframe Universe


Imagina o Japão — aquele país disciplinado, metódico, pontual ao extremo — parando tudo.
Trens lotados, hotéis impossíveis de reservar, parques abarrotados, e um sentimento coletivo de “ufa, finalmente descanso!”.
Pois é… isso tem nome, história e muita cultura por trás: a Golden Week (ゴールデンウィーク).

É como se o Japão dissesse:
“Agora é a hora de tirar o cartão de ponto espiritual, vestir o yukata, e deixar o tempo compilar sozinho.”




📜 A Origem — Quando o Japão Descobriu o Prazer de Feriar

A Golden Week nasceu oficialmente em 1948, no pós-guerra, quando o governo japonês consolidou vários feriados nacionais próximos no calendário.
Mas o nome curioso vem da indústria do cinema.

Nos anos 50, o estúdio Daiei Film percebeu que seus lucros subiam absurdamente durante essa semana de feriados — era o “período dourado” de bilheteria.
Inspirados no termo americano “Golden Time” (horário nobre de rádio e TV), batizaram o período de Golden Week.
O nome pegou, e o resto é história — literalmente.


🎌 O Que Compõe a Golden Week

A Golden Week não é um único feriado, mas um combo poderoso de datas sagradas para os japoneses:

📅 29 de abril – Showa Day (昭和の日)
Celebra o aniversário do imperador Hirohito (Era Showa), lembrando o pós-guerra e a reconstrução.

📅 3 de maio – Dia da Constituição (憲法記念日)
Comemora a constituição pacifista do Japão, implementada em 1947.

📅 4 de maio – Dia do Verde (みどりの日)
Dedicado à natureza, à paz e aos parques floridos — literalmente, o Japão em flor. 🌸

📅 5 de maio – Dia das Crianças (こどもの日)
Os céus se enchem de koinobori — aquelas carpas coloridas que representam força, sucesso e crescimento. 🐟

Resultado: uma semana inteira de festas, viagens, templos lotados, e memes de japoneses exaustos tentando “descansar organizadamente”. 😅


🧳 Curiosidades e Fofoquices Douradas

1. A Golden Week é o “Carnaval Japonês” (sem samba, mas com ordem).
É o único período do ano em que milhões de japoneses tiram férias ao mesmo tempo. Resultado: trens bala esgotam, passagens triplicam, e até o Monte Fuji entra em fila de espera.

2. Aeroportos lotados viram piada nacional.
Há quem brinque que “sobreviver à Golden Week é mais difícil que um exame de certificação da JICA”.

3. Alguns trabalhadores fogem para o campo ou templos.
Eles buscam silêncio, longe da multidão — como um “modo zen de depuração mental”.

4. A “Golden Week inversa”.
Algumas empresas tech e estúdios de anime adiam lançamentos para evitar o caos. (Sim, o Japão pausa até seus lançamentos digitais para respeitar o feriadão!)

5. Easter Egg Bellacosa:
Dizem que em 1978, um grupo de engenheiros da Fujitsu “codou” uma Golden Week não oficial no calendário do sistema operacional interno — um bug que dava um feriado automático ao tentar agendar batch jobs entre 29/04 e 05/05. 🖥️💛


🎥 Animes Que Citam a Golden Week

🎬 Steins;Gate – a trama inicia justamente durante o período da Golden Week, quando os personagens têm tempo livre para experimentar viagens no tempo (olha o perigo).

🎬 Lucky☆Star – Konata e amigas aproveitam a Golden Week para maratonar animes e visitar templos.

🎬 Tokyo Magnitude 8.0 – a protagonista está de férias na Golden Week quando ocorre o terremoto que muda tudo.

🎬 Toradora! e K-On! – ambas têm episódios especiais ambientados nessa época, com piqueniques, carpas ao vento e muito slice of life.

🎬 Detective Conan – vários casos acontecem na Golden Week, aproveitando o fluxo de turistas e eventos pelo Japão.


💡 Dicas Bellacosa Para Sobreviver à Golden Week

🚅 Planeje com antecedência — reservar trem ou hotel na véspera é pedir pra dormir no tatame da estação.
🌸 Evite pontos turísticos famosos — explore cidades menores, templos pouco conhecidos e parques locais.
🍡 Coma de tudo — é época de feiras, doces sazonais e hanami (flores de primavera).
📸 Leve sua câmera (ou zPhone) — o Japão nessa época é um colírio visual de cores, papéis, carpas e yukatas.


💭 Bellacosa Reflexão

A Golden Week é a prova de que até o país mais disciplinado do mundo precisa de uma pausa.
É o Japão lembrando a si mesmo que tradição também é descanso, e que o trabalho só tem valor quando o espírito respira.

Como diria um velho sysprog de Kobe:

“Até o mainframe precisa de um IPL. E nós também.”

Então, se a vida estiver travada em loop, talvez esteja na hora de acionar seu GO GOLDEN interno: pausar, respirar e compilar de novo com alma nova. 🌸✨


📜 Easter Egg Final:
Reza a lenda que quem faz um pedido sob uma bandeira de carpa na Golden Week atrai bons ventos para o resto do ano.
Então, se você ver uma koinobori balançando, faça seu desejo — nunca se sabe quando o vento japonês pode soprar até o seu terminal. 🐟💨💻


quarta-feira, 21 de abril de 2021

Jimi Dini Entrou no Catálogo — O Dia em que um GDG Criou uma Geração, Sofreu ABEND e Descobriu que IDCAMS Não É Um Curandeiro de Arquivos

 

Bellacosa Mainframe e o idcams criando gdgs

☕ Um Café no Bellacosa Mainframe

Jimi Dini Entrou no Catálogo — O Dia em que um GDG Criou uma Geração, Sofreu ABEND e Descobriu que IDCAMS Não É Um Curandeiro de Arquivos

Ou: como deixar de chamar todo arquivo com G0001V00 de “backup”, entender por que (+1) pode virar confusão e descobrir que o verdadeiro rock-and-roll do batch é saber o que ficou no catálogo depois do RC=12


Prólogo — a fita cassete que se chamava ontem

Imagine Jimi Dini, uma criatura de camisa de flanela, café frio e paciência limitada para apresentações com setenta slides, entrando na sala de operações às três da manhã. No monitor, um job de fechamento acabou de cair com ABEND. O operador aponta para a tela e decreta:

— Relaxa. O arquivo está no GDG.

Jimi olha para o spool, toma um gole de café e responde:

— “No GDG” quer dizer o quê? Está criado? Catalogado? É a geração ativa? É a de ontem? Está pendurada em deferred roll-in? Ou alguém só viu um G0042V00 no volume e resolveu chamar isso de plano de recuperação?

É aqui que começa a educação sentimental do programador COBOL. GDG não é uma palavra mágica para “backup”; IDCAMS não é uma ambulância que ressuscita dado errado; e o catálogo não é um detalhe administrativo que alguém do storage resolve quando o seu JCL ficou feio. Os três formam uma parte muito importante da segurança operacional do batch.

Vamos desmontar essa história sem misticismo — mas com respeito pelo momento em que um DELETE ... PURGE é digitado no ambiente errado e a sala inteira fica subitamente muito silenciosa.


1. GDG: uma estante, não uma pasta com nome bonito

GDG significa Generation Data Group. É um grupo de datasets relacionados, mantidos em ordem de geração pelo z/OS. Pense numa coleção de edições de jornal: a base é o título da coleção; cada GDS (Generation Data Set) é uma edição física.

Base lógica:

BELLACOSA.FOLHA.RELATORIO

Gerações físicas que o sistema administra:

BELLACOSA.FOLHA.RELATORIO.G0001V00
BELLACOSA.FOLHA.RELATORIO.G0002V00
BELLACOSA.FOLHA.RELATORIO.G0003V00

O sufixo G0003V00 não é um ornamento que você inventa no teclado. Ele é formado pelo sistema: o número da geração e, quando necessário, o número de versão. A grande vantagem aparece quando o programa não precisa conhecer esse nome físico. Ele só pede a edição que precisa.

Referência no JCLTradução humana
(+1)“Vou criar a próxima edição.”
(0)“Quero a edição mais recente ativa.”
(-1)“Quero a imediatamente anterior.”
(-2)“Quero a de duas execuções atrás.”
G0042V00“Quero exatamente esta edição física.”

Para um lote diário de extratos, isto é ouro. O job de hoje cria (+1). O processo de conferência lê (0). Uma rotina de comparação lê (-1). O JCL expressa intenção, não uma data carimbada à mão numa convenção de nomes que um dia alguém vai esquecer de atualizar.

Mas atenção: GDG administra gerações, não prova que o conteúdo está certo. Se o COBOL calculou juros usando uma taxa incorreta, você não possui um backup apenas porque o arquivo se chama G0088V00. Você possui uma versão perfeitamente organizada de um erro.


2. IDCAMS: o cartório do condomínio de datasets

IDCAMS, Access Method Services, é a ferramenta que conversa com o catálogo e administra vários objetos de dados. Ele é famoso entre programadores por criar VSAM, mas chamar IDCAMS de “o programa que cria KSDS” é como chamar um cartório de “o lugar onde se reconhece firma”. Verdadeiro, mas dramaticamente incompleto.

Com IDCAMS, podemos, entre outras coisas:

  • definir e alterar bases GDG;

  • listar entradas do catálogo;

  • criar, apagar e alterar clusters VSAM;

  • copiar ou carregar dados com REPRO;

  • trabalhar com índices alternativos;

  • investigar atributos que o JCL sozinho não torna tão visíveis.

O esqueleto clássico é:

//IDCAMS   EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  comandos IDCAMS
/*

Guarde uma regra de sobrevivência: se IDCAMS voltar com condição diferente de zero, não pare no RC=8. Abra o SYSPRINT. O retorno é o alarme; as mensagens são o laudo médico. Elas costumam revelar se a base já existe, se uma geração possui retenção, se houve problema de autorização RACF ou se o catálogo localizou algo diferente do que você imaginava.

3. Criando a base: antes de nascer a primeira geração

Definir a base GDG não cria um arquivo de negócio. Cria a regra de vida das futuras gerações no catálogo.

//DEFGDG   EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  DEFINE GENERATIONDATAGROUP -
    (NAME(BELLACOSA.FOLHA.RELATORIO) -
     LIMIT(7) -
     NOEMPTY -
     SCRATCH -
     NOPURGE)
/*

Também é válido escrever DEFINE GDG. Eu, porém, gosto de começar com GENERATIONDATAGROUP: evita que o jovem padawan imagine que está definindo um dataset sequencial. Está definindo a base, a estante e suas regras.

LIMIT(7): quantas edições cabem na estante?

LIMIT determina o número de gerações ativas. Para um job diário, LIMIT(7) pode representar uma semana. Para fechamento mensal, LIMIT(13) costuma cobrir doze meses e o atual. Para uma interface cuja correção pode levar noventa dias, talvez sete seja uma receita para uma conversa desagradável com auditoria.

O limite não deve nascer do folclore — “sempre fizemos 30” —, mas de perguntas concretas: por quantos dias pode ocorrer reprocessamento? Há retenção legal? Quem recupera um arquivo se o parceiro rejeitar a carga depois de duas semanas? Há espaço para isso? Em GDG clássico, o limite pode chegar a 255; um GDG estendido pode suportar até 999, sujeito à política do ambiente.

NOEMPTY: retire o mais antigo, não a banda inteira

Com NOEMPTY, quando chega uma nova geração acima do limite, apenas a mais velha sofre roll-off — deixa de fazer parte da base. É o comportamento normal em processamento contínuo.

Com LIMIT(3), ao criar a quarta geração:

antes: G0001, G0002, G0003
depois: G0002, G0003, G0004

EMPTY é outra conversa: quando o limite estoura, todas as gerações existentes saem da base. Há usos específicos para ciclos fechados, mas para relatório diário isso equivale a contratar Jimi Dini para organizar os arquivos e entregar-lhe um lança-chamas. Use NOEMPTY como padrão mental até que alguém explique, por escrito, por que EMPTY é necessário.

SCRATCH, NOSCRATCH, PURGE e NOPURGE: o que acontece quando a geração cai da estante?

Quando uma geração sofre roll-off, ela pode simplesmente deixar a base ou também ser removida do armazenamento:

  • SCRATCH: remove o dataset físico conforme o processamento aplicável;

  • NOSCRATCH: não o apaga automaticamente; ele pode continuar existindo e, no cenário SMS, ficar recatalogado fora da base como rolled off;

  • NOPURGE: respeita retenção/data de expiração;

  • PURGE: pode ultrapassar essa barreira de retenção.

Para operação comum, NOEMPTY, SCRATCH e NOPURGE são uma combinação honesta: remove somente a geração mais velha, libera espaço e não atropela proteção de retenção. Mas ela exige que seu LIMIT seja correto. Se a empresa precisa manter sessenta dias, LIMIT(7) com SCRATCH não é automação; é descarte programado.

4. O COBOL encontra o JCL: quem faz o quê?

O COBOL não deveria carregar a preocupação com o nome absoluto da geração. Ele abre um DDNAME. O JCL decide o dataset. O catálogo resolve a geração. Esta separação é uma das pequenas elegâncias do mainframe.

JCL que cria uma geração:

//GERAEXTR EXEC PGM=PGMEXTR
//STEPLIB  DD DSN=BELLACOSA.LOADLIB,DISP=SHR
//SYSOUT   DD SYSOUT=*
//EXTRATO  DD DSN=BELLACOSA.BATCH.EXTRATO(+1),
//            DISP=(NEW,CATLG,DELETE),
//            SPACE=(CYL,(20,10),RLSE),
//            DCB=(RECFM=FB,LRECL=200,BLKSIZE=0)

No programa:

SELECT ARQ-EXTRATO ASSIGN TO EXTRATO
       ORGANIZATION IS SEQUENTIAL
       FILE STATUS IS WS-FS-EXTRATO.

O programa escreve em EXTRATO. Não precisa saber se virou G0042V00. E isto dá liberdade para a equipe ajustar as regras de infraestrutura sem reescrever lógica de negócio.

Na execução seguinte, o mais novo pode ser lido assim:

//ENTRADA DD DSN=BELLACOSA.BATCH.EXTRATO(0),DISP=SHR

E a comparação com o anterior:

//HOJE    DD DSN=BELLACOSA.BATCH.EXTRATO(0),DISP=SHR
//ONTEM   DD DSN=BELLACOSA.BATCH.EXTRATO(-1),DISP=SHR

Esse é um ponto em que a vida do iniciante melhora: (+1) é para criar; (0) é a geração ativa mais recente; (-1) é a anterior. Não tente tratar (+1) como “o arquivo de hoje para leitura em qualquer etapa paralela”. O momento do catalogamento e o fluxo do job importam.

5. A cena do crime: job caiu ao criar (+1)

Agora chegamos à pergunta que separa quem decorou sintaxe de quem começa a entender operação.

O job aloca:

BELLACOSA.BATCH.EXTRATO(+1)

O z/OS reserva o nome físico, o programa começa a escrever e então acontece um ABEND: um S0C7, falta de espaço, falha de I/O, queda de subsistema ou aquela rotina antiga que decide que o valor HIGH-VALUES é uma proposta de carreira.

Pode sobrar uma geração física criada, por exemplo G0042V00, sem que ela tenha sido incluída como geração ativa na base. Esse é um estado conhecido como deferred roll-in. Na prática, o arquivo pode estar no DASD, mas (0) ainda aponta para a geração anterior.

O primeiro impulso de alguém é executar de novo. Às vezes funciona. Às vezes transforma um incidente simples numa investigação arqueológica.

Primeiro, investigue:

//LISTGDG  EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  LISTCAT ENT(BELLACOSA.BATCH.EXTRATO) ALL
  LISTCAT LVL(BELLACOSA.BATCH.EXTRATO) ALL
/*

Depois, leia o spool: JESMSGLG, JESJCL, SYSPRINT e os SYSOUTs do programa. Você quer saber: a geração existe? O conteúdo foi fechado corretamente? O job morreu antes ou depois de gravar? A geração deveria sobreviver? Há outro job dependente em execução?

Se a GDS estiver íntegra e for realmente a geração que deve entrar na base, IDCAMS oferece a correção de catálogo:

//ROLLIN   EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  ALTER BELLACOSA.BATCH.EXTRATO.G0042V00 ROLLIN
/*

O ROLLIN torna a geração ativa no GDG. É a ferramenta certa para a pergunta certa: “a geração existe e está boa, mas não foi associada à base”. Não a use como ritual automático após todo ABEND. Se o programa morreu depois de gravar metade do arquivo, colocar essa geração no GDG é apenas catalogar oficialmente um problema.

6. Reexecutar, corrigir ou recuperar? Três verbos, três decisões

Jimi Dini escreveria isto na parede da sala de controle: não conserte catálogo antes de decidir se o dado merece ser preservado.

Caso A — o conteúdo está correto, mas a geração não entrou

Valide volume, tamanho, quantidade de registros, totais de controle e sinal de término da aplicação. Se tudo estiver íntegro, ALTER ... ROLLIN pode ser a escolha adequada.

Caso B — o conteúdo está errado

Não “edite” a geração em silêncio para fingir que nada ocorreu. Corrija a causa, gere uma nova (+1) e documente o reprocessamento. A beleza do GDG é justamente preservar a sequência. Uma geração nova, correta e auditável costuma ser muito mais defensável que uma cirurgia clandestina na geração anterior.

Caso C — a geração está incompleta ou descartável

Depois de confirmação operacional, a geração física pode precisar ser excluída e o job reexecutado de maneira controlada. Isto não deve ser decidido pelo programador isolado em produção: há scheduler, dependências, retenção, RACF e possíveis consumidores do arquivo.

O vilão frequente é o segundo job disparado antes que o primeiro tenha sido tratado. Em GDS SMS no DASD, o mecanismo de GDS reclaim pode reutilizar uma geração pendente quando outro job tenta criar o mesmo (+1). Isso pode sobrescrever conteúdo anterior. Portanto, interrompa dependentes, entenda o estado e só então rerode.

7. ALTER, LISTCAT, DELETE: ferramentas, não martelos

LISTCAT é sua lanterna:

LISTCAT ENT(BELLACOSA.BATCH.EXTRATO) ALL

Ele permite enxergar atributos da base, limite e gerações. Use antes de tomar decisão destrutiva.

ALTER ajusta a política:

ALTER BELLACOSA.BATCH.EXTRATO LIMIT(45)

Isso aumenta a capacidade futura de retenção. Não traz de volta dados que já sofreram scratch. Também vale lembrar: reduzir limite pode provocar roll-off das gerações mais antigas. Não trate um ALTER LIMIT como ajuste cosmético.

DELETE faz exatamente o que o nome promete:

DELETE BELLACOSA.BATCH.EXTRATO.G0042V00

apaga uma geração específica; enquanto:

DELETE BELLACOSA.BATCH.EXTRATO GDG

atinge a base GDG. Isso é reconstrução, não manutenção corriqueira. Antes de qualquer DELETE, confirme ambiente, HLQ, entrada de catálogo, volumes e autorização. O personagem que diz “é só um GDG de teste” merece ao menos uma segunda verificação — porque o ambiente de teste costuma ter um nome suspeitosamente parecido com produção numa sexta-feira.

8. VERIFY não é varinha mágica

Outro equívoco comum: ouvir que IDCAMS possui VERIFY e concluir que ele corrige qualquer GDG. Não. VERIFY está ligado à verificação de consistência de estruturas VSAM e catálogo em cenários próprios. Ele não confere se a regra de cálculo do seu COBOL estava correta; não repõe registros faltantes num arquivo sequencial; não transforma uma GDS truncada em extrato válido.

Para GDG, pense assim:

SintomaAção inicial correta
Arquivo lógico aponta para a geração erradaLISTCAT, avaliar estado e ROLLIN se aplicável
Geração não existeInvestigar job, retenção, scratch, backup e catálogo
Dados têm erro de negócioCorrigir programa/parâmetro e reprocessar para nova geração
Retenção está pequenaALTER LIMIT, com avaliação de espaço e auditoria
Estrutura VSAM está inconsistenteAcionar procedimento VSAM/storage; pode envolver VERIFY
Catálogo parece corrompidoEscalar ao storage/system programmer; não recriar base no improviso

O IDCAMS é excelente, mas não substitui diagnóstico. Ele administra registros de catálogo; seu processo operacional decide o que é dado confiável.

9. Passo a passo do jovem padawan antes de mexer num GDG

Quando um job com GDG falhar, siga este roteiro:

  1. Pare o reflexo de rerodar. Veja se existem dependentes e evite duas tentativas criando o mesmo (+1).

  2. Leia o ABEND e o spool. Descubra a causa, não só o código final.

  3. Liste a base. Use LISTCAT ENT(nome-da-base) ALL.

  4. Identifique a geração física. Ela existe? Está ativa, rolled off ou pendente?

  5. Valide o conteúdo. Totais, contagem, trailer, retorno da aplicação, volume e integridade esperada.

  6. Escolha conscientemente. ROLLIN se a geração boa não entrou; novo (+1) se deve reprocessar; descarte controlado se está incompleta.

  7. Registre a decisão. Ticket, evidência de totals e horário da intervenção valem ouro na auditoria.

  8. Libere a cadeia somente após a consistência. O próximo consumidor não deve descobrir o problema por acidente.

10. Curiosidades para contar no café — sem quebrar produção

Uma GDG pode ser muito mais antiga que boa parte do código Java que hoje a consome. E ainda assim ela resolve um problema moderno: versionamento de dados em lote. A diferença é que, no z/OS, esse versionamento está acoplado a catálogo, retenção, JCL, segurança e operação de grandes volumes — não a uma pasta chamada backup_final_agora_vai_3.

Outra curiosidade: o sufixo absoluto existe para quando uma referência precisa ser imutável. Usar (0) é ótimo para “a mais recente”; usar G0042V00 é apropriado quando uma auditoria, reconciliação ou reexecução exige provar que foi aquela geração, e não a que veio depois.

Por fim, GDG não elimina backup, disaster recovery, retenção corporativa ou cópia para fita/cloud. Ele ajuda a manter versões operacionais de datasets. Backup protege contra outra classe de problemas: perda de volume, desastre, corrupção ampla, retenção longa e erros que só foram percebidos quando todas as gerações úteis já saíram da estante.

Epílogo — o som que fica depois do ABEND

No fim da madrugada, Jimi Dini fecha o SYSPRINT, confere o LISTCAT e deixa uma frase para o programador COBOL iniciante:

— O mainframe não é antigo; ele só não confia em improviso.

GDG oferece uma cronologia clara. IDCAMS administra a cronologia no catálogo. JCL declara como cada etapa usa essa cronologia. COBOL processa os registros. Quando algo falha, a resposta madura não é “reroda e vê”. É descobrir o que foi alocado, o que foi catalogado, o que está íntegro e qual ação preserva tanto o negócio quanto a rastreabilidade.

Quando você entende isso, (+1) deixa de ser uma sequência estranha entre parênteses. Ele se torna uma promessa operacional: “esta é a próxima versão do dado; trate-a com o respeito que ela terá quando alguém precisar explicar seu conteúdo daqui a três meses.




segunda-feira, 19 de abril de 2021

ABEND sem Mistérios — Parte II

 

Bellacosa Mainframe abend sem misterios parte II

☕ Um Café no Bellacosa Mainframe

ABEND sem Mistérios — Parte II

Como um Programador Padawan Aprende a Investigar Dumps, Mensagens e Descobrir a Verdadeira Causa de um ABEND

"O ABEND nunca é o verdadeiro problema. Ele é apenas o último grito do sistema antes de interromper a execução."


Introdução

No primeiro artigo vimos o que é um ABEND, como ele nasce e conhecemos os principais códigos encontrados no dia a dia de um programador COBOL.

Mas existe uma pergunta que diferencia um programador iniciante de um profissional experiente.

Não é:

"Qual foi o ABEND?"

A pergunta correta é:

"Por que ele aconteceu?"

É aqui que começa o verdadeiro trabalho.

O ABEND é apenas o sintoma.

A causa quase sempre aconteceu vários segundos — ou milhares de instruções — antes.

Aprender a investigar um ABEND é muito parecido com o trabalho de um perito criminal.

O investigador nunca chega ao local perguntando:

"Quem é o culpado?"

Ele primeiro coleta evidências.

No IBM Z acontece exatamente a mesma coisa.


O que realmente acontece quando um programa falha?

Imagine uma execução simples.

JES2

↓

Initiator

↓

Language Environment

↓

Programa COBOL

↓

OPEN CLIENTES

↓

READ

↓

PROCESSA

↓

WRITE

↓

END

Agora imagine que durante um cálculo acontece um S0C7.

O sistema imediatamente interrompe tudo.

Mas antes de encerrar, ele registra uma enorme quantidade de informações.

É exatamente isso que usamos na investigação.


O IBM Z deixa pistas

Quando ocorre um ABEND, normalmente encontramos diversas evidências.

Entre elas:

  • JESMSGLG

  • JESYSMSG

  • SYSOUT

  • SYSPRINT

  • SYSUDUMP

  • SYSMDUMP

  • CEEDUMP

  • CEEMSG

  • mensagens IEC

  • mensagens IEF

  • mensagens DFH (CICS)

Cada uma responde perguntas diferentes.


O primeiro erro do iniciante

O Padawan normalmente faz isto:

ABEND=S0C7

↓

Corrige uma variável

↓

Executa novamente

O profissional faz diferente.

ABEND

↓

Mensagens

↓

JCL

↓

Dump

↓

Código

↓

Dados

↓

Correção

A diferença parece pequena.

Mas economiza horas de trabalho.


Entendendo o JESMSGLG

O JESMSGLG é praticamente um diário da execução.

Ele informa:

  • início do JOB;

  • alocação dos datasets;

  • criação de arquivos temporários;

  • início de cada STEP;

  • mensagens do sistema;

  • encerramento.

Muitas vezes a causa aparece ali mesmo.

Exemplo:

IEC141I 013-20

Nesse momento você já sabe que provavelmente existe um problema na abertura de arquivos.

Nem precisa olhar o COBOL ainda.


O papel do JESYSMSG

Enquanto o JESMSGLG conta a história,

o JESYSMSG mostra as mensagens produzidas pelo sistema operacional.

Ali aparecem mensagens como:

IEF142I

IEC141I

IGD

IDC

CSV

IEA

ICH

Cada prefixo pertence a um componente do z/OS.

Com o tempo, o programador começa a reconhecê-los automaticamente.


O que é o SYSOUT?

Toda instrução

DISPLAY

vai parar no SYSOUT.

Muitos bancos utilizam DISPLAY apenas durante testes.

Mas programas bem escritos produzem mensagens extremamente úteis.

Exemplo:

Cliente

123456

Saldo

250.00

Calculando Juros...

Se logo depois aparece um S0C7...

Já sabemos exatamente onde procurar.


DISPLAY é seu amigo

Nunca tenha medo de utilizar DISPLAY durante o desenvolvimento.

Exemplo:

DISPLAY 'ENTROU NO PARAGRAFO A'

DISPLAY WS-CLIENTE

DISPLAY WS-SALDO

DISPLAY SQLCODE

Depois de homologado...

Eles podem ser removidos ou controlados por parâmetros.


O famoso CEEDUMP

Se existe um documento que todo programador COBOL deveria aprender,

é o CEEDUMP.

Ele é produzido pelo Language Environment.

Nele encontramos:

  • última instrução executada;

  • registradores;

  • call stack;

  • variáveis;

  • condições;

  • traceback;

  • offsets;

  • informações do compilador.

É praticamente uma fotografia completa do programa no momento da falha.


O Call Stack

Imagine o programa abaixo.

PROGRAMA A

↓

CALL B

↓

CALL C

↓

CALL D

↓

S0C4

O CEEDUMP mostra exatamente esse caminho.

A

↓

B

↓

C

↓

D

Agora sabemos onde investigar.


O Traceback

O traceback mostra:

Programa

↓

Seção

↓

Parágrafo

↓

Offset

Por exemplo:

CLIENTE

↓

CALCULA-JUROS

↓

0000A8

Esse offset permite localizar a instrução responsável.


O que são Offsets?

Um executável não trabalha com número de linhas.

Ele trabalha com endereços.

Imagine:

Linha 100

↓

Offset 00A2

O compilador gera um mapa relacionando:

offset

linha COBOL

Ferramentas como Fault Analyzer, Abend-AID e Debug Tool fazem essa conversão automaticamente.


Registradores

Durante a execução o processador utiliza registradores.

No IBM Z temos registradores gerais.

Quando ocorre um dump, normalmente vemos algo parecido com:

R0

R1

R2

...

R15

Eles informam:

  • parâmetros;

  • endereços;

  • retorno de CALL;

  • ponteiros;

  • áreas de memória.

Para quem trabalha com LE e Assembler, esses registradores são ouro puro.


O famoso PSW

Outra informação importante é o:

Program Status Word

Ele informa:

  • endereço atual;

  • estado do processador;

  • modo de execução;

  • condição.

Quando alguém diz:

"Veja o PSW"

Está dizendo:

"Descubra exatamente onde a CPU estava quando tudo parou."


Dumps

Existem vários tipos.

SYSUDUMP

Mais compacto.

Muito utilizado para aplicações.


SYSMDUMP

Muito mais completo.

Contém grandes regiões de memória.

É excelente para análise profunda.


CEEDUMP

Voltado ao Language Environment.

É o favorito dos desenvolvedores COBOL.


Como investigar um S0C7

Imagine:

COMPUTE

TOTAL = VALOR * TAXA

Resultado:

S0C7

Primeira pergunta:

VALOR

é numérico?

Segunda:

TAXA

é válida?

Terceira:

Quem carregou essas variáveis?

A origem do erro pode estar dezenas de linhas antes.


Como investigar um S0C4

Perguntas clássicas:

Existe índice fora do OCCURS?

Existe tabela sem inicialização?

Existe ponteiro inválido?

CALL recebeu parâmetros errados?

LINKAGE está correta?

O programa acessou memória liberada?


Como investigar um S013

Antes de abrir o COBOL...

Verifique:

DDNAME

↓

RECFM

↓

LRECL

↓

BLKSIZE

↓

DISP

↓

Dataset correto

↓

Catalogado?

↓

Existe?

Muitas vezes o COBOL está perfeito.

O erro está no JCL.


A importância do JCL

Programadores iniciantes tendem a pensar:

"Meu trabalho termina no COBOL."

Na prática,

bons programadores COBOL conhecem muito bem:

  • JCL;

  • IDCAMS;

  • SORT;

  • IEBGENER;

  • DFSORT;

  • GDGs;

  • VSAM;

  • Catalog.

Quanto melhor você entender o ambiente,

menos ABENDs terá.


O papel do CICS

Quando aparece:

ASRA

O erro raramente começa no CICS.

O CICS apenas detectou que algo deu errado dentro do programa.

A investigação continua:

ASRA

↓

DFH Messages

↓

Trace

↓

Dump

↓

Programa

Ferramentas utilizadas pelos grandes bancos

Pouquíssimos profissionais analisam dumps manualmente o tempo todo.

Grandes instituições normalmente utilizam ferramentas como:

  • IBM Fault Analyzer

  • IBM Debug Tool

  • IBM Application Performance Analyzer

  • IBM File Manager

  • Abend-AID (BMC)

  • Xpediter

  • IBM IPCS

  • IBM Developer for z/OS (IDz)

Essas ferramentas aceleram a análise ao transformar endereços, offsets e registradores em informações mais fáceis de interpretar.

Mesmo assim, elas não substituem o conhecimento. Um bom analista sabe interpretar as evidências e confirmar se a ferramenta está apontando a causa correta.


Um roteiro de investigação profissional

Sempre que receber um chamado de produção, siga uma sequência lógica:

Receber o chamado

↓

Anotar o ABEND

↓

Identificar STEP

↓

Consultar JESMSGLG

↓

Consultar JESYSMSG

↓

Verificar SYSOUT

↓

Ler CEEDUMP

↓

Localizar o traceback

↓

Encontrar o offset

↓

Relacionar com o código COBOL

↓

Analisar os dados de entrada

↓

Reproduzir o erro

↓

Corrigir

↓

Testar novamente

Essa abordagem evita "chutes" e torna a investigação repetível.


Os erros mais comuns dos Padawans

  • Corrigir o código sem ler as mensagens do sistema.

  • Ignorar o JCL e assumir que o COBOL está errado.

  • Não validar dados antes de cálculos e conversões.

  • Usar índices ou subscritos fora dos limites de tabelas.

  • Não conferir SQLCODE, FILE STATUS ou RESP/RESP2 após operações críticas.

  • Descartar o CEEDUMP sem analisá-lo.

  • Não reproduzir o problema em ambiente de testes antes de aplicar uma correção.


O perfil de um excelente investigador de ABEND

Os profissionais mais respeitados em grandes bancos raramente são aqueles que escrevem mais código.

São aqueles que conseguem responder rapidamente perguntas como:

  • O erro veio do programa ou do ambiente?

  • O problema é de dados, lógica ou infraestrutura?

  • O ABEND é a causa ou apenas a consequência?

  • Qual foi a primeira mensagem relevante?

  • É possível reproduzir o problema?

Eles tratam cada incidente como uma investigação técnica, baseada em evidências.


Conclusão

Dominar ABENDs não significa decorar centenas de códigos. Significa desenvolver uma forma estruturada de pensar.

O IBM Z sempre deixa pistas: mensagens, dumps, registradores, traceback, offsets e logs. Quem aprende a reuni-las deixa de agir por tentativa e erro e passa a trabalhar como um verdadeiro engenheiro de software.

Todo programador passa pelo primeiro S0C7, pelo primeiro S0C4 ou pelo primeiro ASRA. A diferença está em como reage. O iniciante vê apenas um erro. O profissional enxerga uma oportunidade de compreender melhor o funcionamento interno do sistema.

No fim, os melhores desenvolvedores COBOL não são aqueles que nunca encontram ABENDs. São aqueles que conseguem transformá-los em conhecimento, experiência e sistemas cada vez mais confiáveis.

domingo, 18 de abril de 2021

☕🩸 “KAIFUKU JUTSUSHI NO YARINAOSHI” — O HEALER QUE DESCOBRIU QUE O SISTEMA ESTAVA CORROMPIDO… E DECIDIU REESCREVER O BANCO DE DADOS DO MUNDO 💀🖥️🔥

 

Bellacosa Mainframe e o anime sujo Kaifuku Jutsushi

☕🩸 “KAIFUKU JUTSUSHI NO YARINAOSHI” — O HEALER QUE DESCOBRIU QUE O SISTEMA ESTAVA CORROMPIDO… E DECIDIU REESCREVER O BANCO DE DADOS DO MUNDO 💀🖥️🔥

O anime mais polêmico da fantasia moderna

Kaifuku Jutsushi no Yarinaoshi (Redo of Healer) não é um anime comum.
Ele não tenta ser confortável.
Não tenta ser “bonzinho”.
E definitivamente não tenta agradar todo mundo.

A obra pega a fórmula clássica do RPG fantasy…

  • herói

  • party

  • magia

  • reinos

  • aventuras

…e joga tudo dentro de um datacenter em colapso moral.

O resultado é um anime extremamente controverso, brutal, psicológico e pesado.


🖥️ O healer que virou administrador do caos

O protagonista, Keyaru, começa como um simples healer.

Mas existe um detalhe terrível:

A habilidade de cura dele não apenas recupera corpos…

Ela também permite:

  • copiar habilidades

  • absorver experiências

  • acessar memórias

  • alterar estruturas físicas

  • reescrever pessoas

Na prática?

O cara não é um healer.

Ele é praticamente um:

  • root user humano

  • debugger biológico

  • editor vivo de memória RAM humana


☠️ O trauma que corrompeu o sistema

O anime rapidamente mostra algo importante:

O mundo usa healers como ferramentas descartáveis.

Keyaru sofre:

  • abuso

  • tortura

  • manipulação

  • lavagem psicológica

  • exploração constante

Até que ele faz algo absurdo:

Ele volta no tempo.

E decide executar o equivalente fantasy de:

RESTORE DATABASE BEFORE DISASTER

Só que agora…

ele lembra de tudo.


🔥 O conceito central: “reprocessar o sistema”

A ideia do anime é quase um rollback de produção.

Imagine:

  • um ambiente inteiro comprometido

  • usuários maliciosos no poder

  • corrupção total

  • privilégios abusivos

  • exploração institucionalizada

Então o administrador resolve:

  • voltar backup

  • alterar usuários

  • recriar permissões

  • manipular eventos

  • corrigir “falhas” usando métodos extremos

Esse é o núcleo de Redo of Healer.


🧠 O anime trabalha com desconforto psicológico

E aqui está o ponto importante:

Esse anime NÃO é recomendado para qualquer público.

Ele contém:

  • violência extrema

  • abuso psicológico

  • conteúdo sexual pesado

  • vingança explícita

  • cenas perturbadoras

Muita gente odeia a obra justamente porque ela atravessa limites que animes normalmente evitam.

Outros enxergam como uma crítica grotesca sobre:

  • abuso de poder

  • corrupção

  • trauma

  • vingança

  • degradação humana


⚔️ Keyaru é herói… vilão… ou malware?

Essa é a pergunta que divide a internet até hoje.

Porque Keyaru não segue a lógica tradicional do protagonista shounen.

Ele não busca:

  • justiça

  • amizade

  • redenção

  • heroísmo clássico

Ele busca:

controle absoluto.

E isso transforma o anime quase num estudo sobre corrupção emocional.

O personagem vira algo parecido com:

  • um sysprog traumatizado

  • com autoridade irrestrita

  • sem auditoria

  • sem RACF

  • sem compliance

  • sem limite operacional

Resultado?

O sistema inteiro entra em estado crítico.


💾 O lado técnico escondido na narrativa

Curiosamente, o anime trabalha conceitos que lembram muito arquitetura de sistemas:

Conceito FantasyEquivalente Mainframe
Cura/ReescritaUpdate em memória
Volta no tempoRestore de backup
Alterar pessoasManipulação de registros
Copiar habilidadesClone de ambiente
Vingança planejadaJob batch programado
Controle mentalOverride de segurança
Trauma acumuladoCorrupção de sistema

🎭 Por que o anime ficou tão famoso?

Porque ele virou uma bomba cultural.

Uns chamam de:

  • lixo

  • choque gratuito

  • edgy exagerado

Outros dizem que é:

  • ousado

  • perturbador

  • diferente

  • uma fantasia de vingança sem filtros

Mas uma coisa é impossível negar:

ninguém assiste e sai indiferente.


☕ Veredito Bellacosa Mainframe

Kaifuku Jutsushi no Yarinaoshi é como acessar um ambiente de produção completamente sem governança.

Você sabe que aquilo vai dar problema.

Mas não consegue parar de observar o desastre acontecendo.

É um anime pesado, controverso e desconfortável…

mas também extremamente eficiente em mostrar:

  • como trauma corrompe pessoas

  • como poder absoluto destrói limites

  • e como um sistema sem ética inevitavelmente entra em colapso.

Porque no fim…

o healer não queria salvar o mundo.

Ele queria reescrever tudo. 🔥💀


sábado, 17 de abril de 2021

💫 「As MÃOS nos Animes」— A Linguagem Silenciosa dos Heróis e Demônios

 



💫 「As MÃOS nos Animes」— A Linguagem Silenciosa dos Heróis e Demônios
📓 Por El Jefe Midnight Lunch — edição Bellacosa Mainframe para mentes que pensam com os dedos e sentem com o código do coração.


Existem palavras que se perdem no vento, mas gestos que atravessam eras.
E entre todos os gestos, a mão — simples, humana, falha — é talvez a mais poderosa ferramenta narrativa dos animes.

No Japão, o gesto da mão vai muito além do toque físico: é símbolo de respeito, emoção, promessa, redenção e destino.
É o handshake entre mundos, o contrato invisível entre criador e criatura.
E no silêncio entre dois personagens, uma mão estendida fala mais do que mil episódios.

Hoje, no compasso suave da madrugada, o blog El Jefe Midnight Lunch abre o dossiê:
👉 As MÃOS nos Animes — a arte de tocar o invisível.


🤝 1. O toque de Naruto e Sasuke — A mão que encerra o ciclo do ódio

No auge da batalha final, dois meninos que começaram como rivais terminam de mãos dadas, ensanguentadas, mutiladas.
Um gesto simples, mas que simboliza o que nenhuma kunai conseguiu: a reconciliação.
Aquela mão que outrora lançou jutsus da destruição, agora sela a paz — uma assinatura de carne e alma.
💡 Curiosidade: Kishimoto desenhou aquela cena inspirado numa fotografia da Segunda Guerra, em que dois soldados inimigos se ajudam após a explosão de uma granada.


🫱 2. O aceno de Tanjiro — A mão que agradece ao destino

Em Kimetsu no Yaiba, Tanjiro não luta apenas com espada, mas com gentileza.
Seu aceno — sempre calmo, respeitoso, quase espiritual — é um lembrete de que até o inimigo merece compaixão.
Quando ele segura a mão de um demônio moribundo, o faz não por fraqueza, mas por entender que toda dor um dia foi humana.
💡 Fofoquice: no Japão, o gesto de “segurar a mão do adversário” é visto como yūjō no katachi — “a forma visível da empatia”.


✋ 3. O aperto de mãos de Luffy e Shanks — A promessa que fundou uma era

O gesto mais icônico de One Piece não foi um soco, mas um aperto de mãos e um chapéu entregue.
Shanks passa seu sonho adiante, e Luffy aceita com os olhos brilhando.
Ali, duas gerações de aventureiros selam um pacto invisível:

“Eu te dou o símbolo da liberdade. Cuide dele até me superar.”
💡 Curiosidade técnica: O gesto é inspirado em uma tradição samurai chamada katashiro, em que um guerreiro entrega um objeto a um aprendiz como substituto de seu próprio destino.


✊ 4. O punho de Edward Elric — A mão que busca redenção

Um braço de metal, uma alma ferida.
Em Fullmetal Alchemist, a mão de Edward é mais que prótese: é culpa materializada e esperança renascida.
Cada vez que ele toca alguém, o gesto vibra entre o perdão e o sacrifício.
💡 Easter-egg Bellacosa: O automail de Ed é o mainframe da redenção — hardware frio rodando sentimentos quentes.


🫶 5. As mãos unidas de Shinji e Kaworu — A conexão que não cabe na lógica

Em Neon Genesis Evangelion, a famosa cena do “toque” é a anti-ação:
um momento de silêncio em que duas almas quebradas se reconhecem.
Freud chamaria de “ato falho do coração”.
Eu chamo de o bug mais humano do sistema divino.
💡 Curiosidade: Hideaki Anno declarou que a cena nasceu de uma lembrança pessoal de isolamento — “era o toque que eu desejava ter recebido”.


🖐️ 6. A mão aberta de Goku — A saudação universal do guerreiro

Goku é o Maou da pureza.
A mão dele está sempre estendida: pra lutar, cumprimentar ou ajudar.
É o hello world do espírito japonês — simples, direto, sincero.
💡 Fofoquice: Na Toei Animation, há um manual interno chamado “Goku Smile Bible”, com regras para desenhar o gesto e a expressão “de confiança e amizade global”.


🫳 7. As mãos dançantes de Gojo Satoru — O toque proibido entre realidades

Gojo não toca — controla o toque.
Em Jujutsu Kaisen, a distância infinita entre suas mãos e o alvo é o próprio paradoxo da intimidade moderna:
tão perto que quase toca, tão longe que jamais encosta.
💡 Curiosidade filosófica: o poder “Limitless” foi inspirado na metáfora zen da flecha de Zenão, que nunca chega ao alvo — um toque eterno que nunca acontece.


🖤 8. As mãos em prece de Itachi Uchiha — O gesto que pede perdão ao próprio destino

A mão que mata o irmão é a mesma que o abençoa.
Itachi é o monge assassino, o guerreiro que reza pelo próprio erro.
Cada selo de mão em seus jutsus é uma confissão silenciosa.
💡 Easter-egg: os selos manuais de Itachi seguem a sequência de Kuji-in, gestos de meditação ninja do budismo esotérico japonês.


🪶 9. As mãos entre Chihiro e Haku — A promessa entre mundos

Em A Viagem de Chihiro, quando as mãos de Chihiro e Haku se tocam, o tempo para.
É o toque que devolve o nome, que reconecta a alma ao corpo.
💡 Curiosidade: Miyazaki descreveu essa cena como “a ponte mais pura entre inocência e memória”.


🌙 10. As mãos cruzadas de Light e L — O aperto que encerra o xadrez da mente

Em Death Note, o aperto de mãos entre Light e L é um microcosmo da série:
dois gênios, um segredo, e a tensão de quem sabe que o toque é tanto cumprimento quanto sentença.
💡 Curiosidade obscura: o storyboard original previa que o toque acendesse a música “Ave Maria” em piano — descartada por ser “excessivamente simbólica”.


🪷 Epílogo do Capitão Bellacosa

As mãos — sejam humanas, metálicas, demoníacas ou espirituais — são o teclado da emoção.
Com elas, os heróis digitam a própria história.
O Japão as trata com reverência: mão que constrói, salva, promete, destrói e recomeça.

E nós, que vivemos teclando no escuro, também deixamos nossas digitais invisíveis nas coisas e nas pessoas.
No fundo, cada clique, cada gesto, é uma saudação silenciosa ao outro lado da tela.

Então da próxima vez que estender a mão, lembre-se:

Pode não haver música, mas o toque certo é sempre um episódio inesquecível.


☕💻
El Jefe Midnight Lunch
"Porque toda mão tem uma história — e toda história, uma assinatura invisível."


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