Write and run SAS programs in your web browser

macro

Reply
New Contributor
Posts: 2

macro

I am trying to write a macro to concatenate all values of a row. But its not working. can some one point out? Without the macro its working fine. 

 

%macro dummy(var=);
proc sql;
create table values as select distinct(&var.) as vals from td;
run;

data values1;
length new_val $100.;
%do %until(eof);
set values end=eof;
new_val=catx("",new_val,vals);
%end;
run;

proc print data=values1;
run;
%mend;
%dummy(var=job);

Grand Advisor
Posts: 16,378

Re: macro

When you say all values of a row do you mean the values in a row or column? 

 

If a column, look at PROC SQL documentation on calculating macro variables. 

If a row, try CATX(', ', of _all_); 

New Contributor
Posts: 2

Re: macro

I meant all values of the column..it is not able to get the value of Eof
Respected Advisor
Posts: 4,648

Re: macro

Yes, macro language doesn't understand DATA step variables such as eof.

 

You seem to understand the right tools, why not use them:

 

proc sql;

select strip(var) into : vals separated by ',';

 

Or possible (but different):

 

select distinct strip(var) into : vals separated by ',';

 

If you really want this as a DATA step variable (although it is difficult to envision why), you could use:

 

data test;

longvar = "&vals";

run;

Post a Question
Discussion Stats
  • 3 replies
  • 92 views
  • 0 likes
  • 3 in conversation