Data update

This commit is contained in:
Ingy döt Net 2026-02-01 16:33:20 -08:00
parent 5150844a7d
commit 4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions

View file

@ -1,21 +0,0 @@
WITH PRINTABLE_CALENDAR;
PROCEDURE REAL_CAL IS
C: PRINTABLE_CALENDAR.CALENDAR := PRINTABLE_CALENDAR.INIT_132
((WEEKDAY_REP =>
"MO TU WE TH FR SA SO",
MONTH_REP =>
(" JANUARY ", " FEBRUARY ",
" MARCH ", " APRIL ",
" MAY ", " JUNE ",
" JULY ", " AUGUST ",
" SEPTEMBER ", " OCTOBER ",
" NOVEMBER ", " DECEMBER ")
));
BEGIN
C.PRINT_LINE_CENTERED("[SNOOPY]");
C.NEW_LINE;
C.PRINT(1969, "NINETEEN-SIXTY-NINE");
END REAL_CAL;

View file

@ -1,39 +1,39 @@
CALENDAR(YR){
LASTDAY := [], DAY := []
TITLES =
(LTRIM
______JANUARY_________________FEBRUARY_________________MARCH_______
_______APRIL____________________MAY____________________JUNE________
________JULY___________________AUGUST_________________SEPTEMBER_____
______OCTOBER_________________NOVEMBER________________DECEMBER______
)
STRINGSPLIT, TITLE, TITLES, % CHR(10)
RES := "________________________________" YR CHR(13) CHR(10)
LASTDAY := [], DAY := []
TITLES =
(LTRIM
______JANUARY_________________FEBRUARY_________________MARCH_______
_______APRIL____________________MAY____________________JUNE________
________JULY___________________AUGUST_________________SEPTEMBER_____
______OCTOBER_________________NOVEMBER________________DECEMBER______
)
STRINGSPLIT, TITLE, TITLES, % CHR(10)
RES := "________________________________" YR CHR(13) CHR(10)
LOOP 4 { ; 4 VERTICAL SECTIONS
DAY[1]:=YR SUBSTR("0" A_INDEX*3 -2, -1) 01
DAY[2]:=YR SUBSTR("0" A_INDEX*3 -1, -1) 01
DAY[3]:=YR SUBSTR("0" A_INDEX*3 , -1) 01
RES .= CHR(13) CHR(10) TITLE%A_INDEX% CHR(13) CHR(10) "SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA"
LOOP , 6 { ; 6 WEEKS MAX PER MONTH
WEEK := A_INDEX, RES .= CHR(13) CHR(10)
LOOP, 21 { ; 3 WEEKS TIMES 7 DAYS
MON := CEIL(A_INDEX/7), THISWD := MOD(A_INDEX-1,7)+1
FORMATTIME, WD, % DAY[MON], WDAY
;~ MSGBOX % WD
FORMATTIME, DD, % DAY[MON], % CHR(100) CHR(100)
IF (WD>THISWD) {
RES .= "__ "
CONTINUE
}
DD := ((WEEK>3) && DD <10) ? "__" : DD, RES .= DD " ", LASTDAY[MON] := DAY[MON], DAY[MON] +=1, D
RES .= ((WD=7) && A_INDEX < 21) ? "___" : ""
FORMATTIME, DD, % DAY[MON], % CHR(100) CHR(100)
}
}
RES .= CHR(13) CHR(10)
}
STRINGREPLACE, RES, RES,_,%A_SPACE%, ALL
STRINGREPLACE, RES, RES,%A_SPACE%0,%A_SPACE%%A_SPACE%, ALL
RETURN RES
LOOP 4 { ; 4 VERTICAL SECTIONS
DAY[1]:=YR SUBSTR("0" A_INDEX*3 -2, -1) 01
DAY[2]:=YR SUBSTR("0" A_INDEX*3 -1, -1) 01
DAY[3]:=YR SUBSTR("0" A_INDEX*3 , -1) 01
RES .= CHR(13) CHR(10) TITLE%A_INDEX% CHR(13) CHR(10) "SU MO TU WE TH FR SA SU MO TU WE TH FR SA SU MO TU WE TH FR SA"
LOOP , 6 { ; 6 WEEKS MAX PER MONTH
WEEK := A_INDEX, RES .= CHR(13) CHR(10)
LOOP, 21 { ; 3 WEEKS TIMES 7 DAYS
MON := CEIL(A_INDEX/7), THISWD := MOD(A_INDEX-1,7)+1
FORMATTIME, WD, % DAY[MON], WDAY
;~ MSGBOX % WD
FORMATTIME, DD, % DAY[MON], % CHR(100) CHR(100)
IF (WD>THISWD) {
RES .= "__ "
CONTINUE
}
DD := ((WEEK>3) && DD <10) ? "__" : DD, RES .= DD " ", LASTDAY[MON] := DAY[MON], DAY[MON] +=1, D
RES .= ((WD=7) && A_INDEX < 21) ? "___" : ""
FORMATTIME, DD, % DAY[MON], % CHR(100) CHR(100)
}
}
RES .= CHR(13) CHR(10)
}
STRINGREPLACE, RES, RES,_,%A_SPACE%, ALL
STRINGREPLACE, RES, RES,%A_SPACE%0,%A_SPACE%%A_SPACE%, ALL
RETURN RES
}

View file

@ -1,4 +1,4 @@
public program = PROGRAM;
public Program = PROGRAM;
CONSOLE = Console;
@ -53,5 +53,5 @@ CLEAR(S) { S.clear() }
POPULATE(OBJ, ACTION) { ^ OBJ.populate(ACTION) }
FOREACH(OBJ, ACTION) { ^ OBJ.forEach(ACTION) }
const MONTHNAMES = new string[]{"JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"};
const DAYNAMES = new string[]{"MO", "TU", "WE", "TH", "FR", "SA", "SU"};
const string[] MONTHNAMES = new []{"JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"};
const string[] DAYNAMES = new []{"MO", "TU", "WE", "TH", "FR", "SA", "SU"};

View file

@ -5,7 +5,7 @@ $define ISLEAPYEAR IsLeapYear
$define JULIAN julian
PROCEDURE MAIN(A)
PRINTCALENDAR(\A$<1$>|1969)
PRINTCALENDAR(\A$<1$>|1969)
END
PROCEDURE PRINTCALENDAR(YEAR)
@ -18,7 +18,7 @@ PROCEDURE PRINTCALENDAR(YEAR)
WRITE(CENTER("$<SNOOPY PICTURE$>",COLS * 24 + 4))
WRITE(CENTER(YEAR,COLS * 24 + 4), CHAR(10))
M := LIST(COLS)
M := LIST(COLS)
EVERY MON := 0 TO 9 BY COLS DO $(
WRITES(" ")
EVERY I := 1 TO COLS DO {

View file

@ -9,50 +9,50 @@ MODULE GLOBAL SNOOPY {
IF NOT PRINT_IT THEN CURSOR 0,ROW ELSE IF ROW>0 THEN PAGE 1
PRINT $(,8)
PRINT #-2, {
XXXX
X XX
X *** X XXXXX
X ***** X XXX XX
XXXX ******* XXX XXXX XX
XX X ****** XXXXXXXXX El@ XX XXX
XX X **** X X** X
X XX XX X X***X
X //XXXX X XXXX
X // X XX
X // X XXXXXXXXXXXXXXXXXX/
X XXX// X X
X X X X X
X X X X X
X X X X X XX
X X X X X XXX XX
X XXX X X X X X X
X X X XX X XXXX
X X XXXXXXXX\ XX XX X
XX XX X X @X XX
XX XXXX XXXXXX/ X XXXX
XXX XX*** X X
XXXXXXXXXXXXX * * X X
*---* X X X
*-* * XXX X X
*- * XXX X
*- *X XXX
*- *X X XXX
*- *X X XX
*- *XX X X
* *X* X X X
* *X * X X X
* * X** X XXXX X
* * X** XX X X
* ** X** X XX X
* ** X* XXX X X
* ** XX XXXX XXX
* * * XXXX X X
* * * X X X
=======******* * * X X XXXXXXXX\
* * * /XXXXX XXXXXXXX\ )
=====********** * X ) \ )
====* * X \ \ )XXXXX
=========********** XXXXXXXXXXXXXXXXXXXXXX
XXXX
X XX
X *** X XXXXX
X ***** X XXX XX
XXXX ******* XXX XXXX XX
XX X ****** XXXXXXXXX El@ XX XXX
XX X **** X X** X
X XX XX X X***X
X //XXXX X XXXX
X // X XX
X // X XXXXXXXXXXXXXXXXXX/
X XXX// X X
X X X X X
X X X X X
X X X X X XX
X X X X X XXX XX
X XXX X X X X X X
X X X XX X XXXX
X X XXXXXXXX\ XX XX X
XX XX X X @X XX
XX XXXX XXXXXX/ X XXXX
XXX XX*** X X
XXXXXXXXXXXXX * * X X
*---* X X X
*-* * XXX X X
*- * XXX X
*- *X XXX
*- *X X XXX
*- *X X XX
*- *XX X X
* *X* X X X
* *X * X X X
* * X** X XXXX X
* * X** XX X X
* ** X** X XX X
* ** X* XXX X X
* ** XX XXXX XXX
* * * XXXX X X
* * * X X X
=======******* * * X X XXXXXXXX\
* * * /XXXXX XXXXXXXX\ )
=====********** * X ) \ )
====* * X \ \ )XXXXX
=========********** XXXXXXXXXXXXXXXXXXXXXX
}
}

View file

@ -4,19 +4,19 @@ MONTHS: SYSTEM/LOCALE/MONTHS
; GET DAY FROM YEAR, MONTH, WEEK, AND WEEKDAY!
GETDAY: FUNCTION [Y[INTEGER!] M[INTEGER!] W[INTEGER!] WD[INTEGER!]] [
FD: TO-DATE REDUCE [1 M Y] ; FIRST DAY!
SWD: FD/WEEKDAY + 1 IF SWD > 7 [SWD: 1] ; SHIFT FROM MON=1 TO SUN=1
OFS: (W - 1) * 7 + (WD - SWD) ; OFFSET
D: FD + OFS ; DATE
EITHER D/MONTH = M [D/DAY][0] ; RETURN DAY OR ZERO!
FD: TO-DATE REDUCE [1 M Y] ; FIRST DAY!
SWD: FD/WEEKDAY + 1 IF SWD > 7 [SWD: 1] ; SHIFT FROM MON=1 TO SUN=1
OFS: (W - 1) * 7 + (WD - SWD) ; OFFSET
D: FD + OFS ; DATE
EITHER D/MONTH = M [D/DAY][0] ; RETURN DAY OR ZERO!
]
; CENTER STRING
CENTR: FUNCTION [STR WID] [
GAP: WID - LENGTH? STR
LPAD: TO-INTEGER GAP / 2
PAD/LEFT STR WID - LPAD
PAD STR WID
GAP: WID - LENGTH? STR
LPAD: TO-INTEGER GAP / 2
PAD/LEFT STR WID - LPAD
PAD STR WID
]
EITHER "" = Y: ASK "YEAR (ENTER FOR CURRENT): " [Y: NOW/YEAR][Y: TO-INTEGER Y]
@ -25,28 +25,28 @@ PRINT CENTR "[ S N O O P Y ]" 130 ; PRINT SNOOPY BLOCK CENTERED
PRINT CENTR TO-STRING Y 130 ; PRINT YEAR
FOREACH R [[1 2 3 4 5 6][7 8 9 10 11 12]] [
; PRINT MONTH'S NAME
FOREACH M R [
PRIN REJOIN [CENTR UPPERCASE MONTHS/:M 21 " "]
] PRINT ""
; PRINT FOR EACH WEEK ACROSS MONTHS
FOREACH W [0 1 2 3 4 5 6] [
; EACH MONTHS
FOREACH M R [
EITHER W = 0 [ ; PRINT WEEKDAYS
FOREACH D ["SU" "MO" "TU" "WE" "TH" "FR" "SA"]
[PRIN [FORM PAD D 3]]
] [
FOREACH WD [1 2 3 4 5 6 7] [ ; PRINT DATES
; RECONSTRUCT THE DAY
EITHER 0 < DT: GETDAY Y M W WD [
PRIN [FORM PAD/LEFT DT 2]
] [
PRIN " "
] PRIN " "
]
] PRIN " "
] PRINT ""
] PRINT ""
; PRINT MONTH'S NAME
FOREACH M R [
PRIN REJOIN [CENTR UPPERCASE MONTHS/:M 21 " "]
] PRINT ""
; PRINT FOR EACH WEEK ACROSS MONTHS
FOREACH W [0 1 2 3 4 5 6] [
; EACH MONTHS
FOREACH M R [
EITHER W = 0 [ ; PRINT WEEKDAYS
FOREACH D ["SU" "MO" "TU" "WE" "TH" "FR" "SA"]
[PRIN [FORM PAD D 3]]
] [
FOREACH WD [1 2 3 4 5 6 7] [ ; PRINT DATES
; RECONSTRUCT THE DAY
EITHER 0 < DT: GETDAY Y M W WD [
PRIN [FORM PAD/LEFT DT 2]
] [
PRIN " "
] PRIN " "
]
] PRIN " "
] PRINT ""
] PRINT ""
]

View file

@ -1,48 +1,48 @@
\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\"
\}
"
}
\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
}
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 ""
}
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)
}
}
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

View file

@ -8,14 +8,14 @@ IC(' ', COUNT, #3*9+1) NI(#2) IN
REPEAT(12/#3) {
REPEAT (#3) {
BS(BF)
CALL("DRAW_CALENDAR")
RCB(10, 1, EOB_POS, COLSET, 1, 21)
BQ(OK)
#5 = CP
RI(10)
GP(#5)
EOL IC(9)
#1++
CALL("DRAW_CALENDAR")
RCB(10, 1, EOB_POS, COLSET, 1, 21)
BQ(OK)
#5 = CP
RI(10)
GP(#5)
EOL IC(9)
#1++
}
EOF IN(2)
}