📌 O que é STACK em REXX?
Em REXX, STACK é uma pilha (fila LIFO/FIFO) de linhas de texto usada para:
-
Passar dados entre programas
-
Simular entrada padrão (
PULL) -
Trocar informações com JCL, TSO e batch
-
Comunicação entre execs
👉 Pense na STACK como um buffer de entrada/saída em memória.
1️⃣ STACK ≠ variável
A STACK:
-
Não é uma variável
-
Não precisa ser declarada
-
É global ao exec
-
Armazena linhas de texto
Ela é usada automaticamente por:
-
PULL -
PARSE PULL -
Alguns comandos de host
2️⃣ Comandos principais da STACK
📤 PUSH
Coloca uma linha no topo da pilha (LIFO).
Ordem de saída:
📥 QUEUE
Coloca uma linha no final da fila (FIFO).
Ordem de saída:
📄 PULL
Lê a próxima linha da STACK.
Se a STACK estiver vazia:
-
Em TSO → lê do terminal
-
Em batch → lê de
SYSTSIN -
Em SYSREXX → comportamento depende do ambiente
3️⃣ Diferença clara: PUSH x QUEUE
| Comando | Tipo | Uso típico |
|---|---|---|
| PUSH | Pilha (LIFO) | Processamento reverso |
| QUEUE | Fila (FIFO) | Simular input sequencial |
| PULL | Leitura | Consome a STACK |
4️⃣ Exemplo simples e didático
Saída:
5️⃣ STACK em Batch (uso real)
Em batch, a STACK é fundamental.
Exemplo: simular entrada para um programa
O COBOL lê como se fosse input real.
6️⃣ STACK + EXECIO (padrão profissional)
7️⃣ Função QUEUED()
Retorna quantas linhas existem na STACK.
💡 Boa prática: sempre testar antes de PULL.
8️⃣ STACK como comunicação entre execs
O outro exec pode consumir e devolver dados pela STACK.
9️⃣ Erros comuns (produção)
❌ Usar PULL sem saber de onde vem a entrada
❌ Deixar lixo na STACK
❌ Misturar PUSH e QUEUE sem critério
❌ Assumir que STACK sempre tem dados
✔ Sempre limpar ou controlar a STACK
🔟 Regra de ouro
STACK em REXX é entrada padrão controlável.
Quem domina STACK domina automação batch.
🧠 Frase para memorizar
QUEUE escreve o roteiro,
PUSH muda a ordem,
PULL executa a cena.