I use SAS EG 7.1. I have a one record table with 150 columns, creatively named fieldname1 - fieldname150. I would like to turn each field's value into a macro variables &fieldname1 - &fieldname150. I have written it out as
data _NULL_;
set mylib.proj_details;
call symputx('fieldname1',fieldname1,'l');
call symputx('fieldname2',fieldname2,'l');
call symputx('fieldname3',fieldname3,'l');
...
...
call symputx('fieldname149',fieldname149,'l');
call symputx('fieldname150',fieldname150,'l');
run;
There's got to be a sexier way to do this. I tried using a do loop but couldn't get the second argument (in which I was concatenating "fieldname" and my index variable) to be recognized. Any ideas? Thank you in advance!
You can use an array to shorten your code.
data _NULL_;
set mylib.proj_details;
array field(150) fieldname1-fieldname150;
do i=1 to 150;
call symputx(catt('fieldname', put(i, 3. -l)),field(i),'l');
end;
run;
You can use an array to shorten your code.
data _NULL_;
set mylib.proj_details;
array field(150) fieldname1-fieldname150;
do i=1 to 150;
call symputx(catt('fieldname', put(i, 3. -l)),field(i),'l');
end;
run;
Thanks! It's beautiful.
Perhaps use macro language to generate your statements:
%macro all150;
%local i;
%do i=1 %to 150;
call symputx("fieldname&i", fieldname&i, 'l');
%end;
run;
data _null_;
set mylib.proj_details;
%all150
run;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.