{ 1} PROGRAM Kalender;

{ 2} {$N+E+}

{ 3} { Programm zur Berechnung von Julianischem Tag, Amsat- }

{ 4} { Tag und den Umkehrfunktionen wie Amsat-Tag in Datum und }

{ 5} { Jul-Tag in Datum, sowie lfd Tag eines Jahres und Wochen- }

{ 6} { tag. Von M. Maday, DC9ZP,Potsdamer Str. 5, 56235 Ransbach}

{ 7} USES CRT,Kalunit; { Kalenderunit einbinden}

 

{ 8} { Eingabe des Datums}

{ 9} PROCEDURE Eingabe_dat(VAR tag,monat,jahr:INTEGER);

{ 10} BEGIN

{ 11} wr(8,7, ' Bitte Datum eingeben 1. Tag ');READLN(tag);

{ 12} wr(8,9, ' 2. Monat ');READLN(monat);

{ 13} wr(8,11,' 3. Jahr(JJJJ) ');READLN(Jahr);

{ 14} CLRSCR;

{ 15} END;

 

{ 16} PROCEDURE Return(y:INTEGER);

{ 17} BEGIN wr(22,y,' Weiter mit Return');READLN;END;

 

{ 18} { Julianischen Tag berechnen }

{ 19} PROCEDURE Rechne_jultag;

{ 20} VAR t,m,j:INTEGER;

{ 21} BEGIN

{ 22} CLRSCR;

{ 23} eingabe_dat(t,m,j);

{ 24} Julday := jultage(t,m,j);{ Jul-Routine in Kalunit aufrufen}

{ 25} Amsatday := julday-2443509.5; { Amsat-Tag aus Jul-Dat}

{ 26} weekday := wochentag(julday);

{ 27} wr(10,2, ' Ausgabe des Berechnungsergebnisses ');

{ 28} wr(10,4, ' Eingegebenes Datum...............: '+datum(t,m,j));

{ 29} wr(10,6, ' Julianischer Tag (JD)............: '+tv(julday,7,1));

{ 30} wr(10,8, ' Korrespondierender AMSAT-Tag.....: '+tv(amsatday,5,1));

{ 31} wr(10,10,' Wochentag........................: '+weekday);

{ 32} return(13);

{ 33} END;

{ 34} { Julianischen Tag in Datum umwandeln}

{ 35} PROCEDURE Jultag_datum;

{ 36} BEGIN

{ 37} CLRSCR;

{ 38} wr(10,4, ' Bitte Julianischen Tag eingeben ');

{ 39} READLN(julday);

{ 40} jultermin := jul_TO_dat(julday); { Routine in Kalunit aufrufen}

{ 41} weekday := wochentag(julday); { Wochentag ermitteln}

{ 42} CLRSCR;

{ 43} wr(10,2,' Julianischer Tag in Datum ');

{ 44} wr(10,4,' Eingebener Julianischer Tag..........: '+tv(julday,7,1));

{ 45} wr(10,6,' Errechnetes Datum....................: '+jultermin);

{ 46} wr(10,8,' Wochentag............................: '+weekday);

{ 47} return(11);

{ 48} END;

{ 49} { AMSAT-Tag in normales Kalenderdatum umwandeln}

{ 50} PROCEDURE Amsat_datum;

{ 51} BEGIN

{ 52} CLRSCR;

{ 53} wr(10,4, ' Bitte AMSAT-Tag eingeben ');

{ 54} READLN(amsatday);

{ 55} amsat_termin := amsattag_TO_dat(amsatday);

{ 56} julday := amsatday+2443509.5;

{ 57} weekday := wochentag(julday);

{ 58} CLRSCR;

{ 59} wr(10,2,' AMSAT-Tag in Datum umrechnen');

{ 60} wr(10,4,' Eingebener AMSAT-Tag.................: +tv(amsatday,5,1));

{ 61} wr(10,6,' Korrespondierender Julianischer Tag..: '+tv(julday,7,1));

{ 62} wr(10,8,' Errechnetes Datum....................: '+amsat_termin);

{ 63} wr(10,10,' Wochentag............................: '+weekday);

{ 64} return(13);

{ 65} END;

{ 66} { Den laufenden Jahrestag berechnen }

{ 67} PROCEDURE Rechne_jahrestag;

{ 68} VAR t,m,j: INTEGER;

{ 69} BEGIN

{ 70} clrscr;eingabe_dat(t,m,j);

{ 71} lfdtag := Jahrestag(t,m,j); { Routine in KALUNIT aufrufen}

{ 72} Julday := jultage(t,m,j); { Jul-Datum berechnen}

{ 73} weekday := wochentag(julday); { Wochentag berechnen}

{ 74} wr(10,2, ' Ausgabe des Berechnungsergebnisses ');

{ 75} wr(10,4, ' Eingegebenes Datum...................: '+datum(t,m,j));

{ 76} wr(10,6, ' Ermittelter laufender Jahrestag......: +tv(lfdtag,3,0));

{ 77} wr(10,8, ' Wochentag............................: '+weekday);

{ 78} return(11);

{ 79} END;

{ 80} { Datum aus dem laufenden Jahrestag ermitteln}

{ 81} PROCEDURE Jahrestag_datum;

{ 82} var k:integer;

{ 83} BEGIN

{ 84} CLRSCR;

{ 85} wr(10,4, ' Bitte laufenden Jahrestag eingeben (1..366) ');

{ 86} READLN(lfdtag);

 

{ 87} wr(10,6, ' Bitte das Jahr (JJJJ) eingeben.............: ');

{ 88} READLN(jahr);

{ 89} k := schaltjahr(jahr);

{ 90} if k = 2 then if lfdtag > 365 then lfdtag:=365;

{ 91} jahrtermin := Lfdtag_TO_date(lfdtag,jahr);{KALUNIT aufrufen}

{ 92} CLRSCR;

{ 93} wr(10,2,' Laufender Tag in Datum umrechnen');

{ 94} wr(10,4,' Eingegebener Laufender Tag...........: '+tv(lfdtag,3,0));

{ 95} wr(10,6,' Errechnetes Datum....................: '+jahrtermin);

{ 96} return(9);

{ 97} END;

{ 98} { Tagesdifferenz zwischen zwei Daten ermitteln}

{ 99} PROCEDURE Differenz_tage;

{100} VAR t,m,j,t1,m1,j1 : INTEGER;

{101} jul1,jul2,diff : REAL;

{102} BEGIN

{103} CLRSCR;

{104} wr(5,5,' Bitte erstes Datum eingeben');

{105} eingabe_dat(t,m,j);

{106} CLRSCR;

{107} wr(5,5,' Bitte zweites Datum eingeben ');

{108} eingabe_dat(t1,m1,j1);

{109} jul1:=jultage(t,m,j); { Zweimal Jul-Tag berechnen }

{110} jul2:=jultage(t1,m1,j1);

{111} diff:=abs(jul2-jul1); { und die Differenz bilden }

{112} CLRSCR;

{113} wr(10,2,'Tagesdifferenzen zwischen zwei Daten berechnen');

{114} wr(10,4,'Erstes Datum.........................: '+datum(t,m,j));

{115} wr(10,6,'Zweites Datum........................: '+datum(t1,m1,j1));

{116} wr(10,8,'Tagesdifferenz.......................: '+tv(diff,0,1));

{117} return(11);

{118} END;

{119} { Kirchliche Ereignisse im laufenden Jahr berechnen }

{120} PROCEDURE Rechne_feiertage;

{121} VAR jahr:INTEGER;

{122} BEGIN

{123} CLRSCR;

{124} wr(10,4,' Bitte gewünschtes Jahr (JJJJ) eingeben ');

{125} READLN(jahr);

{126} osterdatum(jahr); { Routinen in der KALUNIT aufrufen }

{127} jahrestermine(jahr);

{128} CLRSCR;

{129} wr(10,2,' Kirchliche Feiertage im gewählten Jahr ');

{130} wr(10,4,'Datum des Rosenmontags........: '+ rosenmontag);

{131} wr(10,5,'Datum des Ostersonntags.......: '+ ostertag);

{132} wr(10,6,'Datum des Himmelfahrtstages...: '+ himmelfahrt);

{133} wr(10,7,'Datum des Pfingstsonntags.....: '+ pfingsten);

{134} wr(10,8,'Datum des Fronleichnamstages..: '+ fronleichnam);

{135} wr(10,9,'Datum des 1.Advent............: '+ advent1);

{136} wr(10,10,'Datum des 4.Advent............: '+ advent4);

{137} wr(10,11,'Datum des Totensonntags.......: '+ totensonntag);

{138} wr(10,12,'Datum des Buß & Bettags.......: '+ busstag);

{139} return(15);

{140} END;

{141} { Das Hauptmenü des Programms }

{142} PROCEDURE Kalendermenue;

{143} VAR wahl:CHAR;

{144} BEGIN

{145} REPEAT

{146} CLRSCR;

{147} wr(10,2,' Kalenderberechnungen von DC9ZP ');

{148} wr(10,4,'Datum in Julianischen Tag und AMSAT-Tag umrechnen..: A');

{149} wr(10,5,'Julianischen Tag in Datum umrechnen................: B');

{150} wr(10,6,'AMSAT-Tag in Datum umrechnen.......................: C');

{151} wr(10,7,'Den laufenden Tag des Jahres berechnen.............: D');

{152} wr(10,8,'Datum aus laufendem Tag des Jahres.................: E');

{153} wr(10,9,'Tagesdifferenzen zwischen zwei Daten...............: F');

{154} wr(10,10,'Feiertage im Jahr berechnen........................: G');

{155} wr(10,11,'Programmende.......................................: Q');

{156} wahl:=READKEY;

 

{157} case UPCASE(wahl) of

 

{158} 'A': rechne_jultag; { Aufruf der entsprechenden Routinen}

{159} 'B': jultag_datum;

{160} 'C': amsat_datum;

{161} 'D': rechne_jahrestag;

{162} 'E': jahrestag_datum;

{163} 'F': differenz_tage;

{164} 'G': rechne_feiertage;

{165} 'Q': EXIT;

{166} END;

 

{167} UNTIL wahl in ['A'..'G','Q'];{ Ende wenn Buchstabe = Q (uit)}

{168} END;

 

{169} BEGIN { Hier beginnt das Programm}

{170} Textattr := 31;

{171} kalendermenue; { Nur noch Menü aufrufen }

{172} END.

    Source: geocities.com/shiro_jdn