@DavidPhillips2
Here is my implementation
%macro Parameters(p_inStart=, p_count=, p_rtrnMacVarName=);
%local
l_inStart
l_i
l_dt;
/* Generate space delimited Annual intervals */
%let l_inStart = %sysfunc(inputn(&p_inStart,yymmn6.));
%do l_i=1 %to &p_count;
%let l_dt = %sysfunc(intnx(year,&l_inStart,&l_i,same));
%let &p_rtrnMacVarName = &&&p_rtrnMacVarName %sysfunc(putn(&l_dt,yymmn6.));
%end;
/* Add sorounding double quotes ("") and delimit by comma (,) */
%let &p_rtrnMacVarName =%str(%")%qsysfunc(tranwrd(&&&p_rtrnMacVarName,%str( ),%str(%",%") ))%str(%");
%mend;
%global academicPeriods;
%let academicPeriods = ;
%Parameters(p_inStart=201010, p_count=3, p_rtrnMacVarName=academicPeriods);
%put &=academicPeriods;
%put (&academicPeriods);
%put &=academicPeriods;
ACADEMICPERIODS="201110","201210","201310"
%put (&academicPeriods);
("201110","201210","201310")
This code avoids using global macro variable, only parameters passed into it. The starting date is a YYYYMM parameter, the interval count is a parameter, and a single line to quote the intervals and delimit by comma.
Hope this helps,
Ahmed
... View more