quarta-feira, 17 de dezembro de 2025

📌 O que é STACK em REXX?

 


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

PUSH 'linha 1' PUSH 'linha 2'

Ordem de saída:

linha 2 linha 1

📥 QUEUE

Coloca uma linha no final da fila (FIFO).

QUEUE 'linha 1' QUEUE 'linha 2'

Ordem de saída:

linha 1 linha 2

📄 PULL

Lê a próxima linha da STACK.

PULL dado

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

ComandoTipoUso típico
PUSHPilha (LIFO)Processamento reverso
QUEUEFila (FIFO)Simular input sequencial
PULLLeituraConsome a STACK

4️⃣ Exemplo simples e didático

/* REXX */ QUEUE 'primeiro' QUEUE 'segundo' QUEUE 'terceiro' PULL a PULL b PULL c SAY a SAY b SAY c

Saída:

primeiro segundo terceiro

5️⃣ STACK em Batch (uso real)

Em batch, a STACK é fundamental.

Exemplo: simular entrada para um programa

QUEUE 'MATH1 10 20' QUEUE 'exit' ADDRESS TSO CALL 'PROGCOB'

O COBOL lê como se fosse input real.


6️⃣ STACK + EXECIO (padrão profissional)

'EXECIO * DISKR INPUT (STEM in.' DO i = 1 TO in.0 QUEUE in.i END DO WHILE QUEUED() > 0 PULL linha SAY linha END

7️⃣ Função QUEUED()

Retorna quantas linhas existem na STACK.

IF QUEUED() = 0 THEN SAY 'Stack vazia'

💡 Boa prática: sempre testar antes de PULL.


8️⃣ STACK como comunicação entre execs

QUEUE 'valor1' QUEUE 'valor2' CALL OUTROEXEC PULL resposta

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.

 

Sem comentários:

Enviar um comentário