☕ 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 banco hierárquico. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta banco hierárquico. Mostrar todas as mensagens

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.


quinta-feira, 25 de agosto de 2022

Do IMS/360 ao IMS 15 no IBM z16

 

Bellacosa Mainframe uma overview do ims 360  ao ims 15

☕ Um Café no Bellacosa Mainframe

Do IMS/360 ao IMS 15 no IBM z16

A Evolução da Arquitetura que Inspirou os Sistemas Corporativos Modernos — Um Guia Definitivo para um Programador COBOL Padawan

Durante décadas, muita gente acreditou que os sistemas corporativos nasceram com Java, Oracle, APIs REST ou Kubernetes. Outros imaginam que microserviços, filas de mensagens, observabilidade e processamento distribuído são invenções da computação moderna.

A realidade é muito mais interessante.

Muito antes da internet existir, antes da Web, antes do Linux e até antes do banco de dados relacional se popularizar, engenheiros da IBM já haviam construído uma arquitetura extremamente sofisticada sobre o IBM System/360. Essa arquitetura possuía processamento online, banco de dados, recuperação automática, auditoria, processamento batch, filas de mensagens e milhares de usuários simultâneos.

O nome dela era simplesmente:

IMS – Information Management System

A imagem que analisamos nesta conversa é um excelente exemplo dessa arquitetura clássica. Embora o diagrama tenha sido desenhado há mais de cinquenta anos, praticamente todos os conceitos presentes nele continuam vivos no IBM Z moderno.

Hoje vamos desmontar essa arquitetura peça por peça e reconstruí-la utilizando a visão de um programador COBOL Padawan, entendendo não apenas "como funciona", mas também "por que continua funcionando".


O nascimento do IMS

Pouca gente conhece essa curiosidade.

O IMS não nasceu para bancos.

Nem para bancos financeiros.

Nem para seguradoras.

Ele nasceu por causa da NASA.

No final da década de 1960, a IBM precisava criar um sistema capaz de controlar milhões de componentes utilizados no Programa Apollo.

Imagine controlar parafusos.

Cabos.

Circuitos.

Motores.

Bombas.

Sensores.

Tudo precisava ser localizado em segundos.

Foi então que surgiu um banco de dados hierárquico extremamente rápido.

Esse projeto evoluiu e tornou-se o IMS.

Curiosamente, poucos anos depois, bancos, seguradoras, companhias aéreas e governos passaram a utilizá-lo.

Até hoje.


Bellacosa Mainframe e o workflow do ims dl/i

Entendendo o workflow

Observe a estrutura geral.

Ela é extremamente organizada.

Entradas


Processamento Online


Banco de Dados


Batch


Relatórios

Parece simples.

Mas escondia uma engenharia impressionante.

Cada bloco tinha uma responsabilidade específica.

Exatamente como fazemos hoje utilizando microserviços.

A diferença é que isso já existia décadas antes do termo "microservice" ser inventado.


Os Inputs

Na parte superior aparecem três caixas.

INPUT

INPUT

INPUT

Essas entradas podiam ser praticamente qualquer coisa.

Um terminal 3270.

Uma leitora de cartões.

Uma fita magnética.

Outro computador.

Uma aplicação externa.

Hoje poderíamos substituir essas caixas por:

  • API REST

  • IBM MQ

  • Kafka

  • Event Streams

  • Mobile App

  • Browser

  • Portal Web

  • IoT

O conceito continua exatamente igual.

Alguém envia uma informação.

O sistema precisa processá-la.


O verdadeiro cérebro: IMS Transaction Manager

No desenho original aparece:

IMS/360

Hoje ele seria:

IMS TM 15

Ele recebe transações.

Gerencia filas.

Controla sessões.

Executa programas COBOL.

Protege os dados.

Controla concorrência.

Garante integridade.

É praticamente um servidor de aplicações.

Muito antes do WebSphere existir.


Os famosos Message Processing Programs (MPP)

Na lateral aparece uma inscrição discreta.

Message Processing Programs

Esse pequeno detalhe representa uma das maiores ideias da computação corporativa.

O usuário envia uma mensagem.

O IMS coloca essa mensagem em uma fila.

Depois escolhe automaticamente qual programa COBOL deve executá-la.

Hoje isso lembra imediatamente:

  • Controller REST

  • Lambda

  • Azure Function

  • Cloud Function

  • Microserviço

Na prática é exatamente isso.

Só que rodando em um IBM Z.


O ciclo de uma transação

Imagine um operador alterando uma ordem de produção.

O fluxo interno acontece assim.

Terminal

↓

Mensagem

↓

Fila IMS

↓

MPP

↓

COBOL

↓

IMS DB

↓

Resposta

O usuário vê apenas alguns segundos.

Mas centenas de mecanismos internos entram em ação.

Locks.

Recovery.

Logs.

Buffers.

Commit.

Checkpoint.

Tudo acontece automaticamente.


Os módulos internos

Dentro da aplicação aparecem vários nomes.

STATUS

CHANGE

SPLIT

INQUIRY

ADD

Não são apenas palavras.

Cada uma representa uma operação de negócio.

STATUS

Consulta.

CHANGE

Atualização.

ADD

Inclusão.

INQUIRY

Pesquisa.

SPLIT

Divisão de pedidos.

Perceba uma curiosidade.

Hoje chamaríamos isso de:

GET

POST

PUT

PATCH

As ideias mudaram de nome.

Não de essência.


Os bancos de dados

A aplicação conversa com três bancos.

Isso já demonstra uma preocupação enorme com organização.

Manufacturing Order Database

Banco principal.

Pedidos.

Clientes.

Produção.

Ordens.

Materiais.


Part Number Cross Reference

Uma base auxiliar.

Ela permite descobrir equivalências.

Imagine:

Parafuso antigo

↓

Parafuso novo

Ou

Fornecedor A

↓

Fornecedor B

Hoje chamaríamos isso de Master Data Management.


Manufacturing Planning Database

Aqui mora o planejamento.

Capacidade.

Estoque.

Cronograma.

Previsão.

Hoje esse banco conversa diretamente com sistemas ERP.


Easter Egg nº 1

Muita gente acredita que Data Warehouse nasceu nos anos 90.

Na verdade não.

Observe o bloco:

Unload and Select

Ele já fazia exatamente isso.

Extraía dados.

Selecionava informações.

Preparava estatísticas.

Produzia relatórios.

É praticamente um ETL primitivo.


O IMS LOG

Este talvez seja o componente mais importante de toda arquitetura.

Toda alteração gera um registro.

Nada acontece sem ser registrado.

É graças ao LOG que existem:

Recovery

Rollback

Auditoria

Sincronização

Checkpoint

Hoje fazemos exatamente isso.

Oracle.

Db2.

SQL Server.

PostgreSQL.

Todos utilizam o mesmo princípio.


Easter Egg nº 2

Se você já ouviu falar em WAL (Write Ahead Log) do PostgreSQL...

Parabéns.

Você já conhece o IMS LOG.

O conceito é praticamente idêntico.


IMS Utilities

Após registrar tudo no LOG entram as Utilities.

Elas realizam tarefas fundamentais.

Reorganização.

Validação.

Compressão.

Recovery.

Carga.

Descarga.

Verificação.

Sem Utilities, um ambiente IMS simplesmente não sobrevive.


O mundo Batch

Na parte inferior aparece outro universo.

Os Batch Programs.

Hoje muitos iniciantes imaginam que Batch significa tecnologia antiga.

Não.

Batch significa processamento em massa.

Todos os grandes bancos ainda executam milhares de jobs batch diariamente.

Mudaram apenas as ferramentas.


Report Writer

Responsável pelos relatórios.

No passado.

Impressoras

Papel contínuo

Listagens verdes

Hoje.

Power BI.

Cognos.

Grafana.

Excel.

PDF.

O objetivo continua igual.

Transformar dados em informação.


Selected Report Writer

Relatórios específicos.

Por exemplo.

Pedidos atrasados.

Pedidos acima de R$ 1 milhão.

Produção do turno noturno.

Database Statistics

Outro detalhe interessante.

O sistema produzia estatísticas do banco.

Quantidade de registros.

Espaço ocupado.

Fragmentação.

Performance.

Hoje isso lembra:

RUNSTATS

EXPLAIN

Catalog Statistics

SMF

RMF

OMEGAMON


POSR

No desenho aparece uma sigla curiosa.

POSR

Dependendo da instalação, poderia representar um sistema interno responsável pela consolidação de relatórios operacionais.

É praticamente um pequeno Data Mart.

Observe que ele recebe dados extraídos.

Processa.

Produz relatórios.

Hoje isso seria um pipeline analítico.


Atualizando para o IBM z16

Na versão moderna do diagrama acrescentamos diversos componentes.

Observe como tudo evoluiu.

Entradas

Agora temos.

3270

REST

JSON

MQ

Kafka

Mobile

Cloud

Eventos

Mas todos continuam convergindo para o mesmo lugar.

IMS TM.


Segurança

Hoje um ambiente corporativo possui:

RACF

TLS

AT-TLS

MFA

Criptografia

SMF

Auditoria

LGTO

Compliance

Zero Trust

No desenho antigo isso estava implícito.

Hoje tornou-se um bloco próprio.


DevOps

Outro componente inexistente no desenho original.

Agora encontramos.

Git

GitHub

GitLab

Jenkins

UrbanCode

DBB

Zowe CLI

Ansible

Terraform

Pipelines

Observe.

Nenhum deles substitui o IMS.

Eles apenas automatizam seu gerenciamento.


Observabilidade

Outro grande avanço.

Hoje monitoramos praticamente tudo.

OMEGAMON

Instana

Operations Analytics

SMF

RMF

Grafana

OpenTelemetry

Anomalias

Machine Learning

No IMS/360 isso era feito através de relatórios.

Hoje fazemos em tempo real.


Integração

Outro enorme salto.

O IMS moderno conversa naturalmente com:

Db2

MQ

IMS Connect

REST

SOAP

JSON

Cloud Pak for Data

Data Lake

IBM Cloud

AWS

Azure

Kafka

OpenShift

O IMS deixou de ser um ambiente isolado.

Hoje participa do ecossistema corporativo inteiro.


O maior equívoco sobre o Mainframe

Existe uma frase repetida há décadas.

"O Mainframe é um computador antigo."

Errado.

Na verdade.

O Mainframe é uma arquitetura extremamente moderna cuja origem é antiga.

É diferente.

O IBM z16 possui:

IA embarcada.

Criptografia por hardware.

Processadores especializados.

Linux.

Containers.

Kubernetes.

OpenShift.

APIs.

Cloud.

Mas continua executando IMS.

Porque a arquitetura foi bem projetada.


Easter Egg nº 3

Sabe o que mais impressiona?

Se um programador COBOL de 1985 voltasse hoje, ele provavelmente reconheceria a lógica de um sistema IMS em poucos minutos.

Agora imagine o contrário.

Um desenvolvedor moderno tentando entender um programa IMS de 1985.

Ele descobriria que quase tudo o que considera "novo" já existia em alguma forma:

  • filas de mensagens;

  • processamento orientado a eventos;

  • separação entre regras de negócio e acesso a dados;

  • auditoria transacional;

  • recuperação automática;

  • alta disponibilidade.

Os nomes mudaram. Os princípios permaneceram.


Passo a passo para um Padawan dominar o IMS

Não tente aprender tudo de uma vez. Construa conhecimento em camadas.

Nível 1 – Fundamentos

  • Entenda o que é o IBM Z e o z/OS.

  • Aprenda JCL, datasets e utilitários básicos.

  • Conheça a diferença entre processamento online e batch.

Nível 2 – IMS TM

  • Descubra o que é uma transação IMS.

  • Estude Message Processing Programs (MPP).

  • Aprenda o fluxo: entrada → fila → programa → resposta.

Nível 3 – IMS DB

  • Compreenda bancos de dados hierárquicos.

  • Estude segmentos, hierarquias e DBD/PSB.

  • Pratique navegação usando chamadas DL/I.

Nível 4 – Operação

  • Aprenda a interpretar logs.

  • Estude checkpoints e recovery.

  • Conheça as principais IMS Utilities.

Nível 5 – Modernização

  • Explore IMS Connect.

  • Publique APIs REST para aplicações IMS.

  • Integre com IBM MQ, Event Streams e microsserviços.


Curiosidades que quase ninguém conhece

  • O IMS é um dos softwares comerciais mais antigos ainda em desenvolvimento contínuo.

  • Milhões de transações financeiras diárias no mundo passam por aplicações IMS sem que o usuário perceba.

  • Bancos de dados hierárquicos continuam sendo extremamente eficientes para cargas transacionais previsíveis.

  • O IMS foi projetado quando memória e processamento eram recursos escassos, o que explica sua impressionante eficiência até hoje.

  • Muitas arquiteturas modernas de mensageria reproduzem conceitos que o IMS já implementava há décadas.


Conclusão

A imagem histórica que analisamos não é apenas um diagrama técnico; ela representa uma filosofia de engenharia. Ela mostra que sistemas corporativos robustos são construídos com responsabilidades bem definidas, processamento confiável, recuperação planejada e forte disciplina arquitetural.

Ao atualizarmos esse desenho para um ambiente IBM z16 com IMS 15, percebemos que a essência permanece intacta. Entradas continuam chegando ao Transaction Manager, programas COBOL continuam executando regras de negócio, bancos de dados continuam preservando a integridade das informações e processos batch continuam alimentando análises e relatórios. A diferença é que agora tudo isso convive com APIs REST, JSON, IBM MQ, Event Streams, DevOps, observabilidade em tempo real, OpenShift, inteligência artificial e integração com nuvens híbridas.

Essa é a maior lição para um programador COBOL Padawan: tecnologias vêm e vão, mas boas arquiteturas atravessam gerações. O IMS sobreviveu porque foi projetado com princípios sólidos. Entender esse legado não é estudar apenas o passado; é compreender os alicerces sobre os quais a computação corporativa moderna continua sendo construída.

segunda-feira, 1 de fevereiro de 2021

IMS DB e COBOL: Entendendo os Bastidores das Chamadas DL/I, PCB Masks e o Modelo de Acesso que Sobreviveu a Todas as Revoluções da TI

 

Bellacosa Mainframe introdução ao ims db e cobol mainframe

☕💣🚀 PADAWAN, VOCÊ NÃO PROGRAMA IMS COM COBOL. VOCÊ NEGOCIA COM UMA CIVILIZAÇÃO DE 50 ANOS DE EXPERIÊNCIA!

IMS DB e COBOL: Entendendo os Bastidores das Chamadas DL/I, PCB Masks e o Modelo de Acesso que Sobreviveu a Todas as Revoluções da TI

Quando um desenvolvedor moderno abre um programa COBOL com acesso ao IMS pela primeira vez, normalmente a reação é sempre a mesma:

"Cadê o SELECT?"

"Cadê o OPEN?"

"Cadê o CURSOR?"

"Cadê o SQL?"

E então ele encontra algo aparentemente estranho:

ENTRY 'DLITCBL' USING STUDENT-PCB-MASK.

Logo depois:

CALL 'CBLTDLI' USING DLI-GN
                     STUDENT-PCB-MASK
                     SEGMENT-I-O-AREA.

E finalmente:

GOBACK.

Pronto.

Acabou.

Nenhum SELECT.

Nenhum OPEN.

Nenhum FETCH.

Nenhuma conexão.

Nenhum driver JDBC.

Nenhuma string de conexão.

Nenhuma senha.

Nenhum framework.

E mesmo assim...

o programa está acessando um banco de dados capaz de processar milhões de transações por segundo.

É nesse momento que o jovem padawan percebe que IMS não é apenas um banco de dados.

IMS é uma filosofia completamente diferente de acesso a dados.

E entender as instruções apresentadas no material IMS DB COBOL Basics é o primeiro passo para compreender por que milhares de sistemas críticos continuam rodando sobre IMS até hoje.


O Erro Mais Comum: Tentar Enxergar IMS Como Um Banco Relacional

Grande parte dos profissionais atuais nasceu tecnicamente dentro do paradigma SQL.

Eles pensam assim:

SELECT *
FROM CLIENTE
WHERE CPF='12345678900'

No mundo relacional você pergunta:

"Banco, me devolva os dados."

No IMS a lógica é diferente.

Você navega.

Você percorre.

Você se posiciona.

Você caminha pela hierarquia.

O IMS funciona muito mais próximo de um sistema de arquivos inteligente do que de um banco relacional tradicional.

Imagine uma estrutura:

CLIENTE
 |
 +-- CONTA
      |
      +-- MOVIMENTO

Não existe JOIN.

Não existe otimizador SQL.

Não existe plano de acesso dinâmico.

Você navega diretamente pela estrutura.

E é justamente isso que torna o IMS absurdamente rápido.


O Que Acontece Quando o Programa Começa?

O documento mostra a instrução:

ENTRY 'DLITCBL'

que representa a porta de entrada do programa IMS.

Mas vamos muito além da definição formal.

Na prática ocorre o seguinte:

JCL
 |
 +-- IMS Control Region
        |
        +-- DL/I
              |
              +-- Programa COBOL

O COBOL não inicia sozinho.

Quem inicia tudo é o IMS.

O programa COBOL é praticamente um "convidado" dentro do ambiente IMS.

Quando o IMS entrega o controle ao programa:

  • carrega PSB

  • carrega PCB

  • monta buffers

  • monta áreas de comunicação

  • posiciona recursos

e somente então chama:

ENTRY 'DLITCBL'

Nesse instante o COBOL recebe acesso ao universo IMS.


DLITCBL: A Ponte Entre Dois Mundos

O material explica que DLITCBL significa:

DL/I TO COBOL

Mas historicamente isso é muito mais interessante.

Na década de 1970:

  • COBOL não conhecia IMS

  • IMS não conhecia COBOL

Era necessário um mecanismo de integração.

DLITCBL tornou-se esse mecanismo.

É equivalente ao que hoje chamaríamos de:

  • Driver JDBC

  • ORM

  • API Gateway

  • Framework de Persistência

Só que criado décadas antes dessas tecnologias existirem.


PCB: O Conceito Que Confunde Todo Mundo

O documento fala repetidamente sobre PCB Masks.

Esse é um dos conceitos mais importantes do IMS.

PCB significa:

Program Communication Block

Pense nele como um contrato.

O programa não acessa diretamente o banco.

O programa acessa o banco através do PCB.

O PCB informa:

  • qual banco pode acessar

  • quais segmentos pode ler

  • quais permissões possui

  • qual status retornou

É parecido com:

Token de acesso
+
Metadata
+
Controle de navegação

Tudo junto.


PCB Mask: O Espelho Local do PCB

O material mostra:

LINKAGE SECTION.
01 STUDENT-PCB-MASK.

Por que isso existe?

Porque o PCB real não está dentro do programa.

Ele pertence ao IMS.

Logo:

IMS
 |
 +-- PCB Real

Enquanto:

Programa COBOL
 |
 +-- PCB Mask

O PCB Mask é simplesmente uma representação local.

Uma espécie de ponte entre o programa e o PCB verdadeiro.


O Campo Mais Importante do PCB

Observe no exemplo:

05 STD-STATUS-CODE PIC XX.

Este campo vale ouro.

Porque toda chamada DL/I retorna um status.

Sem exceção.

É equivalente a:

SQLException

ou

RETURN CODE

ou

Exception

Mas muito mais eficiente.

Após cada chamada:

CALL 'CBLTDLI'

o IMS atualiza:

STD-STATUS-CODE

indicando sucesso ou erro.


O Que Realmente É o CBLTDLI?

O documento explica:

CBLTDLI = COBOL TO DL/I

Esta é a interface oficial entre COBOL e IMS.

Toda operação passa por ela.

Imagine:

COBOL
  |
CBLTDLI
  |
DL/I
  |
IMS DB

Ela funciona como uma API.

Décadas antes da palavra API virar moda.


A Grande Sacada: O CALL Sempre Tem a Mesma Estrutura

O material apresenta:

CALL 'CBLTDLI' USING

seguido de parâmetros.

O mais interessante é que a estrutura básica quase nunca muda.

Você altera apenas o Function Code.

Por exemplo:

GU

Get Unique

GN

Get Next

GHU

Get Hold Unique

REPL

Replace

ISRT

Insert

DLET

Delete

Todos utilizam o mesmo mecanismo.


GU: A Consulta Direta

Imagine:

CLIENTE
CPF=123

Você quer exatamente esse cliente.

Então:

CALL 'CBLTDLI'
USING DLI-GU

O IMS procura diretamente pela chave.

Resultado:

Leitura extremamente rápida

Sem scan.

Sem cursor.

Sem otimização dinâmica.


GN: O Cursor Original dos Anos 70

O exemplo do documento utiliza:

DLI-GN

GN significa:

Get Next

Ele busca o próximo segmento.

Na prática:

Registro 1
Registro 2
Registro 3
Registro 4

Cada chamada:

GN

avança um registro.

Muito parecido com:

FETCH NEXT

Só que décadas mais antigo.


GHU: O Início de Uma Atualização

Ler é simples.

Atualizar é diferente.

O IMS precisa garantir integridade.

Por isso existe:

GHU

Get Hold Unique.

Você não apenas lê.

Você bloqueia.

É semelhante a:

SELECT FOR UPDATE

REPL: A Atualização de Verdade

Após o GHU:

REPL

substitui o segmento.

Fluxo clássico:

GHU
 |
ALTERA DADOS
 |
REPL

Essa sequência existe em praticamente todos os sistemas IMS do planeta.


ISRT: Inserindo Dados

O documento mostra:

DLI-ISRT

Essa instrução cria novos segmentos.

Exemplo:

CLIENTE
 |
 +-- NOVA CONTA

O IMS posiciona automaticamente o segmento dentro da hierarquia.


DLET: O Botão Vermelho

DLET

Remove um segmento.

Mas atenção.

Em IMS isso pode significar remover uma árvore inteira.

Exemplo:

CLIENTE
 |
 +-- CONTA
 |
 +-- MOVIMENTO

Dependendo da estrutura:

DLET CLIENTE

pode eliminar tudo abaixo.

Por isso é uma operação tratada com extremo cuidado.


Segment I/O Area: A Caixa de Transporte

O documento mostra:

01 SEGMENT-I-O-AREA PIC X(150).

Ela funciona como uma área de troca.

Na leitura:

IMS -> I/O AREA

Na gravação:

I/O AREA -> IMS

É o equivalente aos buffers modernos.


SSA: O GPS do IMS

O documento menciona Segment Search Arguments (SSA).

SSA é o mecanismo de pesquisa.

Exemplo:

CLIENTE(CPF=123)

Traduzido para SSA.

Ele informa ao IMS exatamente onde procurar.

É o ancestral dos predicados SQL.


Por Que Não Existe OPEN e CLOSE?

Essa pergunta aparece em todos os treinamentos.

O material menciona que:

No SELECT
No ASSIGN
No OPEN
No CLOSE

para IMS.

O motivo é simples.

Quem administra o banco é o próprio IMS.

Não o programa.

O programa apenas solicita serviços.

Essa arquitetura reduz erros e aumenta estabilidade.


A Importância do GOBACK

O documento alerta para algo crítico:

GOBACK

deve ser utilizado.

Não:

STOP RUN

Isso parece detalhe.

Mas não é.

Quando você executa:

GOBACK

o controle retorna ao IMS.

Então o IMS pode:

  • liberar locks

  • atualizar logs

  • sincronizar buffers

  • finalizar recursos

Com:

STOP RUN

você devolve controle ao sistema operacional.

O IMS perde a chance de executar essas tarefas.

Resultado?

Abends.

Locks presos.

Recursos inconsistentes.

Dor de cabeça para a produção.


O Que os Desenvolvedores Modernos Não Percebem

Muitos olham para IMS e enxergam uma tecnologia antiga.

Mas observem:

Década de 1970:

API de acesso
Controle transacional
Checkpoint
Recovery
Locking
Alta disponibilidade
Navegação otimizada

Tudo isso já existia.

Décadas antes de:

  • Hibernate

  • Spring

  • REST

  • Kubernetes

  • Microservices


A Verdadeira Lição do IMS

O material apresenta apenas os fundamentos:

  • ENTRY DLITCBL

  • PCB Mask

  • CALL CBLTDLI

  • Segment I/O Area

  • SSA

  • GOBACK

Mas por trás dessas poucas instruções existe uma das arquiteturas mais bem-sucedidas da história da computação.

Enquanto dezenas de tecnologias nasceram, cresceram e desapareceram, o IMS continuou processando:

  • bancos

  • seguradoras

  • governos

  • companhias aéreas

  • cartões de crédito

  • sistemas financeiros globais

O motivo não é nostalgia.

Não é resistência à mudança.

Não é conservadorismo.

É porque a arquitetura foi construída para resolver problemas reais de desempenho, disponibilidade e integridade de dados.

E aqui está a maior lição para o jovem padawan:

Um programa COBOL com IMS não faz consultas.

Ele conversa com uma infraestrutura que foi refinada ao longo de mais de meio século.

Cada CALL 'CBLTDLI' representa décadas de engenharia, otimização e experiência operacional acumuladas desde os primórdios do processamento transacional corporativo.

Entender essas chamadas não é apenas aprender IMS.

É compreender uma das fundações sobre as quais a computação empresarial moderna foi construída. ☕💣🚀

Fonte analisada: IMS DB - COBOL Basics (TutorialsPoint), abordando ENTRY DLITCBL, PCB Masks, CALL CBLTDLI, códigos de função DL/I e uso de GOBACK em programas COBOL que acessam IMS DB.

domingo, 25 de março de 2007

O que é DL/I em IMS?

 

Bellacosa Mainframe analisando o DL/I em IMS

O que é DL/I em IMS?

O DL/I (Data Language/I) é a linguagem de acesso a dados e transações utilizada pelo IMS (Information Management System) da IBM.

Ele funciona como uma interface entre os programas (COBOL, PL/I, Assembler) e os bancos de dados hierárquicos do IMS.

De forma simples:

Programa COBOL
       ↓
      DL/I
       ↓
Banco IMS

O que Significa DL/I?

DL/I
Data Language / Interface

É a API original criada pela IBM para acessar bancos IMS.


Por que o DL/I Foi Criado?

Na década de 1960, não existia SQL.

O IMS armazenava dados em estruturas hierárquicas.

Para acessar esses dados era necessário um mecanismo específico.

A IBM criou então:

DL/I

DL/I é o SQL do IMS?

De certa forma, sim.

Compare:

DB2

SELECT *
FROM CLIENTE
WHERE CPF = '12345678900'

IMS DL/I

GU CLIENTE

seguido da navegação hierárquica.


Estrutura Hierárquica do IMS

Exemplo:

CLIENTE
   │
   ├── CONTA
   │      │
   │      └── MOVIMENTO
   │
   └── CARTAO

Como o DL/I Navega?

O DL/I percorre a hierarquia.

CLIENTE
   ↓
CONTA
   ↓
MOVIMENTO

Tipos de Chamadas DL/I

O DL/I trabalha através de comandos conhecidos como:

CALL DL/I

Exemplo COBOL:

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

Principais Comandos DL/I

GU

Get Unique

Busca um registro específico.


Exemplo:

GU CLIENTE

Resultado:

CLIENTE 12345

GN

Get Next

Busca o próximo segmento.


Exemplo:

CLIENTE 1
CLIENTE 2
CLIENTE 3

Fluxo:

GN
↓
Próximo registro

GNP

Get Next Within Parent

Busca o próximo filho.


Exemplo:

CLIENTE
   │
   ├── CONTA1
   ├── CONTA2
   └── CONTA3

Com:

GNP

navega entre as contas.


GHU

Get Hold Unique

Lê e bloqueia registro.


Utilizado antes de atualização.


GHN

Get Hold Next

Lê próximo registro com bloqueio.


ISRT

Insert

Insere novo segmento.


Exemplo:

Novo Cliente

COBOL:

CALL 'CBLTDLI'
     USING ISRT
           PCB-MASK
           AREA-CLIENTE.

REPL

Replace

Atualiza registro existente.


Fluxo:

GHU
 ↓
REPL

DLET

Delete

Remove segmento.


Fluxo:

GHU
 ↓
DLET

Exemplo Completo

Banco IMS:

CLIENTE
    ↓
CONTA

Passo 1

Buscar cliente.

GU

Passo 2

Alterar dados.

GHU

Passo 3

Atualizar.

REPL

SSA (Segment Search Argument)

Equivalente ao WHERE do SQL.


SQL:

WHERE CPF='123'

DL/I:

CLIENTE(CPF=123)

Exemplo

01 SSA-CLIENTE.
   05 FILLER PIC X(8)
      VALUE 'CLIENTE('.

PCB

Program Communication Block

Define o acesso ao banco.


Exemplo:

PCB CLIENTE

Contém:

  • Status

  • Banco

  • Permissões


Status Codes

Após cada chamada DL/I.


Espaços

'  '

Sucesso.


GE

GE

Registro não encontrado.


GB

GB

Fim de banco.


II

II

Inserção inválida.


Exemplo de Leitura Sequencial

GU
 ↓
GN
 ↓
GN
 ↓
GN

Resultado:

CLIENTE1
CLIENTE2
CLIENTE3
CLIENTE4

Exemplo COBOL

CALL 'CBLTDLI'
     USING GU
           PCB-CLIENTE
           REG-CLIENTE
           SSA-CLIENTE.

Verificando retorno:

IF PCB-STATUS = '  '
   DISPLAY 'ENCONTRADO'
END-IF.

DL/I em Ambiente Online

Muito comum em:

CICS
IMS TM

Fluxo:

Terminal
    ↓
IMS TM
    ↓
COBOL
    ↓
DL/I
    ↓
IMS DB

DL/I em Batch

Também muito utilizado.

JOB
 ↓
COBOL
 ↓
DL/I
 ↓
IMS DB

Comparação SQL x DL/I

SQL (DB2)DL/I (IMS)
SELECTGU/GN
INSERTISRT
UPDATEREPL
DELETEDLET
WHERESSA
CursorGN
LockGHU

Vantagens do DL/I

✅ Extremamente rápido

✅ Baixo consumo de CPU

✅ Excelente para grandes volumes

✅ Muito usado em bancos

✅ Altamente confiável


Curiosidades

1. O DL/I surgiu antes do SQL

2. Foi criado para o Projeto Apollo da NASA

3. Ainda processa bilhões de transações diariamente

4. Continua amplamente utilizado em bancos e seguradoras

5. É uma das APIs de banco de dados mais antigas ainda em produção


Resumo Rápido

ComandoFunção
GUGet Unique
GNGet Next
GNPGet Next Within Parent
GHUGet Hold Unique
GHNGet Hold Next
ISRTInsert
REPLReplace
DLETDelete
SSACritério de busca
PCBControle de acesso

Conclusão

O DL/I (Data Language/I) é a interface de acesso ao banco de dados IMS. Ele permite que programas COBOL, PL/I e Assembler leiam, insiram, atualizem e removam segmentos em bancos hierárquicos IMS por meio de comandos como GU, GN, ISRT, REPL e DLET. Embora seja anterior ao SQL, continua sendo uma das tecnologias mais importantes do universo Mainframe, sustentando aplicações críticas em bancos, governos, seguradoras e grandes corporações ao redor do mundo.


segunda-feira, 19 de fevereiro de 2007

O que é Database IMS em Mainframe?

 

Bellacosa Mainframe o que é database IMS

O que é IMS em Mainframe?

IMS significa:

Information Management System

É um dos softwares mais importantes da história da IBM e um dos pilares do ambiente Mainframe.

Criado em 1968 para apoiar o programa Apollo da NASA, o IMS continua em produção em milhares de empresas ao redor do mundo.


Definição Simples

O IMS é uma plataforma que fornece:

✅ Banco de Dados (IMS DB)

✅ Processamento de Transações (IMS TM)

Em outras palavras:

IMS = Banco de Dados + Monitor Transacional

História Curiosa

A IBM desenvolveu o IMS para ajudar a NASA a controlar milhões de componentes do foguete Saturno V usado nas missões Apollo.

Por isso, o IMS é frequentemente chamado de:

O banco de dados que ajudou a levar o homem à Lua


Componentes Principais

IMS DB

Banco de dados hierárquico.


IMS TM

Transaction Manager.

Responsável pelo processamento online.


Arquitetura Simplificada

Usuário
    ↓
IMS TM
    ↓
Programa COBOL
    ↓
IMS DB
    ↓
Resposta

O que é IMS DB?

É um banco de dados hierárquico.

Diferente do DB2, que é relacional.


Exemplo DB2

Tabela CLIENTES

IDNOME
1JOÃO
2MARIA

Exemplo IMS

EMPRESA
   │
   ├── CLIENTE
   │      │
   │      ├── CONTA
   │      │      │
   │      │      ├── MOVIMENTO
   │      │      ├── MOVIMENTO
   │
   └── CLIENTE

Conceito de Segmento

No IMS os registros são chamados de:

Segmentos


Exemplo

CLIENTE

Segmento Pai


CONTA

Segmento Filho


MOVIMENTO

Segmento Neto


Estrutura Hierárquica

CLIENTE
   ↓
CONTA
   ↓
MOVIMENTO

O que é DL/I?

Data Language I.

É a linguagem utilizada para acessar bancos IMS.

Equivale ao SQL do DB2.


Comandos DL/I

GU

Get Unique

Busca um segmento específico.


GN

Get Next

Busca próximo segmento.


GNP

Get Next Within Parent

Busca próximo filho.


ISRT

Insert

Inclui segmento.


REPL

Replace

Atualiza segmento.


DLET

Delete

Remove segmento.


Exemplo DL/I

CALL 'CBLTDLI'

USING
      GU
      PCB
      AREA
      SSA.

O que é PCB?

Program Communication Block.

Define como o programa acessa o banco.


O que é PSB?

Program Specification Block.

Define:

  • bancos acessados;

  • permissões;

  • PCBs.


O que é DBD?

Database Description.

Descreve:

  • segmentos;

  • relacionamentos;

  • estrutura física.


Estrutura IMS DB

DBD
 ↓
PSB
 ↓
PCB
 ↓
Programa COBOL

O que é IMS TM?

Transaction Manager.

Funciona de forma semelhante ao CICS.


Responsabilidades

  • receber transações;

  • controlar usuários;

  • chamar programas;

  • gerenciar filas;

  • garantir integridade.


Fluxo Online

Terminal
   ↓
IMS TM
   ↓
Programa COBOL
   ↓
IMS DB
   ↓
Resposta

Exemplo de Transação

Usuário digita:

CONS

IMS executa:

CONS
  ↓
Programa COBOL
  ↓
Consulta IMS
  ↓
Resposta

IMS x CICS

IMS TMCICS
IBMIBM
TransacionalTransacional
Muito usado em bancosMuito usado em bancos
Integração IMS DBIntegração DB2
Altíssimo desempenhoAltíssimo desempenho

IMS x DB2

IMS

Hierárquico

CLIENTE
 ↓
CONTA
 ↓
MOVIMENTO

DB2

Relacional

CLIENTES
CONTAS
MOVIMENTOS

Relacionadas por chaves.


Linguagens Utilizadas

  • COBOL

  • PL/I

  • Assembler

  • Java


IMS e COBOL

Combinação clássica.


Exemplo

CALL 'CBLTDLI'

Praticamente todo programa IMS utiliza esse comando.


Vantagens do IMS

✅ Altíssima performance

✅ Excelente escalabilidade

✅ Segurança

✅ Baixo consumo de recursos

✅ Confiabilidade extrema


Onde é Utilizado?

  • Bancos

  • Cartões

  • Seguradoras

  • Governo

  • Telecomunicações

  • Companhias aéreas


Curiosidades

1. O IMS foi criado para o Projeto Apollo

2. Continua sendo utilizado mais de 50 anos depois

3. Alguns dos maiores bancos do mundo usam IMS

4. Processa bilhões de transações diariamente

5. É considerado um dos sistemas mais confiáveis já criados


Principais Objetos IMS

ObjetoFunção
DBDDescrição do Banco
PSBEspecificação Programa
PCBComunicação Programa
SegmentoRegistro IMS
SSACritério Pesquisa
DL/ILinguagem de acesso
IMS DBBanco Hierárquico
IMS TMGerenciador Transacional

Resumo Rápido

IMS
 │
 ├── IMS DB
 │      ↓
 │ Banco Hierárquico
 │
 └── IMS TM
        ↓
     Transações Online

Conclusão

O IMS (Information Management System) é uma plataforma da IBM composta por um poderoso banco de dados hierárquico (IMS DB) e um monitor transacional (IMS TM). Presente em grandes bancos, seguradoras e órgãos governamentais, ele continua sendo uma das tecnologias mais robustas e confiáveis do ecossistema Mainframe IBM Z, processando milhões de transações críticas todos os dias.


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