Me again: the program works fine, but why? Is there a restriction when resolving parameters in a macro call, that a value is passed only once? In open code, &&%upcase(line) is resolved in a first pass to &LINE, in a second pass then to the value of the macro variable line. Is this second pass omitted when &&%upcase(line) is the value of a parameter in a macro call? I don't find any documentation on that.
2nd question: why results
%test(x=&%upcase(line));
in:
ACTUAL X=&%upcase(line) EFFECTIVE X=&%upcase(line)
I'd think in the first pass & is kept, %upcase(line) is evaluated to LINE, together &LINE, and without 2nd pass giving the same as with 2 ampersands where in the 1st pass && is resolved to & and %upcase(line) to LINE:
ACTUAL X=&LINE EFFECTIVE X=Set later
... View more