147 lines
5 KiB
Text
147 lines
5 KiB
Text
\\ Calendar - for "REAL" programmers
|
|
\\ All statements in UPPERCASE
|
|
\\ Output to 132 characters console - as a line printer
|
|
\\ USE COURIER NEW (FONT "COURIER NEW")
|
|
|
|
\\ CHANGE THE VALUE OF PRINT_IT TO TRUE FOR PRINTING
|
|
GLOBAL CONST PRINT_IT AS BOOLEAN=FALSE
|
|
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
|
|
|
|
}
|
|
}
|
|
MODULE CALENDAR (YEAR, LOCALEID) {
|
|
FUNCTION GETMAX(YEAR, MONTH) {
|
|
A=DATE(STR$(YEAR)+"-"+STR$(MONTH)+"-1")
|
|
MAX=32
|
|
DO {
|
|
MAX--
|
|
M=VAL(STR$(CDATE(A,0,0,MAX), "M"))
|
|
} UNTIL M=MONTH
|
|
=MAX+1
|
|
}
|
|
FUNCTION SKIPMO(YEAR, MONTH) {
|
|
A=DATE(STR$(YEAR)+"-"+STR$(MONTH)+"-1")
|
|
=(VAL(STR$(A, "W"))-8) MOD 7 +7
|
|
}
|
|
FUNCTION TITLE$(A$) {
|
|
=UCASE$(LEFT$(A$,1))+LCASE$(MID$(A$, 2))
|
|
}
|
|
LOCALE LOCALEID
|
|
IF NOT PRINT_IT THEN CURSOR 0,HEIGHT-1 ' LAST LINE, SO EACH NEW LINE SCROLL ALL LINES UP
|
|
SNOOPY
|
|
|
|
PRINT UNDER ' PRINT UNDERLINE
|
|
PRINT OVER $(2), YEAR
|
|
PRINT
|
|
FOR J=0 TO 1 {
|
|
PRINT
|
|
FOR I=1 TO 6 {
|
|
MONTH=I+J*6
|
|
PRINT PART @((I-1)*22+1), $(2,21), UCASE$(LOCALE$(55+MONTH))
|
|
}
|
|
PRINT
|
|
DIM SKIP(1 TO 6), COUNT(1 TO 6), D(1 TO 6)=1
|
|
FOR I=1 TO 6 {
|
|
MONTH=I+J*6
|
|
IF I>1 THEN PRINT " ";
|
|
FOR K=42 TO 48 :PRINT " ";UCASE$(LEFT$(LOCALE$(K),2));:NEXT K
|
|
SKIP(I)=SKIPMO(YEAR, MONTH)
|
|
COUNT(I)=GETMAX(YEAR, MONTH)
|
|
}
|
|
PRINT
|
|
IF PRINT_IT ELSE REFRESH 1000
|
|
FOR I=1 TO 6 {
|
|
IF I>1 THEN PRINT " ";
|
|
FOR K=1 TO 7 {
|
|
SKIP(I)--
|
|
IF SKIP(I)>0 THEN PRINT " "; :CONTINUE
|
|
COUNT(I)--
|
|
PRINT FORMAT$(" {0::-2}", D(I));
|
|
D(I)++
|
|
}
|
|
}
|
|
PRINT
|
|
IF PRINT_IT ELSE REFRESH 1000
|
|
PRINT @(0)
|
|
FOR M=1 TO 5 {
|
|
FOR I=1 TO 6 {
|
|
IF I>1 THEN PRINT " ";
|
|
FOR K=1 TO 7 {
|
|
COUNT(I)--
|
|
IF COUNT(I)<0 THEN PRINT " "; : CONTINUE
|
|
PRINT FORMAT$(" {0::-2}", D(I));
|
|
D(I)++
|
|
}
|
|
}
|
|
PRINT
|
|
IF PRINT_IT ELSE REFRESH 1000
|
|
}
|
|
}
|
|
}
|
|
WHILE INKEY$<>"" : END WHILE
|
|
IF PRINT_IT THEN PRINTING ON ELSE REFRESH 1000
|
|
FONT "COURIER NEW"
|
|
PEN 0
|
|
CLS 15, 0
|
|
FORM 132,68
|
|
CALENDAR 1966, 1032 ' GREEK
|
|
GOSUB WAITKEY_OR_MOUSE
|
|
FOR I=2020 TO 2026
|
|
CALENDAR I, 1033 ' ENGLISH
|
|
GOSUB WAITKEY_OR_MOUSE
|
|
NEXT I
|
|
IF PRINT_IT THEN PRINTING OFF ELSE REFRESH 50
|
|
CLEAR ' CLEAR VARIABLES FROM THIS MODULE
|
|
END
|
|
WAITKEY_OR_MOUSE:
|
|
IF PRINT_IT THEN RETURN
|
|
WHILE INKEY$="" AND MOUSE=0
|
|
END WHILE
|
|
RETURN
|