10 REM *****************************
20 REM * *-- K a l e n d e r --* * 30 REM * by * 40 REM * von Michael Grassmann * 50 REM * August 1988 * 90 REM ***************************** 100 REM 110 REM ************************ Einlesen der Felder ************************** 120 REM 130 DIM anzt(26),wtn$(7),mna$(12),coa$(12),coe$(12) 140 FOR i=1 TO 26 150 READ anzt(i) 160 NEXT i 170 FOR i=1 TO 7 180 READ wtn$(i) 190 NEXT i 200 FOR i=1 TO 12 210 READ mna$(i) 220 NEXT i 230 REM 240 REM ************************* Hauptprogramm ****************************** 250 REM 260 MODE 2 270 PRINT"K a l e n d e r p r o g r a m m ! ! !" 280 PRINT 290 PRINT"Zur Ausgabe eines Jahres muss der 1.1. des Jahres eingegeben werden !" 300 PRINT 310 PRINT"Geben Sie bitte das gewuenschte Datum ein : " 320 PRINT 330 PRINT" Tag : Monat : Jahr (1-9999) :" 340 PRINT 350 WHILE fehler<>1 360 LOCATE 13,9:PRINT" " 370 LOCATE 13,9:INPUT"",tage:LOCATE 29,9:INPUT"",monat: LOCATE 54,9:INPUT"",jahr 380 GOSUB 480 390 WEND 400 PRINT 410 ta$="n" 420 IF tage=1 AND monat=1 THEN GOSUB 620 430 IF ta$="n" THEN LOCATE 1,11:PRINT"Der";USING" ##.";tage;:PRINT" ";mna$(monat);" im ";schalt$;jahr;" ist ein ";wtn$(sp5);". ":PRINT:PRINT"Weiter mit der Leertaste ! ":GOSUB 1010 440 RUN 450 REM 460 REM ********************* Berechnen des Wochentages *********************** 470 REM 480 fehler=0 490 IF (jahr>=10000)OR(jahr<=0)OR(monat>=13)OR(monat<=0)OR(tage<=0) THEN RETURN 500 dif=10000-jahr:sp1=FIX(dif/4):sp2=sp1*4 510 IF sp2<>dif THEN zus=0:schalt$="Jahr" ELSE zus=13:schalt$="Schaltjahr" 520 IF tage<=anzt(monat+zus+1)-anzt(monat+zus) THEN fehler=1 530 sp1=sp1+dif+4:sp3=(7-(sp1-((FIX(sp1/7))*7)))-1 540 sp4=anzt(monat+zus)+tage 550 sp5=(sp4-((FIX(sp4/7))*7))+sp3 560 IF sp5>7 THEN sp5=sp5-7 570 IF sp5<1 THEN sp5=7 580 RETURN 590 REM 600 REM **************************** Jahresausgabe **************************** 610 REM 620 PRINT"Wollen Sie eine Kalenderausgabe dieses Jahres ? (j/n)" 630 ta$="" 640 WHILE ta$<>"j" AND ta$<>"n" 650 ta$=INKEY$ 660 WEND 670 IF ta$="n" THEN RETURN 680 LOCATE 1,11:PRINT"Ausgabe auf Bildschirm oder Drucker ? (b/d) " 690 ta$="" 700 WHILE ta$<>"b" AND ta$<>"d" 710 ta$=INKEY$ 720 WEND 730 CLS 740 IF ta$="b" THEN bd=0 ELSE bd=8:PRINT"Ausgabe auf dem Drucker !":WIDTH 80 750 PRINT #bd," Kalender des ";schalt$;"es";jahr 760 FOR ini=1 TO 12 770 coa$(ini)=" " 780 coe$(ini)="" 790 NEXT ini 800 FOR ms=1 TO 12 STEP 4 810 PRINT #bd,USING" ç ç ç ç ç ç ç ç";mna$(ms);mna$(ms+1);mna$(ms+2);mna$(ms+3) 820 FOR wt=1 TO 7 830 FOR monat=ms TO ms+3 840 IF monat=ms THEN PRINT #bd,LEFT$(wtn$(wt),2); 850 tage=0 860 tage=tage+1 870 GOSUB 480 880 IF sp5<>wt THEN 860 890 IF tage=1 THEN coa$(monat)="":coe$(monat)=" " 900 PRINT #bd,coa$(monat); 910 FOR k=1 TO 5 920 IF tage>28 THEN GOSUB 480 930 IF fehler=1 THEN PRINT #bd,USING"###";tage; ELSE PRINT #bd," "; 940 tage=tage+7 950 NEXT k 960 PRINT #bd,coe$(monat); 970 NEXT monat 980 PRINT #bd 990 NEXT wt 1000 NEXT ms 1010 ta$="" 1020 WHILE ta$<>" " AND bd<>8 1030 ta$=INKEY$ 1040 WEND 1050 RETURN 1060 DATA 0,31,59,90,120,151,181,212,243,273,304,334,365 1070 DATA 0,31,60,91,121,152,182,213,244,274,305,335,366 1080 DATA Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag 1090 DATA Januar,Februar,Maerz,April,Mai,Juni,Juli,August,September 1100 DATA Oktober,November,Dezember |