31 lines
428 B
Rexx
31 lines
428 B
Rexx
|
|
/* call stack */
|
||
|
|
say 'Call A'
|
||
|
|
call A '123'
|
||
|
|
say result
|
||
|
|
exit 0
|
||
|
|
|
||
|
|
A:
|
||
|
|
say 'Call B'
|
||
|
|
call B '456'
|
||
|
|
say result
|
||
|
|
return ARG(1)
|
||
|
|
|
||
|
|
B:
|
||
|
|
say 'Call C'
|
||
|
|
call C '789'
|
||
|
|
say result
|
||
|
|
return ARG(1)
|
||
|
|
|
||
|
|
C:
|
||
|
|
call callstack
|
||
|
|
return ARG(1)
|
||
|
|
|
||
|
|
callstack: procedure
|
||
|
|
getcallstack(cs.)
|
||
|
|
say 'Dump call stack with' cs.0 'items'
|
||
|
|
do i = 1 to cs.0
|
||
|
|
parse var cs.i line func
|
||
|
|
say format(line, 3) ':' left(func, 9) ': source "' || sourceline(line) || '"'
|
||
|
|
end
|
||
|
|
return cs.0
|