Statements entered in SAS are executed sequentially, so you shouldn't have any real concerns about the process flow (of course there are exceptions, but I would not believe any of them apply here at a novice level). *list the macro's sequentially; %mymacro1 %mymacro2 %mymacro3 %myfourthmacro ... %mymacro10 %myothermacro *call macro's from a macro with same name plus numerical suffix; %macro mymacrocaller; %do i = 1 %to 10; %let lmacname = mymacro&i; %&lmacname %end; %mend; %mymacrocaller *call list of macro's when names are different; %macro mymaccall; %let maclist=mymac1 secondone lastone; %do i = 1 %to %sysfunc(countw(&maclist)); %let lmacn=%scan(&maclist,&i); %&lmacn %end; %mend; *call list of macro's from a datastep; data _null_; infile cards; input macname $; call execute(cats('%nrstr(%',macname,')')); cards4; mymacro1 foobar lasagna ;;;; There are plenty of other ways to do it as well, but the exact problem is not completely apparent from your question.
... View more