Try this:
%macro gen_vars (day=, mon=, mon_num=, year=, year_num=);
%local i j result;
%do i=1 %to &year_num %by 1; /*Loop over years*/
%do j=1 %to &mon_num %by 1; /*Loop over months*/
/* here's the part you were missing to get a single output space delimited list*/
%let result=&result _&day._%scan(&mon, &j)_%scan(&year, &i);
%end;
%end;
&result
%mend gen_vars;
%let mon=Jan Mar Jun Sep Dec;
%let year=95 96 97 98 99 00 01 02 03 04 05 06 07 08 09 10 11;
%let varlist = %gen_vars(day=1, mon=&mon, mon_num=4, year=&year, year_num=17);
%put &varlist;
Your sytem settings for maximum macro value size may have an effect if this generates a long enough list.
If you nee
... View more