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