I cam across one of this MCQ's.
The macro doesn't have a DO loop so how does it create values of 3,2,1?
Plz explain the logic working behind this.
The "magic" is in the first line. The %EVAL macro will evaluate it's argument when the code is run.
So when n=4, the first line evaluates to
%EVAL( 4 + %mysum(3) ).
This causes the %MYSUM macro to be run with a new argument. This time the first line evaluates to (dropping the %EVAL call, for convenience)
3 + %mysum(2).
This continues recursively until the argument n=1, in which case the macro generates
1
Cumulatively, the macro generates an expression that is equivalent to
%EVAL(4 + %EVAL(3 + %EVAL(2 + 1)))
which is displayed in the log by using the %PUT call.
The "magic" is in the first line. The %EVAL macro will evaluate it's argument when the code is run.
So when n=4, the first line evaluates to
%EVAL( 4 + %mysum(3) ).
This causes the %MYSUM macro to be run with a new argument. This time the first line evaluates to (dropping the %EVAL call, for convenience)
3 + %mysum(2).
This continues recursively until the argument n=1, in which case the macro generates
1
Cumulatively, the macro generates an expression that is equivalent to
%EVAL(4 + %EVAL(3 + %EVAL(2 + 1)))
which is displayed in the log by using the %PUT call.
Curious which class this is from, can you share? I don't see a lot of recursive macros. I would consider it an advanced topic for the macro language (but I guess would be included in an introductory class for many languages).
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
SAS' Charu Shankar shares her PROC SQL expertise by showing you how to master the WHERE clause using real winter weather data.
Find more tutorials on the SAS Users YouTube channel.