Rexx - Stack
Lo stack è talvolta chiamato coda dati esterna, ma seguiamo l'uso comune e lo chiamiamo stack. È un blocco di memoria logicamente esterno a Rexx. Istruzioni come push e queue inseriscono i dati nello stack e istruzioni come pull e parse pull estraggono i dati da esso. La funzione incorporata in coda segnala quanti elementi ci sono nello stack.
Diamo un'occhiata a un esempio di uno stack.
/* STACK: */
/* */
/* This program shows how to use the Rexx Stack as either a */
/* stack or a queue. */
do j = 1 to 3
push ‘Stack: line #’ || j
/* push 3 lines onto the stack */
end
do j = 1 to queued()
/* retrieve and display LIFO */
pull line
say line
end
do j = 1 to 3 queue ‘Queue: line #’ || j
/* queue 3 lines onto the stack */
end
do queued()
/* retrieve and display FIFO */
pull line
say line
end
exit 0
Il primo ciclo do nel programma inserisce tre righe di dati nello stack. Usa l'istruzione push per farlo. Numeriamo le righe in modo che quando vengono recuperate nell'ordine LIFO il loro ordine sia evidente.
Gli articoli inseriti nella pila dall'istruzione push vengono recuperati nell'ordine LIFO -
do j = 1 to 3
push ‘Stack: line #’ || j /* push 3 lines onto the stack */
end
Il blocco di codice successivo mostra l'uso della funzione incorporata in coda per scoprire il numero di righe nello stack, nonché un ciclo per recuperare tutte le righe dallo stack -
do j = 1 to queued() /* retrieve and display LIFO */
pull line
say line
end
Poiché i tre elementi sono stati posizionati sulla pila tramite push, vengono recuperati nell'ordine LIFO.
L'output del programma di cui sopra sarà il seguente.
STACK: LINE #3
STACK: LINE #2
STACK: LINE #1