| 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) |
|---|---|
| SELECT | GU/GN |
| INSERT | ISRT |
| UPDATE | REPL |
| DELETE | DLET |
| WHERE | SSA |
| Cursor | GN |
| Lock | GHU |
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
| Comando | Função |
|---|---|
| GU | Get Unique |
| GN | Get Next |
| GNP | Get Next Within Parent |
| GHU | Get Hold Unique |
| GHN | Get Hold Next |
| ISRT | Insert |
| REPL | Replace |
| DLET | Delete |
| SSA | Critério de busca |
| PCB | Controle 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.
Sem comentários:
Enviar um comentário