10
20 :
30 DIMctrl%32:X%=ctrl%:Y%=X%DIV256
40
50 :
60 INPUT"Year: "y%
70 INPUT"Start Month: "sm%
80 INPUT"End Month: "em%
90 :
100 FOR m%=sm% TO em%
110 firstday%=FNDayOfWeek(1,m%,y%)
120 numdays%=FNDaysSince(1,1+(m% AND (m%<12)),y%-(m%=12),1,m%,y%)
130 month$=FNmonth(m%)+" "+FNd0(y%,4)
140 len%=39-LENmonth$/2
150 PRINT "Ú"STRING$(77,"Ä")"¿"
160 PRINT "³"SPC(len%);month$;SPC(77-LENmonth$-len%)"³"
170 PRINT "Ã"STRING$(38,"Ä")"Â"STRING$(38,"Ä")"´"
180 FOR day%=1 TO 16
190 PRINT "³"STRING$(38," ")"³"STRING$(38," ")"³"
200 PRINT "³"FNd(day%,2)" "FNday((firstday%+day%-1)MOD7);SPC(32);"³";
210 IF day%+16<=numdays%:PRINT FNd(day%+16,2)" "FNday((firstday%+day%+16-1)MOD7);SPC(32)"³" ELSE PRINT SPC(38)"³"
220 PRINT "³"STRING$(38," ")"³"STRING$(38," ")"³"
230 IF day%<16:PRINT "Ã"STRING$(38,"Ä")"Å"STRING$(38,"Ä")"´"
240 NEXT
250 PRINT "À"STRING$(38,"Ä")"Á"STRING$(38,"Ä")"Ù"
260 NEXT
270 END
280 :
290 :
300 DEFFNmonth(A%):=MID$("JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember",VALMID$("010816212629333743525967",2*A%-1,2),VALMID$("785534469788",A%,1))
310 :
320 DEFFNday(A%):A%=A%AND7:=MID$("SatSunMonTueWedThuFriSat",A%*3+1,3)
330 :
340
350 DEFFNDayOfWeek(d%,m%,y%):y%=y%MOD400
360 =(y%*365.25+m%*30+d%+VALMID$("120112234455",m%,1)+((y%MOD4)=0)-((y%-1)DIV100)-(m%>2AND((y%MOD4)=0AND(y%MOD100)<>0ORy%=0))+3)MOD7+1
370 :
380
390 DEFPROCConvDate(mem%,d%,m%,y%,hr%,mn%,sc%,cs%):IFy%<100:y%=y%+1900
400 y%=y%MOD400
410 d%=y%*365.25+m%*30+d%+VALMID$("120112234455",m%,1)+((y%MOD4)=0)-((y%-1)DIV100)-(m%>2AND((y%MOD4)=0AND(y%MOD100)<>0ORy%=0))+36493
420 IFd%>146096:d%=d%-146097
430 d%=d%*&41EB:mem%!1=d%+d%:d%=((hr%*60+mn%)*60+sc%)*100+cs%
440 ?mem%=d%:mem%!1=mem%!1+d%DIV256:ENDPROC
450 :
460
470 DEFFNDaysSince(td%,tm%,ty%,pd%,pm%,py%):LOCAL past%
480 PROCConvDate(ctrl%,pd%,pm%,py%,0,0,0,0):past%=ctrl%!1
490 PROCConvDate(ctrl%,td%,tm%,ty%,0,0,0,0):=(ctrl%!1-past%)DIV&83D6
500 :
510
520 DEFFNh0(A%,N%)=RIGHT$("0000000"+STR$~A%,N%)
530 :
540
550 DEFFNd0(A%,N%)=RIGHT$("00000000"+STR$A%,N%)
560 :
570
580 DEFFNh(A%,N%)=RIGHT$(" "+STR$~A%,N%)
590 :
600
610 DEFFNd(A%,N%)=RIGHT$(" "+STR$A%,N%)
620 :