23 lines
2.1 KiB
Rexx
23 lines
2.1 KiB
Rexx
/*REXX program demonstrates four queueing operations: push, pop, empty, query. */
|
|
say '══════════════════════════════════ Pushing five values to the stack.'
|
|
do j=1 for 4 /*a DO loop to PUSH four values. */
|
|
call push j * 10 /*PUSH (aka: enqueue to the stack).*/
|
|
say 'pushed value:' j * 10 /*echo the pushed value. */
|
|
if j\==3 then iterate /*Not equal 3? Then use a new number.*/
|
|
call push /*PUSH (aka: enqueue to the stack).*/
|
|
say 'pushed a "null" value.' /*echo what was pushed to the stack. */
|
|
end /*j*/
|
|
say '══════════════════════════════════ Quering the stack (number of entries).'
|
|
say queued() ' entries in the stack.'
|
|
say '══════════════════════════════════ Popping all values from the stack.'
|
|
do k=1 while \empty() /*EMPTY (returns TRUE [1] if empty).*/
|
|
call pop /*POP (aka: dequeue from the stack).*/
|
|
say k': popped value=' result /*echo the popped value. */
|
|
end /*k*/
|
|
say '══════════════════════════════════ The stack is now empty.'
|
|
exit /*stick a fork in it, we're all done. */
|
|
/*──────────────────────────────────────────────────────────────────────────────────────*/
|
|
push: queue arg(1); return /*(The REXX QUEUE is FIFO.) */
|
|
pop: procedure; parse pull x; return x /*REXX PULL removes a stack item. */
|
|
empty: return queued()==0 /*returns the status of the stack. */
|