Compiler edit 651 implements two new dot functions:
.ARGTYP(argno)
.ARGSIZ(argno)
These return the type and size of the specified argument passed to the current SBX, function, or procedure. If the specified argno is invalid, the return value will be -1. The argument types are made up of the following bits:
Symbol |
Value |
Description |
---|---|---|
ARGTYP_MASK |
&h000f |
mask for types X,S,F,B,I |
ARGTYP_X |
&h0000 |
X type (mutually exclusive) |
ARGTYP_S |
&h0002 |
S type (" " ") |
ARGTYP_F |
&h0004 |
F type (" " ") |
ARGTYP_B |
&h0006 |
B type (" " ") |
ARGTYP_I |
&h0008f |
I type (" " ") |
Symbol |
Value |
Description |
---|---|---|
ARGTYP_ARRAY |
&h0010 |
! array |
ARGTYP_NOSURR |
&h0020 |
! no surrogate |
ARGTYP_DYN |
&h0040 |
! dynamic variable |
ARGTYP_LOCAL |
&h0080 |
! local dynamic variable |
ARGTYP_SBR |
&h0100 |
! variable within SBX or xcall AMOS |
Warning: These new functions are not recognized by runtime versions prior to 6.1.1373.0, and will simply return the value of the argno passed. You could use this fact to test if the feature is supported at runtime by passing an illegal argno, such as 999 or -2, to .ARGTYP(argno). If supported, the return value will be -1 (error); else if will match the argno passed.