DATA Step, Macro, Functions and more

how to concatinate macro variable values?

Accepted Solution Solved
Reply
New Contributor
Posts: 4
Accepted Solution

how to concatinate macro variable values?

Dear all,

%let var1=a;

%let var2=b;

%let var3=c;

%let var4=d;

%let var5=e;

%let x= &var1 %to &var5;

i need x=a,b,c,d,e

thank you


Accepted Solutions
Solution
‎02-03-2014 08:28 AM
Super Contributor
Posts: 282

Re: how to concatinate macro variable values?

Hi,

If you really want to make use of "%to" for larger lists then you'll need to use it inside a macro definition, e.g.:

%let var1=a;

%let var2=b;

%let var3=c;

%let var4=d;

%let var5=e;

%macro makecsv(root,fromval,toval);

  %let sep=;

  %let makecsv=;

  %do csvloop=&fromval %to &toval;

    %let makecsv=&makecsv&sep&&&root&csvloop;

    %let sep=%str(,);

  %end;

  &makecsv;

%mend makecsv;

%let x=%makecsv(var,1,5);

%put x=&x;

Regards,

Amir.

Message was edited by: Amir Malik - formatting.

View solution in original post


All Replies
Respected Advisor
Posts: 3,799

Re: how to concatinate macro variable values?

17         %let var1=a;
18         %let var2=b;
19         %let var3=c;
20         %let var4=d;
21         %let var5=e;
22        
23        
24         %let x = &var1,&var2,&var3,&var4,&var5;
25        
26         %put NOTE: &=x;
NOTE: X=a,b,c,d,e
Solution
‎02-03-2014 08:28 AM
Super Contributor
Posts: 282

Re: how to concatinate macro variable values?

Hi,

If you really want to make use of "%to" for larger lists then you'll need to use it inside a macro definition, e.g.:

%let var1=a;

%let var2=b;

%let var3=c;

%let var4=d;

%let var5=e;

%macro makecsv(root,fromval,toval);

  %let sep=;

  %let makecsv=;

  %do csvloop=&fromval %to &toval;

    %let makecsv=&makecsv&sep&&&root&csvloop;

    %let sep=%str(,);

  %end;

  &makecsv;

%mend makecsv;

%let x=%makecsv(var,1,5);

%put x=&x;

Regards,

Amir.

Message was edited by: Amir Malik - formatting.

Respected Advisor
Posts: 3,156

Re: how to concatinate macro variable values?

So there could be many solutions, but do remember SAS Macro is nothing but a text string maneuver.

%let var1=a;

%let var2=b;

%let var3=c;

%let var4=d;

%let var5=e;

%macro cat;

%global x;

%let x=;

  %do i=1 %to 5;

    %if &i=1 %then %let x=&var1;

      %else  %let x=&x,&&var&i;

  %end;

%mend;

%cat;

%put &x;

    

Haikuo

🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 343 views
  • 4 likes
  • 4 in conversation