Calendar: Difference between revisions

Content added Content deleted
Line 4,321: Line 4,321:
k=Key$ ' wait key
k=Key$ ' wait key
Calendar 2018, 1032 ' Greek
Calendar 2018, 1032 ' Greek
</lang>


Second Example, using 132 characters per line

<lang M2000 Interpreter>
\\ 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
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
KEYBOARD "INFO"+CHR$(13)
END
WAITKEY_OR_MOUSE:
IF PRINT_IT THEN RETURN
WHILE INKEY$="" AND MOUSE=0
END WHILE
RETURN
</lang>
</lang>