data _null_ ;
call symput('name','aaa') ;
%let name=bbb ;
run;
%put &name ;
If I execute above program is showing (aaa) value . why %let is not working and what is the logic behind that.
Kindly explain?
%let is a declarative statement and is been executed outside the data step.
Your code is equal to:
%let name=bbb ;
data _null_ ;
call symput('name','aaa') ;
run;
%put &name ;
The macro processor is a PREprocessor, doing its work when the code is read and prepared for compilation/execution.
To overwrite the value set by the data step, you have to move the %LET after the step boundary (after the RUN statement).
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.