DATA Step, Macro, Functions and more

Macro Variable

Reply
Frequent Contributor
Frequent Contributor
Posts: 87

Macro Variable

[ Edited ]

With the below program, i can only get 'book' for the macro variable.

 

May I know how to get macro variable 'orderedvars' that is 'book,car,ship,ball'? Anyone can help, thanks.

 

data sample;
input var1 $ var2 $ var3 $ var4 $;
cards;
book car ship ball
;
run;

 

proc sql noprint;
select distinct *
into : orderedvars separated by ','
from sample;
quit;

 

%put &orderedvars;

Respected Advisor
Posts: 3,288

Re: Macro Variable

[ Edited ]
data _null_;
    call symputx('ordervars','book,car,ship,ball');
run;

OR

 

Transpose your data set sample and work from there.

 

OR

 

Read the four words into a single column in your data step.

--
Paige Miller
Super User
Super User
Posts: 9,855

Re: Macro Variable

[ Edited ]
data sample;
  input var1 $ var2 $ var3 $ var4 $;
  call symputx('orderedvars',catx(',',of var:));
cards;
book car ship ball
;
run;

%put &orderedvars;

Thats likely the easiest way, into takes a column of observations not an array of variables.

Trusted Advisor
Posts: 1,327

Re: Macro Variable

PROC SQL could use the CATX function as well, except for the abbreviated variable list (which may be irrelevant anyway because your real variables are named differently):

proc sql noprint;
select catx(',', var1, var2, var3, var4)
into : orderedvars
from sample;
quit;
Super User
Super User
Posts: 9,855

Re: Macro Variable

Posted in reply to FreelanceReinhard

Yes, I was avoiding that as you can't use arrays of variables in sql, so:

select catx(',',of var:)

Thats why I went with the datastep, just easier.  SQL is only really columns of data, not arrays of variables. 

Ask a Question
Discussion stats
  • 4 replies
  • 69 views
  • 0 likes
  • 4 in conversation