STK( ) |
Program Call Stack |
1. |
STK(level[,ERR=stmtref]) | |
2. |
STK(PROPERTIES) |
level |
Program CALL stack level. Numeric expression. |
string$ |
String expression to be processed. |
String, program line number (characters 1 to 5) plus full pathname.
Retrieve CALL Stack Information
STK(level[,ERR=stmtref])
This format returns a character string reporting the program line number (5 digits) and program (full pathname) being executed at the program level specified. Use a negative value to specify a level that is relative to the current level. PxPlus returns an Error #41: Invalid integer encountered (range error or non-integer) if your given level does not exist.
The current directory is "/usr/test". In program "PROG1":
0100 call "STACKER"
In program "/usr/test/STACKER":
0010 print "Level 1=",stk(1)
0020 print "Level 2=",stk(2)
0030 print "Level -1=",stk(-1)
When run:
Level 1=00100/usr/test/PROG1
Level 2=00020/usr/test/STACKER Level -1=00100/usr/test/PROG1
The next example prints all the programs in the stack:
0010 I=1-prm('B0')
print stk(I,err=*next); I=I+1;goto 0020
Retrieve List of Arguments
STK(PROPERTIES)
This format returns a character string that identifies the type and number of arguments passed into the current program. Each character of the string represents the type of calling argument.
The possible character values are:
Character |
Description |
S |
The argument is a string variable and changes in the subprogram will be returned to the variable passed by the caller. |
s |
The argument is a string expression and changes in the subprogram will not be returned to the caller. |
N |
The argument is a numeric/integer variable and changes in the subprogram will be returned to the variable passed by the caller. |
n |
The argument is a numeric expression and changes in the subprogram will not be returned to the caller. |
R |
The argument is a composite string with a format and changes in the subprogram will be returned in the variable and its associated components in the caller. |
A |
The argument is a string array and changes in the subprogram will be reflected in the array passed by the caller. |
a |
The argument is a numeric/integer array and changes in the subprogram will be reflected in the array passed by the caller. |
Example:
This table provides some examples of the values returned for various combinations of CALLs:
CALL Arg List |
STK(PROPERTIES) Value |
X,Y$ |
"NS" |
X,X+1 |
"Nn" |
INT(N), UCS(X$),Y$ |
"nsS" |
X${ALL},N,(Y$) |
"ANs" |