☕ 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

Mostrar mensagens com a etiqueta DL/I. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta DL/I. Mostrar todas as mensagens

quinta-feira, 28 de maio de 2026

☕🔥💣 LABORATÓRIO IMS DL/I: CRIANDO UM BANCO HIERÁRQUICO NA PRÁTICA

 

Bellacosa Mainframe lahoratorio pratico de ims dl/i crie seu banco de dados hierarquico

☕🔥💣 LABORATÓRIO IMS DL/I: CRIANDO UM BANCO HIERÁRQUICO NA PRÁTICA

Como construir um banco IMS para CURSOS, ALUNOS e NOTAS — passo a passo para programadores COBOL iniciantes

Se você veio do mundo:

  • DB2

  • Oracle

  • SQL Server

  • MySQL

prepare-se.

Porque no IMS o mundo funciona de maneira MUITO diferente. 😄

Aqui não existem:

❌ tabelas tradicionais
❌ SELECT com JOIN
❌ modelagem relacional clássica

No IMS nós pensamos em:

🌳 HIERARQUIA

E quando você entende isso…

o “dinossauro” começa a fazer sentido.


🚀 Objetivo do Laboratório

Vamos criar um banco IMS para armazenar:

  • cursos

  • alunos

  • notas

Nossa estrutura será:

CURSO
 └── ALUNO
      └── NOTA

Exemplo:

COBOL
 └── JOAO
      └── 9.5

🌳 Entendendo a Hierarquia

No IMS existe:

TipoFunção
ROOTtopo da árvore
CHILDfilho
DEPENDENTdependente

No nosso caso:

SegmentoTipo
CURSOROOT
ALUNOCHILD
NOTACHILD do ALUNO

💾 Estrutura Física Mental

Fisicamente o IMS gravará algo parecido com:

CURSO
   ↓ ponteiro
ALUNO
   ↓ ponteiro
NOTA

O IMS literalmente conecta segmentos usando ponteiros físicos.


☕ Etapa 1 — Criando o DBD

O:

DBD

(Database Description)

define a estrutura do banco.


📦 DBD Básico

DBD   NAME=ESCOLA,ACCESS=HIDAM

DATASET DD1=ESCOLADB

SEGM  NAME=CURSO,BYTES=50,PARENT=0
FIELD NAME=(CODCURSO,SEQ,U),BYTES=5,START=1

SEGM  NAME=ALUNO,BYTES=80,PARENT=CURSO
FIELD NAME=(MATRIC,SEQ,U),BYTES=6,START=1

SEGM  NAME=NOTA,BYTES=20,PARENT=ALUNO
FIELD NAME=(IDNOTA,SEQ,U),BYTES=4,START=1

DBDGEN
FINISH
END

🧠 O Que Está Acontecendo?


🌳 CURSO

Segmento ROOT.

Topo da árvore.


👨‍🎓 ALUNO

Filho de CURSO.


📊 NOTA

Filho de ALUNO.


🚀 ACCESS=HIDAM

Define tipo do banco.

HIDAM:

✅ rápido
✅ indexado
✅ muito usado em IMS clássico


☕ Etapa 2 — Gerando o DBD

Agora precisamos gerar o banco.

Usamos JCL.


📜 JCL DBDGEN

//DBDGEN EXEC PGM=ASMA90
//SYSIN DD *
  DBD ...
/*

Depois fazemos:

DBDGEN

para criar o módulo do banco.


🚀 Etapa 3 — Criando o PSB

O:

PSB

(Program Specification Block)

define como programas acessam o banco.


📦 Exemplo PSB

PSBGEN  PSBNAME=PSBESC

PCB     TYPE=DB,DBDNAME=ESCOLA,PROCOPT=G

SENSEG  NAME=CURSO
SENSEG  NAME=ALUNO,PARENT=CURSO
SENSEG  NAME=NOTA,PARENT=ALUNO

END

🧠 PROCOPT=G

Permite:

GET

Somente leitura.

Depois podemos usar:

PROCOPTFunção
Gread
Aall
Iinsert
Ddelete

☕ Etapa 4 — ACBGEN

Depois geramos:

ACB

O famoso:

Application Control Block

📜 JCL ACBGEN

//ACBGEN EXEC PGM=DFSRRC00

🚀 Etapa 5 — Inicializando Banco

Criamos datasets IMS.

Normalmente usando:

  • IDCAMS

  • VSAM

  • utilities IMS


📦 Exemplo IDCAMS

//IDCAMS EXEC PGM=IDCAMS

 DEFINE CLUSTER -
 (NAME(ESCOLADB))

☕ Etapa 6 — Inserindo Dados

Agora vem a parte divertida. 😄


👨‍💻 Programa COBOL IMS

CALL 'CBLTDLI'
     USING 'ISRT'
           DB-PCB
           CURSO-AREA

🌳 ISRT

Significa:

INSERT SEGMENT


📦 Inserindo CURSO

CURSO = COBOL

👨‍🎓 Inserindo ALUNO

Depois navegamos:

CURSO → ALUNO

📊 Inserindo NOTA

Depois:

ALUNO → NOTA

🚀 Estrutura Final

COBOL
 └── JOAO
      └── 9.5

COBOL
 └── MARIA
      └── 8.7

☕ Etapa 7 — Consultando Dados

Agora usamos:

GU

(Get Unique)


📦 Exemplo

CALL 'CBLTDLI'
     USING 'GU  '
           DB-PCB
           AREA
           SSA.

🔑 SSA

Segment Search Argument.

Exemplo:

CURSO(CODCURSO=COBOL)

🚀 Navegando Pela Árvore

Agora usamos:

ComandoFunção
GUbusca específica
GNpróximo
GNPpróximo filho

🌳 Exemplo Navegação

GU CURSO
GN ALUNO
GNP NOTA

☕ Etapa 8 — Atualizando Nota

Usamos:

REPL

(Replace)


📦 Fluxo

1️⃣ GU NOTA
2️⃣ altera AREA
3️⃣ REPL

☕ Etapa 9 — Deletando Registro

Usamos:

DLET


📦 Exemplo

CALL 'CBLTDLI'
     USING 'DLET'
           DB-PCB

🚀 O Que o Programador Junior Precisa Entender

No IMS:

⚡ você NÃO pensa em tabela.

Você pensa em:

✅ árvore
✅ caminho
✅ navegação
✅ pai-filho
✅ segmentos


⚔️ Diferença Mental DB2 vs IMS


🟦 DB2

Você pergunta:

SELECT *

🌳 IMS

Você navega:

ROOT → CHILD → CHILD

☕ Curiosidade Bellacosa Mainframe

O IMS nasceu em:

🚀 1968

para ajudar a NASA no projeto Apollo.

Décadas depois…

a mesma lógica hierárquica ainda processa:

💳 cartões
🏦 bancos
📱 mobile banking
✈️ companhias aéreas
📡 telecom

O “dinossauro” continua vivo.

E absurdamente rápido.


☕🔥 DLI IMS AVANÇADO: O LADO SOMBRIO DO MAINFRAME QUE O SQL NUNCA CONSEGUIU SUBSTITUIR

 

Bellacosa Mainframe e o DL/I IMS o painel de controle dentro do banco de dados hierarquico

☕🔥 DLI IMS AVANÇADO: O LADO SOMBRIO DO MAINFRAME QUE O SQL NUNCA CONSEGUIU SUBSTITUIR

Durante décadas o mercado tentou decretar a morte do IMS.

Vieram os bancos relacionais.

Vieram os ERPs.

Vieram os clusters distribuídos.

Vieram NoSQL, cloud, Kubernetes, microservices e a eterna promessa de que “agora o mainframe acabou”.

Mas existe um pequeno detalhe inconveniente:

Enquanto muita tecnologia moderna ainda luta para entregar estabilidade em escala planetária…

o velho IMS continua processando bilhões de transações críticas diariamente com tempos de resposta absurdos.

E quem realmente conhece DL/I avançado sabe de uma verdade quase proibida no mundo corporativo:

Existem workloads onde o IMS simplesmente continua imbatível.

Não por nostalgia.

Não por legado.

Mas por engenharia brutalmente eficiente.


🌳 DL/I — O Anti-SQL

O SQL venceu o mundo porque trouxe abstração.

O DL/I sobreviveu porque eliminou abstração.

Essa diferença muda tudo.

No SQL o banco precisa descobrir:

  • caminho de acesso

  • plano de execução

  • índice

  • optimizer

  • cardinalidade

  • join strategy

No DL/I:

o programador já sabe exatamente onde quer chegar.

O acesso é navegacional.

Direto.

Hierárquico.

Cirúrgico.

Enquanto o SQL pergunta:

“O que você deseja?”

o DL/I pergunta:

“Você sabe navegar?”

E essa pergunta separa operadores de aventureiros.


⚡ O Verdadeiro Poder do Posicionamento

Muitos programadores COBOL juniores enxergam:

CALL 'CBLTDLI'

como apenas uma API antiga.

Veteranos enxergam outra coisa:

Controle absoluto do path físico.

No IMS avançado, posicionamento é tudo.

O estado corrente do PCB literalmente define o universo de navegação da aplicação.

Quando um programa executa:

GU ROOT
GNP CHILD
GNP CHILD
GN NEXT ROOT

ele não está apenas lendo registros.

Ele está percorrendo estruturas físicas reais de armazenamento.

O IMS não pensa em linhas.

Ele pensa em:

  • segmentos

  • paths

  • dependência hierárquica

  • posicionamento lógico

  • ponteiros físicos

E isso muda completamente a mentalidade de desenvolvimento.


💾 O Segredo Físico Que Pouca Gente Entende

O maior erro de quem vem do SQL é imaginar que o IMS seja apenas “um banco hierárquico”.

Não.

O IMS é um modelo de acesso físico extremamente otimizado.

A verdadeira mágica está nos ponteiros.

Em bancos HIDAM, HDAM e DEDB, o IMS reduz drasticamente o custo de navegação usando estruturas físicas extremamente agressivas para a época.

Enquanto bancos relacionais modernos frequentemente precisam montar planos complexos de execução…

o IMS muitas vezes apenas segue ponteiros previamente organizados.

É quase obsceno de tão eficiente.

Especialmente em workloads previsíveis.


🚀 HDAM — Quando Hashing Vira Arte Negra

Veteranos IMS sabem que HDAM não é apenas “acesso direto”.

HDAM é uma filosofia.

A randomizing routine define praticamente o comportamento físico do banco.

E aqui mora um dos pontos mais subestimados do universo mainframe:

O programador IMS influenciava diretamente o layout físico da informação.

Não existia o conforto moderno do:

“deixa o banco resolver.”

No IMS avançado:

você é parcialmente responsável pelo desempenho físico do sistema.

E isso assusta desenvolvedores modernos acostumados com abstração total.


🌳 Parentage — O Peso da Hierarquia

No mundo relacional:

JOIN resolve quase tudo.

No IMS:

hierarquia mal desenhada vira pesadelo operacional.

Veteranos conhecem a dor de:

  • logical relationships

  • secondary indexing

  • twin chains

  • parentage explosion

  • reorgs monstruosos

Porque o IMS premia modelos previsíveis.

Mas pune violentamente modelagens ruins.

Um DBD mal desenhado pode condenar décadas de manutenção.

E muitos sistemas bancários ainda carregam decisões arquiteturais feitas nos anos 70.


☠️ O Trauma Coletivo Chamado REORG

Se existe uma entidade mitológica no mundo IMS…

ela se chama:

REORG

Quem nunca passou madrugada acompanhando:

  • unload

  • reload

  • image copy

  • prefix resolution

  • pointer rebuild

  • HD reorganization

ainda não conheceu o verdadeiro lado operacional do IMS.

Porque diferente do mundo SQL moderno, no IMS o layout físico importa absurdamente.

Overflow chains crescem.

Ponteiros degradam.

Randomizers envelhecem mal.

E eventualmente o banco precisa ser reorganizado.

O problema?

Alguns ambientes IMS possuem dezenas de TB e bilhões de segmentos.

Reorganizar isso não é “maintenance window”.

É engenharia de guerra.


🔥 Fast Path — O Monstro Sagrado

Quando alguém menciona:

DEDB Fast Path

os veteranos imediatamente entendem que a conversa ficou séria.

Porque Fast Path não foi criado para conveniência.

Foi criado para TPS brutal.

A ideia era simples:

reduzir ainda mais overhead.

Menos logging.

Menos locking.

Menos complexidade.

Mais velocidade.

E mesmo hoje o desempenho de certos ambientes Fast Path continua assustador.

Especialmente em telecom e financial switching.


⚔️ IMS vs DB2 — A Guerra Que Nunca Acabou

O mercado gosta de tratar IMS e DB2 como concorrentes.

Veteranos sabem que isso é ingenuidade.

Os maiores ambientes do planeta usam:

IMS + DB2

ao mesmo tempo.

Porque cada um resolve problemas diferentes.

DB2 entrega:

  • flexibilidade

  • SQL

  • analytics

  • BI

  • consultas ad-hoc

IMS entrega:

  • TPS monstruoso

  • previsibilidade

  • latência mínima

  • throughput absurdo

O DB2 é um cérebro analítico.

O IMS é um sistema nervoso autônomo.


🧠 O Que os Novatos Não Percebem

A maioria dos desenvolvedores modernos nunca precisou pensar em:

  • CI split

  • root anchor points

  • segment occurrence

  • PCB sensitivity

  • path call optimization

  • SSA qualification

  • PROCOPT impact

Mas no IMS avançado esses detalhes definem:

  • performance

  • lock contention

  • response time

  • CPU consumption

  • operational scalability

E é justamente isso que torna o IMS tão fascinante.

Ele exige que o desenvolvedor compreenda a máquina.


☕ Easter Egg Mainframe

Existe uma velha piada entre sysprogs veteranos:

“SQL é para perguntar.
DL/I é para saber.”

😄

E honestamente…

existe uma certa verdade cruel nisso.


🌐 IMS Moderno — O Dinossauro Virou API

Talvez o aspecto mais surreal do IMS moderno seja este:

Hoje APIs REST em JSON frequentemente terminam em:

CBLTDLI

Lá no fundo.

Aplicativos mobile modernos.

Pix.

Cartões.

Cloud híbrida.

OpenShift.

Tudo isso frequentemente desemboca em um banco hierárquico criado antes da internet existir.

É quase cyberpunk corporativo.


💣 O Grande Paradoxo do IMS

O IMS parece antigo porque ele é antigo.

Mas ao mesmo tempo ele continua incrivelmente moderno em alguns princípios fundamentais:

  • eficiência

  • previsibilidade

  • throughput

  • estabilidade

  • controle físico

  • otimização extrema

Enquanto o mundo moderno adicionou camadas infinitas de abstração…

o IMS permaneceu brutalmente próximo do hardware.

E talvez seja justamente por isso que ele ainda sobreviva.


🚀 O Dinossauro Que Continua Dominando

O mercado adora prever o fim do mainframe.

Mas existe um detalhe inconveniente:

Boa parte do sistema financeiro mundial ainda depende dele.

E dentro desse ecossistema…

o IMS continua sendo uma das peças mais resilientes já criadas pela engenharia de software corporativa.

Talvez porque no final das contas:

moda tecnológica muda.

Mas performance real em missão crítica continua rara.

E o velho DL/I ainda sabe exatamente onde os dados estão.

quarta-feira, 27 de maio de 2026

☕🚀 IMS: O DINOSSAURO IMORTAL QUE AINDA MOVE O MUNDO

 

Bellacosa Mainframe apresenta o banco de dados hieraquico ISM

☕🚀 IMS: O DINOSSAURO IMORTAL QUE AINDA MOVE O MUNDO

A incrível história do sistema criado na era Apollo que continua processando bilhões de transações todos os dias

Se você é um programador COBOL júnior e começou recentemente a ouvir palavras como IMS, DL/I, PCB, PSB ou GU, talvez tenha pensado:

“Meu Deus… isso parece tecnologia alienígena dos anos 70.”

E sinceramente?

Você não está totalmente errado. 😄

O IMS é uma das tecnologias mais antigas ainda em operação no planeta. Mas existe um detalhe importante:

Ele também é uma das mais resilientes, rápidas e lucrativas da história da computação corporativa.

Enquanto centenas de tecnologias desapareceram, o IMS sobreviveu.

E não apenas sobreviveu.

Ele continua processando:

  • cartões de crédito

  • ATM bancário

  • sistemas de companhias aéreas

  • seguros

  • telecom

  • operações financeiras globais

em volumes absurdos.

Sim… existe uma chance enorme de você já ter usado IMS hoje sem perceber.


🌕 A Origem do IMS — NASA, Apollo e o Homem na Lua

O IMS nasceu em 1968.

Naquela época, a IBM e a Rockwell trabalhavam no projeto Apollo da NASA.

O problema era gigantesco.

A NASA precisava controlar milhares de componentes do foguete Saturn V:

  • peças

  • logística

  • engenharia

  • rastreamento

  • montagem

E os bancos de dados tradicionais da época simplesmente não conseguiam entregar a performance necessária.

Então nasceu o IMS:

Information Management System

Inicialmente criado para gerenciamento hierárquico de informações críticas do projeto Apollo.

Ou seja:

Existe uma ligação histórica real entre o IMS e a corrida espacial.

☕ Easter Egg Mainframe:

Muita gente brinca dizendo:

“O homem chegou à Lua graças ao COBOL, ao mainframe e ao café.”

E honestamente… não é tão exagerado assim.


🌳 O Grande Diferencial do IMS

Diferente do DB2 ou Oracle, o IMS NÃO é relacional.

Ele trabalha com:

Banco de dados hierárquico

Imagine uma árvore:

CLIENTE
 └── CONTA
      └── CARTAO
           └── MOVIMENTO

No IMS os dados possuem:

  • pai

  • filho

  • caminho de navegação

Isso deixa o acesso extremamente rápido.

Enquanto um banco relacional precisa pensar em:

  • JOIN

  • optimizer

  • plano de acesso

  • estatísticas

o IMS normalmente já sabe exatamente onde navegar.

É quase como um labirinto secreto onde o programa já conhece o caminho.


⚡ Por Que o IMS é Tão Rápido?

Porque ele foi criado numa época brutalmente limitada.

Nos anos 60 e 70:

  • CPU era caríssima

  • disco era lento

  • memória era minúscula

Então a IBM projetou o IMS para minimizar ao máximo o número de acessos físicos ao disco.

O resultado?

Uma arquitetura extremamente otimizada.

O IMS utiliza:

  • ponteiros físicos

  • navegação direta

  • acesso hierárquico

  • estruturas previsíveis

Em vez de perguntar:

“Como encontrar o dado?”

o IMS trabalha com:

“Eu já sei exatamente onde ele está.”


💾 Como os Dados São Gravados Fisicamente?

Aqui entra uma das partes mais fascinantes do IMS.

Fisicamente os dados normalmente são armazenados em datasets z/OS usando:

  • VSAM

  • OSAM

Mas o IMS NÃO grava tabelas como um banco relacional.

Ele grava:

Segmentos hierárquicos

Exemplo:

CLIENTE
   ↓ ponteiro físico
CONTA
   ↓ ponteiro físico
MOVIMENTO

Os segmentos ficam ligados fisicamente por ponteiros internos.

Isso permite uma navegação extremamente rápida entre os registros.

É quase como se o banco tivesse túneis secretos ligando os dados.


🧠 O Que é DL/I?

Se existe um coração no IMS…

Esse coração é o:

DL/I — Data Language One

O DL/I é a interface usada pelos programas COBOL para conversar com o IMS.

No DB2 usamos:

SELECT
INSERT
UPDATE
DELETE

No IMS usamos comandos como:

  • GU

  • GN

  • GNP

  • ISRT

  • REPL

  • DLET

Tudo via:

CALL 'CBLTDLI'

Ou seja:

O programa COBOL literalmente navega pela árvore do banco.


👨‍💻 Exemplo Simples de Acesso IMS

Imagine que queremos localizar um cliente.

A chamada clássica seria:

CALL 'CBLTDLI'
     USING 'GU  '
           DB-PCB
           CLIENTE-AREA
           CLIENTE-SSA.

O comando:

GU

significa:

Get Unique

O IMS então:

  1. usa o índice

  2. localiza o segmento

  3. posiciona o ponteiro

  4. devolve o registro

Tudo absurdamente rápido.


🔑 PCB, PSB e SSA — As Siglas Misteriosas

Quando alguém começa IMS pela primeira vez, parece que caiu num filme cyberpunk dos anos 70.

As siglas assustam.

Mas a lógica é simples.

PCB

Program Communication Block

Define o acesso ao banco.

PSB

Program Specification Block

Define quais bancos e PCBs o programa pode usar.

SSA

Segment Search Argument

É quase um “WHERE” do IMS.

Exemplo:

CLIENTE(COD=00001)

📜 IMS e JCL

No mundo IMS, o JCL também ganha superpoderes.

Um programa batch IMS normalmente roda com:

//STEP01 EXEC PGM=DFSRRC00,
// PARM='DLI,PROGIMS,PSBTEST'

O famoso:

DFSRRC00

é praticamente o “portal mágico” do batch IMS.

☕ Curiosidade Bellacosa Mainframe:

Quando um iniciante vê um JCL IMS pela primeira vez, normalmente reage assim:

“Isso é um JCL… ou um ritual arcano da IBM?”

😄


⚔️ IMS vs DB2

Essa é uma guerra clássica.

O IMS possui:

✅ performance monstruosa
✅ baixo overhead
✅ TPS absurdamente alto

Mas o DB2 possui:

✅ SQL flexível
✅ analytics
✅ joins
✅ consultas ad-hoc

Por isso muitos bancos usam:

IMS + DB2 juntos

IMS processa o core transacional.

DB2 faz relatórios e analytics.

É como:

IMS = motor Fórmula 1
DB2 = cérebro analítico

🤖 IMS Moderno — Sim, Ele Continua Evoluindo

Muita gente pensa que IMS ficou preso nos anos 70.

Errado.

Hoje o IMS conversa com:

  • APIs REST

  • JSON

  • Java

  • OpenShift

  • Cloud híbrida

  • Mobile banking

  • z/OS Connect

Ou seja:

Seu aplicativo de banco no celular pode estar conversando com um software criado há mais de 50 anos.

Isso é simplesmente absurdo.

E incrível.


💼 Vale a Pena Aprender IMS?

Para um programador COBOL júnior?

SIM. MUITO.

Porque existem poucos especialistas.

E muitos profissionais IMS estão se aposentando.

O mercado procura gente que entenda:

  • COBOL

  • IMS

  • JCL

  • VSAM

  • CICS

  • DB2

Essa combinação continua extremamente valorizada.

Especialmente em:

  • bancos

  • seguradoras

  • telecom

  • aviação

  • governo


☕ O Dinossauro Que Nunca Morreu

O IMS é um paradoxo fascinante.

Ele nasceu antes da internet moderna.

Antes do Windows.

Antes do Linux.

Antes do SQL dominar o mundo.

E mesmo assim continua vivo.

Mais do que vivo.

Continua movimentando bilhões de dólares diariamente.

Porque no fim das contas, empresas gigantes não querem apenas “tecnologia nova”.

Elas querem:

  • estabilidade

  • velocidade

  • segurança

  • confiabilidade

E nisso o IMS ainda é um verdadeiro monstro.

Ou como muita gente brinca no mundo mainframe:

“Tecnologia antiga não significa tecnologia ultrapassada.”

Especialmente quando ela ainda move o planeta.

domingo, 26 de outubro de 2025

☕🔥💣 IMS DL/I É O VERDADEIRO NoSQL ORIGINAL?

 

Bellacosa Mainframe apresenta conceitos de DL/I em IMS

☕🔥💣 IMS DL/I É O VERDADEIRO NoSQL ORIGINAL?

O dinossauro do mainframe que já fazia navegação hierárquica décadas antes do Vale do Silício inventar o termo “NoSQL”

Existe uma ironia maravilhosa na história da computação.

Durante anos o mercado vendeu a ideia de que:

  • NoSQL era revolucionário

  • bancos hierárquicos eram ultrapassados

  • o futuro havia finalmente derrotado o legado

Então, em algum momento, muita gente percebeu uma coisa desconfortável:

O IMS já fazia várias dessas ideias nos anos 60.

Sim.

Décadas antes de MongoDB, Cassandra, DynamoDB ou Redis existirem…

o velho IMS já trabalhava com:

  • navegação hierárquica

  • acesso sem SQL

  • paths previsíveis

  • estruturas não relacionais

  • acesso ultrarrápido

  • escalabilidade absurda

E isso gera uma pergunta extremamente provocativa:

O IMS DL/I pode ser considerado um NoSQL?

A resposta curta é:

☕ Tecnicamente… SIM.

Mas com algumas nuances MUITO interessantes.


🌳 Antes do SQL Existia o Mundo Selvagem

Hoje quase todo desenvolvedor nasce dentro do universo SQL.

Tudo gira em torno de:

SELECT
INSERT
UPDATE
DELETE
JOIN

Mas antes da explosão dos bancos relacionais, o cenário era completamente diferente.

Existiam:

  • bancos hierárquicos

  • bancos em rede

  • ISAM

  • VSAM

  • estruturas proprietárias

E foi nesse ambiente que nasceu o IMS.

Em 1968.

Durante o projeto Apollo.

Ou seja:

o IMS surgiu ANTES do SQL dominar o planeta.


🚀 O Que Define um Banco NoSQL?

Essa é a chave da discussão.

NoSQL normalmente significa:

“Not Only SQL”

Ou seja:

bancos que NÃO dependem do modelo relacional tradicional.

Exemplos modernos:

  • MongoDB → documento

  • Cassandra → colunar distribuído

  • Redis → chave/valor

  • Neo4j → grafos

O ponto central é:

O modelo não-relacional.

E aqui o IMS entra com força brutal.


🌳 IMS NÃO é Relacional

O IMS trabalha com:

Estruturas hierárquicas

Exemplo:

CLIENTE
 └── CONTA
      └── CARTAO
           └── MOVIMENTO

Isso NÃO é uma tabela relacional.

Não existem JOINs naturais.

Não existe optimizer SQL clássico.

Não existe álgebra relacional.

O acesso ocorre via:

  • navegação

  • paths

  • ponteiros físicos

  • hierarquia

Exatamente como muitos NoSQL modernos.


⚡ DL/I — O Anti-SQL

Aqui está a maior diferença filosófica.

No SQL você diz:

“O que eu quero.”

O banco decide:

  • índice

  • plano

  • join

  • optimizer

No DL/I você diz:

“Como navegar.”

Exemplo clássico:

CALL 'CBLTDLI'
     USING 'GU  '
           PCB
           AREA
           SSA.

O programador controla explicitamente:

  • navegação

  • path

  • posição

  • contexto hierárquico

Isso é MUITO mais próximo de certos bancos NoSQL modernos do que muita gente imagina.


💾 O IMS Já Fazia “Document Thinking”

Observe a estrutura:

CLIENTE
 └── CONTA
      └── MOVIMENTO

Isso lembra MUITO:

  • documentos aninhados

  • árvores JSON

  • estruturas embedded

Exatamente o tipo de modelagem popularizada décadas depois por MongoDB.

A diferença?

O IMS fazia isso quando memória ainda era luxo.


🚀 Então o IMS Era um MongoDB dos Anos 60?

😄

Não exatamente.

Mas existe uma verdade desconfortável:

Muitos conceitos NoSQL modernos já existiam no IMS.

Especialmente:

  • hierarquia

  • navegação direta

  • ausência de JOIN

  • acesso por path

  • performance orientada ao modelo físico


⚔️ Onde o IMS Difere do NoSQL Moderno

Aqui entram diferenças importantes.


🌐 Distribuição

Muitos NoSQL modernos nasceram para:

  • cloud

  • clusters massivos

  • commodity servers

  • sharding horizontal

O IMS nasceu para:

Mainframe centralizado de missão crítica.


🧠 Consistência

Muitos NoSQL modernos sacrificam:

  • consistência forte

  • ACID completo

em troca de escalabilidade.

O IMS faz o contrário.

Ele foi criado para:

  • integridade brutal

  • transações críticas

  • confiabilidade absoluta

Ou seja:

O IMS é MUITO mais conservador.


🔥 O IMS é Quase “Pré-NoSQL”

Talvez a melhor definição seja:

O IMS é um ancestral direto do pensamento NoSQL.

Porque ele já trabalhava com:

✅ modelo não relacional
✅ paths previsíveis
✅ hierarquia
✅ performance orientada à estrutura
✅ ausência de JOIN pesado

Décadas antes do termo existir.


🌳 O Grande Segredo: O Modelo Físico

A maioria dos bancos modernos tenta esconder o armazenamento físico.

O IMS faz quase o oposto.

No IMS avançado:

  • HDAM

  • HIDAM

  • DEDB

  • randomizers

  • root anchor points

influenciam diretamente o comportamento do banco.

O programador IMS clássico precisava entender:

COMO O DADO EXISTE NO DISCO.

Isso é extremamente raro hoje.


⚡ Por Que o IMS Continua Tão Rápido?

Porque ele evita camadas gigantescas de abstração.

No SQL moderno:

consulta
 → optimizer
 → parser
 → planner
 → join engine
 → executor

No IMS:

path → ponteiro → segmento

Muito mais direto.

Muito mais previsível.

Muito mais brutal.


☕ Easter Egg Mainframe

Existe uma piada cruel no mundo IMS:

“MongoDB reinventou a árvore.
IMS já morava na floresta.”

😄

E honestamente?

Existe bastante verdade nisso.


🌳 IMS e JSON — O Paradoxo Moderno

Aqui a coisa fica quase cyberpunk.

Hoje muitos sistemas modernos fazem:

JSON → API REST → z/OS Connect → IMS DL/I

Ou seja:

Aplicações mobile modernas acabam alimentando um banco hierárquico criado antes da internet existir.

Isso é absurdamente fascinante.


🚀 O Que os Desenvolvedores Modernos Não Percebem

Muita gente olha o IMS e pensa:

“legado.”

Veteranos enxergam outra coisa:

Engenharia extrema.

Porque o IMS foi construído numa época onde:

  • CPU era escassa

  • disco era lento

  • memória era minúscula

Então a IBM precisou criar um sistema:

  • previsível

  • eficiente

  • econômico

  • extremamente otimizado

O resultado?

Uma arquitetura que continua competitiva em workloads específicos até hoje.


⚔️ O SQL Venceu… Mas Não Matou o IMS

O SQL venceu o mercado corporativo.

Isso é fato.

Mas ele NÃO substituiu totalmente o IMS.

Porque existem workloads onde:

  • previsibilidade

  • TPS

  • throughput

  • latência mínima

são mais importantes que flexibilidade.

Especialmente em:

  • bancos

  • telecom

  • ATM

  • autorização financeira

  • seguros


🌐 O Verdadeiro Paradoxo

O mercado moderno adora chamar IMS de “tecnologia antiga”.

Mas muitas arquiteturas modernas acabaram:

voltando para ideias que o IMS já utilizava.

Inclusive:

  • modelos não relacionais

  • acesso orientado a documento

  • estruturas hierárquicas

  • paths previsíveis

  • performance baseada no modelo físico

A história da computação é cheia dessas ironias.


💣 Então… IMS DL/I É NoSQL?

A resposta mais honesta seria:

SIM.

Mas um NoSQL ancestral.

Um NoSQL criado décadas antes do marketing inventar o termo.

O IMS não nasceu tentando ser moderno.

Ele nasceu tentando sobreviver às limitações brutais dos anos 60.

E talvez justamente por isso ele ainda exista.

Porque no final das contas:

modas tecnológicas mudam.

Mas sistemas que realmente entregam performance absurda em missão crítica raramente desaparecem.

E o velho DL/I continua navegando pela árvore como poucos sistemas modernos conseguem fazer.

sábado, 25 de outubro de 2025

☕🌳 BANCO HIERÁRQUICO: O DINOSSAURO DO MAINFRAME QUE AINDA MOVE BILHÕES

 

Bellacosa Mainframe introduz o Banco de Dados Hierarquico

☕🌳 BANCO HIERÁRQUICO: O DINOSSAURO DO MAINFRAME QUE AINDA MOVE BILHÕES

Entenda de forma simples como o IMS organiza dados como uma árvore gigante ultra rápida 🚀

Quando um programador COBOL júnior escuta:

🌳 “Banco Hierárquico”

normalmente imagina algo complicado, antigo e misterioso.

E sinceramente?

😄 O IMS realmente parece saído de um laboratório secreto da IBM dos anos 70.

Mas depois que você entende a lógica…

tudo começa a fazer MUITO sentido.


🧠 O Que é um Banco Hierárquico?

A ideia principal é simples:

📌 Os dados são organizados como uma árvore.

Exemplo:

CLIENTE
 └── CONTA
      └── CARTAO
           └── MOVIMENTO

Existe:

✅ pai
✅ filho
✅ relacionamento fixo

Igual uma árvore genealógica.


🌳 Pense Numa Árvore Real

Imagine:

TRONCO
 └── GALHO
      └── FOLHA

No IMS é parecido:

CLIENTE
 └── CONTA
      └── MOVIMENTO

Cada nível depende do anterior.


🚀 Diferença Para Banco Relacional

No DB2 ou Oracle:

SELECT * FROM CLIENTE

Tudo funciona via:

  • tabelas

  • joins

  • SQL


🌳 No Banco Hierárquico

Não existem joins clássicos.

Você:

⚡ navega pela árvore.


📦 Exemplo Real Bancário

Imagine um banco:

CLIENTE
 └── CONTA
      └── FATURA
           └── MOVIMENTO

O IMS entende naturalmente que:

✅ cliente possui conta
✅ conta possui fatura
✅ fatura possui movimentos


🧠 O Grande Segredo

No banco hierárquico:

📌 O caminho importa.

Você normalmente começa do topo:

CLIENTE

e vai descendo.


⚡ Por Que Isso é Tão Rápido?

Porque o IMS não precisa:

❌ montar JOIN complexo
❌ calcular relacionamento
❌ pensar demais

Ele já conhece o caminho.

É quase como:

seguir túneis secretos

entre os dados.


🌳 O IMS Usa Ponteiros

O IMS liga os segmentos com:

🔑 ponteiros físicos

Exemplo:

CLIENTE
   ↓
CONTA
   ↓
MOVIMENTO

Então o acesso é extremamente rápido.


💾 Segmentos

No IMS os registros são chamados de:

🟦 Segmentos

Exemplo:

SegmentoSignificado
CLIENTEregistro cliente
CONTAconta bancária
MOVIMENTOtransação

🚀 O Programa COBOL Navega

No IMS o COBOL não faz SQL.

Ele usa:

CALL 'CBLTDLI'

com comandos como:

ComandoFunção
GUbusca única
GNpróximo
GNPpróximo filho
ISRTinsert
REPLupdate
DLETdelete

🌳 Exemplo Mental

Imagine:

CLIENTE JOAO
 └── CONTA 123
      └── MOVIMENTO PIX

O programa faz:

1️⃣ encontra cliente
2️⃣ entra conta
3️⃣ lê movimentos

Tudo navegando pela árvore.


⚔️ Hierárquico vs Relacional

Banco HierárquicoBanco Relacional
árvoretabelas
navegaçãoSQL
pai/filhojoins
muito rápidoflexível
rígidodinâmico

💣 A Desvantagem

O banco hierárquico é MUITO rápido…

mas menos flexível.

Exemplo:

Se o banco foi desenhado assim:

CLIENTE
 └── CONTA

e amanhã você quiser acessar:

CONTA → CLIENTE

pode virar dor de cabeça.


🚀 Então Por Que Bancos Ainda Usam IMS?

Porque para sistemas críticos:

⚡ velocidade importa muito.

Especialmente em:

  • ATM

  • cartão

  • PIX

  • autorização financeira

  • telecom

  • aviação


☕ Curiosidade Bellacosa Mainframe

O IMS nasceu em:

🚀 1968

durante o projeto Apollo da NASA.

Sim.

O mesmo sistema que ajudou a organizar informações da corrida espacial…

continua hoje processando bilhões de transações financeiras.

Enquanto muita tecnologia moderna já morreu…

o “dinossauro” hierárquico continua vivo.

E extremamente rápido.


sexta-feira, 24 de outubro de 2025

☕🔥💣 IMS SYSTEM PROGRAMMER: O LADO BRUTAL DO MAINFRAME QUE SEGURA O MUNDO EM PÉ

 

Bellacosa Mainframe e o IMS System Programmer

☕🔥💣 IMS SYSTEM PROGRAMMER: O LADO BRUTAL DO MAINFRAME QUE SEGURA O MUNDO EM PÉ

O que realmente faz um especialista IMS na IBM — e por que poucos conseguem dominar esse universo

Quando alguém escuta:

“IMS System Programmer”

muita gente imagina apenas:

  • instalar software

  • rodar jobs

  • olhar logs

😄

Mas a realidade é MUITO mais pesada.

Na prática, um especialista IMS trabalha literalmente no coração operacional do sistema financeiro mundial.

Porque quando:

  • ATM para

  • autorização de cartão falha

  • telecom cai

  • fila IMS trava

  • Shared Queue degrada

  • DBRC perde sincronismo

o problema não é “apenas TI”.

💣 O impacto pode custar milhões em minutos.

E é exatamente aí que entra o profissional IMS.


🚀 Instalar, Atualizar e Manter IMS com SMP/E

Essa é uma das tarefas mais clássicas — e perigosas — do mundo z/OS.

O:

SMP/E

(System Modification Program Extended)

é o sistema responsável por instalar e manter software no mainframe IBM.

No mundo distribuído você baixa instalador.

No mainframe você trabalha com:

  • FMID

  • HOLDDATA

  • APPLY

  • ACCEPT

  • CSI

  • zones

Ou seja:

engenharia cirúrgica de software corporativo.


☠️ O Terror do APPLY CHECK

Veteranos conhecem o ritual:

SET BDY(TGT1).
APPLY CHECK.

E então começa a tensão.

Porque um PUT errado pode:

💣 quebrar IMS
💣 afetar CICS
💣 impactar DB2
💣 gerar incompatibilidades de SYSPLEX

SMP/E não é apenas “instalação”.

É controle absoluto de manutenção em ambiente crítico.


🌳 Configurar IMS Transaction Manager

Aqui começa o verdadeiro mundo IMS.

O:

IMS TM

(Transaction Manager)

é o cérebro transacional do ambiente.

Ele controla:

  • mensagens

  • filas

  • transações

  • scheduling

  • regiões online

  • comunicação terminal/programa

Quando alguém faz:

💳 pagamento
🏧 saque
📱 consulta saldo

há grandes chances de um IMS TM estar trabalhando por trás.


⚡ IMS Shared Queue — O Monstro do Paralelismo

O Shared Queue foi criado para ambientes gigantescos.

Ele permite que múltiplos IMS compartilhem:

  • filas

  • mensagens

  • workload

em ambiente SYSPLEX.

Isso traz:

✅ escalabilidade
✅ failover
✅ balanceamento
✅ alta disponibilidade

Mas também traz:

😄 pesadelos operacionais.

Porque quando Shared Queue degrada…

o caos pode ficar lindo.


🧠 Common Service Layer — A Cola do Ecossistema

O:

CSL

(Common Service Layer)

é a camada que integra diversos componentes IMS modernos.

Ela fornece:

  • Operations Manager

  • Structured Call Interface

  • Resource Manager

Sem CSL, ambientes modernos IMS praticamente não existem mais.

É ele quem permite gerenciamento mais centralizado e inteligente.


🔥 DBRC — O Guardião da Integridade

Se existe uma entidade sagrada no IMS…

ela se chama:

DBRC

(Database Recovery Control)

O DBRC controla:

  • recovery

  • logs

  • image copy

  • autorização de banco

  • integridade operacional

Ele sabe:

✅ quais logs existem
✅ quais backups são válidos
✅ qual banco pode abrir
✅ quais datasets estão consistentes

Sem DBRC:

💣 recovery vira inferno.


☕ Easter Egg Mainframe

Veteranos dizem:

“No dia que o RECON quebra…
o DBA envelhece 10 anos.”

😄

E honestamente?

Não é exagero.


🌐 IMS Connect — O Portal Entre Mundos

Hoje o IMS conversa com:

  • APIs REST

  • Java

  • JSON

  • mobile banking

  • cloud híbrida

E quem faz muita dessa ponte é o:

IMS Connect

Ele permite integração TCP/IP moderna com o velho mundo DL/I.

Ou seja:

📱 aplicativo no celular
→ API REST
→ IMS Connect
→ IMS TM
→ COBOL
→ DL/I

Cyberpunk corporativo puro.


📊 Monitorar IMS com RMF e SMF

No mundo distribuído muita gente olha dashboard bonito.

No mainframe…

o profissional IMS olha:

  • SMF

  • RMF

  • throughput

  • EXCP

  • CPU

  • enqueue

  • response time

Porque aqui performance é religião.


🚀 SMF — O DNA do z/OS

O:

SMF

(System Management Facility)

registra praticamente tudo.

É o “gravador de caixa preta” do mainframe.

Você consegue analisar:

  • uso CPU

  • transações

  • I/O

  • locks

  • workload

  • comportamento do IMS


⚡ RMF — O Olho da Performance

O:

RMF

(Resource Measurement Facility)

mede:

  • CPU

  • canais

  • memória

  • coupling facility

  • workload

Num ambiente IMS gigantesco, RMF é praticamente um estetoscópio do sistema.


💣 Analisar Abends e Problemas Complexos

Aqui mora a parte mais brutal da profissão.

Porque quando aparece:

U0777
S0C4
DFSxxxx
ABEND878

o especialista IMS entra em modo guerra.

Ele precisa analisar:

  • dumps

  • logs

  • traces

  • control blocks

  • storage overlays

  • waits

  • contention

Muitas vezes sob pressão absurda.


🌳 Alta Disponibilidade — Onde o IMS Brilha

IMS foi criado para:

missão crítica contínua.

Então arquiteturas IMS modernas usam:

  • SYSPLEX

  • Shared Queue

  • Coupling Facility

  • XRF

  • Fast Path

  • HALDB

para entregar:

✅ uptime gigantesco
✅ failover rápido
✅ workload sharing
✅ resiliência extrema


🚀 Disaster Recovery — O Dia do Juízo Final

Todo ambiente sério IMS possui:

DR TEST

Porque eventualmente:

  • data center cai

  • storage falha

  • rede quebra

  • região inteira desaparece

E o IMS precisa sobreviver.

O time testa:

  • recovery

  • restart

  • log apply

  • DBRC

  • reconnect

  • queue rebuild

Tudo sob cronômetro.


⚔️ O Arsenal Obrigatório do Profissional IMS


🟦 JCL

O idioma operacional do z/OS.

Sem JCL você literalmente não entra no jogo.


🟩 TSO/ISPF

O cockpit do operador mainframe.


🟨 JES2

Gerencia jobs, spool e execução batch.


🟪 REXX

O canivete suíço do mainframe.

Automação.

Monitoramento.

Operação.

Recovery.


🟥 SYSPLEX

O conceito que permite múltiplos z/OS trabalharem como um único sistema gigante.

Fundamental para IMS moderno.


☕ O Grande Segredo do Mundo IMS

O mercado moderno adora falar sobre:

  • cloud

  • microservices

  • kubernetes

  • serverless

Mas existe um detalhe curioso:

Boa parte das transações financeiras globais ainda depende de profissionais que dominam:

  • IMS

  • DL/I

  • DBRC

  • Shared Queue

  • SYSPLEX

  • SMP/E

Tecnologias criadas décadas atrás…

mas ainda absurdamente eficientes.


🚀 O Último Bastião da Engenharia Hardcore

Talvez seja isso que torne o universo IMS tão fascinante.

Ele não foi construído para ser bonito.

Foi construído para:

  • sobreviver

  • escalar

  • performar

  • resistir

E enquanto muita tecnologia moderna luta para manter estabilidade básica…

o velho IMS continua processando bilhões de transações silenciosamente.

Como um dinossauro mecânico escondido no subsolo do sistema financeiro mundial.


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.

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