proc sql;
create table test as
select fcode, tcode, date1, min(date1) as mindt, max(date1) as maxdt
from (select fcode, tcode, input(put(date,6.),yymmn6.) as date1 from YOURDATA)
group by fcode
order by fcode, tcode, date1;
quit;
data _null_;
length fcode tcode date 8;
format date yymmn6.;
if _n_=1 then do;
declare hash a(mu ...
proc sql;
create table test as
select fcode, tcode, date1, min(date1) as mindt, max(date1) as maxdt
from (select fcode, tcode, input(put(date,6.),yymmn6.) as date1 from YOURDATA)
group by fcode
order by fcode, tcode, date1;
quit;
data _null_;
length fcode tcode date 8;
format date yymmn6.;
if _n_=1 then do;
declare hash a(multidata:'yes');
a.definekey('fcode');
a.definedata('fcode','date','tcode');
a.definedone();
call missing(fcode,date,tcode);
end;
set test;
by fcode tcode;
retain date;
if first.tcode then do; date=mindt; rc=a.add(); end;
else do while(date<maxdt) ;
date=intnx('month',date,6);
rc=a.add();
end;
rc=a.output(dataset: 'want' );
run;