domingo, 21 de dezembro de 2025

📦 O que é REXX Data Stack

 


📦 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:

ComandoComportamento
PUSHLIFO (último a entrar, primeiro a sair)
QUEUEFIFO (primeiro a entrar, primeiro a sair)

🔹 Comandos principais do Data Stack

1️⃣ PUSH – empilha no topo

PUSH 'LINHA1' PUSH 'LINHA2' PULL x say x /* LINHA2 */

2️⃣ QUEUE – coloca no fim da fila

QUEUE 'LINHA1' QUEUE 'LINHA2' PULL x say x /* LINHA1 */

3️⃣ PULL / PARSE PULL – retira da stack

PARSE PULL a b c

📌 Data Stack x Variáveis

AspectoVariáveisData Stack
EstruturaEscalarFila
OrdemFixaFIFO / LIFO
Uso típicoLógicaComunicação
PersistênciaApenas no scriptPode cruzar comandos

🧩 Integração com comandos do sistema

Exemplo clássico – capturar saída de comando TSO

ADDRESS TSO "LISTDSI 'USER.TEST'" PARSE PULL msg say msg

📌 O comando escreve no Data Stack
📌 O REXX lê do Data Stack


🔄 Stacks múltiplas (avançado)

REXX permite criar pilhas separadas:

ComandoFunção
NEWSTACKCria stack isolada
DELSTACKRemove stack

Exemplo

NEWSTACK QUEUE 'TEMP' PULL x say x DELSTACK

💡 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 PULL corretamente?


🧠 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