Just join the list of dates with the parameters and use the new table to generate the macro calls. I still don't see how you link the parameters into sets of values. Perhaps you need another variable in your parameter table? data parms; length parmset startdate enddate 8 parameter $32 parametervalue $200; informat startdate enddate mmddyy10.; format startdate enddate yymmdd10.; input parmset -- parametervalue ; cards; 1 01/31/2000 01/31/2005 nc 10 1 01/31/2000 01/31/2005 rval 25 2 02/01/2005 01/31/2015 nc 12 ;;;; data dates ; length case date 8 ; informat date yymmdd10.; format date yymmdd10.; input case date @@; cards; 1 2004/02/21 2 2008/01/01 ;;;; proc sql ; create table runs as select a.*,b.* from dates a , parms b where a.date between b.startdate and b.enddate order by a.case,b.parmset,b.parameter ; quit; filename code temp; data _null_; set runs; by case parmset ; file code ; if first.parmset then put '%mymacro' / '(' @; else put ',' @; put parameter '=' parametervalue ; if last.parmset then put ');' ; run; %include code / source2; %mymacro (nc =10 ,rval =25 ); %mymacro (nc =12 );
... View more