Hallo SAS-Anfängerin,
die Funktion intnx liefert das nächste Intervall. Wenn Du als immer genau auf ...:00:00 prüfen musst wäre die Logik so:
%macro jedenTag(year);
%local NDays i ThisDt ThisD;
Data _NULL_;
call symputx("ndays",intck("DAY", "01JAN&YEAR."d,"31DEC&YEAR."d) + 1 );
run;
%put Das Jahr &Year. hat &nDays. Tage;
%let ThisDT = %sysfunc(Intnx(DTDAY,"01JAN&YEAR.:00:00"dt,0,same));
%do i = 1 %to &NDays.;
%let ThisD = %sysfunc(putN(&ThisDT.,DTDate9.));
proc sql;
create table neu_&ThisD. as
select tab1.name, datum
from db.tabelle tab1
where datum = &ThisDT.;
quit;
/* weiterer Code */
%let ThisDT = %sysfunc(Intnx(DTDAY,&ThisDT.,1,same));
%end;
%mend;
%jedenTag(2013);
Falls Du aber auch Zeiten abweichend von :00:00 hast und haben willst, würde ich folgenden Code nehmen:
%macro jedenTag(year);
%local NDays i ThisD;
Data _NULL_;
call symputx("ndays",intck("DAY", "01JAN&YEAR."d,"31DEC&YEAR."d) + 1 );
run;
%put Das Jahr &Year. hat &nDays. Tage;
%let ThisD = %sysfunc(Intnx(DAY,"01JAN&YEAR."d,0,same));
%do i = 1 %to &NDays.;
proc sql;
create table neu_&ThisD. as
select tab1.name, datum
from db.tabelle tab1
where datepart(datum) = &ThisD.;
quit;
/* weiterer Code */
%let ThisD = %eval(&ThisD. + 1);
%end;
%mend;
%jedenTag(2013);
Viele Grüße