Please see the section below. I have tried many different ways. In some steps the leading zero is kept, but in the CAT it is stripped. Main variable: HHLDID (unique 18 character string) %macro doloop; data _null_; /*__ STEP 1: SET DATE RANGE _____________________________________________________*/ /* Start year */ call symput ("startyear",'2016'); /* Start month */ call symput ("startmonth",'01'); /* End year */ call symput ("endyear",'2016'); /* End month */ call symput ("endmonth",'03'); stop; run; %do i=&startyear %to &endyear; %do j=1 %to 12; %if &j.=1 and &i.=&startyear %then %let j=&startmonth; %let month=%sysfunc(putn(&j,z2.)); /* leading 0 for month if needed */ %let year=%sysfunc(substrn(&i.,3)); /* last 2 digits of year */ %if ( ((&endyear. ne &startyear) and (&i. ne &endyear)) or (&i.=&endyear and &month. le &endmonth) ) %then %do; data output.BOOT&month.&year.; */ ß THIS PART PUTS MONTH WITH LEADING 0 CORRECTLY */ set boot.bootstrap_rcomp&i.&month ; */ ß THIS PART PUTS MONTH WITH LEADING 0 CORRECTLY */ HHLDID_date= cat(HHLDID,%sysfunc(putn(&MONTH,z3.))&year); */ ß THIS PART STRIPS THE LEADING 0 IN THE MONTH */ %end; run; %end; %end; %mend; %doloop;
... View more