DATA Step, Macro, Functions and more

Looping problem with call execute

Reply
Frequent Contributor
Posts: 85

Looping problem with call execute

Hi there,

I am newbie in SAS and learning to write macros. Can somebody help me in explaining why my code is produing 396 observations when I am actually expecting it to be only 6.Please find the code I am using here

  %macro m1;                                                                                                                           

%do i=1 %to 6;                                                                                                                         

%put log is &i;                                                                                                                        

%end;                                                                                                                                  

%mend;                                                                                                                                 

data _null_;                                                                                                                           

set sashelp.shoes end=eof;                                                                                                             

if region="Africa" then call execute('%m1');                                                                                           

run;

So according to my logic it should print log is 1 to 6 but it actually is reading everything from sashelp.shoes and printing 1to6 several times. This will really help me in strengthening my basics in macros

PROC Star
Posts: 7,360

Looping problem with call execute

If you do a proc freq of the region variable in sashelp.shoes, you'll discover that there are 56 records that contain a region with the name Africa.

As such, your code is send the "log is x" statement 56*6 times.

Ask a Question
Discussion stats
  • 1 reply
  • 125 views
  • 0 likes
  • 2 in conversation