DATA Step, Macro, Functions and more

Loop over list of characters

Reply
Contributor
Posts: 71

Loop over list of characters

For looping over a list of characters, a data null step works fine:

data _null_;

do r="AB", "DE", "XY";

  put r=;

end;

run;

But I'm curious if this be replicated in a macro?  When I try with the code below, it expects a %to to be paired with the %do:

%macro char_loop;

%do r="AB", "DE", "XY";
  %put &r=;
%end;

%mend char_loop;

For anyone interested, there were a couple threads that touch on this topic:

https://communities.sas.com/message/42866#42866

https://communities.sas.com/message/120110#120110


Respected Advisor
Posts: 3,156

Re: Loop over list of characters

%DO loop is not as nearly robust as its datastep counterpart. No, I don't think you can use the same style of looping.

Haikuo

Contributor
Posts: 71

Re: Loop over list of characters

I've been coming to the same conclusion.  If it a macro countapart is possible (and it likely is), the code would likely be painful.

Super User
Posts: 19,873

Re: Loop over list of characters

Scan through a list..as mentioned in your links.

And bump it up on the ideas list or SASware ballot as well Smiley Happy

https://communities.sas.com/ideas/1084

%let i=1;

%do %while (%scan(&varlist, &i, " ") ^=%str());

%let var=%scan(&varlist, &i, " ");   

%let i=%eval(&i+1);

%end;

Contributor
Posts: 71

Re: Loop over list of characters

Thanks Reeza.  Good idea to add this to the ballot.

I did see that macro solution, but it certainly is not pretty.

Contributor
Posts: 71

Re: Loop over list of characters

Haha, I see I already had my vote added to that idea. 

Regular Contributor
Posts: 227

Re: Loop over list of characters

Ask a Question
Discussion stats
  • 6 replies
  • 492 views
  • 4 likes
  • 4 in conversation