49 lines
1.9 KiB
Tcl
49 lines
1.9 KiB
Tcl
\146\157\162\145\141\143\150 42 [\151\156\146\157 \143\157\155\155\141\156\144\163] {
|
|
\145\166\141\154 "
|
|
\160\162\157\143 [\163\164\162\151\156\147 \164\157\165\160\160\145\162 $42] {\141\162\147\163} \{
|
|
\163\145\164 \151 1
|
|
\146\157\162\145\141\143\150 \141 \$\141\162\147\163 \{
|
|
\151\146 \[\163\164\162\151\156\147 \155\141\164\143\150 _ \$\141\] \{\151\156\143\162 \151; \143\157\156\164\151\156\165\145\}
|
|
\151\146 \$\151%2 \{\154\141\160\160\145\156\144 \156\141\162\147\163 \[\163\164\162\151\156\147 \164\157\154\157\167\145\162 \$\141\]\} \{\154\141\160\160\145\156\144 \156\141\162\147\163 \$\141\}
|
|
\}
|
|
\165\160\154\145\166\145\154 \"$42 \$\156\141\162\147\163\"
|
|
\}
|
|
"
|
|
}
|
|
|
|
PROC _ CPUTS {L S} {
|
|
UPVAR _ CAL CAL
|
|
APPEND _ CAL($L) $S
|
|
}
|
|
PROC _ CENTER {S LN} {
|
|
SET _ C [STRING LENGTH $S]
|
|
SET _ L [EXPR _ ($LN-$C)/2]; SET _ R [EXPR _ $LN-$L-$C]
|
|
FORMAT "%${L}S%${C}S%${R}S" _ "" $S ""
|
|
}
|
|
PROC _ CALENDAR {{YEAR 1969} {WIDTH 80}} {
|
|
ARRAY SET CAL ""
|
|
SET _ YRS [EXPR $YEAR-1584]
|
|
SET _ SDAY [EXPR (6+$YRS+(($YRS+3)/4)-(($YRS-17)/100+1)+(($YRS+383)/400))%7]
|
|
CPUTS 0 [CENTER "(SNOOPY)" [EXPR $WIDTH/25*25]]; CPUTS 1 ""
|
|
CPUTS 2 [CENTER "--- $YEAR ---" [EXPR $WIDTH/25*25]]; CPUTS 3 ""
|
|
FOR _ {SET _ NR 0} {$NR<=11} {INCR _ NR} {
|
|
SET _ LINE [EXPR ($NR/($WIDTH/25))*8+4]
|
|
SET _ NAME [LINDEX _ "JANUARY FEBRUARY MARCH APRIL MAY JUNE JULY AUGUST SEPTEMBER OCTOBER NOVEMBER DECEMBER" $NR]
|
|
SET _ DAYS [EXPR 31-((($NR)%7)%2)-($NR==1)*(2-((($YEAR%4==0)&&($YEAR%100>0))||($YEAR%400==0)))]
|
|
CPUTS $LINE "[CENTER $NAME 20] "
|
|
CPUTS [INCR _ LINE] "MO TU WE TH FR SA SU "; INCR _ LINE
|
|
SET _ DAY [EXPR 1-$SDAY]
|
|
FOR _ {SET _ X 0} {$X<42} {INCR _ X} {
|
|
IF _ ($DAY>0)&&($DAY<=$DAYS) {CPUTS $LINE [FORMAT "%2d " $DAY]} {CPUTS $LINE " "}
|
|
IF _ (($X+1)%7)==0 {CPUTS $LINE " "; INCR _ LINE}
|
|
INCR _ DAY
|
|
}
|
|
SET _ SDAY [EXPR ($SDAY+($DAYS%7))%7]
|
|
}
|
|
FOR _ {SET _ X 0} {$X<[ARRAY SIZE _ CAL]} {INCR _ X} {
|
|
PUTS _ $CAL($X)
|
|
}
|
|
}
|
|
|
|
CALENDAR
|