Rexx - Piles

La pile est parfois appelée la file d'attente de données externes, mais nous suivons l'usage courant et nous y référons comme la pile. C'est un bloc de mémoire qui est logiquement externe à Rexx. Des instructions comme push et queue placent les données dans la pile, et des instructions comme pull and parse pull en extraient les données. La fonction intégrée en file d'attente indique le nombre d'éléments dans la pile.

Jetons un coup d'œil à un exemple de pile.

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

La première boucle do du programme place trois lignes de données sur la pile. Il utilise l'instruction push pour ce faire. Nous numérotons les lignes afin que, lorsqu'elles sont récupérées dans l'ordre LIFO, leur ordre soit apparent.

Les éléments placés dans la pile par l'instruction push sont récupérés dans l'ordre LIFO -

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

Le bloc de code suivant montre l'utilisation de la fonction intégrée en file d'attente pour découvrir le nombre de lignes sur la pile, ainsi qu'une boucle pour récupérer toutes les lignes de la pile -

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

Étant donné que les trois éléments ont été placés sur la pile via push, ils sont récupérés dans l'ordre LIFO.

La sortie du programme ci-dessus sera la suivante.

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