Some functions and procedures need the name of a variable as parameter. They use this variable to store the result. Examples for this type of function are SysFileTree and SysGetEA.
To make sure, that the function/procedure stores the result in the variable you intended, in these functions and procedures you should always enclose the variable name in quotes.
Example:
/* */ call rxFuncAdd 'SysLoadFuncs', 'REXXUTIL', 'SysLoadFuncs' call SysLoadFuncs /* init some variables for testing */ mystem = 'TEST' mystem1 = 4 /* correct use of the variable (see below); */ /* because the variable mystem is enclosed in */ /* quotes, mystem.0 will correctly return the */ /* total number of entries matching the wildcard */ /* file spec 'c:\*.*' and mystem.# will contain */ /* the value of each entry (where # is a number */ /* from 1 to the value of mystem.0) */ call SysFiletree 'c:\*.*', 'mystem' /* incorrect use of variable; when the variable */ /* mystem is not quoted in the function call, */ /* REXX uses the value of the variable mystem */ /* (i.e., 'TEST', initialized earlier) as */ /* the name of the stem for the result. Thus, */ /* the value of mystem.0 will be 'MYSTEM.0', */ /* the number of entries matching the wildcard */ /* spec will be stored in test.0, and test.# will */ /* contain the entries themselves (where # is a */ /* number from 1 to the value of test.0) */ call SysFiletree 'c:\*.*', mystem /* incorrect use of variable; REXX uses the value */ /* of the variable mystem1 as the name of the */ /* stem for the result. This statement will */ /* raise a syntax error because the value of */ /* mystem1 is '4' and variables in REXX cannot */ /* begin with a number. */ call SysFiletree 'c:\*.*', mystem1