49 lines
1.2 KiB
Text
49 lines
1.2 KiB
Text
$include "REALIZE.ICN"
|
|
|
|
LINK DATETIME
|
|
$define ISLEAPYEAR IsLeapYear
|
|
$define JULIAN julian
|
|
|
|
PROCEDURE MAIN(A)
|
|
PRINTCALENDAR(\A$<1$>|1969)
|
|
END
|
|
|
|
PROCEDURE PRINTCALENDAR(YEAR)
|
|
COLS := 3
|
|
MONS := $<$>
|
|
"JANUARY FEBRUARY MARCH APRIL MAY JUNE " ||
|
|
"JULY AUGUST SEPTEMBER OCTOBER NOVEMBER DECEMBER " ?
|
|
WHILE PUT(MONS, TAB(FIND(" "))) DO MOVE(1)
|
|
|
|
WRITE(CENTER("$<SNOOPY PICTURE$>",COLS * 24 + 4))
|
|
WRITE(CENTER(YEAR,COLS * 24 + 4), CHAR(10))
|
|
|
|
M := LIST(COLS)
|
|
EVERY MON := 0 TO 9 BY COLS DO $(
|
|
WRITES(" ")
|
|
EVERY I := 1 TO COLS DO {
|
|
WRITES(CENTER(MONS$<MON+I$>,24))
|
|
M$<I$> := CREATE CALENDARFORMATWEEK(YEAR,MON + I)
|
|
$)
|
|
WRITE()
|
|
EVERY 1 TO 7 DO $(
|
|
EVERY C := 1 TO COLS DO $(
|
|
WRITES(" ")
|
|
EVERY 1 TO 7 DO WRITES(RIGHT(@M$<C$>,3))
|
|
$)
|
|
WRITE()
|
|
$)
|
|
$)
|
|
RETURN
|
|
END
|
|
|
|
PROCEDURE CALENDARFORMATWEEK(YEAR,M)
|
|
STATIC D
|
|
INITIAL D := $<31,28,31,30,31,30,31,31,30,31,30,31$>
|
|
|
|
EVERY SUSPEND "SU"|"MO"|"TU"|"WE"|"TH"|"FR"|"SA"
|
|
EVERY 1 TO (DAY := (JULIAN(M,1,YEAR)+1)%7) DO SUSPEND ""
|
|
EVERY SUSPEND 1 TO D$<M$> DO DAY +:= 1
|
|
IF M = 2 & ISLEAPYEAR(YEAR) THEN SUSPEND (DAY +:= 1, 29)
|
|
EVERY DAY TO (6*7) DO SUSPEND ""
|
|
END
|