Translate

segunda-feira, 4 de fevereiro de 2013

COBOL no Mainframe Programa → O Esqueleto: Divisões → Seções → Parágrafos → Frases → Declarações

 


🟦 COBOL no Mainframe e seu esqueleto

Programa → Divisões → Seções → Parágrafos → Frases → Declarações

(ou: como o código mais longevo do planeta ainda governa o mundo)

“COBOL não é velho. Velho é o problema que ele resolve.”
— Bellacosa, olhando um extrato bancário



🧬 Origem: antes do Java, antes do C, antes do hype

COBOL nasceu em 1959, patrocinado pelo Departamento de Defesa dos EUA, com uma ideia revolucionária para a época:

👉 programas legíveis por humanos de negócios, não apenas por matemáticos.

Enquanto outras linguagens focavam em ciência e engenharia, o COBOL foi criado para:

  • Folha de pagamento

  • Contabilidade

  • Bancos

  • Seguros

  • Governo

  • Tudo que não pode parar

E aqui vai o primeiro easter-egg:

🥚 Mais de 70% das transações financeiras globais ainda passam por COBOL.
Se ele cair, o mundo sente.


🧱 O mantra sagrado do COBOL

Todo programa COBOL clássico segue esta hierarquia:

Programa └── Divisões └── Seções └── Parágrafos └── Frases └── Declarações

Isso não é só estilo.
É contrato social, organização mental e engenharia de sobrevivência.

Vamos por partes, Padawan.


🧠 1️⃣ Programa: o universo

O programa COBOL é a unidade máxima:

  • Compilável

  • Executável

  • Chamável por outro programa

  • Controlado por JCL

  • Versionado (ou não… dependendo do museu 😅)

Exemplo:

IDENTIFICATION DIVISION. PROGRAM-ID. ELJEFE01.

Se não tem PROGRAM-ID, não é programa.
É só tristeza.


🧩 2️⃣ Divisões: os grandes blocos da mente COBOL

O COBOL clássico tem 4 divisões principais:

🔹 IDENTIFICATION DIVISION

Quem você é:

  • Nome do programa

  • Autor

  • Data

  • Comentários históricos (às vezes fósseis)

IDENTIFICATION DIVISION. PROGRAM-ID. ELJEFE01. AUTHOR. BELLACOSA.

🥚 Easter-egg: muitos programas em produção ainda têm DATE-WRITTEN. 1987.


🔹 ENVIRONMENT DIVISION

Onde você vive:

  • Arquivos

  • Dispositivos

  • Ambiente de execução

Hoje em dia:

  • Muitas vezes vazia

  • Mas ainda respeitada por tradição


🔹 DATA DIVISION

O coração do COBOL.

Aqui você define:

  • Arquivos

  • Registros

  • Variáveis

  • Estruturas

  • Formatos

  • Tamanhos

  • Regras de negócio implícitas

DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-SALDO PIC 9(9)V99.

👉 Se você erra aqui, o programa compila… e falha em produção.


🔹 PROCEDURE DIVISION

Onde a mágica acontece.

É o fluxo lógico, a história do programa, o passo a passo do negócio.

PROCEDURE DIVISION. PERFORM CALCULA-SALDO DISPLAY WS-SALDO STOP RUN.

🧩 3️⃣ Seções: organização lógica (nem sempre usada)

As seções são agrupadores de parágrafos.

Exemplo clássico:

PROCEDURE DIVISION. MAIN-SECTION.

Hoje:

  • Alguns usam

  • Outros ignoram

  • Todos respeitam quando encontram

🥚 Easter-egg: programas antigos têm seções enormes com 5 mil linhas.


🧩 4️⃣ Parágrafos: unidades de execução

O parágrafo é:

  • Um ponto de entrada

  • Um bloco executável

  • Algo que você pode PERFORM

CALCULA-SALDO. ADD WS-CREDITO TO WS-SALDO SUBTRACT WS-DEBITO FROM WS-SALDO.

👉 Parágrafo bom:

  • Nome claro

  • Uma responsabilidade

  • Fácil de testar (na teoria 😄)


🧩 5️⃣ Frases: uma ou mais declarações terminadas por ponto

No COBOL clássico:

  • O ponto (.) encerra uma frase

  • E também pode quebrar fluxo

Exemplo:

ADD A TO B SUBTRACT C FROM B.

⚠️ Dica Bellacosa:

Ponto em excesso mata legibilidade e cria bugs invisíveis.


🧩 6️⃣ Declarações: as instruções de verdade

Aqui estão os verbos COBOL:

  • MOVE

  • ADD

  • SUBTRACT

  • MULTIPLY

  • DIVIDE

  • IF

  • EVALUATE

  • PERFORM

  • READ

  • WRITE

Exemplo:

IF WS-SALDO < 0 MOVE 'NEGATIVO' TO WS-STATUS END-IF

👉 Leia em voz alta.
Se fizer sentido, é COBOL bem escrito.


🛠️ Boas práticas Bellacosa Approved™

✔ Um parágrafo = uma responsabilidade
✔ Nomeie tudo como se fosse explicar para auditor
✔ Evite GO TO (sim, ele existe…)
✔ Centralize regras no DATA DIVISION
✔ Comente o porquê, não o como
✔ Código COBOL é lido mais do que escrito


🧠 Curiosidades que ninguém te conta

🥚 COBOL foi feito para ser lento para mudar, rápido para confiar
🥚 Programas com 40 anos rodam sem recompilar
🥚 O maior risco não é o COBOL — é ninguém entender o que ele faz
🥚 Modernizar não é reescrever, é encapsular e expor


🧘 Visão final para o Padawan

COBOL não é uma linguagem.
É uma forma de pensar sistemas críticos.

A hierarquia:

Programa → Divisões → Seções → Parágrafos → Frases → Declarações

existe para:

  • Clareza

  • Controle

  • Manutenção

  • Sobrevivência a décadas

Se você entende isso, você:

  • Lê qualquer programa

  • Não tem medo de legado

  • Está pronto para integrar com cloud, APIs, microsserviços

E lembre-se:

“Todo hype passa.
O extrato bancário continua.”

sábado, 19 de janeiro de 2013

☕🔥 ABEND S213 — O “GUARDIÃO DO DATASET” NO z/OS

 

Bellacosa Mainframe e o abend S213

☕🔥 ABEND S213 — O “GUARDIÃO DO DATASET” NO z/OS

Quando o Mainframe Diz: “VOCÊ NÃO TEM ACESSO A ISSO!”

Se você é um COBOL Junior Padawan entrando no universo z/OS… cedo ou tarde vai encontrar um dos ABENDs mais clássicos do mundo mainframe:

🚨 S213

E normalmente ele aparece assim:

IEC150I 913-38,IFG0194A,JOBNAME,STEP1,DDNAME,...
IEF450I JOBNAME STEP1 - ABEND=S213 U0000

Ou:

ABEND S213-04
ABEND S213-30
ABEND S213-38

E aí bate o desespero:

“MEU COBOL ESTÁ ERRADO?”
“O JCL ESTÁ QUEBRADO?”
“O DATASET SUMIU?”
“O JES2 ME ODEIA?”

Calma, Padawan. ☕
O S213 é um dos ABENDs MAIS DIDÁTICOS do z/OS.


🔥 O QUE É O ABEND S213?

O S213 é um:

🚨 SYSTEM ABEND

Gerado pelo próprio z/OS durante OPEN do dataset.

Traduzindo:

Seu programa, SORT, IDCAMS, COBOL ou utilitário tentou abrir um dataset…

E o sistema respondeu:

❌ “ACESSO NEGADO.”


🧠 O SIGNIFICADO REAL

O S213 normalmente envolve:

  • Falta de permissão RACF

  • Dataset protegido

  • Tentativa de acesso incompatível

  • Volume incorreto

  • DISPosition inadequado

  • Conflito de acesso

  • Dataset em uso exclusivo

  • Segurança SAF/RACF/A2/TopSecret


☕ A FILOSOFIA DO S213

O S213 NÃO significa necessariamente:

❌ “dataset não existe”

Ele significa:

“O SISTEMA IMPEDIU VOCÊ DE USAR O DATASET.”

Isso é MUITO importante.


🔥 O MOMENTO EXATO DO ABEND

Imagine:

COBOL -> OPEN INPUT CLIENTE

O COBOL chama:

OPEN

O OPEN chama:

OPEN/CLOSE/EOV

O z/OS consulta:

  • Catalog

  • VTOC

  • RACF

  • Volume

  • DISP

  • Integridade

Se algo falha:

💥 S213


🚨 OS SUBCÓDIGOS MAIS COMUNS


🔥 S213-04

Dataset não encontrado no volume especificado

Exemplo:

//ARQ DD DSN=EMPRESA.CLIENTES,
//     VOL=SER=DISK01

Mas o dataset está em:

DISK02

Resultado:

S213-04

🔥 S213-30

Problema de integridade/acesso

Muito comum em:

  • Dataset em uso

  • DISP errado

  • Acesso incompatível

Exemplo clássico:

Dois jobs tentando:

DISP=OLD

ao mesmo tempo.

O sistema protege o dataset.


🔥 S213-38

🚨 O MAIS FAMOSO

FALTA DE AUTORIZAÇÃO (RACF)

O usuário NÃO possui permissão.

Esse é o “Access Denied” do mundo z/OS.


☕ EXEMPLO CLÁSSICO COBOL JUNIOR

Você recebe:

//CLIENTE DD DSN=PROD.CLIENTES.MESTRE,
//            DISP=SHR

Seu COBOL:

OPEN INPUT CLIENTE

Resultado:

IEC150I 913-38
ABEND S213-38

O que aconteceu?

O RACF avaliou:

USER = DEVJR01
RESOURCE = PROD.CLIENTES.MESTRE
ACCESS = READ

E respondeu:

❌ ACCESS DENIED


🔥 COMO O RACF DECIDE ISSO?

O RACF consulta:

  • Perfil do dataset

  • Grupo do usuário

  • ACL

  • Permissões READ/UPDATE/CONTROL/ALTER


🧠 O QUE O JÚNIOR PRECISA APRENDER

Mainframe NÃO é PC.

No Windows:

abre arquivo

No z/OS:

posso abrir?
quem é você?
qual grupo?
qual nível?
dataset protegido?
outro job usando?
qual intenção?

O mainframe assume:

🔐 TUDO É CRÍTICO

Porque geralmente É.


🔥 COMO ANALISAR O S213 PASSO A PASSO

☕ PASSO 1 — IDENTIFIQUE O SUBCÓDIGO

Veja:

S213-38

ou:

IEC150I 913-38

O número após o hífen é o segredo.


☕ PASSO 2 — LOCALIZE O DDNAME

Exemplo:

IEC150I 913-38,IFG0194A,JOB1,STEP01,CLIENTE,...

DDNAME:

CLIENTE

Agora você sabe QUAL dataset causou o erro.


☕ PASSO 3 — VEJA O DSN NO JCL

Procure:

//CLIENTE DD DSN=...

☕ PASSO 4 — ANALISE O DISP

Exemplo problemático:

DISP=OLD

Talvez devesse ser:

DISP=SHR

☕ PASSO 5 — VERIFIQUE RACF

Pergunte:

  • Tenho READ?

  • Tenho UPDATE?

  • O dataset é PROD?

  • Está protegido?


☕ PASSO 6 — ANALISE O JESMSGLG

Ali está a VERDADE.

Muitos juniors olham apenas:

ABEND=S213

Mas o ouro está antes.

Mensagens:

IECxxx
ICH408I
IRRxxxx

contam a história completa.


🔥 O ICH408I — O “DEDO DURO” DO RACF

Quando existe falta de permissão:

ICH408I USER(USER01 ) GROUP(DEV )
NAME(VAGNER )
PROD.CLIENTES.MESTRE CL(DATASET )
INSUFFICIENT ACCESS AUTHORITY
ACCESS INTENT(READ )
ACCESS ALLOWED(NONE )

Aqui o RACF praticamente confessa tudo.


☕ COMO LER ISSO


ACCESS INTENT

O que você tentou fazer.

Exemplo:

READ
UPDATE

ACCESS ALLOWED

O que você realmente possui.

Exemplo:

NONE
READ

🔥 A PEGADINHA DO DISP=MOD

Junior clássico:

DISP=MOD

sem perceber.

O sistema entende:

“ELE QUER ESCREVER.”

Então READ não basta.

Agora precisa UPDATE.

Resultado:

S213-38

☕ O S213 E O OPEN DO COBOL

Outro detalhe importante:

O ABEND normalmente ocorre:

NO OPEN

Não no READ.

Porque o sistema valida o dataset ANTES.

Então:

DISPLAY 'ANTES OPEN'
OPEN INPUT CLIENTE
DISPLAY 'DEPOIS OPEN'

Você verá:

ANTES OPEN

E nunca verá:

DEPOIS OPEN

🔥 COMO ENTENDER O DUMP

O dump do S213 normalmente não exige análise profunda de storage como um S0C7.

O segredo está nas mensagens do sistema.


🧠 ONDE OLHAR

JESMSGLG

Mensagens do sistema.


SYSLOG

Pode conter RACF.


SDSF

  • ST

  • LOG

  • O

  • DA


IPCS (casos extremos)

Raramente necessário para S213 simples.


🔥 A ORIGEM HISTÓRICA

O “S” significa:

SYSTEM ABEND

O número 213 vem das antigas tabelas internas de erros do OS/360.

Estamos falando de uma herança dos anos:

🏛️ 1960

Sim…

Seu S213 possui DNA do OS/360.


☕ CURIOSIDADE HISTÓRICA

Nos anos 70/80:

Operadores aprendiam a reconhecer ABENDs “de ouvido”.

Quando aparecia:

213-38

já sabiam:

“RACF pegou alguém.”


🔥 EASTER EGG MAINFRAME

Muitos veteranos brincam:

“S213-38 é o firewall espiritual do z/OS.”

Porque ele aparece exatamente quando alguém tenta acessar algo proibido.


☕ DIFERENÇA ENTRE S213 E S806

Juniors confundem muito.


S213

Problema com DATASET.


S806

Programa não encontrado.


🔥 DIFERENÇA ENTRE S213 E FILE STATUS 35


FILE STATUS 35

Erro COBOL lógico.

Arquivo não encontrado.


S213

Erro SISTÊMICO do z/OS.

Muito mais baixo nível.


🧠 O QUE O PADAWAN PRECISA GUARDAR

S213 NÃO É “erro do COBOL”.

É:

🔐 z/OS protegendo integridade e segurança.


☕ CHECKLIST DE SOBREVIVÊNCIA

Quando aparecer:

S213-xx

Faça:

✅ Ver subcódigo
✅ Identificar DDNAME
✅ Conferir DSN
✅ Conferir DISP
✅ Procurar ICH408I
✅ Validar RACF
✅ Verificar volume
✅ Verificar dataset em uso
✅ Ler JESMSGLG inteiro
✅ Não entrar em pânico ☕


🔥 FRASE FINAL DO MUNDO MAINFRAME

O S0C7 humilha.
O S806 confunde.
Mas…

☕ O S213 JULGA SUA AUTORIZAÇÃO COMO UM GUARDIÃO ANTIGO DO z/OS.

sexta-feira, 18 de janeiro de 2013

ABENDs Mais Comuns no Mainframe (z/OS, CICS, COBOL e JCL)

 

Bellacosa Mainframe lista os abends mais comuns em mainframe

ABENDs Mais Comuns no Mainframe (z/OS, CICS, COBOL e JCL)

Os ABENDs (Abnormal End) são encerramentos anormais de programas, jobs ou transações no ambiente IBM Mainframe. Eles podem ocorrer em COBOL, JCL, CICS, DB2, VSAM e no próprio sistema operacional z/OS.

No universo IBM Mainframe, o termo ABEND significa “Abnormal End”, ou seja, um encerramento anormal de um programa, job, tarefa ou transação. Em vez de finalizar corretamente, o sistema interrompe a execução porque encontrou algum erro grave que impede a continuidade do processamento. Os ABENDs fazem parte do cotidiano de operadores, programadores COBOL, analistas de suporte e administradores z/OS.

A origem da palavra vem da junção de duas palavras do inglês:

  • AB = Abnormal
  • END = Finalização ou término

O termo surgiu ainda na década de 1960, durante o desenvolvimento do sistema operacional IBM OS/360, um dos projetos mais revolucionários da história da computação. A IBM precisava de uma forma padronizada para indicar que um programa havia terminado de maneira incorreta, e assim nasceu o conceito de ABEND.

Quando ocorre um ABEND, o sistema gera códigos específicos para ajudar na investigação do problema. Alguns dos mais famosos são:

  • S0C7 → erro de dados numéricos inválidos
  • S0C4 → acesso indevido à memória
  • S806 → programa não encontrado
  • S322 → tempo de CPU excedido

No ambiente CICS também existem ABENDs conhecidos, como:

  • ASRA → erro interno do programa
  • AICA → loop infinito ou excesso de CPU
  • AEY9 → programa ausente

Os ABENDs são extremamente importantes porque ajudam a identificar falhas em programas, arquivos, permissões RACF, parâmetros JCL, tabelas VSAM e problemas de infraestrutura.

Apesar de assustarem iniciantes, os ABENDs são considerados parte natural da cultura Mainframe. Em muitos ambientes corporativos, especialmente bancos e grandes empresas, saber interpretar um ABEND é uma habilidade essencial. Ferramentas como SDSF, IPCS, Abend-AID e Fault Analyzer auxiliam os profissionais a localizar rapidamente a causa raiz do problema e restaurar o processamento com segurança.


📌 ABENDs de Sistema (Sxxx)

Esses são gerados pelo próprio z/OS.

ABENDSignificadoCausa comum
S0C1Operation ExceptionExecutar instrução inválida
S0C4Protection ExceptionAcesso inválido à memória
S0C7Data ExceptionCampo numérico inválido
S013Erro de datasetDCB incorreto ou arquivo incompatível
S222Job canceladoOperador cancelou job
S322CPU Time ExceededTempo de CPU excedido
S306Módulo não encontradoPrograma ausente na STEPLIB
S806Load module not foundPrograma não localizado
S80AFalta de memóriaRegião insuficiente
S878Storage unavailableSem espaço de memória
S913Segurança/RACFSem autorização ao dataset
S837Espaço insuficienteDataset sem espaço
S0CBDivisão por zeroOperação matemática inválida
S001Erro em OPEN/CLOSEProblema de I/O
S213Dataset protegidoConflito de acesso

💥 ABENDs COBOL Mais Famosos

🔴 S0C7 — Data Exception

O mais clássico do COBOL.

Causa

Campo numérico contendo:

  • letras

  • espaços

  • packed decimal inválido

Exemplo

MOVE 'ABC' TO WS-NUM
ADD 1 TO WS-NUM

Resultado

S0C7

🔴 S0C4 — Protection Exception

Causa

Acesso inválido à memória:

  • tabela fora do limite

  • ponteiro inválido

  • USING incorreto

Exemplo

MOVE TAB(9999) TO WS-CAMPO

🔴 S0CB — Divide Exception

Exemplo

DIVIDE WS-A BY WS-B

Se WS-B = ZERO

→ S0CB


📌 ABENDs CICS Mais Comuns

No CICS, muitos erros aparecem como RESP codes ou transaction abends.

ABENDSignificado
AEI0Timeout terminal
AEY9Programa não encontrado
ASRAExceção do programa (S0C7/S0C4 dentro do CICS)
AICALoop infinito / CPU excessiva
APCTTransaction não definida
PGMIDERRPrograma inexistente
NOTAUTHSem autorização
LENGERRTamanho inválido
MAPFAILMAP BMS não recebido

📌 ABENDs VSAM

ABENDProblema
92Logic Error
93Resource unavailable
94Sequential error
97File not closed corretamente

📌 ABENDs JCL Mais Frequentes

CódigoDescrição
JCL ERRORSintaxe inválida
IEC141IDataset não encontrado
IEC130IErro de fita/disco
IEFC001IErro de parâmetro
IEFBR14 RC=12Dataset problem

📌 Return Codes Mais Conhecidos

Nem sempre é ABEND.

RCSignificado
RC=00Sucesso
RC=04Warning
RC=08Erro leve
RC=12Erro significativo
RC=16Falha severa

🔎 Como Investigar ABENDs

Ferramentas clássicas

SDSF

Ver:

  • JESMSGLG

  • JESJCL

  • JESYSMSG


IPCS

Dump analysis avançada.


Abend-AID / Fault Analyzer

Ferramentas automáticas de diagnóstico.

Muito usadas em bancos.


CEDF / CECI (CICS)

Debug online.


📚 ABENDs que Todo Programador Mainframe Já Viu

TOP 10 lendários

  1. S0C7

  2. S0C4

  3. S806

  4. S322

  5. S913

  6. ASRA

  7. AICA

  8. S013

  9. S837

  10. S0CB


🧠 Macete Clássico

Família S0C

CódigoDica
S0C1instrução inválida
S0C4memória
S0C7dado numérico
S0CBdivisão

☕ Curiosidade Histórica

O termo ABEND surgiu ainda no OS/360 da IBM nos anos 60:

  • AB = Abnormal

  • END = Termination

Desde então virou uma das palavras mais famosas do universo mainframe.


🎯 Regra de Ouro no Mainframe

“90% dos problemas COBOL acabam sendo:
S0C7, arquivo errado ou parâmetro incorreto.” 😄

quinta-feira, 17 de janeiro de 2013

❄️💻 “ELA NÃO DEMONSTRA NADA… MAS VOCÊ SABE QUE ELA SENTIU” — O MISTÉRIO ABSOLUTO DAS KUUDERES NOS ANIMES ☕🧊

Bellacosa Mainframe e as kuuderes do anime


❄️💻 “ELA NÃO DEMONSTRA NADA… MAS VOCÊ SABE QUE ELA SENTIU” — O MISTÉRIO ABSOLUTO DAS KUUDERES NOS ANIMES ☕🧊

Existe um momento específico que todo veterano otaku reconhece instantaneamente.

A personagem está em silêncio.
O rosto quase não muda.
A voz permanece calma.
Os olhos parecem vazios.

Mas então…

Ela segura discretamente a manga do protagonista.
Desvia o olhar por meio segundo.
Ou simplesmente diz:

“...não vá.”

E pronto.
O impacto emocional explode mais forte do que cem cenas de romance exagerado.

Esse é o poder do arquétipo Kuudere.

O amor que não grita.
A emoção escondida sob camadas de gelo psicológico.
A personagem que parece fria… até você perceber que ela sente mais profundamente do que todos ao redor.


🧊 O que significa “Kuudere”?

A palavra vem da junção de:

  • “Kuu” (クー) → derivado de cool (“frio”, “calmo”, “controlado”)

  • “Dere” (デレ) → apaixonado, amoroso, carinhoso

Resultado:

Kuudere = alguém emocionalmente fria por fora, mas amorosa por dentro

Diferente do tsundere, a kuudere não explode.
Ela não grita.
Não bate.
Não faz escândalo emocional.

Ela reduz tudo ao mínimo.

É o arquétipo da:

  • contenção emocional,

  • racionalidade extrema,

  • silêncio,

  • observação,

  • elegância psicológica.


🧠 A origem cultural das kuuderes

O Japão possui uma relação cultural muito forte com:

  • autocontrole,

  • repressão emocional,

  • discrição social,

  • linguagem indireta.

Demonstrar emoção excessiva pode ser visto como perda de equilíbrio.

A kuudere nasce justamente dessa estética emocional japonesa:

o sentimento que existe… mas não é verbalizado.

Ela é quase uma representação animada do conceito japonês de:

  • honne (sentimento verdadeiro)

  • escondido sob o tatemae (máscara social).

Por isso as kuuderes raramente dizem:

“Eu te amo.”

Mas demonstram através de:

  • pequenos gestos,

  • proteção silenciosa,

  • presença constante,

  • lealdade absoluta.


❄️ A identidade visual da kuudere

Visualmente, a kuudere é construída para transmitir serenidade e distância emocional.

Características clássicas:

  • olhos frios ou semiexpressivos,

  • rosto neutro,

  • postura elegante,

  • voz baixa,

  • movimentos econômicos,

  • aparência limpa e minimalista.

Muitas vezes:

  • cabelos claros,

  • cortes retos,

  • visual futurista,

  • uniforme impecável,

  • cores frias (azul, branco, prata, cinza).

Ela parece:

  • uma IA,

  • uma boneca,

  • um anjo emocionalmente inacessível,

  • ou uma pessoa desconectada do mundo.

Mas isso é apenas a camada externa.


🩵 O coração da kuudere

A grande beleza da kuudere é que:

cada pequena demonstração emocional vale ouro.

Quando uma tsundere demonstra carinho, é esperado.

Quando uma kuudere demonstra carinho…
o universo inteiro para.

Porque você entende:

  • o quanto aquilo custou emocionalmente,

  • o quanto ela precisou se abrir,

  • o quanto aquele sentimento é genuíno.

A kuudere transforma:

  • microexpressões
    em

  • explosões emocionais.


⚙️ Psicologia do arquétipo

A kuudere normalmente representa:

  • trauma emocional,

  • medo de vulnerabilidade,

  • dificuldade social,

  • racionalização excessiva,

  • solidão silenciosa.

Ela frequentemente acredita que:

  • emoções atrapalham,

  • demonstrar sentimentos é perigoso,

  • apego gera sofrimento.

Por isso:
ela controla tudo.

Mas o amor desmonta lentamente esse sistema operacional emocional.

E é exatamente aí que o público se apaixona.


🤖 As kuuderes mais famosas dos animes


🧬 Rei Ayanami — Neon Genesis Evangelion

A entidade máxima das kuuderes.

Silenciosa.
Mecânica.
Quase alienígena emocionalmente.

Rei revolucionou os animes dos anos 90 criando o modelo moderno da:

garota emocionalmente inacessível.

Mas por trás do vazio:

  • existe dor,

  • identidade fragmentada,

  • busca por humanidade.

Ela não demonstra amor da forma convencional.

Ela demonstra presença.

E isso marcou gerações.


⚔️ Kanade Tachibana (Angel Beats!)

Conhecida como “Angel”.

Calma.
Precisa.
Minimalista.

Kanade parece uma máquina sem emoções…
até pequenos momentos revelarem:

  • ternura,

  • solidão,

  • desejo de conexão.

É uma kuudere construída sobre melancolia.


🔬 Kurisu Makise — Steins;Gate

Uma versão mais racional e científica da kuudere.

Kurisu é:

  • lógica,

  • inteligente,

  • sarcástica,

  • emocionalmente contida.

Mas conforme a narrativa evolui:
a máscara racional começa a quebrar.

Ela não é fria por ausência de sentimentos.
Ela é fria porque pensa demais.


⚡ Yukino Yukinoshita — Oregairu

Elegância glacial absoluta.

Yukino representa a kuudere socialmente isolada:

  • perfeccionista,

  • distante,

  • extremamente inteligente.

Seu problema não é falta de emoção.
É incapacidade de se conectar sem ferir ou ser ferida.

Uma das construções psicológicas mais sofisticadas do gênero.


🛰️ Nagato Yuki — The Melancholy of Haruhi Suzumiya

A kuudere cósmica definitiva.

Literalmente uma entidade alienígena vivendo como humana.

Fala pouco.
Move-se pouco.
Reage pouco.

Mas lentamente desenvolve:

  • curiosidade,

  • apego,

  • individualidade.

Nagato virou símbolo da estética kuudere nos anos 2000.


🧊 Por que o público ama kuuderes?

Porque elas recompensam atenção emocional.

A kuudere não entrega tudo imediatamente.

Você precisa:

  • observar,

  • interpretar,

  • perceber nuances,

  • ler silêncio,

  • entender subtexto.

Ela é o oposto da emoção explícita moderna.

Num mundo barulhento…
a kuudere fala baixo.

E justamente por isso o impacto é tão forte.


☕ Reflexão Bellacosa Mainframe

As kuuderes são fascinantes porque representam algo profundamente humano:

pessoas que sentem intensamente… mas não conseguem demonstrar.

Elas são:

  • firewalls emocionais,

  • sistemas fechados,

  • arquiteturas psicológicas minimalistas,

  • almas tentando funcionar sem vulnerabilidade.

Mas o amor sempre encontra uma brecha no sistema.

E quando uma kuudere finalmente sorri…

não é apenas romance.

É um colapso completo de anos de isolamento emocional.


💻 No fim…

Tsunderes explodem.
Yanderes enlouquecem.
Mas kuuderes…

congelam o coração do público em silêncio.

E talvez seja justamente isso que as torna inesquecíveis.


#BellacosaMainframe #Kuudere #AnimePsychology #Evangelion #ReiAyanami #SteinsGate #Oregairu #OtakuCulture #AnimeAnalysis


quarta-feira, 16 de janeiro de 2013

🐍 Python no z/OS Mainframe — Visão Completa

 

Bellacosa Mainframe apresenta Python no IBM Mainframe zos

🐍 Python no z/OS Mainframe — Visão Completa

🧠 O que é Python no z/OS?

É a capacidade de executar Python nativamente dentro do sistema operacional z/OS, normalmente no ambiente:

👉 USS — UNIX System Services

Ou seja:

🧱 z/OS continua sendo o mesmo mainframe robusto
🐧 Dentro dele existe um “submundo” POSIX/UNIX
🐍 Python roda nesse ambiente como em Linux

💡 Não é emulador, não é gambiarra — é suporte real e suportado.


🏛️ Um Pouco de História

  • z/OS sempre teve scripting (principalmente REXX)

  • Nos anos 2000, IBM iniciou abertura para tecnologias open source

  • UNIX System Services tornou-se estratégico

  • Python foi portado e depois oficialmente suportado

  • Hoje faz parte da estratégia Open Mainframe / Hybrid Cloud

💎 Curiosidade histórica:
REXX foi por décadas “o Python do mainframe”.


⚙️ Onde Python Executa

🐧 USS (UNIX System Services)

É um subsistema POSIX dentro do z/OS.

Características:

  • Sistema de arquivos zFS/HFS

  • Permissões estilo UNIX

  • Shell (sh, bash, etc.)

  • Processos e sinais

  • APIs POSIX

  • Execução de binários open source

👉 Python roda aqui exatamente como em Linux.


🖥️ Como Executar Python no z/OS

🔹 Interativo (USS Shell)

python3

ou

python3 script.py

🔹 Via JCL (Batch)

Usando BPXBATCH:

//STEP1 EXEC PGM=BPXBATCH,
// PARM='SH python3 /u/user/script.py'

💎 Isso integra Python ao mundo JES batch.


🔹 Com Parâmetros via STDPARM

Mais limpo para produção.


📁 Acesso a Dados Mainframe

Python pode trabalhar com:

🧾 1) Arquivos USS

Normais POSIX.

👉 Mais simples.


📦 2) Datasets MVS

Via:

  • ZOAU (IBM Z Open Automation Utilities)

  • APIs

  • Utilitários

  • Conversões

Tipos suportados:

  • PS (sequencial)

  • PDS/PDSE

  • GDG

  • VSAM (indiretamente)

💎 Lembre-se: datasets são orientados a registros, não a streams.


🧰 ZOAU — O Superpoder

🧱 IBM Z Open Automation Utilities

Biblioteca + comandos para automatizar z/OS.

Permite via Python:

🔥 Manipular datasets
🔥 Submeter jobs
🔥 Emitir comandos de operador
🔥 Trabalhar com load modules
🔥 Executar utilitários
🔥 Orquestrar workflows

👉 É o “canivete suíço” da automação moderna no mainframe.


🧾 Controle de Jobs (JES)

Python pode:

  • Submeter JCL

  • Monitorar execução

  • Ler spool

  • Detectar ABEND

  • Automatizar pipelines batch

💎 Basicamente virar um scheduler inteligente.


🖥️ Comandos de Operador

Scripts podem emitir comandos MVS:

  • D A,L

  • START/STOP

  • VARY

  • Consultas de sistema

⚠️ Exige autorização RACF.

👉 Python pode agir como um operador virtual.


🌉 Integração Híbrida

Um dos maiores motivos do Python no z/OS existir.

Conectar:

🏦 Sistemas legacy
🌐 APIs REST
☁️ Cloud
🐧 Linux on Z
📊 Analytics
🤖 AI

Exemplo clássico:

COBOL → Dataset → Python → JSON → Cloud → BI


🔐 Segurança

Nada “fura” o modelo z/OS.

Controle por:

  • RACF/SAF

  • Permissões USS

  • Perfis de dataset

  • Autorizações operacionais

💎 Python obedece às regras — não as substitui.


⚠️ Problemas Clássicos

🔤 EBCDIC vs ASCII

O choque cultural número 1.

z/OS tradicional → EBCDIC
Mundo moderno → UTF-8

👉 Conversão é frequentemente necessária.


📁 Dataset ≠ Arquivo

  • Registro fixo/variável

  • LRECL

  • RECFM

  • Blocos

Python precisa respeitar isso.


📦 Pacotes nem sempre portáveis

Nem tudo do PyPI funciona no z/OS.


⏳ Arquivos Temporários e Datasets Temporários

Podem ser criados para:

  • Processamento intermediário

  • Pipelines batch

  • Conversões

ZOAU fornece helpers como:

👉 tmp_name() — gera nome válido


🏭 Operacionalização

Scripts em produção devem:

  • Registrar logs

  • Tratar erros

  • Usar credenciais seguras

  • Ser agendáveis

  • Integrar com JCL

  • Retornar códigos de retorno adequados

👉 Mainframe = zero tolerância a improviso.


💎 Easter Eggs & Curiosidades

🥚 1) Python não substitui REXX — complementa

REXX continua imbatível para TSO e automação clássica.

Python domina integração moderna.


🥚 2) Muitos bancos usam Python no mainframe sem divulgar

Principalmente para:

  • DevOps

  • Monitoramento

  • Automação operacional

  • Integração com cloud


🥚 3) Você pode construir pipelines CI/CD inteiros no z/OS

Com:

  • Python

  • ZOAU

  • Zowe

  • Git

  • Jenkins/GitHub Actions


🥚 4) Python virou porta de entrada para novos talentos

Muito mais fácil ensinar Python do que JCL + REXX + ISPF do zero.


🥚 5) O mainframe virou “open” sem deixar de ser “enterprise”

Esse é o grande truque da IBM Z moderna.


🏆 Quando Usar Python no z/OS

Use Python para:

✅ Automação operacional
✅ Integração com sistemas externos
✅ Orquestração de jobs
✅ Manipulação de dados
✅ DevOps
✅ Monitoramento
✅ Scripts complexos


❌ Quando NÃO Usar

Evite para:

❌ Núcleo de aplicações transacionais críticas
❌ Código ultra-performático
❌ Funções de kernel ou baixo nível
❌ Substituir COBOL em produção massiva


⚡ Resumo Final

👉 Python no z/OS é a ponte entre dois mundos:

🧠 Confiabilidade de 60 anos
🌐 Ecossistema moderno

Não substitui o mainframe — expande o que ele pode fazer.


terça-feira, 15 de janeiro de 2013

😈 Top 10 mentiras que contam sobre sistemas distribuídos

 


😈 Top 10 mentiras que contam sobre sistemas distribuídos

Conhecimento básico sobre aplicações distribuídas para quem já viu produção cair “sem motivo”


☕ 01:12 — Quando tudo “funcionava no ambiente”

Se você já ouviu:

“Distribuído escala sozinho, é resiliente e se resolve”

…parabéns. Você foi apresentado às mentiras fundacionais dos sistemas distribuídos.

Este artigo não é pessimista.
É experiente.


1️⃣ “Distribuído é mais confiável” 🧨

Mentira.
Distribuído falha de mais formas.

No mainframe:

  • Falha é binária

No distribuído:

  • Falha parcial

  • Falha lenta

  • Falha intermitente

  • Falha invisível

📌 Comentário Bellacosa:
Mais nós = mais maneiras de quebrar.


2️⃣ “Se cair, o retry resolve” 🔁

Mentira perigosa.

Retry sem:

  • Idempotência

  • Limite

  • Backoff

= duplicação + avalanche.

😈 Easter egg traumático:
Retry mal feito é GO TO recursivo com autoestima.


3️⃣ “Stateless simplifica tudo” 📦

Mentira elegante.

O estado:

  • Não desapareceu

  • Só foi escondido

📌 Tradução mainframês:
Estado sem dono vira problema de todos.


4️⃣ “Event-driven desacopla completamente” 📣

Mentira conceitual.

Eventos:

  • Criam acoplamento temporal

  • Exigem contrato

  • Precisam de versionamento

🔥 Comentário ácido:
MQ não é desculpa para ignorar consistência.


5️⃣ “Microservices facilitam manutenção” 🧩

Mentira organizacional.

Eles facilitam:

  • Deploy independente

Mas complicam:

  • Debug

  • Observabilidade

  • Governança

😈 Easter egg:
Microservices sem observabilidade = terror distribuído.


6️⃣ “Alta disponibilidade vem da cloud” ☁️

Mentira de marketing.

Alta disponibilidade vem de:

  • Arquitetura

  • Disciplina

  • Teste

  • Orçamento

📌 Mainframe feelings:
HA sempre foi requisito, não feature premium.


7️⃣ “Monitorar logs é suficiente” 📜

Mentira operacional.

Logs sem:

  • Contexto

  • Correlação

  • Métrica

são romance técnico.

😈 Comentário Bellacosa:
Quem já leu SMF sabe: log sozinho mente.


8️⃣ “Deploy contínuo reduz risco” 🚀

Mentira condicional.

Reduz risco se:

  • Houver rollback

  • Métricas pós-deploy

  • Feature flags

Sem isso:
= erro contínuo.

📌 Regra imortal:
Quem não sabe voltar, não deveria ir.


9️⃣ “Falha é exceção” 👻

Mentira infantil.

Em sistemas distribuídos:

  • Falha é estado normal

  • Sucesso é transitório

🔥 Comentário realista:
Projetar para sucesso é fácil.
Projetar para falha paga salário.


🔟 “Distribuído elimina o mainframe” ⚰️

A maior mentira de todas.

O que aconteceu foi:

  • O mundo ficou distribuído

  • O mainframe continuou crítico

  • Alguém precisou integrar tudo

😈 Easter egg final:
Cloud herdou os problemas do mainframe — sem a maturidade.


🧭 Passo a passo para não cair nessas mentiras

1️⃣ Desconfie de absolutos
2️⃣ Pergunte “e se falhar?”
3️⃣ Exija observabilidade
4️⃣ Pense em rollback
5️⃣ Trate estado como ativo crítico
6️⃣ Documente decisões
7️⃣ Proteja produção


📚 Guia de estudo honesto 📖

Conceitos

  • CAP Theorem

  • Resiliência

  • Observabilidade

  • Event-driven

  • SRE

Leitura obrigatória

  • Post-mortems reais

  • Casos de outage

  • Relatórios de falhas

📌 Dica Bellacosa:
Leia mais incidentes do que tutoriais.


🎯 Aplicações práticas no mundo real

  • Core bancário híbrido

  • Sistemas regulados

  • Plataformas críticas

  • Times de arquitetura

  • Governança técnica


🖤 Epílogo — 02:59, ninguém sabe por que caiu

Distribuído não é ruim.
É honesto com quem aceita complexidade.

El Jefe Midnight Lunch encerra:
“Quando alguém diz que distribuído é simples, prepare o café e esconda a produção.”

segunda-feira, 14 de janeiro de 2013

Japão: um Sistema Milenar em Produção Contínua

 


Japão: um Sistema Milenar em Produção Contínua

(Uma leitura Bellacosa Mainframe da linha do tempo japonesa)

Essa imagem não é apenas uma timeline. É o diagrama de arquitetura de um dos sistemas culturais mais resilientes da história. O Japão nunca desligou. Reiniciou, sim — várias vezes — mas sempre preservando memória.


🌾 Japão Antigo – Boot Inicial (até 710 d.C.)

Aqui o sistema carrega os módulos básicos: arroz, xintoísmo e escrita. A introdução do arroz não foi só agrícola; foi administrativa. Arroz virou imposto, poder e controle social. Já o xintoísmo, com seus kami, criou uma espiritualidade descentralizada — nada de dogma pesado, tudo integrado à natureza.

📌 Easter egg: os primeiros santuários xintoístas não tinham prédios. O “templo” era a árvore, a pedra, o rio.


📜 Japão Clássico – Documentação Oficial (710–1185)

Com o Kojiki, o Japão escreve sua própria “documentação do sistema”. Mistura mito com história sem pedir desculpa. Aqui o país importa conhecimento da China: escrita, budismo, burocracia.

🗣️ Fofoquice histórica: a elite japonesa copiava a China… mas adaptava tudo. Nada era clone puro.


⚔️ Japão Feudal – Controle por Guerreiros (1185–1603)

Samurais assumem o console. Honra, espada e hierarquia rígida. O poder sai do imperador simbólico e vai para o shogun — clássico caso de quem manda não aparece no organograma.

📌 Curiosidade: o bushidō foi romantizado depois. Na prática, samurai também fazia intriga, traição e política pesada.


🚪 Período Edo – Sistema Isolado (1603–1868)

O Japão entra em Sakoku: firewall total. Nada de estrangeiros, nada de saída. Estabilidade absurda por 250 anos.

🧨 Easter egg: enquanto o país “parava”, surgiam kabuki, haicais, ukiyo-e. Cultura floresce quando o sistema não vive em guerra.


🚢 Era Meiji – Upgrade Forçado (1868–1912)

Os EUA chegam como patch não solicitado. O Japão olha, avalia e faz algo raro: aprende rápido. Industrialização acelerada, exército moderno, fim dos samurais.

🗣️ Fofoquice: foi aqui que o Japão decidiu “vamos copiar o Ocidente… mas melhor”.


💣 Taishō–Shōwa – Erros Críticos (1912–1945)

Imperialismo, guerras, Pearl Harbor. O sistema entra em modo agressivo… e paga caro. Hiroshima e Nagasaki são o maior crash da história japonesa.

📌 Curiosidade: mesmo derrotado, o Japão não perde identidade. Isso é raríssimo.


🚄 Pós-Guerra – Sistema Reconstruído (1945–1989)

Sem exército, com tecnologia. O Japão vira potência industrial, cria o Shinkansen, eletrônicos, carros, anime, manga.

🗣️ Easter egg: Godzilla nasce aqui — metáfora direta do trauma nuclear.


🌊 Japão Moderno – Resiliência Ativa (1990–presente)

Terremotos, tsunamis, crises… e o sistema continua. Cultura pop global, tradição local intacta.

📌 Curiosidade final: poucos países conseguem ser antigos e futuristas ao mesmo tempo.


☕ Conclusão Bellacosa Mainframe

O Japão é prova viva de que sistemas não sobrevivem por força, mas por adaptação. Ele cai, reinicia, aprende e continua.

E como todo bom sistema legado…
ninguém entende completamente —
mas todo mundo depende.