Data test;
put
abc $3.
qrs $3.
xyz $5.;
do 1 to 20;
abc="djsdfsdk";
qrs="sdui";
xyz="YHTyuh";
end;
output;
run;
i need to create macro variable for abc, qrs, xyz
Can anybody please help
For what purpose is this code? It makes very little sense.
You can use the CALL SYMPUTX Routine to create macro variables in a data step
Before you even think about dealing with the macro preprocessor, you need to get a grasp of basic SAS data step principles, which you very obviously have not yet managed to do:
Data test;
put
abc $3.
qrs $3.
xyz $5.; /* This put statement makes no sense, as the variables have no values yet */
do 1 to 20;
abc="djsdfsdk";
qrs="sdui";
xyz="YHTyuh";
end; /* this do loop also makes no sense, as it just sets the same values 20 times in succession. Just a waste of CPU cycles */
output; /* this statement is not necessary, as the data step will perform an implicit output of it's own at the end of an iteration */
run;
You create macro variables in a data step using CALL SYMPUTX().
Your question is too vague to answer, so given how you've stated it, this would be 'correct':
%let macro1=abc;
%let macro2=qrs;
%let macro3=xyz;
You should also look into how PROC SQL can create macro variables, it's quite efficient at doing so, check the documentation for the relevant section with full examples:
proc sql noprint;
select name into :name1-
from sashelp.class;
quit;
%put &name1.;
%put &name19.;
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!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.