DATA Step, Macro, Functions and more

Looping problem with call execute

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;                                                                                                                        



data _null_;                                                                                                                           

set end=eof;                                                                                                             

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


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

Posts: 7,879

Looping problem with call execute

Posted in reply to forumsguy

If you do a proc freq of the region variable in, 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
  • 2 in conversation