calendar.sas
/* Richard A. DeVenezia
* http://www.devenezia.com
* 11/28/03
*
* orginally posted to SAS-L Oct 17, 2002
*/
%macro calendar_report (month, year);
data grid;
date1 = mdy (&month,1,&year);
date2 = intnx ('month', date1, 1) - 1;
do date = date1 to date2;
wim = intck ('week', date1, date);
dim = date-date1+1;
dow = weekday (date);
output;
end;
run;
proc format;
value dayname
1 = 'Sunday'
2 = 'Monday'
3 = 'Tuesday'
4 = 'Wednesday'
5 = 'Thursday'
6 = 'Friday'
7 = 'Saturday'
;
run;
options missing=' ';
proc report nowindows data=grid
style (column) = { just=center cellheight=50pt cellwidth=14.29% just=left vjust=top }
;
column wim ("%sysfunc(mdy(&month,1,&year), monname) &year" dow, dim) ;
define wim / group noprint ;
define dow / across ' ' format=dayname. order=internal;
define dim / ' ';
run;
options missing='.';
%mend; Sample code
ods html body='c:\temp\calendar.html' style=sasweb; %calendar_report (9,2002); data caldat; date=mdy(9,13,2002); subject='John Doe'; visit='1 mos'; duration=1; output; run; ods html style=default; proc calendar data=caldat formchar(12)=' '; start date; dur duration; run; ods html close;