Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß) 10 WINDOW 20 CLEAR:CLS 30 REM Hauptmenue 40 Z=203:WINDOW 1,30,1,30 50 CLS:PRINT SPC(69)"Kalenderberechnungen":PRINT:PRINT 60 PRINT AT(2,9);"*Greifen-Soft*" 70 PRINT " Waehle bitte aus :":PRINT " ------------------" 80 FOR I=1 TO 18:PRINT:NEXT I 90 PRINT AT(14,3);"Wochentagsberechnung....1" 100 PRINT AT(16,3);"Ostern..................2" 110 PRINT AT(18,3);"Pfingsten...............3" 120 PRINT AT(20,3);"Herrentag...............4" 130 PRINT AT(22,3);"Totensonntag............5" 140 PRINT AT(24,3);"Ende....................6" 150 CALL*F6B8 160 GOSUB 800 170 PRINT " Deine Wahl :"; 180 Q$=INKEY$:IF Q$="" THEN 180 190 X=ASC(Q$)-48 200 IF X< 1 OR X > 6 GOTO 170 210 WINDOW:GOTO 2470 220 STOP 230 REM Wochentag-berechnung 240 REM 250 WIDTH 32:Y=0 260 CLS:PRINT: PRINT "Bitte gebe das Datum ein,":PRINT 270 PRINT "welches ich Dir berechnen soll":PRINT:INPUT "";D$ 280 IF D$="" THEN 260 290 GOSUB 870:IF F=1 THEN 260 300 PRINT:PRINT:PRINT:PRINT "Der "T "."M "."J " ist ein":PRINT 310 PRINT:PRINT TAB(10)W$ 320 PRINT:PRINT:PRINT:PRINT "Kalender-Ausgabe.............1":PRINT 330 PRINT "Abstandsberechnung...........2":PRINT 340 PRINT "Neue Berechnung..............3":PRINT 350 PRINT "Zurueck ins Menue............4":PRINT 360 PRINT "Ende.........................5":PRINT 370 N$=INKEY$ 380 IF N$="" THEN 370 390 IF N$="2"THEN 690 400 IF N$="1"THEN 530 410 IF N$="5"THEN 2480 420 IF N$<>"4"THEN 260 430 REM 440 REM Ende 450 REM 460 CLS:GOTO 10 470 IF INKEY$<>""THEN 470 480 IF INKEY$= ""THEN 480 490 END 500 REM 510 REM Kalender 520 REM 530 CLS:A=T-W 540 IF A>0 THEN A=A-7:GOTO 540 550 RESTORE 1250 560 FOR I=1 TO M:READ M$:NEXT 570 PRINT TAB(12-LEN(M$))M$J:PRINT:PRINT:PRINT 580 RESTORE 590 FOR I=1 TO 7:READ W$:PRINT W$; 600 FOR V=0 TO 5 610 PRINT TAB(V*3+12);:U=V*7+A+I 620 U$=RIGHT$(STR$(U),3) 630 IF U>0 AND U<=TM THEN PRINT U$; 640 NEXT V:PRINT:PRINT 650 NEXT I:IF Y<>0 THEN 2500 ELSE 320 660 REM 670 REM Abstandsberechnung 680 REM 690 CLS:PRINT TAB( 96)"Bitte gebe das aktuelle Datum ":PRINT 700 INPUT "ein !";D1$:D$=D1$ 710 TZ=TG:T1=T:M1=M:J1=J:GOSUB 870:IF F=1 THEN 690 720 Z=TZ 730 TZ=TZ-TG:PRINT:PRINT 740 TG=Z:T=T1:M=M1:J=J1 750 IF TZ=0 THEN PRINT "Der gesuchte Tag ist heute !":GOTO 320 760 IF SGN(TZ)=-1 THEN E$="war vor":ELSE E$="ist in" 770 PRINT "Der gesuchte Tag "E$:PRINT:PRINT ABS(TZ)" Tag";:IF ABS(TZ)<>1 THEN PRINT "en" 780 GOTO 320 790 REM 800 REM Bildschirmrand 810 REM 820 FOR I=0 TO 31 830 J=I*32 840 POKE-5120+I,Z:POKE-4097-I,Z:POKE-5089+J,Z:POKE-4128-J,Z 850 NEXT:RETURN 860 REM 870 REM Berechnung des Wochen- 880 REM tages 890 REM 900 S=0 910 GOSUB 1270:T=Z 920 GOSUB 1270:M=Z 930 GOSUB 1270:J=Z 940 IF M=4 OR M=6 OR M=9 OR M=11 THEN TM=30:ELSE TM=31 950 IF M=2 THEN TM=29 960 IF J<0 THEN E$="Jahr":GOTO 1200 970 IF J<100 THEN J=J+1900 980 IF J<1583 OR J>3300 THEN PRINT:PRINT:PRINT "Das angegebene Datum liegt ausserhalb des zulaessigen Bereichs !":GOTO 1230 990 IF M<1 OR M>12 THEN E$="Monat":GOTO 1200 1000 IF T<1 OR T>TM THEN E$="TAG":GOTO 1200 1010 P=1 1020 P1=INT(J/4):IF J/4=P1 THEN P=0 1030 P2=INT(J/100):IF J/100=P2 THEN P=1 1040 P3=INT(J/400):IF J/400=P3 THEN P=0 1050 IF J=1600 THEN P=1 1060 TG=365*J+P1-P2+P3+P 1070 IF J<1600 THEN TG=TG+1 1080 IF M=2 THEN TM=TM-P 1090 IF T>TM THEN E$="Schalttag":GOTO 1200 1100 RESTORE 1260 1110 FOR I=1 TO M 1120 READ N:TG=TG+N:NEXT 1130 TG=TG-N+T+4 1140 IF M>2 THEN TG=TG-P 1150 W=INT((TG/7-INT(TG/7))*7+1.1) 1160 RESTORE 1170 FOR I=1 TO W:READ W$:NEXT 1180 F=0:RETURN 1190 REM 1200 REM Fehlerausgabe 1210 REM 1220 PRINT:PRINT:PRINT "Fehler im "E$:PRINT:PRINT T "."M "."J 1230 PRINT:PRINT AT(30,25);">ENTER<":INPUT "";T$:F=1:RETURN 1240 DATA "Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag" 1250 DATA "Januar","Februar","Maerz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember" 1260 DATA 31,29,31,30,31,30,31,31,30,31,30,31 1270 REM 1280 REM Abtrennen einer Stelle 1290 LD=LEN(D$) 1300 Z$=RIGHT$(D$,LD-S) 1310 Z=INT(VAL(Z$)) 1320 S=S+INSTR(".",Z$) 1330 RETURN 1340 REM Ostern 1350 CLS:PRINT 1360 PRINT STRING$(32,""):PRINT 1370 PRINT " Berechnung des Osterfestes":PRINT:PRINT STRING$(32,"") 1380 Y=1 1390 GOSUB 2440 1400 PRINT "der Ostersonntag faellt.":PRINT 1410 GOSUB 2460 1420 DIM D(7),M(7),K(7) 1430 RESTORE 1660 1440 FOR I=1 TO 7 1450 READ D(I),M(I),K(I) 1460 NEXT I 1470 INPUT "gesuchtes Jahr :";J 1480 PRINT STRING$(16,"-"):PRINT 1490 IF J>2399 THEN 1510 1500 IF J>=1700 THEN 1540 1510 PRINT "In diesem Jahr laesst sich keine":PRINT 1520 PRINT "Aussage machen . 1530 GOTO 1730 1540 I=INT(J/100)-16:Q=INT(J/4):A=J-INT(J/19)*19 1550 B=M(I)-11*A:B=B-INT(B/30)*30 1560 IF B=28 OR B=29 THEN B=B-K(I) 1570 C=J+Q+B-D(I):C=C-INT(C/7)*7:T=28+B-C 1580 PRINT:PRINT 1590 PRINT "In diesem Jahr ist der ":PRINT 1600 IF Y<>1 THEN RETURN 1610 PRINT "Ostersonntag am :"; 1620 IF T<=31 THEN GOSUB 1640 ELSE GOSUB 1650 1630 GOTO 1730 1640 PRINT T;". Maerz":M=3: RETURN 1650 TP=T-31:PRINT TP;". April":M=4: RETURN 1660 DATA 11,203,0 1670 DATA 12,203,0 1680 DATA 13,204,1 1690 DATA 13,204,1 1700 DATA 14,204,1 1710 DATA 15,205,1 1720 DATA 16,206,0 1730 PRINT:PRINT:PRINT "Neue Berechnung bzw. Kalender(3)? (0/1/3)":PRINT 1740 U$=INKEY$:IF U$=""THEN 1740 1750 IF U$="1"THEN 1760 ELSE 1840 1760 CLS 1770 IF Y=1 THEN 1470 1780 IF Y=2 THEN GOSUB 1470 1790 IF Y=2 THEN 1920 1800 IF Y=3 THEN GOSUB 1470 1810 IF Y=3 THEN 2160 1820 IF Y=4 THEN GOSUB 1470 1830 IF Y=4 THEN 2380 1840 IF U$="3" THEN 2490 ELSE 10 1850 CLS:PRINT:PRINT STRING$(32,""):PRINT 1860 PRINT "Berechnung des Pfingstfestes":PRINT:PRINT STRING$(32,""):PRINT 1870 Y=2 1880 GOSUB 2440 1890 PRINT "der Pfingstsonntag faellt.":PRINT 1900 GOSUB 2460 1910 GOSUB 1430 1920 IF T<=31 THEN 1930 ELSE 1950 1930 M=3 1940 GOTO 1960 1950 M=4:T=T-31 1960 TP=T+49:IF TP>30 AND M=4 THEN 2000 1970 IF M=3 THEN 1980 ELSE 2000 1980 TP=TP-31:M=4:IF TP>30 THEN 2000 ELSE 2040 1990 GOTO 2010 2000 TP=TP-30:M=5 2010 IF TP>31 AND M=5 THEN 2030 2020 GOTO 2050 2030 TP=TP-31:M=6:GOTO 2050 2040 M$=". April" 2050 PRINT "Pfingstsonntag am :"; 2060 IF M=5 THEN M$=". Mai" 2070 IF M=6 THEN M$=". Juni" 2080 PRINT TP;M$ 2090 GOTO 1730 2100 CLS:PRINT:PRINT STRING$(32,""):PRINT 2110 PRINT "Berechnung des Herrentages":PRINT:PRINT STRING$(32,""):PRINT 2120 Y=3:GOSUB 2440 2130 PRINT "der Herrentag faellt.":PRINT 2140 GOSUB 2460 2150 GOSUB 1430 2160 IF T<=31 THEN 2170 ELSE 2190 2170 M=3 2180 GOTO 2200 2190 M=4:T=T-31 2200 TP=T+39:IF TP>30 AND M=4 THEN 2230 2210 IF M=3 THEN 2220 ELSE 2290 2220 TP=TP-31:M=4:IF TP>30 THEN 2230 2230 TP=TP-30:M=5 2240 IF TP>31 AND M=5 THEN 2260 2250 GOTO 2270 2260 TP=TP-31:M=6:M$=". Juni" 2270 PRINT "Herrentag am :"; 2280 IF M=5 THEN M$=". Mai" 2290 IF M=4 THEN M$=". April" 2300 PRINT TP;M$ 2310 GOTO 1730 2320 CLS:PRINT:PRINT STRING$(32,""):PRINT 2330 PRINT "Berechnung des Totensonntages":PRINT:PRINT STRING$(32,""):PRINT 2340 Y=4 2350 GOSUB 2440 2360 PRINT "der Totensonntag faellt.":PRINT 2370 GOSUB 2460:GOSUB 1430 2380 M=12:T=24:GOSUB 940 2390 TP=26-W:IF W=7 THEN TP=26 2400 PRINT "Totensonntag am :"; 2410 M$=". November":M=11 2420 PRINT TP;M$ 2430 GOTO 1730 2440 PRINT:PRINT "Es wird berechnet,auf welchen":PRINT 2450 PRINT "Tag in dem eingegebenen Jahr":PRINT:RETURN 2460 WINDOW 16,30,0,31:RETURN 2470 ON X GOTO 230,1340,1850,2100,2320,2480 2480 CALL*F6C5:END 2490 T=TP:GOSUB 940:WINDOW:CLS:GOTO 530 2500 PRINT AT(30,25);">ENTER<":PRINT:INPUT " ";I :GOTO 10