Adding the extra %IF/%THEN to deal with the leading zeros in the month value probably contributed to the confusion. You could formulate the loop differently to avoid that problem. Here are two ways. Since YYYYMM looks like a number you could just generate the sequence 201101 to 201112 as the inner %DO loop. %macro x; %do year=2011 %to 2013; %do yearmonth=&year.01 %to &year.12 ; abc.myfile&yearmonth %end; %end; %mend x; %put %x; Or you can take advantage of SAS formats, such as YYMMN6. . %macro y; %do year=2011 %to 2013; %do month=1 %to 12 ; abc.myfile%sysfunc(mdy(&month,1,&year),yymmn6.) %end; %end; %mend y; %put %y;
... View more