1000 ! Prints a calendar for any year 1584-... & ! & ! 7-Apr-77 F. Mitchell Erskine College & ! & ! 12-Nov-79 last edit *M & ! & ! Author: W. Franklin Mitchell, Jr. & ! Director of Computer Services & ! Erskine College, Due West, South Carolina & ! & ! *********************************************************************** & ! * This software is furnished without charge by Erskine College and * & ! * may be copied only with the inclusion of the author's name and * & ! * copyright notice. No title to or ownership of this software is * & ! * hereby transmitted. Neither Erskine College nor the author assumes * & ! * any responsibility for the use or reliability of this software. The * & ! * author welcomes comments and/or bug reports mailed to Franklin * & ! * Mitchell, Erskine College, Box 86LM, Due West, South Carolina 29639. * & ! *********************************************************************** & 1020 DIM M$(12%), DAYS.THIS.MONTH%(12%), NR$(9%,9%) & 1030 PRINT & \ PRINT "Calendar V2.0 *M ", TIME$(0%), DATE$(0%) & \ PRINT & 1040 O$="KB:" & \ COLUMNS%=3% & \ DATE.TAB%=5% & \ J$="" & \ GOTO 1070 & 1060 IF LEFT(CVT$$(O$,2%),2%)<>"KB" & THEN COLUMNS%=4% & \ J$=SPACE$(15%) & 1070 FILL1$ = SPACE$(COLUMNS% + 1%) & \ C%=7%*(3%) & \ FILL2$=SPACE$(C%) & \ SPACE.1$=SPACE$(1%) & \ SPACE.3$=SPACE$(3%) & \ NUL$="" & \ DATE.TAB%=33% IF COLUMNS%=4% & 1080 OPEN O$ FOR OUTPUT AS FILE 1% 1090 H$=" S M T W T F S " & 1100 DEF FNL%(X%) 1110 IF X%/4%=X%/4. AND (X%/100%<>X%/100. OR X%/400%=X%/400.) & THEN FNL%=1% & ELSE FNL%=0% 1120 FNEND & 1130 DEF FNP$(X%) 1140 IF X%=0% & THEN FNP$=SPACE.3$ & \ GOTO 1160 1150 P$=CVT$$(NUM1$(X%),128%) & \ P$=SPACE.1$+P$ IF LEN(P$)=1% 1160 FNP$=P$+SPACE.1$ 1170 FNEND & 1180 DEF FNMOD.7%(X%) = X% - X%/7%*7% & 1190 PRINT & \ INPUT "Year"; YEAR% & \ YEAR% = YEAR% + 1900% IF YEAR% < 1900% & \ IF YEAR% < 1584% & THEN PRINT & \ PRINT "Sorry, I only work for years 1584 and above." & \ GOTO 1190 & 1200 READ M$(I%), DAYS.THIS.MONTH%(I%) FOR I%=1% TO 12% & \ DAYS.THIS.MONTH%(2%)=28%+FNL%(YEAR%) & 1210 READ NR$(I%,J%) FOR J%=0% TO 3% FOR I%=1% TO 9% & \ READ NR$(I%,J%) FOR J%=4% TO 7% FOR I%=1% TO 9% & \ READ NR$(I%,J%) FOR J%=8% TO 9% FOR I%=1% TO 9% & \ PRINT #1% FOR I%=1% TO 2% & \ YEAR$=NUM1$(YEAR%) & 1220 FOR I%=1% TO 9% & \ PRINT #1%, TAB(DATE.TAB%); & \ PRINT #1%, NR$(I%,VAL(MID(YEAR$,J%,1%))); " "; FOR J%=1% TO 4% & \ PRINT #1% 1230 NEXT I% & \ PRINT #1% FOR I%=1% TO 4% & 1240 LAST.YEAR% = YEAR% - 1% & \ FIRST.DAY% = FNMOD.7%(LAST.YEAR% + LAST.YEAR%/4% & - LAST.YEAR%/100% + LAST.YEAR%/400% + 1%) & \ DAY% = FIRST.DAY% + 1% & \ I%, DAYS.SO.FAR% = 1% & \ J%, MONTH% = 1% & 1250 A$(1%,1%)=A$(1%,1%)+SPACE.3$ FOR Z%=1% TO DAY%-1% 1260 A$(I%,J%)=A$(I%,J%)+FNP$(DAYS.SO.FAR%) 1270 DAYS.SO.FAR%=DAYS.SO.FAR%+1% & \ DAY%=DAY%+1% & \ IF DAY%>7% & THEN DAY%=1% & \ J%=J%+1% 1280 GOTO 1300 IF DAYS.SO.FAR% <= DAYS.THIS.MONTH%(MONTH%) 1290 MONTH% = MONTH% + 1% & \ J%, DAYS.SO.FAR% = 1% & \ I%=I%+1% & \ A$(I%,J%)=A$(I%,J%)+SPACE.3$ FOR Z%=1% TO DAY%-1% 1300 GOTO 1260 IF I%<=COLUMNS% 1310 PRINT #1% & \ Z$=NUL$ & 1320 FOR Z%=MONTH%-COLUMNS% TO MONTH%-1% 1330 Z$=Z$+LEFT(SPACE$((C%+1%-LEN(M$(Z%)))/2%)+M$(Z%)+FILL2$,C%)+FILL1$ 1340 NEXT Z% & 1350 PRINT #1%, J$; CVT$$(Z$,128%) 1360 PRINT #1% & \ PRINT #1%, J$; 1370 PRINT #1%, H$; FILL1$; FOR Z%=1% TO COLUMNS%-1% & \ PRINT #1%, H$ & \ PRINT #1% & 1380 FOR J%=1% TO 6% 1390 Z$=NUL$ 1400 FOR I%=1% TO COLUMNS% 1410 Z$=Z$+LEFT(A$(I%,J%)+FILL2$,C%)+FILL1$ 1420 A$(I%,J%)=NUL$ 1430 NEXT I% 1440 PRINT #1%, J$; CVT$$(Z$,128%) 1450 NEXT J% & 1460 I%, J% = 1% 1470 GOTO 1250 UNLESS MONTH%>12% & 1480 DATA "January",31, "February",28, "March",31, "April",30, "May",31 1490 DATA "June",30, "July",31, "August",31, "September",30, "October",31 1500 DATA "November",30, "December",31 & 1510 DATA " 000000 "," 11 "," 222222 ","33333333333333" 1520 DATA " 00 00 "," 1111 "," 22 22 "," 33 " 1530 DATA "00 00"," 111111 ","22 22"," 33 " 1540 DATA "00 00"," 11 "," 22 "," 3333 " 1550 DATA "00 00"," 11 "," 22 "," 33 " 1560 DATA "00 00"," 11 "," 22 "," 33" 1570 DATA "00 00"," 11 "," 22 ","33 33" 1580 DATA " 00 00 "," 11 "," 22 "," 33 33 " 1590 DATA " 000000 ","11111111111111","22222222222222"," 333333 " & 1600 DATA " 44 ","55555555555555"," 666666 ","77777777777777" 1610 DATA " 4444 ","55 "," 66 66 ","77 77" 1620 DATA " 44 44 ","55 ","66 66"," 77 " 1630 DATA " 44 44 ","5555555555 ","66 "," 77 " 1640 DATA " 44 44 "," 55 ","66 666666 "," 77 " 1650 DATA "44444444444444"," 55","6666 66 "," 77 " 1660 DATA " 44 ","55 55","66 66"," 77 " 1670 DATA " 44 "," 55 55 "," 66 66 ","77 " 1680 DATA " 44 "," 555555 "," 666666 ","77 " & 1690 DATA " 888888 "," 999999 " 1700 DATA " 88 88 "," 99 99 " 1710 DATA "88 88","99 99" 1720 DATA " 88 88 "," 99 9999" 1730 DATA " 888888 "," 999999 99" 1740 DATA " 88 88 "," 99" 1750 DATA "88 88","99 99" 1760 DATA " 88 88 "," 99 99 " 1770 DATA " 888888 "," 999999 " & 32767 END