RosettaCodeData/Task/Stack/REXX/stack.rexx

43 lines
840 B
Rexx

/* REXX ***************************************************************
* supports push, pull, and peek
* 11.08.2013 Walter Pachl
**********************************************************************/
stk.=0
Call push 123 /*pushes 123 onto the stack. */
Say empty()
say peek()
say pull() /*pops last value stacked & removes it. */
Say empty()
say peek()
say push(456)
say peek()
Exit
push: Procedure Expose stk.
Parse Arg v
z=stk.0+1
stk.z=v
stk.0=z
Return v
peek: Procedure Expose stk.
If stk.0=0 Then
Return 'stack is empty'
Else Do
z=stk.0
Return stk.z
End
pull: Procedure Expose stk.
If stk.0=0 Then
Return 'stack is empty'
Else Do
z=stk.0
res=stk.z
stk.0=stk.0-1
Return res
End
empty: Procedure Expose stk.
Return stk.0=0