BookmarkSubscribeRSS Feed
thanikondharish
Fluorite | Level 6

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?

2 REPLIES 2
Shmuel
Garnet | Level 18

%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 ;
Kurt_Bremser
Super User

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).

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1091 views
  • 0 likes
  • 3 in conversation