Rexx - Stosy

Stos jest czasami nazywany zewnętrzną kolejką danych, ale stosujemy się do powszechnego użycia i nazywamy go stosem. Jest to blok pamięci, który jest logicznie zewnętrzny wobec Rexx. Instrukcje, takie jak wypychanie i kolejkowanie, umieszczają dane na stosie, a instrukcje takie jak pull i parse pull wyodrębniają z niego dane. Wbudowana funkcja umieszczona w kolejce raportuje, ile elementów znajduje się na stosie.

Spójrzmy na przykład stosu.

/* 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

Pierwsza pętla do w programie umieszcza trzy wiersze danych na stosie. Używa do tego instrukcji push. Numerujemy wiersze, aby po ich pobraniu w kolejności LIFO była widoczna ich kolejność.

Pozycje umieszczone na stosie za pomocą instrukcji push są pobierane w kolejności LIFO -

do j = 1 to 3 
push ‘Stack: line #’ || j     /* push 3 lines onto the stack */ 
end

Następny blok kodu pokazuje użycie funkcji wbudowanej w kolejce w celu wykrycia liczby wierszy na stosie, a także pętli do pobrania wszystkich wierszy ze stosu -

do j = 1 to queued()    /* retrieve and display LIFO */ 
pull line 
say line 
end

Ponieważ trzy elementy zostały umieszczone na stosie poprzez wypchnięcie, są one pobierane w kolejności LIFO.

Wynik powyższego programu będzie następujący.

STACK: LINE #3 
STACK: LINE #2 
STACK: LINE #1