📦 O que é REXX Data Stack
📌 Conceito básico
O Data Stack é uma fila (stack/queue) de dados em memória, mantida pelo interpretador REXX, usada para:
Trocar dados entre comandos, programas e o próprio REXX, sem usar datasets.
Ele funciona como um buffer temporário de linhas.
🧠 Modelo mental simples
Imagine o Data Stack como:
-
Uma caixa de mensagens
-
Onde você empilha (PUSH) ou enfileira (QUEUE) dados
-
E depois retira (PULL / PARSE PULL)
📌 Muito parecido com:
-
STDIN / STDOUT
-
Pipe de Unix
-
Buffer de mensagens
🔁 LIFO vs FIFO
O Data Stack suporta dois comportamentos:
| Comando | Comportamento |
|---|---|
PUSH | LIFO (último a entrar, primeiro a sair) |
QUEUE | FIFO (primeiro a entrar, primeiro a sair) |
🔹 Comandos principais do Data Stack
1️⃣ PUSH – empilha no topo
2️⃣ QUEUE – coloca no fim da fila
3️⃣ PULL / PARSE PULL – retira da stack
📌 Data Stack x Variáveis
| Aspecto | Variáveis | Data Stack |
|---|---|---|
| Estrutura | Escalar | Fila |
| Ordem | Fixa | FIFO / LIFO |
| Uso típico | Lógica | Comunicação |
| Persistência | Apenas no script | Pode cruzar comandos |
🧩 Integração com comandos do sistema
Exemplo clássico – capturar saída de comando TSO
📌 O comando escreve no Data Stack
📌 O REXX lê do Data Stack
🔄 Stacks múltiplas (avançado)
REXX permite criar pilhas separadas:
| Comando | Função |
|---|---|
NEWSTACK | Cria stack isolada |
DELSTACK | Remove stack |
Exemplo
💡 Essencial para:
-
Macros ISPF
-
SYSREXX
-
Scripts grandes
🧠 Uso real no mainframe
✔ Capturar saída de:
-
TSO
-
ISPF
-
SDSF
-
OPERCMDS
✔ Passar dados entre:
-
REXX ↔ COBOL
-
REXX ↔ utilitários
✔ Evitar datasets temporários
⚠️ Erros clássicos (Easter Eggs 🥚)
❌ Esquecer de limpar stack
❌ Misturar PUSH e QUEUE sem critério
❌ Não usar NEWSTACK em macros
❌ Ler stack vazia (gera valores inesperados)
📋 Checklist rápido
-
Sei se preciso FIFO ou LIFO?
-
Stack está isolada (
NEWSTACK)? -
Stack está limpa antes de sair?
-
Uso
PARSE PULLcorretamente?
🧠 Frase final estilo Bellacosa Mainframe
Se você entende o Data Stack, você entende o REXX.
Ele é a ponte entre comandos, programas e o sistema.
Sem comentários:
Enviar um comentário