☕ 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, 5 de outubro de 2023

Goblin Slayer — Parte X : A Estratégia de Goblin Slayer Quando um Programador COBOL Descobre que Vencer Nunca Foi uma Questão de Poder...

 

Bellacosa Mainframe apresenta Goblin slayer parte x

☕ Um Café no Bellacosa Mainframe

Goblin Slayer — Parte X : A Estratégia de Goblin Slayer

Quando um Programador COBOL Descobre que Vencer Nunca Foi uma Questão de Poder... Mas de Pensar Dez Movimentos à Frente do Inimigo

"Qualquer um pode lutar uma batalha. Pouquíssimos conseguem vencer uma guerra antes mesmo da primeira espada sair da bainha."


Introdução — O Anti-Herói que Transformou Estratégia em Superpoder

Existe uma regra quase universal na fantasia moderna.

Quando o protagonista encontra um inimigo mais forte...

Ele desperta um novo poder.

Recebe uma espada lendária.

Aprende uma magia proibida.

Ou simplesmente grita mais alto.

Goblin Slayer segue exatamente o caminho oposto.

Ele nunca desperta habilidades sobrenaturais.

Nunca recebe uma bênção divina.

Nunca torna-se invencível.

Sua única evolução verdadeira acontece dentro da própria mente.

Cada aventura acrescenta um novo conhecimento.

Cada erro transforma-se em experiência.

Cada sobrevivência torna-se uma nova estratégia.

Enquanto outros personagens aumentam seus atributos.

Goblin Slayer aumenta sua capacidade de pensar.

É isso que torna sua estratégia tão fascinante.


Estratégia não é inteligência

Existe uma diferença enorme entre ser inteligente e ser estratégico.

Uma pessoa extremamente inteligente pode resolver problemas complexos.

Uma pessoa estratégica evita que esses problemas apareçam.

Goblin Slayer pertence ao segundo grupo.

Ele não gosta de improvisar.

Improviso significa que o planejamento falhou.

Sua prioridade é construir um cenário no qual o combate já comece favorecendo sua equipe.


O verdadeiro campo de batalha

A maioria acredita que o campo de batalha é o local onde ocorre a luta.

Goblin Slayer pensa diferente.

Para ele, o campo de batalha começa:

na coleta de informações.

Na escolha do equipamento.

Na análise do terreno.

Na definição da equipe.

Na previsão dos riscos.

Quando finalmente entra na caverna...

Grande parte da batalha já foi decidida.


Conhecer o inimigo

Sun Tzu escreveu, há mais de dois mil anos:

"Conhece teu inimigo e conhece a ti mesmo."

Goblin Slayer parece aplicar esse princípio em cada missão.

Ele conhece:

  • hábitos;

  • horários;

  • organização;

  • líderes;

  • pontos fracos;

  • padrões de ataque;

  • comportamento.

Enquanto outros aventureiros enxergam "monstros".

Ele enxerga um sistema.


Conhecer a si mesmo

Mas existe outro lado igualmente importante.

Goblin Slayer conhece suas limitações.

Ele sabe que:

não é o mais forte.

não é o mais rápido.

não é o melhor espadachim.

Essa consciência impede decisões impulsivas.

Ele jamais entra numa batalha acreditando ser invencível.


A estratégia da preparação

Existe um motivo pelo qual sua mochila parece sempre pesada.

Cordas.

Óleo.

Farinha.

Facas.

Lanças.

Tochas.

Ganchos.

Tudo possui finalidade.

Na estratégia, recursos preparados antecipadamente valem mais do que força improvisada.


Cada missão é diferente

Outro detalhe brilhante.

Goblin Slayer nunca reutiliza exatamente o mesmo plano.

Ele adapta.

Uma floresta exige uma estratégia.

Uma fortaleza exige outra.

Uma caverna inundada exige outra completamente diferente.

Seu método permanece constante.

Seu plano muda.

É exatamente assim que trabalham bons arquitetos de sistemas.


Nunca lutar nas condições do inimigo

Esta talvez seja sua maior regra.

Se os goblins desejam combate corpo a corpo...

Ele procura fogo.

Se esperam um ataque frontal...

Ele procura um acesso lateral.

Se contam com superioridade numérica...

Ele cria um gargalo.

A estratégia consiste em obrigar o adversário a lutar nas condições que favorecem você.


A economia da violência

Outro aspecto pouco percebido.

Goblin Slayer não aprecia combates longos.

Eles consomem energia.

Equipamentos.

Tempo.

Pessoas.

Sua estratégia procura resolver o problema utilizando o mínimo necessário de recursos.

É uma filosofia extremamente eficiente.


A estratégia da especialização

Enquanto aventureiros estudam dezenas de monstros...

Goblin Slayer dedica décadas a compreender apenas um.

Isso gera um efeito extraordinário.

Ele prevê comportamentos.

Reconhece armadilhas.

Antecipa movimentos.

Percebe detalhes que outros jamais enxergariam.

Especialização produz vantagem competitiva.


Transformando fraquezas em armas

Seu tamanho?

Não é problema.

Sua força limitada?

Também não.

Goblin Slayer constantemente transforma limitações em oportunidades.

Por ser menor que um gigante...

Move-se melhor em corredores estreitos.

Por utilizar armadura simples...

Consegue repará-la rapidamente.

Por carregar equipamentos leves...

Adapta-se mais facilmente.

Estratégia significa transformar desvantagens em vantagens.


Pensar em probabilidades

Goblin Slayer raramente trabalha com certezas.

Ele trabalha com possibilidades.

E se houver outro túnel?

E se existir um Champion?

E se a ponte desabar?

E se aparecer um Shaman?

Essa forma de pensar reduz surpresas.


Redundância

Uma característica típica da engenharia.

Sempre existe um plano reserva.

Se perder a espada...

Existe uma faca.

Se faltar luz...

Existe fogo.

Se o grupo separar-se...

Há sinais combinados.

Redundância aumenta sobrevivência.


Informação vale mais que força

Muitos conflitos são vencidos antes do primeiro golpe.

Quem conhece o terreno.

Quem conhece o inimigo.

Quem conhece as rotas.

Quem conhece os riscos.

Parte com enorme vantagem.

Goblin Slayer investe tempo em informação porque sabe que ela economizará sangue.


O uso da surpresa

Outra estratégia recorrente.

Nunca permitir que os goblins antecipem sua próxima ação.

Às vezes utiliza fogo.

Depois água.

Depois fumaça.

Depois armadilhas.

Depois explosões.

A imprevisibilidade torna-se arma.


A iniciativa

Existe um princípio militar clássico.

Quem controla a iniciativa obriga o adversário a reagir.

Goblin Slayer procura exatamente isso.

Ele nunca deseja responder aos goblins.

Quer que os goblins respondam às suas ações.

Quem conduz o ritmo geralmente controla a batalha.


A importância da disciplina

Nenhuma estratégia funciona sem disciplina.

Por isso Goblin Slayer insiste tanto em procedimentos.

Verificar equipamentos.

Recontar munição.

Inspecionar entradas.

Revisar planos.

São tarefas aparentemente simples.

Mas evitam erros fatais.


O grupo como multiplicador

Ele nunca tenta fazer tudo sozinho.

Cada integrante possui função específica.

Priestess protege.

High Elf Archer fornece ataque à distância.

Dwarf Shaman controla o ambiente.

Lizard Priest oferece apoio mágico e físico.

Uma equipe equilibrada produz resultados muito superiores ao esforço isolado.


O longo prazo

Talvez a característica mais impressionante.

Goblin Slayer nunca pensa apenas na missão atual.

Ele pergunta:

Se deixarmos alguns vivos...

O que acontecerá daqui a seis meses?

Se destruirmos apenas metade da tribo...

Quantas aldeias serão atacadas depois?

Sua estratégia ultrapassa o combate imediato.

Ela considera consequências futuras.


O pensamento sistêmico

Aqui encontramos um paralelo perfeito com os grandes sistemas corporativos.

Um programador iniciante corrige apenas o erro apresentado.

Um arquiteto experiente pergunta:

Por que esse erro surgiu?

O que permitiu que ele acontecesse?

Como impedir que retorne?

Goblin Slayer pensa exatamente dessa maneira.

Ele elimina a causa.

Não apenas o sintoma.


O tabuleiro invisível

É interessante observar que Goblin Slayer parece enxergar cada missão como um jogo de xadrez.

Os goblins movimentam uma peça.

Ele responde duas jogadas antes.

Quando finalmente ocorre o confronto...

Na prática ele já havia imaginado dezenas de cenários possíveis.

Essa antecipação reduz drasticamente o espaço para improvisação.


A estratégia do invisível

Curiosamente, suas maiores vitórias quase nunca recebem reconhecimento.

Porque estratégia eficiente costuma ser invisível.

As pessoas lembram da batalha.

Esquecem:

do reconhecimento.

Da logística.

Do planejamento.

Da preparação.

Da coleta de informações.

Assim também acontece nos data centers.

Quase ninguém percebe um sistema que funciona perfeitamente.

Mas todos notam imediatamente quando ele falha.


A filosofia da vitória

Ao longo da série, Goblin Slayer demonstra uma ideia muito madura.

Vencer não significa destruir tudo.

Significa cumprir o objetivo.

Com segurança.

Com eficiência.

Com o menor número possível de perdas.

Essa definição aproxima muito mais sua mentalidade da estratégia militar clássica do que das fantasias heroicas convencionais.


A estratégia e o pensamento COBOL

No Bellacosa Mainframe existe uma lição semelhante.

Os melhores profissionais não escrevem apenas programas.

Eles desenham soluções.

Pensam em desempenho.

Segurança.

Recuperação.

Disponibilidade.

Escalabilidade.

Observabilidade.

Governança.

Goblin Slayer faria exatamente isso se fosse arquiteto de sistemas.

Antes de escrever uma única linha de COBOL...

Ele perguntaria:

"O que pode acontecer daqui a dez anos?"

Essa é a essência da estratégia.

Pensar muito além do problema imediato.


Conclusão — O Xadrez Invisível das Cavernas

Kumo Kagyu criou um protagonista que vence utilizando aquilo que raramente recebe destaque na fantasia.

Pensamento.

Planejamento.

Disciplina.

Antecipação.

Análise.

Adaptação.

Goblin Slayer prova que estratégia não é um talento misterioso.

É um processo.

Uma forma de observar o mundo.

Uma disciplina construída missão após missão.

No universo dos mainframes, sistemas de missão crítica continuam funcionando por décadas não porque foram escritos por gênios capazes de improvisar soluções diariamente.

Eles sobrevivem porque arquitetos experientes imaginaram, anos antes, problemas que ainda nem haviam acontecido.

Goblin Slayer segue exatamente essa filosofia.

Ele não espera o perigo aparecer.

Ele procura entendê-lo antes.

Porque sabe que a maior vitória nunca acontece quando a espada acerta o inimigo.

A maior vitória acontece quando o inimigo descobre, tarde demais, que toda a batalha já havia sido vencida muito antes do primeiro golpe.

Um Café no Bellacosa Mainframe

ARQUIVOS DA GUILDA • CLASSIFICAÇÃO: DARK FANTASY

Goblin Slayer sem Mistérios

O Guia Definitivo da Série Completa

Uma jornada por cronologia, psicologia, biologia, estratégia, engenharia militar, referências culturais, simbolismos e os segredos escondidos de Goblin Slayer.

“Quando um Programador COBOL Descobre que Grandes Obras Também Precisam de um Mapa para Não se Perder na Dungeon.”
Explorar a série
RELATÓRIO DE MISSÃO

Uma série construída como uma campanha de RPG

Goblin Slayer sem Mistérios é uma coleção especial do Bellacosa Mainframe dedicada à análise profunda da obra criada por Kumo Kagyu. Cada capítulo investiga uma camada diferente da franquia, relacionando fantasia sombria, RPG de mesa, estratégia, trauma, sobrevivência, engenharia militar e arquitetura de sistemas.

A coleção foi organizada em ordem cronológica para facilitar a leitura. Você pode começar pela Parte I, seguir capítulo após capítulo ou utilizar os filtros para selecionar assuntos como psicologia, goblins, táticas, história da franquia e cultura otaku.

Todos os títulos abaixo são links HTML reais e permanecem acessíveis mesmo quando o JavaScript estiver desativado. Isso facilita a navegação dos leitores e a descoberta das páginas por mecanismos de busca.

Progresso da campanha 0 de 14 missões visitadas
14 capítulos encontrados
I
Introdução

Goblin Slayer sem Mistérios — Parte I

O ponto de entrada da campanha. Uma análise sobre o herói invisível que não salva o mundo em uma única batalha, mas impede silenciosamente que ele desmorone todos os dias.

Heroísmo Disciplina Mainframe
II
Disciplina

Goblin Slayer sem Mistérios — Parte II

O verdadeiro poder não está na espada, mas na constância de levantar, preparar os equipamentos e executar diariamente o trabalho que quase ninguém deseja assumir.

Rotina Dever Persistência
III
Missão crítica

Goblin Slayer sem Mistérios — Parte III

Nem todo herói enfrenta o Rei Demônio. Alguns garantem que na segunda-feira existirão sistema, salários, luz e uma aldeia inteira ainda de pé.

Disponibilidade Proteção Responsabilidade
IV
Arquitetura

Parte IV — O Arquiteto Invisível de Goblin Slayer

Uma reflexão sobre profissionais que projetam soluções, previnem desastres e permanecem atrás do terminal enquanto o restante do mundo apenas percebe que tudo continua funcionando.

Arquitetura COBOL Prevenção
V
Cronologia

Parte V — A Evolução Cronológica Completa da Franquia

Da publicação original às light novels, mangás, adaptações, spin-offs, filme e temporadas do anime: a evolução de uma história que cresceu release após release.

Web Novel Light Novel Anime
VI
Biologia

Parte VI — A Biologia dos Goblins

Anatomia, comportamento, adaptação, hierarquia e ecologia dos goblins analisados como uma espécie invasora capaz de explorar brechas e evoluir rapidamente.

Ecologia Adaptação Worldbuilding
VII
Referências

Parte VII — As Referências Escondidas de Goblin Slayer

Conan, Berserk, Tolkien, Dungeons & Dragons, Sword World RPG, literatura fantástica, mitologia e cultura pop escondidos entre as linhas da obra de Kumo Kagyu.

RPG Literatura Cultura pop
VIII
Psicologia

Parte VIII — A Psicologia Profunda de Goblin Slayer

Trauma, hipervigilância, isolamento, necessidade de controle, resiliência e reconstrução emocional por meio das relações que lentamente devolvem humanidade ao protagonista.

Trauma Memória Resiliência
IX
Engenharia militar

Parte IX — A Engenharia Militar de Goblin Slayer

Reconhecimento, suprimentos, redundância, controle do terreno, fortificação, retirada e arquitetura operacional transformam batalhas perigosas em vitórias planejadas.

Logística Terreno Contingência
X
Estratégia

Parte X — A Estratégia de Goblin Slayer

Uma análise sobre informação, iniciativa, especialização, probabilidades, redundância e a capacidade de pensar diversos movimentos à frente do adversário.

Planejamento Inteligência Antecipação
XI
100 segredos

Parte XI — Os 100 Segredos de Goblin Slayer

Cem detalhes sobre personagens, mundo, goblins, equipamentos, narrativa, simbolismos, RPG, produção, psicologia e estratégia que podem passar despercebidos até pelos fãs.

Easter eggs Simbolismos Curiosidades
XII
Guia completo

Parte XII — Goblin Slayer sem Mistérios

O mapa da campanha: introdução, sequência recomendada, resumo dos capítulos e orientação para explorar todas as camadas da coleção sem se perder na dungeon.

Índice Mapa Ordem de leitura
FINAL
Síntese definitiva

Por Que Goblin Slayer É uma das Melhores Obras de Dark Fantasy

A conclusão da jornada, reunindo cronologia, psicologia, estratégia, engenharia militar, simbolismos, referências culturais, construção de mundo e impacto na cultura otaku.

Dark Fantasy Síntese Conclusão
BÔNUS
Dossiê militar

A Composição do Exército Goblin em The Fate of an Adventurer

Rei Goblin, estado-maior, Champions, Shamans, arqueiros, infantaria, Riders, logística e cadeia de comando analisados como componentes de uma força militar organizada.

Exército Goblin Hierarquia Ordem de batalha
ROTA RECOMENDADA

Como percorrer esta dungeon

Comece pelas três primeiras partes para compreender a proposta da série. Depois visite o Arquiteto Invisível, conheça a evolução da franquia e aprofunde-se em biologia, referências, psicologia, engenharia militar e estratégia.

  1. 01 Fundamentos do herói invisível
  2. 02 História e evolução da franquia
  3. 03 Biologia e organização dos goblins
  4. 04 Psicologia e simbolismos
  5. 05 Engenharia militar e estratégia
  6. 06 Segredos, guia completo e síntese final
Bellacosa Mainframe Dark Fantasy • Anime • RPG • COBOL • Estratégia

“A vitória não é improviso. É arquitetura.”

quarta-feira, 4 de outubro de 2023

🌳 ALAN TURING E O IMS DOS AGENTES — QUANDO O MUNDO VIROU UMA ÁRVORE

 

Bellacosa Mainframe e os grafos do conhecimento

☕ UM CAFÉ NO BELLACOSA MAINFRAME

🌳 ALAN TURING E O IMS DOS AGENTES — QUANDO O MUNDO VIROU UMA ÁRVORE

IMS, agentes de IA, bancos hierárquicos, segmentos, root, parent, child, twins, PCB, PSB, DBD, DL/I, SSA, GU, GN, GNP, ISRT, REPL, DLET, COBOL, contexto, navegação, memória, estado, relacionamentos — e o dia em que Alan Turing descobriu que encontrar um filho pode ser fácil, desde que você saiba quem é o pai.



🎬 PRÓLOGO — ONDE ESTÁ O PEDIDO 8472?

O pequeno agente já estava ficando convencido.

Depois de sobreviver a RACF, SDSF, WLM, JES2, CICS, Db2 e MQ, começava a acreditar que finalmente compreendia sistemas corporativos.

Entrou no CPD com aquela confiança típica de quem acabou de descobrir SQL.

Alan Turing estava tomando café.

— Professor, pode mandar qualquer banco de dados.

Turing levantou uma sobrancelha.

— Qualquer um?

— Qualquer um.

— Encontre o item 0003 do pedido 8472 do cliente 12345.

O agente sorriu.

— Fácil.

Digitou:

SELECT *
FROM ORDER_ITEM
WHERE CUSTOMER_ID = 12345
  AND ORDER_ID    = 8472
  AND ITEM_ID     = 3;

Silêncio.

Nada aconteceu.

— Professor?

— Não estamos no Db2.

— Então qual é a tabela?

— Não existe tabela.

O robô piscou.

— Como assim não existe tabela?

Turing desenhou no quadro:

CUSTOMER
│
├── ORDER 8471
│   ├── ITEM 001
│   └── ITEM 002
│
├── ORDER 8472
│   ├── ITEM 001
│   ├── ITEM 002
│   └── ITEM 003
│
└── ORDER 8473
    └── ITEM 001

O agente ficou alguns segundos olhando.

— Isso é uma árvore.

— Exatamente.

— Então eu preciso procurar o item?

— Sim.

— Pelo número?

— Também.

— Mas preciso chegar primeiro ao pedido?

— Sim.

— E para chegar ao pedido...

Turing aponta para o topo.

CUSTOMER 12345

O robô olha para ele.

Depois para a árvore.

Depois novamente para ele.

— Preciso saber quem é o pai.

Turing sorri.

— Bem-vindo ao IMS.



🌳 CAPÍTULO 1 — NEM TODO BANCO DE DADOS É UMA TABELA

Para quem começou estudando bancos relacionais, banco de dados parece quase sinônimo de:

TABLE
ROW
COLUMN

Você aprende:

SELECT
INSERT
UPDATE
DELETE
JOIN

e naturalmente começa a imaginar o mundo inteiro dessa maneira.

Cliente:

CUSTOMER

Pedido:

ORDER

Item:

ORDER_ITEM

Em um modelo relacional poderíamos representar:

CUSTOMER
--------
CUSTOMER_ID
NAME

ORDER
-----
ORDER_ID
CUSTOMER_ID
DATE

ORDER_ITEM
----------
ORDER_ID
ITEM_ID
PRODUCT_ID
QUANTITY

Depois relacionamos tudo por chaves.

Mas bancos hierárquicos partem de outra ideia.

Em vez de imaginar conjuntos de tabelas relacionadas, imagine:

UMA ÁRVORE.

CUSTOMER
│
├── ORDER
│   │
│   ├── ITEM
│   ├── ITEM
│   └── ITEM
│
└── ORDER
    │
    ├── ITEM
    └── ITEM

A posição de uma informação na hierarquia importa.

Não estamos apenas perguntando:

Qual registro possui ITEM-ID 003?

Podemos estar perguntando:

Qual ITEM 003 pertencente ao ORDER 8472 pertencente ao CUSTOMER 12345?

Isso muda profundamente a maneira de navegar pelos dados.



🦖 CAPÍTULO 2 — MAS O QUE DIABOS É IMS?

IMS significa:

Information Management System.

É uma família histórica e importantíssima de tecnologias IBM para mainframe.

Dentro do universo IMS, dois grandes mundos aparecem:

IMS DB

e:

IMS TM

De forma introdutória:

IMS DB

Gerenciamento de bancos de dados, tradicionalmente associado ao modelo hierárquico.

IMS TM

Transaction Manager, responsável pelo processamento transacional de aplicações e mensagens.

Ou seja, IMS não é simplesmente:

“um banco de dados velho”.

Ele faz parte de uma infraestrutura transacional de enorme importância no universo corporativo.

Bancos, seguradoras, telecomunicações, governo, companhias aéreas e grandes organizações construíram sistemas críticos sobre tecnologias desse ecossistema.

Para nosso programador COBOL iniciante, porém, vamos começar pelo monstro mais visível:

A HIERARQUIA.



🌲 CAPÍTULO 3 — ROOT, PARENT E CHILD

Toda árvore precisa começar em algum lugar.

No topo encontramos o:

ROOT SEGMENT.

Imagine:

CUSTOMER

como root.

Abaixo dele:

ORDER.

CUSTOMER é:

PARENT

de ORDER.

ORDER é:

CHILD

de CUSTOMER.

Agora colocamos:

ITEM

abaixo de ORDER.

Temos:

CUSTOMER
   │
   └── ORDER
          │
          └── ITEM

Nesse relacionamento:

ORDER

é pai de:

ITEM.

E ao mesmo tempo filho de:

CUSTOMER.

Exatamente como uma árvore genealógica.

Alan Turing escreve:

LUIGI
│
└── MARIO
    │
    └── PEACH

O programador protesta:

— Professor, isso está genealogicamente errado.

Turing apaga.

— Estava verificando se você ainda estava prestando atenção.

🥚 Easter egg detectado.



👯 CAPÍTULO 4 — E OS TWINS?

Imagine:

CUSTOMER 12345
│
├── ORDER 8471
├── ORDER 8472
└── ORDER 8473

Os três ORDERs possuem o mesmo pai.

Em terminologia IMS, ocorrências do mesmo tipo de segmento sob o mesmo parent podem ser chamadas de:

TWINS.

Não significa que os dados sejam idênticos.

Significa que ocupam posições equivalentes dentro daquela relação hierárquica.

O mesmo acontece:

ORDER 8472
│
├── ITEM 001
├── ITEM 002
└── ITEM 003

Esses ITEMs são ocorrências irmãs daquele tipo sob o mesmo ORDER.

Isso será importante quando começarmos a navegar.


🧭 CAPÍTULO 5 — NO SQL VOCÊ DESCREVE O QUE QUER

No Db2 podemos escrever:

SELECT NAME
FROM CUSTOMER
WHERE CUSTOMER_ID = 12345;

Em linguagem declarativa, estamos basicamente dizendo:

Quero isto.

O banco determina um caminho de acesso adequado com base em vários fatores.

No universo clássico do IMS e DL/I, a navegação é muito mais explícita.

Nosso programa precisa compreender:

onde está
de onde veio
qual segmento procura
qual relacionamento está seguindo
qual posição de navegação possui

Por isso o programador IMS desenvolve uma espécie de mapa mental da árvore.

Ele não pensa apenas:

Quero ITEM 003.

Pensa:

CUSTOMER 12345
      ↓
ORDER 8472
      ↓
ITEM 003

O caminho faz parte do problema.


🗺️ CAPÍTULO 6 — O DBD É O MAPA DO REINO

Precisamos descrever o banco.

Entra o:

DBD — Database Description.

Conceitualmente, o DBD descreve características estruturais do banco IMS.

Para nosso iniciante, pense nele como parte do mapa técnico que diz:

qual banco existe
quais segmentos existem
como estão relacionados
quais campos/chaves são relevantes
como a estrutura está organizada

Uma representação didática:

DBD CUSTOMERDB

CUSTOMER
   │
   ├── ORDER
   │      │
   │      └── ITEM
   │
   └── ADDRESS

O DBD ajuda a definir a estrutura do mundo.

Mas surge outra pergunta:

O programa precisa enxergar tudo?

Nem sempre.


🪪 CAPÍTULO 7 — PSB: O QUE ESTA APLICAÇÃO PODE ENXERGAR?

Entra outro acrônimo clássico:

PSB — Program Specification Block.

Didaticamente, podemos pensar no PSB como a descrição da visão e dos recursos de banco/mensagem necessários para determinada aplicação.

Alan Turing desenha:

BANCO COMPLETO
────────────────

CUSTOMER
├── ORDER
│   └── ITEM
├── ADDRESS
├── CREDIT
└── HISTORY

Mas nosso programa talvez precise apenas de:

CUSTOMER
└── ORDER
    └── ITEM

O agente pergunta:

— Então o programa não precisa necessariamente receber o mapa inteiro do universo?

— Excelente.

Essa ideia nos levará diretamente aos agentes de IA.

Mas ainda falta uma peça.


📋 CAPÍTULO 8 — PCB: A JANELA OPERACIONAL

Dentro desse modelo aparece o:

PCB — Program Communication Block.

Para uma introdução, pense nele como uma estrutura pela qual a aplicação interage com determinados recursos IMS e recebe informações de status relacionadas às operações.

Em programas COBOL IMS tradicionais, o PCB é importantíssimo na comunicação com DL/I.

Depois de uma operação, você não deveria simplesmente pensar:

Fiz a chamada, portanto funcionou.

Você verifica o:

STATUS CODE.

Mainframeiro experiente já começou a sorrir.

Porque acabamos de reencontrar uma velha filosofia:

NÃO CONFIE. VERIFIQUE O RETORNO.

Nosso MAXCC dos Agentes está batendo na porta novamente.


☎️ CAPÍTULO 9 — DL/I: A CONVERSA COM O IMS

Um nome fundamental:

DL/I — Data Language/I.

Aplicações podem utilizar chamadas DL/I para acessar dados IMS.

Em vez de:

SELECT ...

vamos encontrar operações clássicas como:

GU
GN
GNP
ISRT
REPL
DLET

O iniciante olha para a lista.

— Parece ISPF depois de alguém derrubar café no teclado.

Calma.

Vamos traduzir.


🎯 CAPÍTULO 10 — GU: GET UNIQUE

GU significa:

Get Unique.

Queremos recuperar uma ocorrência específica.

Conceitualmente:

GU CUSTOMER 12345

Pense:

Localize este segmento específico.

Podemos imaginar nosso agente procurando:

CUSTOMER-ID = 12345.

Em COBOL, de maneira puramente didática e simplificada:

CALL 'CBLTDLI' USING
     GU-FUNCTION
     CUSTOMER-PCB
     CUSTOMER-IO-AREA
     CUSTOMER-SSA.

Não memorize essa linha como receita universal.

O objetivo aqui é perceber a estrutura mental:

FUNÇÃO
PCB
ÁREA DE DADOS
CRITÉRIO DE SELEÇÃO

Agora apareceu outro acrônimo.

Claro que apareceu.

Estamos no mainframe.

☕


🔍 CAPÍTULO 11 — SSA: DIGA QUAL SEGMENTO VOCÊ QUER

SSA significa:

Segment Search Argument.

É uma forma de indicar segmentos e, quando qualificada, critérios usados na busca.

Conceitualmente:

CUSTOMER
WHERE CUSTOMER-ID = 12345

Podemos imaginar:

CUSTOMER SSA

e depois:

ORDER SSA

e:

ITEM SSA.

Queremos:

CUSTOMER 12345
      ↓
ORDER 8472
      ↓
ITEM 003

Podemos fornecer um caminho hierárquico que ajude a localizar exatamente a ocorrência desejada.

A grande sacada é:

CONTEXTO E CAMINHO IMPORTAM.


➡️ CAPÍTULO 12 — GN: GET NEXT

Agora queremos navegar.

Usamos conceitualmente:

GN — Get Next.

Imagine:

CUSTOMER 12345
│
├── ORDER 8471
├── ORDER 8472
└── ORDER 8473

Depois de posicionados em determinado ponto, podemos solicitar a próxima ocorrência dentro da navegação aplicável.

É como caminhar pela árvore.

GET
NEXT
NEXT
NEXT

Isso parece simples.

Mas existe uma diferença filosófica gigantesca em relação a simplesmente perguntar ao banco:

SELECT *
FROM ORDER;

Estamos mantendo:

POSIÇÃO.

Nosso programa possui contexto de navegação.

Guarde essa palavra:

POSITION.

Ela será importantíssima para agentes.


👨‍👧 CAPÍTULO 13 — GNP: GET NEXT WITHIN PARENT

Agora a coisa fica deliciosa.

Temos:

CUSTOMER
│
├── ORDER A
│   ├── ITEM 1
│   └── ITEM 2
│
└── ORDER B
    ├── ITEM 1
    └── ITEM 2

Estamos dentro de:

ORDER A.

Queremos continuar procurando filhos daquele pai.

Entra conceitualmente:

GNP — Get Next within Parent.

Ou seja:

Continue dentro deste contexto parental.

Isso é muito importante.

Porque:

ITEM 1

sozinho não conta toda a história.

Precisamos saber:

ITEM 1
OF ORDER A.

O pai define contexto.


🧠 CAPÍTULO 14 — ALAN TURING ENCONTRA O PRIMEIRO PARALELO COM AGENTES

Turing escreve:

ITEM 003

Pergunta:

— O que é isto?

O agente responde:

— Item três.

— De qual pedido?

Silêncio.

Turing acrescenta:

ORDER 8472
   └── ITEM 003

— Agora?

— Item três do pedido 8472.

Turing acrescenta:

CUSTOMER 12345
   └── ORDER 8472
       └── ITEM 003

— Agora?

O agente responde:

— Item três do pedido 8472 do cliente 12345.

Turing sorri.

O MESMO NÓ GANHA SIGNIFICADO PELO CAMINHO QUE NOS LEVOU ATÉ ELE.

E aqui IMS encontra inteligência artificial.


🤖 CAPÍTULO 15 — AGENTES TAMBÉM PRECISAM DE CONTEXTO HIERÁRQUICO

Imagine uma conversa:

CLIENTE
└── VIAGEM
    └── HOTEL
        └── RESERVA

O usuário diz:

Cancele.

Cancele o quê?

Sem contexto:

CANCEL

é perigoso.

Com contexto:

CLIENTE
└── VIAGEM PARA EDIMBURGO
    └── HOTEL
        └── RESERVA 8821
            └── CANCELAR

Agora temos significado.

Um agente não deveria possuir apenas uma enorme sopa de tokens.

Pode ser extremamente útil modelar contexto como estruturas explícitas:

USER
│
├── PROJECT
│   ├── TASK
│   │   ├── DOCUMENT
│   │   └── DECISION
│   └── TASK
│
└── TRAVEL
    ├── FLIGHT
    └── HOTEL

Não estou dizendo que um LLM “é um IMS”.

Não é.

A analogia está na arquitetura do contexto:

informação organizada por relações pode ser mais útil do que informação simplesmente acumulada.


🧩 CAPÍTULO 16 — CONTEXTO NÃO É APENAS MEMÓRIA

Existe uma tentação perigosa em agentes:

Vamos colocar tudo no prompt.

Então aparece:

200 páginas
3.000 mensagens
48 documentos
17 APIs
histórico inteiro do cliente
logs
políticas
manuais

e alguém chama isso de:

CONTEXT.

Não.

Isso pode ser apenas:

UM DEPÓSITO.

O IMS nos oferece uma provocação arquitetural interessante.

Talvez devamos perguntar:

qual é o root?
qual é o parent?
qual é o child?
qual caminho importa?
qual subárvore precisamos?

Em vez de entregar o universo inteiro ao agente, entregamos a parte relevante da árvore.


✂️ CAPÍTULO 17 — CONTEXT PRUNING ENCONTRA A ÁRVORE

Imagine:

CUSTOMER
├── ACCOUNT
│   ├── BALANCE
│   └── TRANSACTIONS
├── INSURANCE
├── MORTGAGE
├── MARKETING
└── SUPPORT

O agente está respondendo:

Qual meu saldo?

Talvez precise:

CUSTOMER
└── ACCOUNT
    └── BALANCE

Não precisa necessariamente carregar:

MARKETING
MORTGAGE
SUPPORT HISTORY

inteiros.

Podemos podar a árvore de contexto.

FULL CONTEXT
      ↓
RELEVANT SUBTREE
      ↓
AGENT

Isso pode reduzir:

tokens
latência
custo
ruído
risco de confusão
exposição desnecessária

Olha o RACF sorrindo novamente.

Menos contexto também pode significar:

MENOR SUPERFÍCIE DE EXPOSIÇÃO.


🔐 CAPÍTULO 18 — PSB ENCONTRA LEAST PRIVILEGE

Lembra do PSB?

Uma aplicação recebe a visão e os recursos necessários para seu trabalho.

Agora imagine um agente.

Agente de cobrança:

CUSTOMER
├── ACCOUNT
├── DEBT
└── PAYMENT

Agente de marketing:

CUSTOMER
├── PROFILE
└── CAMPAIGN

Por que o agente de marketing deveria receber:

ACCOUNT PASSWORD
PAYMENT CREDENTIALS
INTERNAL FRAUD NOTES

se não precisa?

Nossa analogia conceitual:

PSB
↓
APPLICATION VIEW

torna-se:

AGENT CONTEXT POLICY
↓
MINIMUM NECESSARY VIEW.

RACF responde do corredor:

— FINALMENTE VOCÊS ESTÃO APRENDENDO!

😂


🧬 CAPÍTULO 19 — O PROBLEMA DO FILHO SEM PAI

Imagine um RAG retornando:

STATUS = ACTIVE

Excelente.

Ativo o quê?

Cliente?

Contrato?

Cartão?

Conta?

Apólice?

Promoção?

Um fragmento semanticamente semelhante pode ser inútil sem seus ancestrais contextuais.

Em uma representação hierárquica:

CUSTOMER 12345
└── CREDIT_CARD 8821
    └── STATUS ACTIVE

temos muito mais significado.

Portanto uma estratégia de recuperação pode considerar não apenas:

CHUNK

mas também:

ANCESTORS
PATH
ENTITY
RELATIONSHIP
VERSION
TIMESTAMP
SOURCE.

Nosso Db2 dos Agentes volta:

De quando é?

O IMS acrescenta:

Filho de quem?


🧭 CAPÍTULO 20 — O CAMINHO TAMBÉM É PROVENIÊNCIA

Imagine que o agente responde:

O limite é R$ 5.000.

Perguntamos:

— De onde veio?

Resposta ruim:

DOCUMENT 883.

Resposta melhor:

CUSTOMER 12345
└── ACCOUNT 9981
    └── CREDIT_POLICY
        └── LIMIT
            VALUE = 5000

Agora podemos registrar:

SOURCE
PATH
VERSION
READ_AT
VALID_AT.

Isso mistura duas lições anteriores.

Do Db2:

WHEN?

Do IMS:

WHERE IN THE HIERARCHY?

Nosso agente começa a enxergar realidade não apenas como valores, mas como:

VALORES DENTRO DE CAMINHOS, VERSÕES E TEMPO.


✍️ CAPÍTULO 21 — ISRT: INSERINDO UM NOVO FILHO

Agora precisamos modificar a árvore.

Uma função clássica:

ISRT — Insert.

Imagine:

CUSTOMER 12345
└── ORDER 8472

Queremos adicionar:

ITEM 004.

Conceitualmente:

CUSTOMER 12345
└── ORDER 8472
    ├── ITEM 001
    ├── ITEM 002
    ├── ITEM 003
    └── ITEM 004  ← NOVO

Mas observe algo importante.

Para inserir corretamente o filho, precisamos identificar o contexto parental apropriado.

Não queremos colocar ITEM 004 acidentalmente sob:

ORDER 8473.

Mais uma vez:

CONTEXTO É PARTE DA OPERAÇÃO.


🔄 CAPÍTULO 22 — REPL: ALTERANDO SEM PERDER O CONTEXTO

Outra operação clássica:

REPL — Replace.

Recuperamos determinado segmento e queremos alterar seu conteúdo dentro das regras aplicáveis.

Conceitualmente:

GET SEGMENT
↓
MODIFY IO AREA
↓
REPLACE

Para agentes isso lembra nossa discussão de optimistic concurrency e revalidation.

Antes de alterar qualquer coisa crítica, pergunte:

é o mesmo objeto?
é o mesmo pai?
é a mesma versão?
o contexto continua válido?
tenho autoridade?

IMS sozinho não transforma automaticamente qualquer workflow de IA em optimistic concurrency.

Mas a disciplina de identificar precisamente o objeto e seu contexto continua valiosíssima.


🗑️ CAPÍTULO 23 — DLET: APAGAR EM UMA ÁRVORE É COISA SÉRIA

Agora:

DLET — Delete.

O agente diz:

— Fácil. Apaga o segmento.

Turing pergunta:

— Qual?

— Este.

— Qual pai?

— Ah.

— Quais dependências?

— Hmmm.

— Quais regras?

— Professor...

— Quais consequências?

O agente desliga o botão DELETE.

Excelente decisão.

Em estruturas hierárquicas, relacionamentos são parte fundamental do significado.

Em agentes, vale a mesma cautela:

DELETE CHILD

pode afetar:

PARENT STATE
SIBLINGS
BUSINESS RULES
AUDIT
DOWNSTREAM EVENTS.

Não deixe um LLM transformar:

Acho que este nó não é mais necessário.

em:

DLET.

sem controles adequados.

PF3, RACF e human-in-the-loop entram na sala simultaneamente.


🚦 CAPÍTULO 24 — STATUS CODE: A RESPOSTA DO IMS IMPORTA

Nosso programa faz uma chamada.

Depois precisa olhar o resultado.

Isso é básico e fundamental.

Não basta:

CALL DL/I

e continuar como se o universo tivesse obedecido.

Precisamos verificar o retorno no contexto da interface e operação usada.

Conceitualmente:

IF STATUS-OK
    CONTINUE
ELSE
    PERFORM HANDLE-IMS-ERROR
END-IF.

Para agentes:

TOOL CALLED

não significa:

TOOL SUCCEEDED.

E:

HTTP 200

nem sempre significa:

BUSINESS SUCCESS.

Lembra do MAXCC?

Ele ainda está conosco.


🧠 CAPÍTULO 25 — POSITION É ESTADO

Imagine que estamos navegando:

CUSTOMER 12345
│
└── ORDER 8472
    │
    ├── ITEM 001
    ├── ITEM 002  ← VOCÊ ESTÁ AQUI
    └── ITEM 003

Essa posição possui significado.

O próximo movimento depende de onde estamos.

Agentes também possuem estado operacional.

RUN-ID
AGENT-ID
CURRENT-TASK
CURRENT-ENTITY
CURRENT-PARENT
CURRENT-NODE
LAST-ACTION
NEXT-ACTION.

Se o agente reiniciar e perder isso, talvez não saiba onde estava.

Então entra nossa velha amiga:

CHECKPOINT.


💾 CAPÍTULO 26 — CHECKPOINT: MARQUE ONDE VOCÊ ESTAVA

Do JES2 dos Agentes aprendemos que trabalhos longos precisam conseguir sobreviver a falhas.

Agora imagine uma árvore com milhões de ocorrências.

O agente percorreu:

CUSTOMER 000001
...
CUSTOMER 472881

Cai.

Reinicia.

Sem checkpoint:

CUSTOMER 000001.

O operador começa a chorar.

😂

Com estado persistido:

RUN-ID......... R8821
LAST-ENTITY.... CUSTOMER
LAST-KEY....... 472881
STATUS......... CHECKPOINTED

podemos projetar uma retomada controlada.

Mas cuidado:

a realidade pode ter mudado durante a interrupção.

Então:

RESTART

precisa conversar com:

REVALIDATION.

Db2 dos Agentes reaparece.


🔀 CAPÍTULO 27 — UMA ÁRVORE NÃO RESOLVE TODO RELACIONAMENTO

Aqui precisamos evitar uma simplificação.

O mundo real não é sempre uma árvore perfeita.

Uma pessoa pode ter:

múltiplas contas
múltiplos contratos
múltiplos endereços
relações compartilhadas

Um produto pode pertencer a inúmeras estruturas lógicas.

Modelos hierárquicos precisam de mecanismos e estratégias para representar relacionamentos mais complexos.

O ponto não é dizer:

Árvore é superior a tabela.

Nem:

Tabela é superior a árvore.

São modelos diferentes, com características diferentes.

A pergunta correta é:

Qual modelo representa e atende melhor este problema e esta arquitetura?


🕸️ CAPÍTULO 28 — ÁRVORE NÃO É GRAFO

Outra distinção importante.

Árvore:

A
├── B
│   ├── D
│   └── E
└── C

Existe uma hierarquia clara.

Grafos permitem relacionamentos muito mais gerais:

A ── B
│ \  │
C ── D
 \  /
  E

Agentes modernos podem trabalhar com:

relational databases
hierarchical stores
documents
vectors
knowledge graphs
queues
files
APIs

Não transforme toda arquitetura de IA numa árvore só porque acabamos de conhecer IMS.

Turing provavelmente jogaria o apagador em você.


📚 CAPÍTULO 29 — MEMÓRIA DO AGENTE NÃO PRECISA SER UMA SACOLA

Imagine uma memória:

MEMORY
├── PERSON
│   ├── PREFERENCES
│   ├── CONTACTS
│   └── HISTORY
├── PROJECTS
│   ├── PROJECT-A
│   │   ├── DECISIONS
│   │   ├── DOCUMENTS
│   │   └── TASKS
│   └── PROJECT-B
└── CONVERSATIONS

Agora compare com:

VECTOR DATABASE
████████████████████████████

cheio de chunks sem estrutura explícita suficiente.

Vector search é extremamente útil.

Mas similaridade semântica responde principalmente:

O que parece relacionado?

Ela não responde automaticamente:

Qual é o pai lógico deste fato?

A qual projeto pertence?

Qual entidade governa este dado?

Qual contexto deveria acompanhá-lo?

Por isso arquiteturas sofisticadas podem combinar:

SEMANTIC SEARCH
+
STRUCTURED METADATA
+
HIERARCHY
+
RELATIONSHIPS
+
TEMPORALITY
+
AUTHORIZATION.

Agora estamos construindo memória de verdade.


🔎 CAPÍTULO 30 — RAG HIERÁRQUICO

Imagine um manual:

IBM MANUAL
└── CHAPTER 8
    └── SECURITY
        └── RACF AUTHORIZATION
            └── PARAGRAPH 14

O vector search encontra apenas:

PARAGRAPH 14.

Talvez falte contexto.

Uma estratégia possível:

retrieve leaf
↓
identify parent
↓
retrieve necessary ancestors
↓
construct contextual package
↓
send to agent.

Assim o agente recebe:

DOCUMENT
CHAPTER
SECTION
PARAGRAPH
VERSION
DATE
SOURCE.

Não apenas:

chunk_008821.txt.

Isso é uma lição extremamente IMS:

O CAMINHO ATÉ O DADO PODE FAZER PARTE DO SIGNIFICADO DO DADO.


📨 CAPÍTULO 31 — IMS ENCONTRA MQ

Nosso agente recebe pelo MQ:

CUSTOMER_UPDATED

Mensagem:

CUSTOMER-ID = 12345
ORDER-ID    = 8472
ITEM-ID     = 0003

MQ responde:

Algo aconteceu.

IMS responde:

Eis onde isso vive na hierarquia.

Db2 poderia responder:

Eis o estado relacional atual.

RACF:

Você pode acessar?

WLM:

Você tem recursos?

CICS:

O usuário ainda está esperando!

SDSF:

Eu estou vendo tudo.

JES2:

Se não for urgente, entra na fila.

PF3:

Quer parar essa loucura?

😂

Finalmente nossa arquitetura começa a parecer um verdadeiro CPD dos agentes.


🏛️ CAPÍTULO 32 — IMS TM E OS AGENTES TRANSACIONAIS

Até aqui focamos fortemente na visão de dados hierárquicos.

Mas IMS também possui seu universo transacional.

IMS TM permite construir aplicações orientadas a processamento de transações e mensagens em ambiente mainframe.

Conceitualmente:

INPUT MESSAGE
      ↓
IMS TM
      ↓
APPLICATION
      ↓
DATABASE / SERVICES
      ↓
OUTPUT MESSAGE

Isso deveria soar familiar depois do MQ dos Agentes.

Nosso agente pode participar de arquiteturas nas quais:

mensagem chega
↓
transação é executada
↓
dados são consultados/alterados
↓
resposta é produzida.

Mainframe já fazia processamento transacional em escala muito antes de alguém inventar a palavra:

AI AGENT.

🤖 CAPÍTULO 33 — O IMS DOS AGENTES

Vamos finalmente definir nossa metáfora.

O:

IMS DOS AGENTES

não significa transformar IMS literalmente em memória universal de LLM.

Significa aprender algumas disciplinas arquiteturais:

1. Dados possuem estrutura.

2. Relacionamentos possuem significado.

3. Filhos existem dentro de contexto parental.

4. O caminho até um dado pode importar.

5. Nem todo consumidor precisa enxergar a árvore inteira.

6. Navegação possui estado.

7. Operações precisam verificar retorno.

8. Contexto pode ser selecionado e podado.

9. Reinício exige checkpoint e revalidação.

10. Estrutura sem semântica continua insuficiente.

Essa última vem diretamente do nosso Copybook dos Agentes.


🏗️ CAPÍTULO 34 — ARQUITETURA CONCEITUAL

Turing desenha:

                    HUMAN
                      │
                      ▼
                    CICS
                      │
                      ▼
                   AGENT-A
                      │
          ┌───────────┼───────────┐
          │           │           │
          ▼           ▼           ▼
         MQ          Db2         IMS
          │           │           │
       EVENTS      CURRENT     HIERARCHY
                    STATE       / PATH
          │           │           │
          └───────────┼───────────┘
                      ▼
                  DECISION
                      │
                      ▼
                    ACTION

Em volta:

RACF
AUTHORITY
WLM
RESOURCES
SDSF
OBSERVABILITY
JES2
ASYNC WORK
PF3
HUMAN CONTROL

Nosso agente agora sabe perguntar:

WHO?
WHEN?
WHERE?
WHICH PARENT?
WHICH VERSION?
WHICH MESSAGE?
WHICH AUTHORITY?

Isso está ficando muito mais interessante que:

PROMPT → LLM → RESPOSTA.

🥚 EASTER EGG — O FILHO PERDIDO

02:43.

Produção liga.

— Temos um ITEM órfão.

O programador pergunta:

— Como assim órfão?

— Ele existe.

— Então qual é o problema?

— Ninguém sabe de qual ORDER ele é.

Silêncio.

Alan Turing entra no CPD.

ITEM-ID = 0007
VALUE   = 850.00

Turing pergunta:

— Qual parent?

— Não sabemos.

— CUSTOMER?

— Também não sabemos.

O agente sugere:

— Posso usar inteligência artificial para inferir.

Turing vira lentamente.

— Você quer movimentar R$ 850 baseado em genealogia probabilística?

O agente recua.

— Talvez não.

Do fundo da sala o DBA grita:

— FINALMENTE UMA IA APRENDEU ALGUMA COISA!

😂

Turing escreve no quadro:

CHILD WITHOUT CONTEXT
=
DATA WITHOUT MEANING

E embaixo:

DO NOT GUESS THE PARENT IN PRODUCTION.

🧰 CAPÍTULO 35 — CHECKLIST DO IMS DOS AGENTES

Antes de deixar um agente navegar estruturas hierárquicas, pergunte:

Estrutura

Qual é o root?
Quais são os parents?
Quais são os children?
Existem twins?

Navegação

Qual é o caminho?
Qual é a posição atual?
A operação depende do parent atual?

Identidade

Qual entidade estou acessando?
Qual é a chave?
O mesmo identificador pode existir em contextos diferentes?

Temporalidade

Quando esse dado foi lido?
Ainda é válido?
Precisa revalidar?

Segurança

O agente precisa enxergar esta subárvore?
Tem autorização?
Estamos aplicando least privilege?

Recuperação

Existe checkpoint?
Sabemos retomar?
A retomada é idempotente?

Observabilidade

RUN-ID?
CURRENT PATH?
LAST SEGMENT?
STATUS?
ELAPSED TIME?

Agora conseguimos operar o agente.


🧠 CAPÍTULO 36 — O PAINEL SDSF DO IMS DOS AGENTES

Imagine:

RUN-ID....... AGT004821
AGENT........ CUSTOMER-ANALYZER

DATABASE..... CUSTOMERDB

ROOT......... CUSTOMER
ROOT-KEY..... 12345

CURRENT-PATH:
CUSTOMER/12345
  /ORDER/8472
  /ITEM/0003

OPERATION.... READ
STATUS....... OK

READ-AT...... 10:00:01
VERSION...... 882

ELAPSED...... 42ms

Agora o operador não vê apenas:

PROCESSING...

Ele sabe:

Onde o agente está na árvore?

Se travar:

CURRENT-PATH

pode ser extremamente útil para diagnóstico.

Observabilidade também precisa de contexto.


🧙 CAPÍTULO 37 — O PROGRAMADOR COBOL DESCOBRE QUE JÁ SABIA METADE DISSO

Nosso iniciante olha para tudo:

DBD
PSB
PCB
DL/I
SSA
GU
GN
GNP
ISRT
REPL
DLET

e pensa:

Nunca vou aprender isso.

Calma.

Você já conhece ideias fundamentais.

Você sabe:

estrutura de dados

por causa de copybooks.

Você sabe:

status

por causa de RETURN-CODEs e interfaces.

Você sabe:

hierarquia

porque programas COBOL vivem cheios de níveis:

01 CUSTOMER.
   05 CUSTOMER-ID.
   05 CUSTOMER-NAME.
   05 ADDRESS.
      10 STREET.
      10 CITY.
      10 ZIP-CODE.

Olha só.

Até seu:

01
05
10

já treinou seu cérebro para pensar hierarquicamente.

Não é a mesma coisa que uma estrutura IMS.

Mas cognitivamente você não está começando do zero.


📜 CAPÍTULO 38 — COPYBOOK E IMS SE ENCONTRAM

Imagine o segmento CUSTOMER chegando a uma área COBOL:

01 CUSTOMER-SEGMENT.
   05 CUST-ID          PIC 9(09).
   05 CUST-NAME        PIC X(40).
   05 CUST-STATUS      PIC X.

ORDER:

01 ORDER-SEGMENT.
   05 ORDER-ID         PIC 9(09).
   05 ORDER-DATE       PIC 9(08).
   05 ORDER-STATUS     PIC X.

ITEM:

01 ITEM-SEGMENT.
   05 ITEM-ID          PIC 9(05).
   05 PRODUCT-ID       PIC X(12).
   05 QUANTITY         PIC 9(05).
   05 VALUE            PIC S9(09)V99 COMP-3.

Essas estruturas dizem:

Como os bytes são representados.

IMS acrescenta:

Como esses segmentos se relacionam na estrutura do banco.

E as regras de negócio dizem:

O que tudo isso significa.

Finalmente temos três camadas:

REPRESENTATION
      ↓
STRUCTURE
      ↓
SEMANTICS.

Nosso artigo sobre copybooks estava preparando essa emboscada desde o começo.


⚠️ CAPÍTULO 39 — NÃO CONFUNDA HIERARQUIA COM VERDADE

Um erro importante seria imaginar:

Se está organizado hierarquicamente, então está correto.

Não.

Uma árvore pode conter:

dados antigos
dados incorretos
relações inválidas
contexto incompleto

Logo continuam valendo nossas regras anteriores:

PROVENANCE
TIMESTAMP
VERSION
VALIDATION
AUTHORIZATION
REVALIDATION.

IMS resolve problemas de organização e acesso dentro de seu modelo.

Não elimina a necessidade de governança.

Nenhuma tecnologia elimina.


🧠 CAPÍTULO 40 — O GRANDE ENSINAMENTO PARA IA

Hoje falamos muito sobre:

context windows
RAG
vector databases
knowledge graphs
agent memory
long-term memory
tool context
conversation state

IMS nos oferece uma ideia antiga que continua extremamente moderna:

RELACIONAMENTO É INFORMAÇÃO.

Não basta armazenar:

ITEM 003.

Talvez precisemos armazenar:

CUSTOMER 12345
→ ORDER 8472
→ ITEM 003.

Não basta recuperar:

“limite = 5000”.

Precisamos talvez recuperar:

CUSTOMER
→ ACCOUNT
→ CREDIT POLICY
→ LIMIT
→ 5000

junto com:

VERSION
SOURCE
VALIDITY
AUTHORITY.

Essa é uma diferença brutal entre:

ENCONTRAR TEXTO

e:

COMPREENDER CONTEXTO.


🏰 CAPÍTULO 41 — NOSSO MAINFRAME DOS AGENTES ESTÁ QUASE VIRANDO UMA CIDADE

Alan Turing volta ao quadro.

Escreve:

RACF
Quem pode?

Depois:

PF3
Posso parar?
SDSF
O que está acontecendo?
MAXCC
Funcionou?
WLM
Quem recebe recursos?
JES2
Quem começa e quando?
CICS
Quanto tempo o humano pode esperar?
Db2
Qual realidade o agente está vendo?
MQ
Como a notícia viaja?

Finalmente:

IMS
ONDE ESTA INFORMAÇÃO VIVE
E POR QUAL CAMINHO CHEGAMOS ATÉ ELA?

O agente olha para o quadro.

— Professor...

— Sim?

— Isso tudo já existia antes de IA?

— Praticamente todos esses problemas fundamentais, sim.

— Então estamos reinventando o mainframe?

Turing bebe o café.

— Não.

Pausa.

— Estamos descobrindo novamente por que ele ficou complicado.

😂


☕ EPÍLOGO — ENCONTRE O FILHO

Voltamos ao desafio inicial.

CUSTOMER 12345

O agente encontra o root.

Depois:

ORDER 8472.

Posiciona-se no parent correto.

Depois:

ITEM 003.

Encontrado.

Na tela:

RUN-ID......... A004821

PATH...........
CUSTOMER/12345
ORDER/8472
ITEM/003

STATUS......... FOUND

Turing pergunta:

— Qual é o item?

O agente responde:

— ITEM 003.

Turing permanece olhando.

O agente percebe a armadilha.

Corrige:

— ITEM 003, pertencente ao ORDER 8472, pertencente ao CUSTOMER 12345.

Turing sorri.

— Melhor.

— Porque o contexto faz parte da identidade?

— Exatamente.

O agente olha para a árvore.

Horas atrás acreditava que dados eram valores.

Depois descobriu que dados tinham tempo.

Com MQ descobriu que informações viajavam.

Agora IMS ensinava algo ainda mais estranho.

DADOS TAMBÉM POSSUEM VIZINHANÇA.

Um valor pode possuir:

pai
filhos
irmãos
ancestrais
caminho
posição
contexto.

E retirar o valor dessa estrutura pode retirar parte de seu significado.

O pequeno robô abre seu próprio arquivo de memória.

Antes:

MEMORY
────────────────
coffee
COBOL
customer
order
Turing
MQ
Db2
item

Ele reorganiza:

MEMORY
│
├── MAINFRAME
│   ├── COBOL
│   ├── Db2
│   ├── MQ
│   └── IMS
│
├── CUSTOMER
│   └── ORDER
│       └── ITEM
│
└── TEACHERS
    └── ALAN TURING

Turing observa.

— Melhor?

O agente responde:

— Agora eu sei não apenas o que lembro.

Pausa.

— Sei onde cada lembrança pertence.

No terminal aparece:

GU
GN
GNP

Depois:

ROOT
PARENT
CHILD
PATH
CONTEXT

E finalmente:

DATA
+
RELATIONSHIP
+
TIME
+
PROVENANCE
=
CONTEXTUAL KNOWLEDGE

Turing termina o café.

Antes de sair escreve uma última frase no quadro:

“NÃO PERGUNTE APENAS QUAL É O DADO. PERGUNTE DE ONDE ELE VEIO, QUANDO ERA VERDADEIRO E A QUAL RAMO DA REALIDADE ELE PERTENCE.”

O agente olha para o ITEM 003.

Agora entende por que demorou tanto para encontrá-lo.

Não estava procurando apenas um registro.

Estava procurando:

UM REGISTRO DENTRO DE UMA HISTÓRIA.

E talvez esse seja um dos maiores desafios das futuras inteligências artificiais.

Elas conseguirão armazenar bilhões de fatos.

Conseguirão recuperar documentos em milissegundos.

Conseguirão conversar com bancos, APIs, filas e outros agentes.

Mas inteligência operacional exigirá algo mais:

WHO?
WHAT?
WHEN?
WHERE?
WHY?
WHICH VERSION?
WHICH PARENT?
WHICH PATH?

Porque informação sem relacionamento vira ruído.

Memória sem estrutura vira depósito.

Contexto sem origem vira suposição.

E um filho sem pai...

Bem.

Esse fica para o plantão das 02:43.

IF CHILD-FOUND
   AND PARENT-KNOWN
   AND CONTEXT-VALID
       MOVE 'OK' TO AGENT-STATUS
ELSE
       MOVE 'DO-NOT-GUESS'
         TO AGENT-STATUS
END-IF.

READY

☕ Bellacosa Mainframe — porque até uma inteligência artificial precisa aprender que, antes de sair procurando os filhos, é melhor descobrir quem são os pais.

☕ UM CAFÉ NO BELLACOSA MAINFRAME

🤖 Alan Turing entra no CPD

O mapa dos agentes de IA explicado por um mainframer

Esta série acompanha a evolução de uma ideia: compreender os problemas modernos dos agentes de inteligência artificial usando conceitos conhecidos por quem trabalha com mainframe, IBM Z e sistemas corporativos.

A viagem começa pelas pessoas e pela experiência de uso, passa por observabilidade, priorização e execução, chega às transações, estado e mensageria e termina na organização hierárquica do contexto.

01
FEV / 2023

🧠 O currículo invisível da inteligência artificial

Antes de construir agentes inteligentes precisamos preparar as pessoas que trabalharão com eles. Técnica, pensamento crítico, conhecimento de negócio, segurança, ética e responsabilidade formam o currículo que nem sempre aparece no certificado.

02
MAR / 2023

🤖 A UX dos agentes

Quando uma IA deixa de apenas responder e começa a executar ações, sua interface precisa mostrar objetivos, progresso, permissões e resultados. PF3, MAXCC e RACF tornam-se excelentes analogias para controle, retorno e privilégio mínimo.

04
MAI / 2023

⚖️ O WLM dos agentes

CPU, GPU, tokens, APIs e bancos de dados são recursos finitos. O Workload Manager inspira uma discussão sobre prioridades, objetivos de serviço, importância do trabalho e distribuição dinâmica de recursos entre agentes.

06
JUL / 2023

⚡ O CICS dos agentes

Uma coisa é uma IA produzir texto. Outra é permitir que ela execute operações reais de negócio. CICS introduz a conversa sobre processamento transacional, concorrência, segurança e integridade.

07
AGO / 2023

🗄️ O Db2 dos agentes

Agentes precisam manter estado, checkpoints, decisões e resultados. O Db2 fornece o ponto de partida para discutir unidade de trabalho, consistência, COMMIT, ROLLBACK e recuperação.

10
SET / 2026

☕ Alan Turing entra no CPD — O mapa completo

O artigo-âncora reúne toda a evolução da ideia: pessoas, UX, observabilidade, prioridade, orquestração, transações, estado, mensageria e contexto transformam artigos independentes em uma arquitetura conceitual para agentes de IA.

🖥️ Leitor da série

Selecione qualquer capítulo acima para abri-lo normalmente. O painel abaixo é apenas um recurso adicional de navegação.

terça-feira, 3 de outubro de 2023

☕ Laboratório Básico — Explorando o Catálogo SYSIBM do Db2 for z/OS com SPUFI

 

Bellacosa Mainframe e o laboratorio basico Db2 Spufi

☕ Um Café no Bellacosa Mainframe

☕ Laboratório Básico — Explorando o Catálogo SYSIBM do Db2 for z/OS com SPUFI


1. Objetivo do laboratório

Neste laboratório vamos aprender a utilizar o SPUFI — SQL Processor Using File Input, disponível tradicionalmente através do ambiente Db2 Interactive (DB2I) no ISPF, para executar consultas SQL contra o catálogo do Db2 for z/OS.

Ao final você deverá compreender:

  • o que é SPUFI;

  • o que é o catálogo do Db2;

  • o que significa SYSIBM;

  • como descobrir tabelas existentes;

  • como descobrir as colunas de uma tabela;

  • como localizar índices;

  • como identificar diferentes tipos de objetos;

  • como filtrar resultados;

  • como interpretar resultados e erros básicos;

  • por que consultar o catálogo é uma habilidade importante para um programador COBOL/Db2.

Regra do laboratório: trabalharemos somente com SELECT. Não precisamos modificar nenhum objeto ou dado.




2. Antes de começar: o que é SYSIBM?

Quando trabalhamos com uma aplicação comum podemos ter tabelas como:

CLIENTES
CONTAS
PRODUTOS
PEDIDOS
FUNCIONARIOS

Mas o próprio Db2 precisa guardar informações sobre aquilo que administra.

Por exemplo:

Quais tabelas existem?
Quem criou determinada tabela?
Quais colunas ela possui?
Qual é o tipo de cada coluna?
Quais índices existem?
Quais schemas existem?
Quais views existem?

Essas informações são chamadas de metadados.

Uma maneira simples de pensar nisso é:

DADOS
│
├── CLIENTES
├── CONTAS
├── PEDIDOS
└── PRODUTOS

METADADOS
│
└── informações sobre os dados e objetos

O catálogo do Db2 contém esses metadados.

Muitas tabelas fundamentais do catálogo estão sob o qualifier/schema:

SYSIBM

Encontraremos nomes conhecidos como:

SYSIBM.SYSTABLES
SYSIBM.SYSCOLUMNS
SYSIBM.SYSINDEXES
SYSIBM.SYSVIEWS

Portanto:

SYSIBM.SYSTABLES
   │        │
   │        └── tabela do catálogo
   │
   └────────── schema/qualifier

Você pode imaginar SYSIBM como uma enorme biblioteca administrativa onde o Db2 mantém informações sobre seu próprio universo.


3. Entrando no SPUFI

O caminho depende da instalação da empresa ou laboratório.

Pode ser algo semelhante a:

TSO/E
  │
  ▼
ISPF
  │
  ▼
DB
  │
  ▼
DB2I
  │
  ▼
SPUFI

Em algumas instalações as opções possuem números; em outras existem menus customizados.

Procure pela opção:

SPUFI

ou:

SQL Processor Using File Input

4. Preparando o SPUFI

O SPUFI trabalha fundamentalmente com um dataset contendo o SQL de entrada e outro para receber a saída.

Conceitualmente:

MEU.SQL
   │
   │ SELECT...
   ▼
 SPUFI
   │
   ▼
  Db2
   │
   ▼
resultado
   │
   ▼
MEU.SQLOUT

Você poderá encontrar campos semelhantes a:

INPUT DATA SET NAME  ===> USERID.SQL

OUTPUT DATA SET NAME ===> USERID.SQLOUT

EDIT INPUT           ===> YES

EXECUTE              ===> YES

BROWSE OUTPUT        ===> YES

Os nomes e parâmetros exatos podem variar conforme o ambiente.

Utilize os datasets e configurações definidos pelo seu instrutor ou instalação.


5. Exercício 1 — Perguntando as horas ao Db2

Antes de investigar o catálogo, vamos verificar se conseguimos conversar com o Db2.

Execute:

SELECT CURRENT DATE,
       CURRENT TIME
FROM SYSIBM.SYSDUMMY1;

O que está acontecendo?

SYSIBM.SYSDUMMY1 é uma pequena tabela especial tradicionalmente utilizada quando queremos executar expressões SQL que não dependem de uma tabela de aplicação.

Estamos pedindo:

CURRENT DATE
CURRENT TIME

O fluxo é:

SPUFI
  │
  │ SQL
  ▼
Db2
  │
  │ resultado
  ▼
SPUFI OUTPUT

Se obtivermos uma data e horário, nossa comunicação está funcionando.


6. Exercício 2 — Quem sou eu para o Db2?

Experimente:

SELECT CURRENT USER
FROM SYSIBM.SYSDUMMY1;

O resultado mostrará a identidade de autorização associada à execução.

Isso é importante porque o Db2 possui mecanismos próprios de autorização.

Dois usuários podem executar o mesmo SQL e obter comportamentos diferentes por causa das permissões concedidas.

Guarde esta ideia:

USUÁRIO
   │
   ▼
AUTORIZAÇÃO
   │
   ▼
OBJETO Db2

7. Exercício 3 — Conhecendo SYSIBM.SYSTABLES

Agora chegamos a uma das tabelas de catálogo mais úteis:

SYSIBM.SYSTABLES

Ela contém informações sobre tabelas e determinados objetos relacionados registrados no catálogo.

Não comece com:

SELECT *
FROM SYSIBM.SYSTABLES;

Em um ambiente grande isso pode produzir uma quantidade enorme de informação.

Vamos ser educados com o mainframe.

Execute:

SELECT CREATOR,
       NAME,
       TYPE
FROM SYSIBM.SYSTABLES
FETCH FIRST 20 ROWS ONLY;

Observe as colunas.

CREATOR

Indica o qualifier/creator associado ao objeto.

NAME

Nome do objeto.

TYPE

Indica seu tipo conforme os códigos definidos pelo catálogo daquela versão do Db2.

Não tente decorar imediatamente todos os valores possíveis de TYPE.

O importante neste momento é entender:

SYSTABLES

CREATOR   NAME             TYPE
--------  ---------------  ----
SYSIBM    SYSTABLES        ...
SYSIBM    SYSCOLUMNS       ...
...

Você acabou de perguntar ao Db2:

"Quais objetos você conhece?"


8. Exercício 4 — Procurando as próprias tabelas SYSIBM

Agora vamos filtrar.

Execute:

SELECT CREATOR,
       NAME,
       TYPE
FROM SYSIBM.SYSTABLES
WHERE CREATOR = 'SYSIBM'
FETCH FIRST 30 ROWS ONLY;

Aqui aparece uma das regras fundamentais de SQL:

SELECT → o que quero
FROM   → de onde
WHERE  → quais registros quero

Visualmente:

SYSIBM.SYSTABLES
       │
       ▼
WHERE CREATOR = 'SYSIBM'
       │
       ▼
somente objetos SYSIBM
       │
       ▼
SELECT CREATOR, NAME, TYPE

9. Exercício 5 — Procurando uma tabela pelo nome

Agora imagine que alguém diz:

"Existe uma tabela chamada SYSTABLES."

Você quer descobrir onde.

Execute:

SELECT CREATOR,
       NAME,
       TYPE
FROM SYSIBM.SYSTABLES
WHERE NAME = 'SYSTABLES';

Provavelmente encontrará:

SYSIBM   SYSTABLES   ...

Agora você conhece uma técnica extremamente importante.

Quando alguém disser:

"Procure a tabela XPTO."

Você pode consultar o catálogo.


10. Exercício 6 — Usando LIKE

Nem sempre sabemos o nome completo.

Talvez alguém diga:

"Era alguma coisa começando com SYS..."

Podemos utilizar:

SELECT CREATOR,
       NAME
FROM SYSIBM.SYSTABLES
WHERE CREATOR = 'SYSIBM'
  AND NAME LIKE 'SYS%'
FETCH FIRST 30 ROWS ONLY;

O % funciona como wildcard para uma sequência de caracteres.

'SYS%'

pode localizar:

SYS...
SYSTABLES
SYSCOLUMNS
SYSINDEXES
...

Agora experimente:

SELECT CREATOR,
       NAME
FROM SYSIBM.SYSTABLES
WHERE CREATOR = 'SYSIBM'
  AND NAME LIKE '%TABLE%'
FETCH FIRST 30 ROWS ONLY;

A diferença é importante:

'TABLE%'   começa com TABLE

'%TABLE'   termina com TABLE

'%TABLE%'  contém TABLE

11. Exercício 7 — Conhecendo SYSIBM.SYSCOLUMNS

Encontramos uma tabela.

Agora queremos saber:

"Quais colunas ela possui?"

Para isso temos uma das estrelas do catálogo:

SYSIBM.SYSCOLUMNS

Execute:

SELECT TBCREATOR,
       TBNAME,
       NAME,
       COLNO,
       COLTYPE,
       LENGTH
FROM SYSIBM.SYSCOLUMNS
WHERE TBCREATOR = 'SYSIBM'
  AND TBNAME = 'SYSTABLES'
ORDER BY COLNO;

Agora o Db2 está descrevendo uma de suas próprias tabelas.

Isso é quase recursivo:

SYSCOLUMNS
     │
     │ descreve
     ▼
SYSTABLES
     │
     │ que descreve
     ▼
objetos existentes no Db2

12. Entendendo o resultado

Observe alguns conceitos.

TBCREATOR

Creator/qualifier da tabela.

TBNAME

Nome da tabela.

NAME

Nome da coluna.

COLNO

Posição da coluna.

COLTYPE

Tipo de dado registrado no catálogo.

LENGTH

Comprimento associado à coluna conforme sua definição.

Assim você começa a descobrir a estrutura de uma tabela sem precisar encontrar primeiro o programa COBOL que a utiliza.


13. Exercício 8 — Conte quantas colunas SYSTABLES possui

Agora podemos usar uma função SQL:

SELECT COUNT(*)
FROM SYSIBM.SYSCOLUMNS
WHERE TBCREATOR = 'SYSIBM'
  AND TBNAME = 'SYSTABLES';

O Db2 contará os registros correspondentes.

Como existe normalmente uma entrada de catálogo para cada coluna da tabela, conseguimos responder:

"Quantas colunas existem nessa tabela?"

Isso demonstra uma coisa poderosa:

CATÁLOGO
   +
SQL
   =
INVESTIGAÇÃO

14. Exercício 9 — Encontrando índices

Tabelas podem possuir índices.

Vamos perguntar ao catálogo:

SELECT CREATOR,
       NAME,
       TBCREATOR,
       TBNAME
FROM SYSIBM.SYSINDEXES
WHERE TBCREATOR = 'SYSIBM'
  AND TBNAME = 'SYSTABLES';

Aqui estamos utilizando:

SYSIBM.SYSINDEXES

Essa tabela contém informações sobre índices registrados no catálogo.

A ideia conceitual é:

TABELA
  │
  ├───────────────┐
  │               │
  ▼               ▼
dados           índices
                  │
                  ▼
        estruturas de acesso

Não pense que índice é simplesmente "uma tabela ordenada".

Índices são estruturas mantidas pelo Db2 que podem ser utilizadas para localizar dados de maneira eficiente e também podem participar da implementação de determinadas restrições de unicidade.


15. Exercício 10 — Procurando índices de uma tabela qualquer

Se o seu instrutor fornecer uma tabela de treinamento, por exemplo:

ALUNO.CLIENTES

poderíamos investigar:

SELECT CREATOR,
       NAME,
       TBCREATOR,
       TBNAME
FROM SYSIBM.SYSINDEXES
WHERE TBCREATOR = 'ALUNO'
  AND TBNAME = 'CLIENTES';

Assim começamos a montar uma ficha do objeto:

ALUNO.CLIENTES
      │
      ├── colunas → SYSCOLUMNS
      │
      └── índices → SYSINDEXES

16. Exercício 11 — Vamos fazer uma pequena investigação

Imagine que recebemos apenas esta informação:

Existe alguma coisa chamada EMP?

Não sabemos se o nome completo é:

EMP
EMPLOYEE
EMPLOYEES
EMPRESA
EMPREGADO

Podemos investigar:

SELECT CREATOR,
       NAME,
       TYPE
FROM SYSIBM.SYSTABLES
WHERE NAME LIKE 'EMP%'
FETCH FIRST 50 ROWS ONLY;

Encontrou algo interessante?

Escolha um objeto ao qual você tenha acesso.

Suponha que encontramos:

DSN8C10.EMP

Não copie esse nome cegamente: objetos de exemplo disponíveis variam conforme a instalação.

Agora investigamos suas colunas:

SELECT NAME,
       COLNO,
       COLTYPE,
       LENGTH
FROM SYSIBM.SYSCOLUMNS
WHERE TBCREATOR = 'DSN8C10'
  AND TBNAME = 'EMP'
ORDER BY COLNO;

Acabamos de fazer algo muito parecido com uma investigação real de aplicação.


17. Exercício 12 — Do geral para o específico

Observe a metodologia que estamos construindo.

Primeiro:

SELECT CREATOR,
       NAME
FROM SYSIBM.SYSTABLES
WHERE NAME LIKE '%EMP%'
FETCH FIRST 50 ROWS ONLY;

Encontramos:

qualifier + tabela

Depois:

SELECT NAME,
       COLTYPE,
       LENGTH
FROM SYSIBM.SYSCOLUMNS
WHERE TBCREATOR = 'QUALIFIER_ENCONTRADO'
  AND TBNAME = 'TABELA_ENCONTRADA'
ORDER BY COLNO;

Depois:

SELECT CREATOR,
       NAME
FROM SYSIBM.SYSINDEXES
WHERE TBCREATOR = 'QUALIFIER_ENCONTRADO'
  AND TBNAME = 'TABELA_ENCONTRADA';

Nossa investigação virou:

        Qual objeto existe?
                │
                ▼
           SYSTABLES
                │
                ▼
       Quais colunas possui?
                │
                ▼
          SYSCOLUMNS
                │
                ▼
        Quais índices possui?
                │
                ▼
          SYSINDEXES

18. Exercício 13 — ORDER BY

Vamos organizar os resultados.

SELECT TBCREATOR,
       TBNAME,
       NAME,
       COLNO
FROM SYSIBM.SYSCOLUMNS
WHERE TBCREATOR = 'SYSIBM'
  AND TBNAME = 'SYSTABLES'
ORDER BY COLNO;

Sem ORDER BY, não devemos assumir uma ordem lógica simplesmente porque os resultados apareceram daquela maneira em uma execução.

Com:

ORDER BY COLNO

estamos explicitamente pedindo a ordenação.

Essa diferença é importantíssima.

Nunca programe pensando:

"Ontem o SELECT veio nessa ordem."

Se a ordem importa, declare-a.


19. Exercício 14 — Provocando um erro proposital

Erros também fazem parte do laboratório.

Execute propositalmente:

SELECT XPTO
FROM SYSIBM.SYSTABLES;

XPTO provavelmente não existe como coluna dessa tabela.

Observe cuidadosamente a saída do SPUFI.

Procure:

SQLCODE
SQLSTATE
mensagem Db2

A mensagem exata dependerá do problema e da versão.

A lição aqui não é decorar um número.

É desenvolver este reflexo:

SQL falhou
    │
    ▼
não comece alterando tudo
    │
    ▼
leia SQLCODE
    │
    ▼
leia SQLSTATE
    │
    ▼
leia mensagem
    │
    ▼
identifique a causa
    │
    ▼
corrija

Isso será fundamental quando chegarmos ao COBOL.


20. Exercício 15 — Procurando algo que não existe

Execute:

SELECT CREATOR,
       NAME
FROM SYSIBM.SYSTABLES
WHERE NAME = 'TABELA_DO_HARRY_POTTER_999';

Supondo que ninguém tenha criado uma tabela com esse nome, teremos zero linhas.

E aqui existe uma lição importante:

SELECT executado corretamente
+
nenhuma linha encontrada

não significa necessariamente:

SQL quebrado

O comando pode estar perfeitamente correto.

Simplesmente não encontrou registros correspondentes.

Essa diferença será importantíssima quando estudarmos SQLCODE +100 em programas Db2.


21. Desafio — faça o papel de detetive do Db2

Agora tente resolver sem copiar imediatamente a resposta.

Sua missão é:

1. Encontrar cinco objetos cujo creator seja SYSIBM.

2. Escolher uma tabela do catálogo.

3. Descobrir quantas colunas ela possui.

4. Listar suas colunas em ordem.

5. Identificar os tipos dessas colunas.

6. Verificar se existem índices associados a ela.

7. Registrar os SQLs utilizados.

Sua investigação deverá seguir aproximadamente:

            Db2
             │
             ▼
     SYSIBM.SYSTABLES
             │
             ▼
       achei a tabela
             │
             ▼
     SYSIBM.SYSCOLUMNS
             │
             ▼
      achei as colunas
             │
             ▼
      SYSIBM.SYSINDEXES
             │
             ▼
       achei os índices

22. O que realmente aprendemos?

Parece que fizemos apenas alguns SELECT.

Na realidade aprendemos uma parte fundamental da filosofia do Db2.

O banco não guarda somente:

CLIENTE = JOÃO
SALDO   = 1000

Ele também precisa conhecer a estrutura do próprio ambiente:

Existe tabela CLIENTES?
Quem é seu creator?
Quais colunas possui?
Quais são seus tipos?
Quais índices estão associados?
Que outros objetos existem?

Esse é o papel do catálogo.

Podemos imaginar:

                 Db2
                  │
          ┌───────┴────────┐
          │                │
          ▼                ▼
       DADOS            CATÁLOGO
          │                │
          ▼                ▼
      CLIENTES        SYSTABLES
      CONTAS          SYSCOLUMNS
      PEDIDOS         SYSINDEXES
      ...             ...

O catálogo é, portanto, um conjunto de informações que permite ao Db2 conhecer e administrar seu próprio ambiente.


23. Para que um programador COBOL precisa saber disso?

Imagine que você recebe um programa COBOL antigo contendo:

EXEC SQL
   SELECT NOME,
          SALDO
     INTO :WS-NOME,
          :WS-SALDO
     FROM CLIENTES
    WHERE ID_CLIENTE = :WS-ID
END-EXEC.

Você nunca viu a aplicação.

Imediatamente surgem perguntas:

Quem é CLIENTES?

Qual seu qualifier?

ID_CLIENTE é INTEGER?

NOME é CHAR ou VARCHAR?

SALDO é DECIMAL?

Existem índices?

Qual é a estrutura dessa tabela?

Agora você possui uma ferramenta para começar a investigação.

Programa COBOL
      │
      │ encontrou CLIENTES
      ▼
SPUFI
      │
      ▼
SYSIBM.SYSTABLES
      │
      ▼
SYSIBM.SYSCOLUMNS
      │
      ▼
SYSIBM.SYSINDEXES
      │
      ▼
começamos a compreender
a aplicação

É por isso que aprender o catálogo vale muito mais do que decorar meia dúzia de SELECT.


24. Cola de bolso do aluno

Guarde estes três nomes:

┌───────────────────────────────────────────┐
│           CATÁLOGO Db2 — BÁSICO           │
├───────────────────────────────────────────┤
│                                           │
│ SYSIBM.SYSTABLES                          │
│       ↓                                   │
│ "Quais tabelas/objetos existem?"          │
│                                           │
│ SYSIBM.SYSCOLUMNS                         │
│       ↓                                   │
│ "Quais são suas colunas?"                 │
│                                           │
│ SYSIBM.SYSINDEXES                         │
│       ↓                                   │
│ "Quais índices existem?"                  │
│                                           │
└───────────────────────────────────────────┘

E principalmente guarde a metodologia:

NÃO SEI
   │
   ▼
CONSULTO O CATÁLOGO
   │
   ▼
ENCONTRO O OBJETO
   │
   ▼
INVESTIGO SUA ESTRUTURA
   │
   ▼
ENTENDO AS RELAÇÕES
   │
   ▼
VOLTO AO PROGRAMA COBOL

Essa é uma mudança importante na formação de um profissional de mainframe.

O iniciante pergunta:

"Qual é a tabela?"

O profissional aprende a perguntar ao próprio Db2.

☕ Fim do laboratório — e início da investigaçã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...