☕ 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

quinta-feira, 14 de abril de 2022

Lógica de Programação no Mainframe : O Guia Definitivo para um Programador Padawan Entender Como Pensar em COBOL

 

Bellacosa Mainframe apresenta logica de programacao em mainframe


☕ Um Café no Bellacosa Mainframe

Lógica de Programação no Mainframe

O Guia Definitivo para um Programador Padawan Entender Como Pensar em COBOL Antes Mesmo de Escrever uma Linha de Código

"A diferença entre um programador júnior e um programador experiente raramente está na linguagem. Está na forma como ele pensa antes de começar a programar."


Introdução

Existe um mito que acompanha praticamente todo iniciante em Mainframe.

Muitos acreditam que aprender COBOL significa decorar comandos como MOVE, IF, PERFORM, READ, WRITE e COMPUTE.

Não.

Isso é parecido com decorar palavras de um idioma sem aprender a formar frases.

Programar não é escrever código.

Programar é resolver problemas.

O computador apenas executa a solução que você imaginou.

Quanto melhor for sua lógica, menor será seu código.

Quanto pior for sua lógica, maior será o desastre.

Curiosamente, essa afirmação vale ainda mais no mundo Mainframe.

Em um sistema bancário, um erro lógico pode movimentar milhões de reais para a conta errada.

Um erro de apenas um operador relacional pode impedir milhares de aposentadorias de serem pagas.

A máquina faz exatamente aquilo que você pediu.

Nunca aquilo que você queria.


Afinal, o que é lógica de programação?

Lógica é a capacidade de organizar pensamentos em uma sequência de passos capazes de resolver um problema.

Em outras palavras:

Entrada → Processamento → Saída

Todo programa do planeta funciona assim.

Sempre.

Sem exceções.

Imagine fazer café.

Entrada:

  • água

  • café

  • filtro

Processamento:

  • aquecer água

  • passar pelo pó

Saída:

  • café pronto

Um programa COBOL faz exatamente isso.

Entrada:

Arquivo de clientes

Processamento

Arquivo atualizado

Nada muda.

Apenas o problema é diferente.


O computador é extremamente inteligente...

...para fazer exatamente o que você mandar.

E extremamente burro para adivinhar.

Se você esquecer um caso específico...

Ele esquecerá também.


Exemplo

Você deseja aprovar clientes maiores de idade.

Errado:

SE IDADE > 18

O cliente com exatamente 18 anos será recusado.

O correto seria

IDADE >= 18

Esse pequeno detalhe pode causar milhares de erros.

A lógica mora justamente nesses detalhes.


O primeiro segredo dos grandes programadores

Eles passam muito mais tempo pensando do que digitando.

Um programador experiente pode gastar:

70%

pensando

20%

planejando

10%

escrevendo

Já o iniciante faz exatamente o contrário.


Antes do COBOL existe o algoritmo

Todo programa começa com uma receita.

Exemplo.

Problema:

Calcular média de um aluno.

Passos.

Receber nota 1

Receber nota 2

Somar

Dividir por 2

Mostrar resultado

Isso é um algoritmo.

COBOL vem depois.


Aprenda primeiro estas estruturas

Toda programação procedural é formada por apenas três estruturas.

Sim.

Somente três.

Todo software do mundo nasce delas.


1 — Sequência

Faça isto

Depois aquilo

Depois aquilo outro

Exemplo

Leia salário

Calcule imposto

Mostre salário líquido

Nada complicado.


2 — Seleção

Agora aparece a primeira decisão.

SE saldo > 0

então saque permitido

senão

saque negado

No COBOL isso aparece como

IF
ELSE
END-IF

A vida inteira você fará isso.


3 — Repetição

Enquanto existir trabalho...

Continue trabalhando.

PERFORM UNTIL

PERFORM VARYING

São os famosos loops.


Curiosidade

Os três pilares da programação estruturada foram formalizados por Edsger W. Dijkstra, Ole-Johan Dahl e C. A. R. Hoare na década de 1960. A ideia revolucionária era simples: qualquer programa poderia ser construído usando apenas sequência, seleção e repetição, reduzindo drasticamente o uso de GOTO e tornando o software mais confiável.


Como um programa COBOL pensa?

Imagine um funcionário de banco.

Ele chega.

Recebe documentos.

Confere informações.

Atualiza cadastro.

Emite comprovante.

Vai embora.

Um programa COBOL trabalha exatamente assim.


Entrada

READ
ACCEPT
LINKAGE

Processamento

MOVE

ADD

SUBTRACT

MULTIPLY

DIVIDE

COMPUTE

STRING

UNSTRING

Saída

DISPLAY

WRITE

REWRITE

RETURN

SEND

O cérebro do programa

A PROCEDURE DIVISION.

Ela é composta por:

Parágrafos

Sections

Sentenças

Comandos

Cada um possui sua responsabilidade.


Parágrafos

Pense em capítulos de um livro.

CALCULAR-JUROS.

VALIDAR-DADOS.

ATUALIZAR-SALDO.

Cada um resolve uma única tarefa.

Essa organização melhora leitura, manutenção e testes.


Sections

São grupos de parágrafos relacionados.

Muito usadas em programas legados e ainda presentes em diversos ambientes corporativos.

VALIDACAO SECTION

PROCESSAMENTO SECTION

FINALIZACAO SECTION

Hoje, muitos times preferem programas menores e menos dependentes de SECTION, mas você encontrará ambos os estilos no mercado.


PERFORM é seu melhor amigo

Nunca copie código.

Faça um parágrafo.

Execute quando necessário.

PERFORM VALIDAR-CLIENTE

Muito melhor que repetir cinquenta linhas.


Variáveis

Uma variável representa um espaço reservado para armazenar informações.

Exemplo

Nome

Saldo

CPF

Data

Valor

Cada variável deve representar apenas uma ideia.

Não misture responsabilidades.


Um bom nome vale ouro

Ruim

A

X

TEMP

VAR1

Bom

WS-CLIENTE-SALDO

WS-VALOR-TOTAL

WS-DATA-PAGAMENTO

Você agradecerá daqui a dez anos.

E quem der manutenção também.


Expressões

Expressões representam cálculos.

A + B

SALDO - SAQUE

JUROS * TAXA

VALOR / PARCELAS

No COBOL moderno, COMPUTE simplifica expressões complexas, tornando o código mais legível.


Expressões booleanas

São perguntas.

IDADE >= 18

SALDO > 0

CPF = CPF-INFORMADO

Resultado?

VERDADEIRO

ou

FALSO

Toda programação gira em torno dessas respostas.


Operadores importantes

Igual

Maior

Menor

Maior ou igual

Menor ou igual

Diferente

AND

OR

NOT

Eles parecem simples.

Mas definem todo o comportamento do programa.


Fluxo de execução

Imagine uma estrada.

O programa começa.

Segue em frente.

Em alguns momentos:

vira

repete

retorna

encerra

Esse caminho é chamado fluxo.

Um fluxo claro é um programa fácil de manter.


O perigo do GO TO

Nos anos 70 era comum.

Hoje deve ser evitado.

Por quê?

Porque destrói o fluxo natural.

Cria o famoso:

"espaguete"

Linhas indo para todos os lados.

Difícil testar.

Difícil entender.

Difícil manter.

Por isso:

PERFORM

END-IF

EVALUATE

substituem praticamente todos os antigos GO TO.


EVALUATE

É o "switch" do COBOL.

Muito mais elegante que dezenas de IF aninhados.

Exemplo conceitual:

Cliente Ouro

↓

desconto

Cliente Prata

↓

desconto menor

Cliente Bronze

↓

sem desconto

Código mais limpo.

Mais fácil de ler.


Loops

No Mainframe você processará arquivos enormes.

Milhares.

Milhões.

Bilhões de registros.

Você não faz:

READ

READ

READ

READ

Você faz

PERFORM UNTIL EOF

Até chegar ao fim do arquivo.


EOF

Uma das primeiras variáveis que todo programador COBOL aprende.

WS-FIM-ARQUIVO

88 EOF VALUE "S"

Quando ela muda...

O loop termina.

Quase todo processamento batch funciona assim.


Subprogramas

Grandes bancos dividem responsabilidades.

Programa principal

Chama

Subprograma

Retorna resultado

Assim nasce software reutilizável.

Em COBOL isso ocorre com CALL.


O conceito de responsabilidade única

Cada parágrafo.

Cada rotina.

Cada subprograma.

Deve fazer apenas uma coisa.

Muito bem feita.

Esse conceito, hoje conhecido como Single Responsibility Principle, já aparecia naturalmente em muitos sistemas COBOL décadas antes de se popularizar na orientação a objetos.


Como pensar antes de programar

Faça estas perguntas.

Qual é o problema?

Quais dados entram?

Quais dados saem?

Quais regras existem?

Existem exceções?

O que acontece se faltar informação?

O arquivo pode estar vazio?

Pode existir duplicidade?

O valor pode ser negativo?

Quanto mais perguntas...

Menos bugs.


A diferença entre programar e desenvolver

Programar é escrever código.

Desenvolver é resolver problemas.

Um excelente desenvolvedor pode escrever poucas linhas.

Mas resolver um problema enorme.


O Mainframe muda sua forma de pensar

Aqui você aprende que:

dados são patrimônio;

performance importa;

I/O custa caro;

cada acesso a disco deve ser pensado;

processar um milhão de registros é rotina;

estabilidade vale mais que criatividade.

Essa mentalidade acompanha você por toda a carreira, mesmo trabalhando depois com Java, Python, Go ou JavaScript.


A disciplina do COBOL

COBOL obriga você a ser organizado.

Divisões bem definidas.

Dados separados da lógica.

Nomes claros.

Fluxo explícito.

Isso forma excelentes engenheiros de software.

Não por acaso, muitos arquitetos de grandes bancos começaram suas carreiras escrevendo COBOL.


Os erros mais comuns dos iniciantes

  • Programar antes de entender o problema.

  • Criar variáveis com nomes sem significado.

  • Misturar validação, cálculo e gravação na mesma rotina.

  • Usar GO TO sem necessidade.

  • Ignorar casos de erro e exceções.

  • Esquecer o tratamento de fim de arquivo.

  • Repetir código em vez de criar parágrafos reutilizáveis.

  • Não documentar regras de negócio complexas.

  • Alterar programas sem compreender seu fluxo completo.

  • Testar apenas o "caminho feliz", esquecendo entradas inválidas e situações de borda.


Trilha de estudos para um Padawan Mainframe

Uma sequência eficiente de aprendizado é:

  1. Lógica de programação.

  2. Algoritmos e fluxogramas.

  3. Tipos de dados e variáveis.

  4. Operadores e expressões.

  5. Estruturas de decisão (IF e EVALUATE).

  6. Estruturas de repetição (PERFORM, UNTIL e VARYING).

  7. Modularização com parágrafos, SECTION e subprogramas.

  8. Arquivos sequenciais e VSAM.

  9. JCL e execução batch.

  10. CICS, Db2, APIs e integração com o mundo moderno.


Easter Egg ☕

Existe uma velha brincadeira entre programadores veteranos.

Perguntaram a um desenvolvedor COBOL:

— Quantas linguagens você conhece?

Ele respondeu:

— Muitas.

— Então por que continua usando COBOL?

O veterano sorriu:

— Porque o banco prefere que o dinheiro continue chegando na conta certa.

A piada resume uma grande verdade: linguagens vêm e vão, mas a lógica permanece. Quem domina lógica aprende qualquer linguagem com muito mais facilidade.


Curiosidade histórica

Grace Hopper, uma das pioneiras da computação e uma das maiores influências para o COBOL, costumava dizer:

"A frase mais perigosa da linguagem é: 'Sempre fizemos assim'."

Embora COBOL seja uma linguagem com mais de seis décadas, ela continua evoluindo. Hoje suporta recursos modernos como JSON, XML, UTF-8, integração com APIs REST, chamadas a serviços, tratamento avançado de dados e otimizações para arquiteturas IBM Z. O que permanece imutável não é a sintaxe, mas a lógica por trás da solução.


Conclusão

Todo programador COBOL experiente conhece centenas de comandos.

Mas isso nunca foi o diferencial.

O diferencial sempre foi saber pensar.

A lógica de programação é a verdadeira linguagem universal da computação. Ela atravessa décadas, plataformas e paradigmas. O profissional que domina sequência, seleção, repetição, modularização, fluxo de execução e organização do pensamento será capaz de trabalhar não apenas com COBOL, mas também com Java, Python, C#, JavaScript, Go ou qualquer tecnologia que surgir no futuro.

No Mainframe, essa disciplina ganha um valor ainda maior. Cada programa processa informações críticas para bancos, seguradoras, hospitais, governos e empresas que movimentam bilhões de transações diariamente. Não há espaço para improvisação: clareza, simplicidade e previsibilidade são virtudes.

Lembre-se sempre desta máxima do Bellacosa Mainframe:

"O computador não premia quem escreve mais código. Ele recompensa quem pensa melhor. Antes de aprender COBOL, aprenda a organizar suas ideias. Depois disso, a linguagem será apenas uma ferramenta nas mãos de um verdadeiro engenheiro de software."

quarta-feira, 13 de abril de 2022

Do Visual Basic ao COBOL no IBM Z : Você Não Está Abandonando o Desenvolvimento Desktop. Está Descobrindo Onde Muitos Sistemas Críticos Nunca Pararam de Evoluir.

 

Bellacosa Mainframe do visual basic ao cobol no zos

☕ Um Café no Bellacosa Mainframe

Do Visual Basic ao COBOL no IBM Z

Você Não Está Abandonando o Desenvolvimento Desktop. Está Descobrindo Onde Muitos Sistemas Críticos Nunca Pararam de Evoluir.

"Quem programa em Visual Basic já aprendeu uma das lições mais importantes da engenharia de software: transformar regras de negócio em aplicações que resolvem problemas reais. Aprender COBOL no IBM Z não significa voltar ao passado. Significa compreender por que os maiores bancos, seguradoras, empresas aéreas e governos do mundo continuam confiando em uma plataforma que processa bilhões de transações diariamente."

Existe um mito bastante difundido na comunidade de tecnologia.

Ele diz que quem vem do Visual Basic encontrará um ambiente completamente diferente ao entrar no universo do Mainframe.

Na prática, isso não é verdade.

A tecnologia muda.

A plataforma muda.

A arquitetura muda.

Mas o pensamento de engenharia continua exatamente o mesmo.

Você continua recebendo requisitos.

Continua modelando dados.

Continua tratando exceções.

Continua escrevendo lógica de negócio.

Continua produzindo software para pessoas.

A diferença é que agora seu programa poderá executar em um computador capaz de atender milhares de empresas simultaneamente, com disponibilidade próxima de 100%, segurança extremamente rigorosa e décadas de evolução contínua.

Bem-vindo ao IBM Z.


Antes de comparar linguagens, compare mentalidades

Quem desenvolve em Visual Basic normalmente pensa em aplicações desktop, sistemas administrativos, ERPs internos, automações comerciais ou integração com bancos de dados.

O foco costuma ser:

  • interface gráfica;

  • formulários;

  • eventos;

  • botões;

  • menus;

  • relatórios;

  • banco de dados.

No Mainframe o foco muda.

A pergunta deixa de ser:

"Como o usuário clica no botão?"

e passa a ser:

"Como garantir que um milhão de operações financeiras sejam processadas corretamente?"

É outra escala.

Outra responsabilidade.

Outra arquitetura.


Bellacosa Mainframe vb versus cobol no zos

O que um programador VB já sabe (e talvez não perceba)

Muitos imaginam que começar COBOL significa começar programação do zero.

Na verdade, quem domina Visual Basic já possui diversas habilidades importantes.

Você já entende:

  • variáveis;

  • tipos de dados;

  • estruturas condicionais;

  • laços;

  • funções;

  • procedimentos;

  • modularização;

  • manipulação de arquivos;

  • acesso a banco de dados;

  • tratamento de erros;

  • regras de negócio.

Esses conhecimentos continuam existindo no COBOL.

A sintaxe muda.

O raciocínio permanece.


Comparando Visual Basic e COBOL

Declaração de variáveis

Visual Basic

Dim Nome As String
Dim Salario As Decimal

COBOL

01 NOME.
   05 WS-NOME PIC X(30).

01 SALARIO.
   05 WS-SALARIO PIC 9(7)V99.

No COBOL a definição é muito mais explícita.

Você descreve exatamente como os dados serão armazenados.

Essa preocupação é uma das razões pelas quais aplicações COBOL permanecem rápidas e confiáveis décadas depois.


Estruturas IF

Visual Basic

If Salario > 5000 Then
    Bonus = 1000
End If

COBOL

IF WS-SALARIO > 5000
    MOVE 1000 TO WS-BONUS
END-IF

Praticamente o mesmo raciocínio.


Estruturas de repetição

Visual Basic

For I = 1 To 10

COBOL

PERFORM VARYING I FROM 1 BY 1
UNTIL I > 10

O conceito continua sendo um loop.


Procedimentos

Visual Basic

Sub Calcular()

COBOL

CALCULAR.

Os dois organizam o código em pequenas unidades reutilizáveis.


A maior diferença: Interface

Visual Basic nasceu para interfaces gráficas.

COBOL nasceu para processamento de dados.

Enquanto VB pergunta:

"Qual botão foi clicado?"

COBOL pergunta:

"Qual registro deve ser atualizado?"

É uma mudança importante de perspectiva.


Banco de dados continua sendo banco de dados

Quem trabalha com Visual Basic geralmente conhece SQL Server, Oracle, PostgreSQL ou MySQL.

No Mainframe você encontrará principalmente:

  • Db2 for z/OS

  • IMS

  • VSAM

A boa notícia?

SQL continua sendo SQL.

Exemplo:

SELECT
NOME,
SALARIO
FROM FUNCIONARIO

O conhecimento continua válido.

Você apenas aprende algumas características específicas do Db2 para IBM Z.


Arquivos existem dos dois lados

Visual Basic pode trabalhar com:

  • TXT

  • CSV

  • XML

  • JSON

COBOL trabalha com:

  • Sequential Files

  • VSAM

  • GDG

  • datasets

Ambos processam informações.

A diferença está na infraestrutura.


O pensamento empresarial é parecido

Grande parte dos programas VB resolve regras de negócio.

Grande parte dos programas COBOL também.

Por exemplo:

  • calcular impostos;

  • calcular folha;

  • emitir boletos;

  • validar documentos;

  • gerar extratos;

  • processar pagamentos.

Não existe "programação antiga".

Existe lógica empresarial.


O que realmente muda

Agora começam as novidades.


Você precisará aprender o ambiente IBM Z

Quem vem do Visual Basic normalmente conhece Windows.

Talvez Linux.

No Mainframe você conhecerá:

  • z/OS

  • TSO

  • ISPF

  • SDSF

  • JES2

  • RACF

Esses nomes parecem assustadores.

Depois de algumas semanas passam a ser ferramentas do dia a dia.


Aprenda primeiro o sistema operacional

Muitos iniciantes querem aprender COBOL imediatamente.

É um erro.

Primeiro aprenda onde o programa vive.

Entenda:

  • datasets;

  • catálogo;

  • usuários;

  • jobs;

  • spool;

  • compilação.

Depois o COBOL fará muito mais sentido.


Aprenda JCL cedo

Quem vem do Visual Basic costuma estranhar o JCL.

Mas pense nele como um script de automação.

Em vez de clicar:

  • Compilar

  • Executar

  • Gerar relatório

você descreve tudo em um Job.

O computador faz o restante.

JCL é muito menos complicado do que parece.


O Terminal não é um inimigo

O terminal 3270 assusta muita gente.

Até o primeiro dia.

Depois ele se torna uma das interfaces mais produtivas já criadas.

Sem distrações.

Sem dezenas de janelas.

Sem milhares de ícones.

Somente trabalho.


COBOL é extremamente legível

Visual Basic sempre foi conhecido pela clareza.

COBOL também.

Veja:

ADD VALOR TO TOTAL

SUBTRACT DESCONTO FROM TOTAL

MULTIPLY QUANTIDADE BY PRECO

É praticamente inglês.

Essa legibilidade foi planejada desde sua criação.


O que estudar primeiro

Minha sugestão para quem vem do Visual Basic é seguir uma ordem diferente da maioria.

Etapa 1

Aprenda:

  • arquitetura IBM Z;

  • o que é Mainframe;

  • Batch;

  • Online;

  • CICS;

  • Db2.

Sem escrever uma linha de código.


Etapa 2

Aprenda:

  • TSO;

  • ISPF;

  • datasets;

  • membros;

  • PF Keys;

  • edição.

Domine o ambiente.


Etapa 3

Aprenda JCL.

Compilar.

Executar.

Ler mensagens.

Interpretar erros.


Etapa 4

Agora sim.

COBOL.

Primeiro:

  • DATA DIVISION

  • WORKING-STORAGE

  • PROCEDURE DIVISION

Depois:

  • IF

  • PERFORM

  • EVALUATE

  • SEARCH

  • OCCURS

  • COPYBOOKS


Etapa 5

Arquivos

Aprenda:

  • Sequential

  • VSAM

  • Sort

  • Merge


Etapa 6

Db2

Depois:

  • Embedded SQL

  • Cursor

  • Commit

  • Rollback


Etapa 7

CICS

Aprenda:

  • COMMAREA

  • MAPS

  • BMS

  • EXEC CICS


O que treinar diariamente

Não basta assistir aulas.

É necessário escrever código.

Todos os dias.

Exercícios interessantes:

  • cadastro de clientes;

  • folha de pagamento;

  • controle de estoque;

  • extrato bancário;

  • cálculo de impostos;

  • geração de arquivos;

  • leitura de VSAM;

  • consultas Db2.


O que esquecer durante a transição

Alguns hábitos do desenvolvimento desktop precisam ser adaptados.

Não pense primeiro na interface.

Pense primeiro nos dados.

Não pense em formulários.

Pense em registros.

Não pense em telas bonitas.

Pense em consistência.

No Mainframe, um programa elegante é aquele que processa milhões de registros corretamente.


O que aprender além do COBOL

Hoje um desenvolvedor Mainframe moderno normalmente conhece:

  • COBOL

  • SQL

  • Db2

  • JCL

  • CICS

  • REXX

  • z/OS

  • Git

  • VS Code

  • Zowe

  • APIs REST

  • JSON

  • XML

  • DevOps

  • OpenTelemetry

  • CI/CD

Perceba que o Mainframe atual conversa naturalmente com tecnologias modernas.

Você não está entrando em um mundo isolado.

Está entrando em um ecossistema conectado à nuvem, microsserviços, APIs e aplicações distribuídas.


A vantagem de quem vem do Visual Basic

Há algo que costuma surpreender.

Desenvolvedores Visual Basic frequentemente possuem forte conhecimento de processos empresariais.

Eles já trabalharam com:

  • faturamento;

  • estoque;

  • financeiro;

  • RH;

  • contabilidade;

  • logística.

Esses conhecimentos são extremamente valorizados no Mainframe.

Muitas vezes, entender a regra de negócio é mais importante do que conhecer toda a sintaxe da linguagem.

Ensinar COBOL leva semanas.

Ensinar décadas de experiência em processos empresariais leva muito mais tempo.


Os erros mais comuns

Os iniciantes costumam:

  • querer aprender tudo ao mesmo tempo;

  • ignorar JCL;

  • ignorar o z/OS;

  • decorar comandos;

  • copiar programas sem entender.

Faça diferente.

Entenda primeiro a arquitetura.

Depois escreva código.


Uma trilha de 24 semanas

Semanas 1–2: Fundamentos do IBM Z, arquitetura, Batch × Online, datasets e conceitos de z/OS.

Semanas 3–4: TSO/ISPF, edição, organização de bibliotecas, navegação e produtividade.

Semanas 5–6: JCL, catálogo, utilitários, compilação, execução e análise de mensagens no SDSF.

Semanas 7–10: COBOL básico: divisões, tipos de dados, operações, IF, EVALUATE, PERFORM, tabelas e modularização.

Semanas 11–12: Arquivos sequenciais, SORT, MERGE, VSAM KSDS e processamento de registros.

Semanas 13–16: Db2 para z/OS, SQL embarcado, cursores, tratamento de SQLCODE e boas práticas.

Semanas 17–20: CICS, BMS, COMMAREA, transações e programação online.

Semanas 21–22: REXX, utilitários, automação e produtividade no ambiente z/OS.

Semanas 23–24: Git, Zowe, VS Code, APIs REST, JSON, integração com aplicações modernas e práticas de DevOps para IBM Z.

Ao final desse percurso, você terá uma visão sólida do ciclo completo de desenvolvimento em Mainframe, desde a edição de código até a execução de aplicações críticas.


O Mainframe de Hoje

Existe outra ideia equivocada: a de que aprender Mainframe é aprender uma tecnologia "presa no passado".

Na realidade, o IBM Z evoluiu continuamente. Hoje ele executa cargas com Linux, Java, Python, Node.js, Go, APIs REST, containers, OpenTelemetry, criptografia avançada, autenticação moderna e integração com ambientes de nuvem. O COBOL continua sendo essencial porque representa décadas de regras de negócio consolidadas, mas ele convive diariamente com tecnologias contemporâneas.

Aprender COBOL não limita sua carreira. Amplia seu repertório e permite atuar em um dos ambientes de computação mais robustos do planeta.


Conclusão

Quem vem do Visual Basic não está recomeçando a carreira.

Está adicionando uma nova dimensão àquilo que já sabe fazer.

Você continuará escrevendo algoritmos.

Continuará resolvendo problemas.

Continuará construindo software.

A diferença é que agora seus programas poderão participar da infraestrutura que movimenta cartões de crédito, transferências bancárias, seguros, companhias aéreas, sistemas governamentais e grandes empresas em todo o mundo.

No Bellacosa Mainframe costumamos dizer que linguagens são ferramentas, mas engenharia de software é uma forma de pensar.

Se você aprendeu a desenvolver em Visual Basic, já possui a base mais importante: transformar necessidades do negócio em soluções confiáveis.

O IBM Z apenas leva essa engenharia a outro patamar — onde desempenho, disponibilidade, segurança e décadas de evolução caminham lado a lado.

Talvez a maior descoberta nessa jornada seja perceber que o Mainframe não é um museu da computação. É um dos lugares onde a engenharia de software mais madura continua sendo escrita, executada e aperfeiçoada todos os dias.

E há espaço para você nessa história.


Shokei Shoujo no Virgin Road : Quando um Programador COBOL Descobre que o Job Mais Importante do Sistema é Impedir que Novos Usuários Executem o Programa

Bellacosa Mainframe shokei shoujo no virgin road

 ☕ Um Café no Bellacosa Mainframe

Shokei Shoujo no Virgin Road (処刑少女の生きる道〈バージンロード〉)

Quando um Programador COBOL Descobre que o Job Mais Importante do Sistema é Impedir que Novos Usuários Executem o Programa

Se existe um anime que destrói completamente as expectativas do gênero isekai logo no primeiro episódio, esse anime é Shokei Shoujo no Virgin Road, conhecido internacionalmente como The Executioner and Her Way of Life. Em vez de contar a história do tradicional protagonista transportado para outro mundo e destinado a se tornar um herói, a obra mostra justamente o outro lado: quem precisa impedir que esses "heróis" destruam o mundo.


Dados da obra

Título original: 処刑少女の生きる道〈バージンロード〉 (Shokei Shoujo no Virgin Road)

Título em inglês: The Executioner and Her Way of Life

Autor: Mato Sato

Ilustrações: Nilitsu

Estúdio: J.C.STAFF

Diretor: Yoshiki Kawasaki

Anime: abril a junho de 2022

Episódios: 12

Origem: Light Novel

Gênero:

  • Isekai Reverso

  • Dark Fantasy

  • Ação

  • Aventura

  • Yuri

  • Drama

  • Mistério

  • Seinen

Classificação:
+16 anos (violência, temas psicológicos e mortes).  


Sinopse

Durante séculos pessoas do Japão aparecem misteriosamente naquele mundo.

Esses visitantes recebem poderes chamados Pure Concepts (Conceitos Puros).

O problema?

Esses poderes crescem sem limite.

Mais cedo ou mais tarde seus usuários enlouquecem.

E quando isso acontece...

...catástrofes continentais acontecem.

Por isso existe uma organização secreta.

As Executioners (Carrascas).

Sua missão é eliminar os japoneses antes que se tornem uma ameaça.

Nossa protagonista é justamente uma delas.


Resumo da história

Menou aparenta ser uma jovem sacerdotisa.

Na verdade ela é uma assassina profissional treinada pela Igreja.

Quando Akari Tokitou chega daquele mundo, Menou tenta executá-la imediatamente.

Mas surge um enorme problema.

Akari simplesmente...

não consegue morrer.

Seu poder manipula o tempo.

Toda tentativa de assassinato reinicia automaticamente sua própria morte.

A partir daí começa uma longa jornada onde Menou procura uma maneira definitiva de matar Akari, enquanto as duas acabam criando uma relação cada vez mais profunda. 


Principais personagens

Menou

A protagonista.

Calma.

Extremamente competente.

Foi treinada desde pequena para eliminar Lost Ones.

É provavelmente uma das protagonistas mais diferentes do gênero isekai.


Akari Tokitou

A garota japonesa invocada.

Gentil.

Ingênua.

Muito poderosa.

Seu Pure Concept controla o tempo.


Momo

Assistente de Menou.

Extremamente forte.

Possui enorme admiração (quase obsessiva) por Menou.

Grande parte do humor da série vem dela.


Ashuna

Princesa guerreira.

Carismática.

Adora lutar.

Rouba praticamente todas as cenas onde aparece.


Flare

Mestra de Menou.

Uma verdadeira lenda entre as Executioners.


O que torna esse anime diferente?

Quase tudo.

Enquanto a maioria dos isekais diz:

"Os japoneses salvarão o mundo."

Virgin Road diz:

"Os japoneses são exatamente o maior perigo do mundo."

É praticamente um anti-isekai.

O protagonista normalmente é o convocado.

Aqui a protagonista é quem precisa matá-lo.

Essa inversão de perspectiva foi um dos grandes diferenciais da obra. 


Temáticas

  • consequências do poder absoluto

  • responsabilidade

  • livre-arbítrio

  • destino

  • fanatismo religioso

  • culpa

  • sacrifício

  • memória

  • identidade

  • amor impossível


As aventuras

Durante a viagem conhecemos:

  • cidades sagradas

  • desertos mágicos

  • fortalezas religiosas

  • monstros

  • antigos experimentos

  • civilizações destruídas pelos Lost Ones

Cada arco revela um pedaço da história daquele mundo.

E principalmente...

dos quatro grandes desastres provocados por japoneses do passado.


Mensagens ocultas

O herói pode ser o vilão

A obra questiona a ideia clássica do "escolhido".

Nem todo protagonista merece sobreviver.


Poder infinito é uma maldição

Quanto maior o Pure Concept...

mais próxima está a destruição.


A Igreja não é totalmente boa

Ela protege o mundo.

Mas faz isso através de assassinatos.

Existe um enorme conflito moral.


O tempo prende tanto quanto liberta

Akari representa alguém incapaz de seguir em frente.

Seu poder simboliza justamente a impossibilidade de aceitar perdas.


Impacto cultural

Embora não tenha alcançado a popularidade de grandes isekais, Virgin Road foi bastante comentado por subverter o gênero logo em seu episódio de estreia. Também recebeu atenção por colocar duas protagonistas femininas no centro da narrativa e desenvolver um relacionamento yuri integrado à história, em vez de apenas fanservice.  


Censura

Não possui censura significativa.

As cenas violentas são moderadas.

O foco está muito mais:

  • no suspense

  • nas decisões morais

  • nos diálogos

  • nos conflitos psicológicos

do que em violência gráfica.


Light Novel

  • Início: 12 de julho de 2019

  • Autor: Mato Sato

  • Ilustrações: Nilitsu

  • Publicação: GA Bunko / SB Creative

  • Encerrada em março de 2025 com 11 volumes


Mangá

  • Início: 5 de junho de 2020

  • Arte: Ryō Mitsuya

  • Revista: Young Gangan

  • Publicado pela Square Enix, com 7 volumes.  


Games

Até o momento, a franquia não recebeu um jogo próprio para consoles ou PC. Ela permanece concentrada na light novel, mangá e anime.  


Curiosidades

  • O anime é produzido pelo estúdio J.C.STAFF, responsável por obras como Toradora!, DanMachi e A Certain Magical Index.  

  • O primeiro episódio ficou famoso por surpreender quem esperava um isekai tradicional, graças a uma grande reviravolta logo no início.

  • O título "Virgin Road" faz referência simbólica a um "caminho ainda não percorrido", reforçando o tema de romper com os clichês do gênero. 


Bellacosa Mainframe ☕

Imagine um ambiente z/OS onde todo programa vindo de fora possui autoridade UID(0), acesso APF e permissão para alterar o núcleo do sistema.

O administrador experiente não perguntaria:

"Como faço esse programa funcionar?"

Ele perguntaria:

"Como impedir que ele derrube o CPD inteiro?"

Menou é exatamente essa administradora.

Enquanto todo mundo celebra a chegada de um novo "usuário especial", ela já sabe, pela experiência, que cada nova execução pode ser o próximo ABEND capaz de destruir toda a produção.

É um dos isekais mais inteligentes da década justamente porque troca o sonho do poder absoluto pela responsabilidade de impedir uma catástrofe antes que ela aconteça.

Melvin Udall Entra no IDCAMS — O Homem que Não Aceitava Arquivo Fora de Ordem, Índice Sem BLDINDEX nem RC=8 Sem Explicação

 

Bellacosa Mainframe apresenta o idcams para o vsam

☕ Um Café no Bellacosa Mainframe

Melvin Udall Entra no IDCAMS — O Homem que Não Aceitava Arquivo Fora de Ordem, Índice Sem BLDINDEX nem RC=8 Sem Explicação

Ou: como o VSAM deixou de ser “aquele arquivo do COBOL” e revelou uma cidade inteira de CIs, CAs, catálogos, índices alternativos, backups, reorganizações e pequenos desastres esperando alguém escrever DELETE ... PURGE no dataset errado

Há pessoas que olham para um arquivo VSAM e dizem: “é só um arquivo”.

Melvin Udall, o escritor rabugento de Melhor Impossível, olharia para essa frase, ajustaria as luvas, evitaria encostar no terminal compartilhado e responderia algo como:

“Não. ‘Só um arquivo’ é o que você diz cinco minutos antes de apagar a produção.”

E, desta vez, Melvin estaria certo.

Para o programador COBOL iniciante, VSAM parece inicialmente uma sigla misteriosa usada por veteranos quando querem tornar uma reunião mais silenciosa. Você vê algo assim no programa:

SELECT ARQ-CLIENTE
    ASSIGN TO VSAM-CLIENTE
    ORGANIZATION IS INDEXED
    ACCESS MODE IS DYNAMIC
    RECORD KEY IS CLI-CPF.

E pensa: “Pronto. Tenho um arquivo indexado. O COBOL abre, lê, grava e fecha.”

Sim. Mas isso é como ver a porta de um banco e concluir que compreendeu tesouraria, segurança, auditoria, cofre, sistema antifraude, ar-condicionado do datacenter e o senhor que aparece às três da manhã perguntando por que o batch não fechou.

O programa COBOL usa o VSAM. Mas alguém precisou criar esse VSAM. Alguém precisa verificar se o arquivo existe, descobrir sua chave, conferir o espaço disponível, copiar seus registros, refazer índices, investigar mensagens estranhas e reorganizá-lo quando ele envelhece mal.

Esse alguém — ao menos na maior parte dos ambientes z/OS — conversa com o IDCAMS.

E, se Melvin Udall fosse o responsável pelo VSAM, ele não permitiria uma única chave fora de posição, um único índice alternativo esquecido ou um único RC=8 sendo tratado com a clássica frase corporativa: “mas o job terminou”.



Prólogo — O arquivo que não era apenas um arquivo

VSAM significa Virtual Storage Access Method. É uma tecnologia criada pela IBM para organizar e acessar dados no ambiente de mainframe com eficiência, previsibilidade e capacidade de sobreviver ao tipo de volume que faz uma planilha do Excel pedir aposentadoria.

Sua origem está na evolução dos sistemas IBM da família OS/VS. Antes do VSAM, havia modelos de arquivos mais separados e especializados, como sequenciais tradicionais e ISAM. Cada qual tinha seu estilo, suas limitações e seu conjunto de utilitários.

O VSAM trouxe uma visão mais integrada.

Em vez de tratar o armazenamento como uma sequência de registros soltos, ele introduziu uma organização formada por:

  • Estruturas lógicas;

  • Componentes de dados;

  • Componentes de índice;

  • Catálogos;

  • Unidades internas de leitura e gravação;

  • Controle de espaço;

  • Possibilidade de acesso direto por chave;

  • Estruturas alternativas de busca.

O VSAM não nasceu para ser “bonito” no sentido moderno da palavra. Ele nasceu para ser confiável, eficiente e administrável em ambientes nos quais perder ou duplicar uma transação não era um bug simpático: era um problema bancário, fiscal, logístico ou governamental.

E aqui começa a primeira lição Melvin Udall para o jovem padawan COBOL:

“Você pode não querer entender como o arquivo foi criado. O arquivo não tem a mesma obrigação em relação a você.”



1. IDCAMS: o administrador do condomínio VSAM

IDCAMS significa Integrated Data Cluster Access Method Services.

Pense nele como o administrador rigoroso do condomínio VSAM. Ele não processa a folha de pagamento nem calcula juros. Ele prepara o prédio onde esses dados irão morar, consulta as plantas, verifica rachaduras, copia apartamentos, troca placas, recria portarias e avisa quando alguém tentou estacionar um caminhão dentro da sala.

O IDCAMS é executado em JCL:

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

Cada DD tem seu papel:

DDFunção
EXEC PGM=IDCAMSExecuta o utilitário IDCAMS
SYSPRINTRecebe relatórios, mensagens e diagnósticos
SYSINRecebe os comandos que você quer executar
DDs adicionaisPodem indicar arquivos de entrada, saída, backup ou carga

O SYSIN é onde vivem comandos como:

DEFINE
DELETE
LISTCAT
REPRO
PRINT
VERIFY
EXAMINE
EXPORT
IMPORT
BLDINDEX
ALTER
SET

Um conselho de sobrevivência: nunca trate SYSPRINT como decoração. É ali que o IDCAMS explica o que fez, o que não fez e por que decidiu que seu plano era uma má ideia.

O RC do job indica a gravidade geral. As mensagens explicam a causa.

Melvin colocaria isso em uma moldura:

“Código de retorno não é diagnóstico. É apenas a campainha tocando.”



2. Os quatro moradores principais: KSDS, ESDS, RRDS e LDS

Antes de criar um arquivo, você precisa saber que tipo de VSAM faz sentido.

TipoComo organizaUso típico
KSDSPor chaveClientes, contas, produtos, contratos
ESDSOrdem de inclusãoLogs, eventos, trilhas de auditoria
RRDSNúmero relativo de registroTabelas com posições fixas
LDSSequência bruta de bytesProdutos especializados e estruturas próprias

O rei do cotidiano COBOL é o KSDS — Key Sequenced Data Set.

Nele, os registros são organizados pela chave. Se CPF é a chave, o VSAM sabe encontrar o cliente sem precisar ler todos os demais.

Exemplo de dados:

CPF          NOME
01234567890  ANA SILVA
12345678901  BRUNO COSTA
98765432100  CARLA MENDES

O KSDS mantém uma estrutura de índice que permite localizar o registro pela chave.

No COBOL, isso aparece em operações como:

MOVE WS-CPF-PROCURADO TO CLI-CPF
READ ARQ-CLIENTE
    KEY IS CLI-CPF
    INVALID KEY
        DISPLAY 'CLIENTE NAO ENCONTRADO'
END-READ

Mas a magia não acontece porque o COBOL “leu rápido”. Ela acontece porque o VSAM foi corretamente definido, carregado e mantido.



3. Cluster, DATA e INDEX: a casa, os móveis e o mapa

O principal objeto VSAM é o cluster.

No caso de um KSDS, há normalmente dois componentes físicos importantes:

  • DATA component: onde os registros estão;

  • INDEX component: onde estão chaves e ponteiros para localizar os registros.

A aplicação geralmente acessa o nome do cluster:

BELLACOSA.COBOL.CLIENTES.KSDS

Mas, internamente, podem existir:

BELLACOSA.COBOL.CLIENTES.KSDS.DATA
BELLACOSA.COBOL.CLIENTES.KSDS.INDEX

Imagine uma biblioteca.

O DATA é a sala onde estão os livros.

O INDEX é o catálogo que diz em qual corredor e estante o livro está.

Se o índice tem problema, o livro pode continuar fisicamente ali, mas encontrá-lo fica muito mais difícil. Se você tem uma chave definida incorretamente, é como organizar livros pelo terceiro caractere do sobrenome do autor e fingir que aquilo faz sentido.

Melvin Udall chamaria isso de “uma arquitetura concebida por alguém que odeia leitores”.


4. Criando um KSDS com DEFINE CLUSTER

Vamos criar um cadastro de clientes cuja chave é um CPF de 11 bytes a partir da posição zero do registro.

//CRIAKSDS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  DEFINE CLUSTER -
    (NAME(BELLACOSA.COBOL.CLIENTES.KSDS) -
     INDEXED -
     KEYS(11 0) -
     RECORDSIZE(150 300) -
     CYLINDERS(5 2) -
     FREESPACE(20 10) -
     SHAREOPTIONS(2 3) -
     CONTROLINTERVALSIZE(4096)) -
    DATA -
    (NAME(BELLACOSA.COBOL.CLIENTES.KSDS.DATA)) -
    INDEX -
    (NAME(BELLACOSA.COBOL.CLIENTES.KSDS.INDEX))
/*

Agora vamos fazer aquilo que evita incidentes: entender o que foi escrito.

ParâmetroO que ele faz
NAMEDefine o nome lógico do cluster
INDEXEDIndica que é um KSDS
KEYS(11 0)Chave de 11 bytes iniciando na posição zero
RECORDSIZE(150 300)Tamanho mínimo e máximo de registro
CYLINDERS(5 2)Espaço primário e secundário em cilindros
FREESPACE(20 10)Reserva espaço para futuras inclusões
SHAREOPTIONS(2 3)Define comportamento de compartilhamento
CONTROLINTERVALSIZE(4096)Tamanho de cada Control Interval
DATANome explícito do componente de dados
INDEXNome explícito do componente de índice

O parâmetro mais traiçoeiro é:

KEYS(11 0)

Ele significa:

  • A chave tem 11 bytes;

  • Ela começa no deslocamento zero.

Se no seu layout COBOL o CPF começa no byte 20, a definição deveria ser algo semelhante a:

KEYS(11 20)

Eis um exemplo de layout:

01  REG-CLIENTE.
    05 CLI-CODIGO          PIC 9(08).
    05 CLI-DT-CADASTRO     PIC 9(08).
    05 CLI-CPF             PIC 9(11).
    05 CLI-NOME            PIC X(60).
    05 CLI-EMAIL           PIC X(60).

Nesse caso, o CPF não começa no byte zero. Você precisa calcular a posição real com precisão. Não é chute, não é sensação, não é “acho que começa ali perto”.

Em mainframe, “quase certo” é apenas uma forma educada de dizer “errado”.


5. CI e CA: onde o VSAM realmente acomoda os registros

Dois conceitos assustam muita gente no início:

  • CI — Control Interval;

  • CA — Control Area.

Vamos simplificar sem mentir.

Um CI é como uma página organizada onde o VSAM coloca vários registros. É uma unidade de I/O: quando o VSAM lê ou grava, ele trabalha em torno dessas unidades.

Um CA é um conjunto de CIs.

Assim:

Cluster
  └── Control Area
        ├── Control Interval
        │     ├── Registro 1
        │     ├── Registro 2
        │     └── Espaço livre
        ├── Control Interval
        └── Control Interval

Quando você insere um registro em um KSDS, ele precisa caber em algum CI na posição correta da chave.

Se não há espaço suficiente, o VSAM pode realizar um CI Split. Se a situação envolve uma estrutura maior, pode ocorrer um CA Split.

Isso não significa automaticamente corrupção ou desastre. É o VSAM reorganizando espaço para continuar atendendo inclusões.

Mas muitos splits podem criar fragmentação e aumentar o custo de I/O.

É por isso que existe:

FREESPACE(20 10)

A ideia é reservar espaço para que futuras inserções entre chaves existentes tenham onde ficar.

  • O primeiro número representa espaço livre dentro dos CIs;

  • O segundo define uma reserva de CIs livres em cada CA.

Se seu arquivo é carregado uma vez, raramente recebe inclusões e é muito lido, exagerar no FREESPACE desperdiça espaço.

Se ele recebe inserções constantes, principalmente em posições intermediárias da chave, um FREESPACE pequeno pode transformar seu KSDS em uma cidade que cresceu sem plano diretor.

Melvin provavelmente teria uma opinião sobre bairros construídos sem planejamento.


6. REPRO: a mudança de casa dos registros

REPRO é o subcomando usado para copiar dados.

Para fazer uma carga inicial de um arquivo sequencial para um KSDS:

//CARGA    EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//ENTRADA  DD DSN=BELLACOSA.COBOL.CLIENTES.SEQ,
//            DISP=SHR
//SYSIN    DD *
  REPRO -
    INFILE(ENTRADA) -
    OUTDATASET(BELLACOSA.COBOL.CLIENTES.KSDS)
/*

Atenção: a carga inicial de KSDS deve respeitar a ordem da chave.

Se os registros chegam assim:

98765432100
01234567890
12345678901

o VSAM não ficará encantado. Em uma carga convencional, a ordem esperada é crescente:

01234567890
12345678901
98765432100

O REPRO também pode copiar de VSAM para VSAM:

REPRO -
  INDATASET(BELLACOSA.COBOL.CLIENTES.KSDS) -
  OUTDATASET(BELLACOSA.COBOL.CLIENTES.NOVO.KSDS)

Ou descarregar um VSAM para sequencial:

REPRO -
  INDATASET(BELLACOSA.COBOL.CLIENTES.KSDS) -
  OUTFILE(SAIDA)

É um comando essencial para carga, backup lógico de registros, migração e reorganização.


7. LISTCAT: o raio-X de quem não acredita em boatos

Quando alguém diz “acho que esse arquivo é KSDS”, não responda “acho que sim”.

Use LISTCAT.

//LISTA    EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  LISTCAT -
    ENT(BELLACOSA.COBOL.CLIENTES.KSDS) -
    ALL
/*

A saída pode revelar:

  • Tipo do VSAM;

  • Nome de cluster;

  • Componentes DATA e INDEX;

  • Tamanho de CI;

  • Chave e posição;

  • Espaço primário e secundário;

  • Espaço usado;

  • Volumes;

  • Datas de criação e referência;

  • Parâmetros de compartilhamento;

  • Relações com AIX e PATH.

Para listar um grupo:

LISTCAT LEVEL(BELLACOSA.COBOL) ALL

É uma ferramenta excelente para ambientes de teste abandonados por gerações anteriores. Você começa procurando um KSDS e descobre seis versões, três índices alternativos, um PATH sem dono e um dataset chamado TESTE.FINAL.DEFINITIVO.NOVO2.

A arqueologia do mainframe é real.


8. PRINT: quando olhar o dado é melhor do que imaginar o dado

PRINT permite visualizar conteúdo do dataset.

//PRINT    EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  PRINT -
    INDATASET(BELLACOSA.COBOL.CLIENTES.KSDS) -
    CHARACTER
/*

Também pode usar:

PRINT INDATASET(BELLACOSA.COBOL.CLIENTES.KSDS) HEX
PRINT INDATASET(BELLACOSA.COBOL.CLIENTES.KSDS) DUMP

Cada formato tem seu momento:

  • CHARACTER ajuda quando há texto;

  • HEX ajuda quando há campos binários, COMP, COMP-3 ou caracteres estranhos;

  • DUMP é mais técnico e detalhado.

Um registro pode parecer correto em tela, mas possuir bytes inesperados. Um campo COMP-3 gravado com layout errado pode deixar o dado aparentemente normal em parte do processo e explodir em um S0C7 na etapa seguinte.

O hex não mente. Ele apenas não se esforça para ser simpático.


9. DELETE: a palavra que Melvin não deixaria você digitar sem backup

Excluir um cluster inteiro é simples:

//APAGA    EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  DELETE BELLACOSA.COBOL.CLIENTES.KSDS CLUSTER
/*

Se há condições especiais, pode aparecer:

DELETE BELLACOSA.COBOL.CLIENTES.KSDS CLUSTER PURGE

PURGE é um parâmetro que exige cuidado. Não é um tempero para fazer o comando “funcionar melhor”. É uma autorização mais agressiva para remover o objeto sob certas condições.

Antes de executar qualquer exclusão, faça o ritual que Melvin transformaria em lei:

  1. Confira o HLQ;

  2. Confirme ambiente de teste, homologação ou produção;

  3. Faça LISTCAT;

  4. Verifique AIX e PATH associados;

  5. Garanta backup;

  6. Leia o JCL como se ele tivesse sido escrito por seu inimigo;

  7. Só então submeta.

Um DELETE errado pode terminar em segundos. A explicação ao gerente, ao auditor e ao time de recuperação costuma durar muito mais.


10. Backup lógico: EXPORT, IMPORT e a diferença entre guardar dados e preservar uma estrutura

Há duas ideias que muitos iniciantes misturam:

  • Copiar os registros;

  • Preservar uma imagem lógica do VSAM.

Com REPRO, você normalmente copia dados. É ótimo para descarregar e recarregar registros.

Com EXPORT, você cria uma exportação lógica que pode ser restaurada por IMPORT.

Exemplo de exportação:

//EXPORT   EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//BACKUP   DD DSN=BELLACOSA.BACKUP.CLIENTES.EXPORT,
//            DISP=(NEW,CATLG,DELETE),
//            SPACE=(CYL,(5,2)),
//            DCB=(RECFM=FB,LRECL=4096,BLKSIZE=0)
//SYSIN    DD *
  EXPORT BELLACOSA.COBOL.CLIENTES.KSDS -
         OUTFILE(BACKUP) -
         TEMPORARY
/*

E a restauração:

//IMPORT   EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//BACKUP   DD DSN=BELLACOSA.BACKUP.CLIENTES.EXPORT,
//            DISP=SHR
//SYSIN    DD *
  IMPORT -
    INFILE(BACKUP) -
    OUTDATASET(BELLACOSA.COBOL.CLIENTES.KSDS) -
    NEW
/*

Em produção, empresas podem usar DFSMShsm, FDR, CA Disk, ferramentas de backup corporativo, storage replication e procedimentos de disaster recovery. O IDCAMS não substitui automaticamente toda essa arquitetura.

Mas ele é importantíssimo para backup lógico, migração, laboratório e recuperação controlada.

A verdade impopular é:

Backup não testado é um arquivo de ficção científica.

Se ninguém executou um IMPORT em ambiente seguro, ninguém sabe com certeza se aquele backup salvará o dia.


11. Alternate Index: encontrar um cliente sem usar a chave principal

Suponha que seu KSDS usa CPF como chave primária. Isso é ótimo quando o usuário tem o CPF.

Mas e se o negócio pede pesquisa por agência, cidade, código do produto ou e-mail?

Você poderia criar outro arquivo inteiro. Mas isso aumenta duplicação, manutenção e risco de inconsistência.

A solução VSAM é o AIX — Alternate Index.

O AIX cria uma segunda porta de busca para o mesmo cluster base.

Primeiro, define-se o índice alternativo:

//DEFAIX   EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  DEFINE ALTERNATEINDEX -
    (NAME(BELLACOSA.COBOL.CLIENTES.AIXAG) -
     RELATE(BELLACOSA.COBOL.CLIENTES.KSDS) -
     KEYS(4 80) -
     NONUNIQUEKEY -
     UPGRADE -
     RECORDSIZE(30 30) -
     CYLINDERS(2 1)) -
    DATA -
    (NAME(BELLACOSA.COBOL.CLIENTES.AIXAG.DATA)) -
    INDEX -
    (NAME(BELLACOSA.COBOL.CLIENTES.AIXAG.INDEX))
/*

Aqui, a chave alternativa tem quatro bytes e começa na posição 80 do registro base.

Depois, constrói-se o conteúdo:

//BLDAIX   EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  BLDINDEX -
    INDATASET(BELLACOSA.COBOL.CLIENTES.KSDS) -
    OUTDATASET(BELLACOSA.COBOL.CLIENTES.AIXAG)
/*

Finalmente, criamos o PATH:

//CRPATH   EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  DEFINE PATH -
    (NAME(BELLACOSA.COBOL.CLIENTES.PATHAG) -
     PATHENTRY(BELLACOSA.COBOL.CLIENTES.AIXAG))
/*

O programa passa a acessar o PATH, que conduz ao AIX e, finalmente, ao registro no cluster base.

UNIQUEKEY ou NONUNIQUEKEY?

Se o campo é CPF, talvez seja único:

UNIQUEKEY

Se é agência, cidade, sobrenome ou situação do cliente, vários registros podem compartilhar o valor:

NONUNIQUEKEY

E não esqueça o parâmetro mais importante em muitos cenários:

UPGRADE

Com UPGRADE, o VSAM atualiza o AIX quando o cluster base é alterado. Sem isso, seu índice alternativo pode envelhecer em silêncio.

Ele continuará existindo. Ele poderá até continuar retornando resultados. Mas poderá contar uma história que já não corresponde à realidade.

Melvin Udall chamaria isso de “uma relação de trabalho completamente normal”.


12. VERIFY: quando uma queda deixa o VSAM desconfiado de si mesmo

Quando um job sofre abend, uma região cai ou há encerramento anormal, um VSAM pode precisar de verificação para alinhar certos controles internos.

O comando típico é:

//VERIFY   EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  VERIFY DATASET(BELLACOSA.COBOL.CLIENTES.KSDS)
/*

Dependendo do cenário:

VERIFY DATASET(BELLACOSA.COBOL.CLIENTES.KSDS) RECOVER

O VERIFY pode ajudar com informações de fim lógico e condições relacionadas a encerramento impróprio. Mas ele não é um super-herói de capa azul capaz de recuperar tudo.

Ele não substitui:

  • Diagnóstico;

  • Backup;

  • Recuperação corporativa;

  • Análise de mensagens;

  • Reparo de aplicação que escreveu dados errados.

Use VERIFY porque há evidência de que ele se aplica, não porque o job apresentou uma mensagem assustadora e alguém sugeriu “rodar um verify para ver se melhora”.


13. EXAMINE: o CSI dentro do Control Interval

Se VERIFY é uma checagem focada em consistência de término, EXAMINE é o investigador forense.

//EXAMINE  EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  EXAMINE NAME(BELLACOSA.COBOL.CLIENTES.KSDS) -
          INDEXTEST -
          DATATEST
/*

Em termos simples:

  • INDEXTEST verifica aspectos do componente de índice;

  • DATATEST verifica aspectos do componente de dados;

  • A análise pode revelar inconsistências estruturais, problemas internos e situações que exigem recuperação ou reconstrução.

Quando ouvir “o arquivo está corrompido”, não transforme isso em verdade antes de investigar.

Pode haver:

  • Falha de I/O;

  • Problema de catálogo;

  • Cluster aberto indevidamente;

  • Compartilhamento mal definido;

  • AIX desatualizado;

  • Registro gravado com layout incompatível;

  • Programa que fez REWRITE de forma incorreta;

  • Erro de chave;

  • Erro de concorrência;

  • Falha após abend;

  • Estrutura realmente danificada.

A frase “VSAM corrompeu” é frequentemente o equivalente técnico de “alguém mexeu aí”.

E Melvin Udall não aceitaria “alguém” como nome de responsável.


14. Reorganização: o famoso REORG que não é um botão mágico

Você escreveu “rerog”, provavelmente referindo-se a REORG — reorganização.

No VSAM, geralmente não há um único comando universal chamado simplesmente REORG, como existe em outros contextos, por exemplo no Db2. A reorganização de um VSAM costuma ser construída por etapas.

O processo clássico é:

1. Descarregar os dados com REPRO
2. Excluir ou renomear o cluster antigo
3. Criar novamente o cluster com DEFINE
4. Recarregar dados ordenados com REPRO
5. Reconstruir AIX com BLDINDEX
6. Validar e liberar o arquivo

Primeiro, descarregamos:

//UNLOAD   EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//OUTSEQ   DD DSN=BELLACOSA.TEMP.CLIENTES.UNLOAD,
//            DISP=(NEW,CATLG,DELETE),
//            SPACE=(CYL,(5,2)),
//            DCB=(RECFM=FB,LRECL=300,BLKSIZE=0)
//SYSIN    DD *
  REPRO -
    INDATASET(BELLACOSA.COBOL.CLIENTES.KSDS) -
    OUTFILE(OUTSEQ)
/*

Depois recriamos:

//REDEFINE EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  DELETE BELLACOSA.COBOL.CLIENTES.KSDS CLUSTER

  DEFINE CLUSTER -
    (NAME(BELLACOSA.COBOL.CLIENTES.KSDS) -
     INDEXED -
     KEYS(11 0) -
     RECORDSIZE(150 300) -
     CYLINDERS(10 5) -
     FREESPACE(20 10)) -
    DATA -
    (NAME(BELLACOSA.COBOL.CLIENTES.KSDS.DATA)) -
    INDEX -
    (NAME(BELLACOSA.COBOL.CLIENTES.KSDS.INDEX))
/*

Por fim, carregamos novamente:

//RELOAD   EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//INSEQ    DD DSN=BELLACOSA.TEMP.CLIENTES.UNLOAD,
//            DISP=SHR
//SYSIN    DD *
  REPRO -
    INFILE(INSEQ) -
    OUTDATASET(BELLACOSA.COBOL.CLIENTES.KSDS)
/*

Se existir AIX, execute BLDINDEX novamente.

Quando uma reorganização faz sentido?

  • Muitos CI Splits;

  • Muitos CA Splits;

  • Degradação perceptível no acesso;

  • Espaço livre mal dimensionado;

  • Crescimento histórico desorganizado;

  • Alteração estrutural planejada;

  • Migração entre ambientes;

  • Limpeza de estrutura após processo de recuperação.

Mas reorganizar não é penitência semanal. Se o sistema sempre volta a fragmentar rapidamente, investigue o padrão de inserção, tamanho do CI, chave, espaço livre, volume, concorrência e lógica de carga.

Não adianta trocar o tapete se a máquina continua derramando óleo.


15. ALTER, SET e os pequenos comandos que salvam jobs repetíveis

O ALTER permite modificar alguns atributos catalogados, como renomear objetos em contextos permitidos.

Exemplo conceitual:

ALTER BELLACOSA.COBOL.CLIENTES.KSDS -
      NEWNAME(BELLACOSA.COBOL.CLIENTES.KSDS.OLD)

Mas não tente usar ALTER para transformar qualquer atributo estrutural que você decidiu mudar numa terça-feira. Chave, posição da chave e aspectos fundamentais da organização normalmente exigem recriação controlada.

IDCAMS também permite alguma lógica de controle com IF, THEN, ELSE, DO, END e SET.

Por exemplo, em um ambiente de testes, você pode desejar apagar um arquivo e considerar aceitável que ele já não exista:

DELETE BELLACOSA.COBOL.CLIENTES.KSDS CLUSTER
IF LASTCC = 8 THEN -
   SET MAXCC = 0

Isso não significa “ignore todos os erros”. Significa tratar conscientemente uma condição esperada.

Leia os retornos com maturidade:

RCInterpretação inicial
0Operação concluída
4Aviso ou condição menor
8Erro relevante; leia as mensagens
12Erro sério
16Falha grave

A maior armadilha do iniciante é olhar somente o MAXCC.

Um RC=0 pode significar que o IDCAMS executou perfeitamente uma instrução que você escreveu errada para o objetivo de negócio.

Um RC=8 pode ser esperado em um DELETE de um dataset inexistente em teste.

O mainframe não premia quem decora números. Ele premia quem lê contexto.


16. Curiosidades escondidas no catálogo

Curiosidade número um: o VSAM não se orienta apenas pelo nome digitado no JCL. Ele depende do catálogo para saber o que aquele nome representa, onde está e quais são seus atributos.

Curiosidade número dois: um KSDS não é “um arquivo ordenado” no sentido ingênuo. É uma estrutura que mantém registros, chaves, índices, intervalos e regras de expansão.

Curiosidade número três: o AIX não precisa carregar uma cópia completa do registro base. Ele funciona como uma rota alternativa de acesso.

Curiosidade número quatro: muitos problemas atribuídos ao COBOL aparecem, na verdade, na fronteira entre definição IDCAMS, layout do registro, política de acesso e operação.

Curiosidade número cinco: a chave do VSAM não é necessariamente a chave de negócio mais “bonita”. Ela é uma decisão arquitetural. CPF pode funcionar para busca individual; data de movimento pode servir para lote; uma chave composta pode representar agência + conta + dígito. O importante é entender o padrão de acesso que o sistema precisa atender.


17. O mapa mental definitivo do jovem programador COBOL

Quando você olha um VSAM, pense nesta sequência:

COBOL
  ↓
DDNAME / JCL
  ↓
Cluster VSAM
  ├── DATA
  ├── INDEX
  ├── CI
  └── CA
  ↓
Catálogo
  ↓
Disco / Storage

Se houver pesquisa alternativa:

Aplicação
  ↓
PATH
  ↓
Alternate Index
  ↓
Cluster Base
  ↓
Registro

E se houver incidente:

Mensagens no joblog
  ↓
SYSPRINT do IDCAMS
  ↓
LISTCAT
  ↓
VERIFY ou EXAMINE, se aplicável
  ↓
Backup / REPRO / EXPORT / recuperação

Esse mapa evita a visão limitada de que “VSAM é uma cláusula no SELECT”.

Não é.

VSAM é uma estrutura de dados, uma decisão de armazenamento, um conjunto de controles operacionais e, muitas vezes, uma cápsula do tempo contendo décadas de regras de negócio.


Epílogo — Melvin Udall fecha o job

No fim do dia, Melvin Udall não ficaria impressionado porque você soube escrever:

DEFINE CLUSTER

Ele perguntaria:

  • Você sabe onde começa sua chave?

  • Conferiu RECORDSIZE contra o copybook?

  • Sua carga está ordenada?

  • Sabe se existe AIX?

  • Reconstruiu o índice após a reorganização?

  • Leu o SYSPRINT?

  • Testou o backup?

  • Sabe o que fará se o arquivo estiver aberto pelo CICS?

  • Tem certeza absoluta de que esse DELETE aponta para teste?

E, se você respondesse “acho que sim”, ele provavelmente encerraria a conversa.

Porque em VSAM, como em produção, “acho” é uma palavra perigosa.

A boa notícia é que ninguém precisa nascer sabendo CI, CA, AIX, PATH, REPRO, VERIFY e EXAMINE. Você aprende uma camada por vez. Primeiro cria. Depois carrega. Depois consulta. Depois copia. Depois investiga. Depois entende por que os veteranos ficam muito quietos quando alguém menciona PURGE.

O jovem programador COBOL evolui quando deixa de apenas abrir e fechar arquivos.

Ele evolui quando percebe que, atrás de cada READ, existe uma cidade inteira trabalhando para que o registro correto apareça no instante correto.

E, nesse dia, até Melvin Udall talvez permita um café ao seu lado.

Talvez.



terça-feira, 12 de abril de 2022

Jenkins: O JES2 da Era DevOps que Todo Padawan COBOL Precisa Entender

 

Bellacosa Mainframe apresenta o jenkins para mainframers

☕ Um Café no Bellacosa Mainframe

Jenkins: O JES2 da Era DevOps que Todo Padawan COBOL Precisa Entender

"Se você já submeteu um JOB no JES2 esperando que tudo desse certo, então já conhece metade da filosofia do Jenkins. A diferença é que, no mundo moderno, quem dispara os jobs não é mais apenas um operador. É um robô extremamente paciente que nunca esquece um passo da esteira."

Existe uma pergunta que praticamente todo programador COBOL faz quando começa a conversar com equipes DevOps:

"Mas afinal... o que exatamente é esse tal de Jenkins?"

A resposta mais simples seria:

Jenkins é um servidor de automação.

Mas essa resposta é tão incompleta quanto dizer que o JES2 "serve apenas para executar jobs".

Na prática, Jenkins é muito mais do que isso.

Para quem vem do universo IBM Z, entender Jenkins fica extremamente fácil quando fazemos as analogias corretas.

Hoje vamos tomar mais um café e descobrir que talvez você já trabalhe com algo muito parecido há décadas...


Antes de existir DevOps...

Durante muito tempo o desenvolvimento Mainframe seguia uma sequência bastante conhecida.

O programador fazia alterações.

Compilava.

Testava.

Gerava Load Module.

Alguém promovia.

Outro aprovava.

Outro copiava bibliotecas.

Outro atualizava o pacote.

Outro executava testes.

Outro validava produção.

Era um processo enorme.

Muito humano.

Muito sujeito a erros.

E principalmente...

Muito lento.

Foi justamente daí que nasceu o conceito de automação de pipelines.


Imagine um operador que nunca dorme

Imagine existir um operador que:

  • nunca esquece um passo

  • nunca pula uma etapa

  • nunca executa fora de ordem

  • nunca chega atrasado

  • trabalha 24 horas

  • registra tudo

  • avisa quando algo falha

  • envia e-mails

  • chama APIs

  • dispara testes

  • gera documentação

  • cria containers

  • publica versões

Esse operador existe.

Seu nome é Jenkins.


A analogia perfeita para um coboleiro

Pense no seguinte fluxo clássico.

Editar COBOL

↓

Compilar

↓

Link Edit

↓

Executar Teste

↓

Validar RC

↓

Gerar pacote

↓

Mover Load

↓

Atualizar ambiente

↓

Notificar equipe

Agora imagine alguém executando tudo isso automaticamente.

Isso é Jenkins.


O Jenkins é um grande Scheduler?

Sim.

Mas com superpoderes.

Ele lembra um pouco:

  • JES2

  • Control-M

  • CA-7

  • ESP

  • IZWS

  • OPC

  • TWS

Só que em vez de apenas disparar JOBs...

Ele coordena toda a cadeia de desenvolvimento.


O pipeline é o novo JCL

Para quem programa COBOL existe uma analogia maravilhosa.

Pipeline é praticamente um JCL moderno.

Veja.

No JCL:

STEP010 EXEC PGM=IGYCRCTL

STEP020 EXEC PGM=IEWL

STEP030 EXEC PGM=TESTE

STEP040 EXEC PGM=IEFBR14

Cada STEP possui dependências.

Cada RC determina o próximo passo.

Pipeline faz exatamente isso.

Stage Build

↓

Stage Test

↓

Stage Package

↓

Stage Deploy

↓

Stage Validation

É a mesma filosofia.


Jenkinsfile é praticamente um PROC moderno

Todo pipeline costuma ficar armazenado em um arquivo chamado

Jenkinsfile

Para um padawan...

Pense nele como um PROC extremamente inteligente.

Nele existe:

  • condições

  • loops

  • paralelismo

  • variáveis

  • chamadas externas

  • scripts

Tudo automatizado.


O Build

Uma palavra muito usada.

Build.

O que significa?

No Mainframe:

Compilar

+

Link Edit

+

Gerar Executável

No mundo distribuído:

Build significa exatamente isso.

Produzir algo executável.


O Jenkins compila COBOL?

Sim.

E isso surpreende muita gente.

Hoje é comum encontrar pipelines como:

Git

↓

Jenkins

↓

IBM Dependency Based Build

↓

Compilador Enterprise COBOL

↓

DB2 Bind

↓

Package

↓

Deploy

↓

Testes

↓

Produção

Tudo automático.

Sem intervenção humana.


IBM Dependency Based Build

Conhecido como

DBB.

Ele virou praticamente o "make" oficial do Mainframe.

Com ele o Jenkins entende:

  • quais programas mudaram

  • quais COPYBOOKs foram alterados

  • quais programas dependem deles

  • quais precisam recompilar

Antes disso...

Era comum recompilar milhares de programas.

Hoje recompila apenas o necessário.


O Git virou a nova PDS?

Não exatamente.

Mas quase.

Antigamente:

PDS

↓

Membro

↓

ISPF Edit

Hoje:

Git Repository

↓

Branch

↓

Commit

↓

Merge

O conceito mudou.

Mas o objetivo continua igual.

Controlar código-fonte.


Onde entra o Docker?

Aqui aparece uma dúvida enorme.

"Mas Docker roda no Mainframe?"

Sim.

E não.

Depende.


Docker não substitui o z/OS

Jamais.

Docker não executa CICS.

Não executa JES2.

Não executa DB2 z/OS.

Não executa IMS.

Não executa RACF.

Então para que serve?


Docker é o laboratório portátil

Imagine um desenvolvedor Java.

Ele precisa:

  • Maven

  • Java

  • Node

  • Python

  • Git

  • Curl

  • SDKs

  • Ferramentas IBM

Ao invés de instalar tudo...

Ele usa um Container.


O coboleiro também usa Docker

Aqui vem um dos maiores Easter Eggs do mundo Mainframe.

Muitos desenvolvedores COBOL usam Docker diariamente...

Sem perceber.

Exemplo.

Dentro do container ficam:

  • Zowe CLI

  • Git

  • Groovy

  • Python

  • DBB

  • Ferramentas de Build

  • utilitários Unix

  • scripts

O COBOL continua no Mainframe.

Mas todo o ambiente DevOps roda dentro do Container.


Outro Easter Egg

Existe quem imagine:

"Docker executa COBOL."

Na prática...

O que normalmente acontece é:

Docker

↓

Zowe CLI

↓

SSH

↓

z/OSMF

↓

JES

↓

Compilador COBOL

↓

Mainframe

Ou seja...

Docker apenas prepara o ambiente.

Quem executa continua sendo o IBM Z.


Mais um Easter Egg

Muitas empresas possuem dezenas de Jenkins.

Cada um com uma função.

Jenkins DEV

↓

Jenkins QA

↓

Jenkins Produção

↓

Jenkins Infra

Eles conversam entre si.


Jenkins conversa com o Mainframe?

Muito.

Hoje existem plugins para:

  • z/OSMF

  • Zowe

  • SSH

  • FTP

  • SFTP

  • MQ

  • REST APIs

Tudo integrado.


Pipeline típico COBOL

Imagine um Commit.

Git Push

Automaticamente.

↓

Jenkins detecta alteração

↓

Baixa código

↓

Analisa dependências

↓

Compila COBOL

↓

Executa DBB

↓

Executa testes

↓

Executa SonarQube

↓

Publica resultados

↓

Gera artefatos

↓

Promove ambiente

↓

Notifica Teams

↓

Notifica Slack

↓

Fecha Change

Tudo isso pode levar poucos minutos.


E quando algo falha?

O pipeline para.

Exatamente como um STEP retornando:

RC=12

ABEND S0C7

SQLCODE -904

O Jenkins registra tudo.

Logs.

Tempo.

Erro.

Quem fez.

Qual Commit.

Qual Branch.

Tudo.


A importância dos Logs

Um bom coboleiro aprende cedo:

Nunca ignore o SYSPRINT.

No Jenkins vale exatamente a mesma regra.

Nunca ignore:

Console Output

Ali está praticamente tudo.


Como identificar pipelines ruins?

Alguns sintomas.

Build demora horas

Normalmente existe:

  • recompilação desnecessária

  • testes redundantes

  • scripts lentos


Pipeline enorme

Às vezes um pipeline possui:

5000 linhas

Ninguém entende.

Ninguém mantém.

É igual um JCL gigantesco.


Sem versionamento

Pipeline criado diretamente pela interface.

Erro clássico.

Sempre use:

Jenkinsfile

Versionado no Git.


Sem testes

Pipeline apenas compila.

Não testa.

É praticamente entregar COBOL sem executar.


Como evoluir?

Primeiro passo.

Automatizar.

Depois.

Padronizar.

Depois.

Medir.

Depois.

Melhorar continuamente.


Métricas importantes

Tempo de Build.

Tempo de Deploy.

Quantidade de falhas.

Rollback.

Lead Time.

Change Failure Rate.

São indicadores extremamente importantes.


O Pipeline perfeito existe?

Não.

Porque software muda.

Infra muda.

Ferramentas mudam.

Negócio muda.

Pipeline também precisa evoluir.


Integração entre ambientes

Uma boa esteira normalmente possui.

Developer

↓

Sandbox

↓

Integração

↓

Homologação

↓

Pré-Produção

↓

Produção

Cada ambiente possui regras diferentes.


O Jenkins respeita aprovações?

Sim.

É muito comum existir.

Build

↓

Testes

↓

Aguardando aprovação

↓

Deploy QA

↓

Aguardando CAB

↓

Deploy Produção

Nada acontece sozinho.


Segurança

Aqui mora um perigo enorme.

Nunca coloque:

  • senhas

  • tokens

  • passwords

  • certificados

Dentro do Jenkinsfile.

Use:

Credentials.

Vault.

Secrets.


O maior erro dos iniciantes

Criar um pipeline que funciona...

Somente na máquina dele.

Isso quebra um dos princípios do DevOps.

Tudo deve ser reproduzível.


Outra armadilha

Scripts gigantes.

Exemplo.

Shell Script

800 linhas

Ninguém mantém isso.

Divida responsabilidades.


Jenkins não faz milagres

Se o processo manual é ruim...

Automatizar apenas cria um desastre mais rápido.

Primeiro melhore o processo.

Depois automatize.


Como um Padawan COBOL deve estudar?

Uma boa sequência seria.

Git

Aprenda commits.

Branches.

Merge.

Pull Request.


Linux básico

Mesmo trabalhando no z/OS.

Você verá muito:

grep

awk

sed

chmod

curl

tar

gzip

Docker

Não precisa virar especialista.

Mas saiba:

  • criar imagem

  • executar container

  • montar volume

  • entrar no bash


Jenkins

Aprenda:

Pipeline

Stages

Agents

Workspace

Artifacts

Credentials


Groovy

Não precisa dominar.

Mas entender a sintaxe ajuda muito.


Curiosidades

Uma empresa pode executar milhares de pipelines por dia.

Algumas executam dezenas por minuto.

Há pipelines que duram:

20 segundos.

Outros:

8 horas.

Tudo depende da aplicação.


Curiosidade Mainframe

Muitas empresas possuem aplicações COBOL com mais de:

40 milhões de linhas.

Sem automação seria impossível manter tudo isso.


Curiosidade interessante

Um COPYBOOK alterado pode obrigar centenas de programas a recompilar.

É justamente aí que o DBB faz enorme diferença.


Curiosidade divertida

Muitos programadores COBOL nunca abriram a interface do Jenkins.

Eles apenas fazem:

git push

E alguns minutos depois...

Recebem um e-mail dizendo:

✔ Build Success

O lado psicológico

Uma boa esteira reduz ansiedade.

Você não fica imaginando:

"Será que esqueceram de promover?"

"Será que copiaram o Load?"

"Será que executaram o Bind?"

O Jenkins lembra.

Sempre.


Fraquezas do Jenkins

Embora seja extremamente poderoso, o Jenkins também apresenta desafios que um programador Mainframe precisa conhecer.

A primeira fraqueza é a manutenção. Quanto mais pipelines personalizados uma empresa cria, maior se torna o esforço para mantê-los. Um Jenkins mal administrado acaba se transformando em uma coleção de scripts difíceis de entender, semelhante àquela PROC antiga que apenas um analista aposentado sabia alterar.

Outra limitação é a dependência de plugins. O ecossistema do Jenkins é gigantesco, mas isso significa que plugins podem ficar desatualizados, incompatíveis entre si ou apresentar vulnerabilidades de segurança. É fundamental manter uma política de atualização e testes antes de promover novas versões para ambientes produtivos.

Também existe a questão da escalabilidade. Um único servidor Jenkins executando centenas de builds simultâneos pode tornar-se um gargalo. Por isso, grandes organizações costumam distribuir a carga utilizando Agents, que funcionam como "executores remotos" capazes de processar builds em paralelo.


Vantagens para quem trabalha com IBM Z

Para o universo Mainframe, o Jenkins traz benefícios que vão muito além da simples automação:

  • Elimina tarefas repetitivas.

  • Reduz erros humanos durante promoções.

  • Padroniza o processo de compilação.

  • Garante que todos utilizem as mesmas ferramentas.

  • Facilita auditorias e conformidade.

  • Integra facilmente Git, Zowe, DBB, SonarQube e plataformas de colaboração como Teams e Slack.

  • Produz histórico completo de todas as alterações realizadas.

Isso significa menos tempo resolvendo problemas operacionais e mais tempo escrevendo código COBOL de qualidade.


O futuro do Padawan COBOL

Há alguns anos era comum imaginar que um programador Mainframe viveria apenas dentro do ISPF.

Hoje a realidade é diferente.

O profissional moderno alterna naturalmente entre:

  • VS Code

  • Git

  • Jenkins

  • Docker

  • Zowe CLI

  • APIs REST

  • Enterprise COBOL

  • JCL

  • CICS

  • DB2

  • z/OS

Ele continua sendo um especialista em Mainframe, mas agora também compreende como sua aplicação percorre toda a esteira DevOps até chegar à produção.


Conclusão

Existe uma frase bastante conhecida no mundo DevOps:

"Se um processo precisa ser executado duas vezes, ele provavelmente deveria ser automatizado."

No universo IBM Z essa ideia faz ainda mais sentido. Sistemas críticos processam milhões de transações diariamente e não podem depender da memória de uma pessoa para lembrar cada etapa de compilação, teste e implantação.

O Jenkins não substitui o conhecimento do programador COBOL. Ele não escreve regras de negócio, não resolve um S0C7 e não otimiza um SQL ruim. O que ele faz é garantir que todo o caminho entre o commit e a produção seja repetível, rastreável e confiável.

Para o Padawan COBOL, aprender Jenkins é como aprender JCL décadas atrás: no começo parece apenas mais uma ferramenta, mas logo se percebe que ela se torna parte do trabalho diário. E quanto antes você entender como Git, Docker, Zowe, DBB e Jenkins trabalham em conjunto, mais preparado estará para atuar nos ambientes IBM Z modernos.

No fim das contas, o Jenkins é o JES2 da era DevOps: recebe solicitações, organiza a execução, controla dependências, registra tudo o que aconteceu e garante que cada etapa aconteça na ordem correta. A diferença é que, agora, a esteira começa muito antes do JOB chegar ao z/OS e termina muito depois da compilação do COBOL, conectando desenvolvimento, testes, segurança, observabilidade e entrega contínua em um único fluxo automatizado.

E esse é talvez o maior easter egg de todos: muitos dos conceitos considerados "modernos" no DevOps sempre existiram no Mainframe. Apenas ganharam novas ferramentas, novos nomes e uma interface muito mais amigável. O espírito continua o mesmo: processos confiáveis, automação inteligente e qualidade acima de tudo.


segunda-feira, 11 de abril de 2022

☕💀 “OVERLORD IV” — QUANDO O REINO FEITICEIRO DEIXOU DE SER UMA AMEAÇA… E VIROU A NOVA ORDEM DO MUNDO

 

Bellacosa Mainframe e a conquista total de overlord

☕💀 “OVERLORD IV” — QUANDO O REINO FEITICEIRO DEIXOU DE SER UMA AMEAÇA… E VIROU A NOVA ORDEM DO MUNDO


☕🖥️ A QUARTA TEMPORADA É O MOMENTO EM QUE OVERLORD SE TRANSFORMA DEFINITIVAMENTE EM UMA HISTÓRIA SOBRE IMPÉRIO, BUROCRACIA E DOMINAÇÃO ABSOLUTA

As temporadas anteriores mostraram:

  • o nascimento de Nazarick;

  • sua expansão;

  • e a consolidação do Reino Feiticeiro.

Mas “Overlord IV” faz algo muito mais raro em anime:

☠️ ela mostra o que acontece DEPOIS da conquista.

Agora Ainz Ooal Gown precisa administrar um império gigantesco.

E isso muda completamente a natureza da obra.

A série deixa de ser apenas:

  • fantasia sombria;

  • guerras épicas;

  • magia overpower;

e vira algo muito mais complexo:

☕⚙️ um anime sobre administração sistêmica de um império impossível.

É quase como assistir:

um sysadmin undead tentando manter estabilidade global enquanto todos os outros países entram em colapso psicológico diante da existência dele.


📜 DADOS DA OBRA

ItemInformação
Título Originalオーバーロード IV (Ōbārōdo IV)
Título InternacionalOverlord IV
Autor OriginalKugane Maruyama
Ilustraçõesso-bin
StudioMadhouse
DireçãoNaoyuki Itou
EstreiaJulho de 2022
Episódios13
GêneroDark Fantasy, Isekai, Política, Guerra, Horror Psicológico
Classificação+17
OrigemLight Novel

☕🔥 SINOPSE DA QUARTA TEMPORADA

Após fundar oficialmente o Reino Feiticeiro, Ainz busca consolidar sua posição como governante legítimo.

Mas governar um império é muito mais difícil do que conquistá-lo.

Enquanto Nazarick cresce economicamente e militarmente:

  • nobres entram em paranoia;

  • reinos conspiram;

  • nações tentam sobreviver;

  • comerciantes manipulam mercados;

  • e o medo de Ainz começa a remodelar toda a geopolítica mundial.

Ao mesmo tempo, Ainz tenta desesperadamente parecer um líder genial…

mesmo frequentemente improvisando tudo.


☕🧠 RESUMO DA HISTÓRIA

A quarta temporada aprofunda principalmente:

  • política;

  • diplomacia;

  • administração;

  • economia;

  • propaganda;

  • terror institucional.

A guerra física continua importante…

mas agora:

☕⚙️ o verdadeiro campo de batalha é o controle da civilização.


👑 O REINO FEITICEIRO VIRA UMA SUPERPOTÊNCIA

Ainz começa a operar como chefe de estado global.

O Reino Feiticeiro oferece:

  • estabilidade;

  • segurança;

  • comida barata;

  • ordem absoluta.

E isso cria um problema gigantesco para os outros reinos.

Porque pela primeira vez:

os mortos-vivos estão administrando melhor que os humanos.

Isso é uma crítica política extremamente interessante.


☕💀 O COLAPSO DE RE-ESTIZE

A quarta temporada mostra lentamente o apodrecimento interno do Reino de Re-Estize.

Corrupção.
Nobreza incompetente.
Burocracia inútil.
Arrogância política.

Enquanto isso…

Nazarick opera com eficiência brutal.

O anime praticamente pergunta:

☕⚙️ “o que acontece quando um sistema monstruoso é mais eficiente do que governos humanos?”


🧠 PHILIP: O ERRO HUMANO QUE CAUSOU UMA CATASTROFE


Philip é um dos personagens mais importantes tematicamente.

Ele representa:

  • incompetência;

  • ego;

  • ignorância;

  • arrogância administrativa.

Ao atacar comboios do Reino Feiticeiro…

ele provoca uma reação catastrófica.

Isso mostra algo brilhante:

sistemas gigantescos frequentemente entram em guerra por causa de pequenos erros humanos.

Todo profissional de infraestrutura entende isso imediatamente.

Um pequeno erro operacional.

Uma configuração errada.

E toda a produção entra em colapso.


☕⚔️ A GUERRA FINAL CONTRA RE-ESTIZE

Quando Nazarick decide agir…

não parece guerra.

Parece:

☠️ EXECUÇÃO SISTÊMICA.

A diferença de poder é tão absurda que o anime abandona qualquer ilusão de equilíbrio militar.

As cenas transmitem:

  • inevitabilidade;

  • terror;

  • impotência;

  • colapso civilizacional.

É quase lovecraftiano.


👑 PERSONAGENS MAIS IMPORTANTES

PersonagemPapel Temático
AinzSolidão do poder absoluto
AlbedoAdministração fanática
DemiurgeEstratégia sem ética
ZanacLiderança humana realista
RennerManipulação sociopática
PhilipIncompetência destrutiva
Pandora’s ActorLealdade programada

☕⚙️ TEMÁTICAS MAIS PROFUNDAS DA TEMPORADA

☕ Administração vs humanidade

Nazarick é monstruosa.

Mas eficiente.

Os humanos são falhos.

Mas emocionalmente vivos.

A temporada constantemente pergunta:

eficiência absoluta vale o preço da humanidade?


☕ O medo como política internacional

Ainz descobre que não precisa conquistar todos os países.

O medo já faz isso automaticamente.


☕ Sistemas crescem além do controle do criador

Esse talvez seja o tema central da série inteira.

Momonga criou Nazarick como jogo.

Agora Nazarick virou:

☕💀 uma entidade organizacional autônoma.

Ela possui:

  • ideologia;

  • estrutura;

  • burocracia;

  • objetivos próprios.


☕🖥️ AINZ CONTINUA IMPROVISANDO

Esse continua sendo um dos aspectos mais geniais da obra.

Todos acreditam que Ainz possui inteligência divina.

Mas frequentemente ele apenas:

  • improvisa;

  • tenta parecer calmo;

  • copia comportamentos de liderança;

  • evita decepcionar os subordinados.

É quase uma sátira corporativa.


☕🔥 O QUE OVERLORD IV TEM DE DIFERENTE?

✅ O anime abandona estrutura tradicional de isekai

Agora parece mais:

  • fantasia política;

  • drama geopolítico;

  • administração imperial;

  • horror organizacional.


✅ O protagonista virou infraestrutura global

Ainz não é mais “personagem”.

Ele virou:

☕⚙️ sistema operacional mundial.


✅ O terror é psicológico e institucional

As pessoas não temem apenas morrer.

Temem:

  • perder autonomia;

  • perder identidade;

  • perder liberdade;

  • perder o futuro.


✅ O anime questiona eficiência extrema

Nazarick resolve problemas rapidamente.

Mas sem empatia.

Isso torna tudo profundamente perturbador.


🧠 MENSAGENS OCULTAS

☕ “Grandes impérios começam prometendo estabilidade”

O Reino Feiticeiro realmente melhora várias regiões.

Mas ao custo de:

  • submissão;

  • medo;

  • dependência total.


☕ “Pessoas incompetentes podem destruir civilizações”

Philip representa isso perfeitamente.


☕ “O poder absoluto destrói relações humanas”

Ainz está cada vez mais isolado emocionalmente.

Ninguém mais o trata como pessoa.

Só como entidade divina.


🌍 IMPACTO CULTURAL

A quarta temporada consolidou Overlord como um dos dark isekais mais políticos da era moderna.

Ela ficou famosa por:

  • geopolítica complexa;

  • personagens moralmente cinzentos;

  • crítica social;

  • horror institucional;

  • construção de império.

Além disso, Overlord ajudou a redefinir o conceito de protagonista overpower.

Ainz não vence apenas batalhas.

Ele altera completamente:

☕💀 a arquitetura do mundo.


🎼 ATMOSFERA E DIREÇÃO

A Madhouse intensifica ainda mais:

  • arquitetura monumental;

  • clima opressivo;

  • batalhas gigantescas;

  • tensão política.

A trilha sonora transmite constantemente:

“o mundo antigo está morrendo.”


☕🚀 CONCLUSÃO

“Overlord IV” é muito mais do que uma continuação.

É o momento em que a série se transforma numa reflexão sobre:

  • impérios;

  • burocracia;

  • liderança;

  • idolatria;

  • eficiência;

  • desumanização;

  • sistemas complexos.

Ainz Ooal Gown já não parece apenas um jogador preso em outro mundo.

Agora ele é:

☕⚙️ uma infraestrutura viva de poder absoluto.

Um administrador supremo operando um império necromântico como um gigantesco ambiente enterprise impossível de desligar.

E talvez a mensagem mais assustadora da temporada seja:

Nazarick não está apenas conquistando territórios.

Ela está substituindo o próprio conceito de civilização.


☕💀 FRASE QUE DEFINE OVERLORD IV

“Quando o sistema se torna mais eficiente do que a humanidade… o mundo começa a aceitar sua própria substituição.”

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