allegro-Kalender 
Kalenderblätter für die Jahre 1601 bis 2399

Ab Mai 2005 (V25.5) gibt es die Kalenderfunktion. Sie produziert einen Monatskalender, der konventionell aussieht,  aber einige zusätzliche Funktionen bietet. Es gibt nicht nur die offensichtlichen Flips, die man an der blauen Farbe und Unterstreichung erkennt, sondern jedes einzelne Datum kann man anklicken. Dann wird der FLEX  term.flx  gestartet. Diesem wird die Nummer des Tages als interne Variable mitgegeben, und in der Variablen #uU1 steht Jahr und Monat. In dem unten zu sehenden Beispiel hat man also  #uU1 200506. Der Systemverwalter kann sich damit einen beliebigen FLEX namens term.flx für eigene Zwecke schreiben. Der mitgelieferte term.flx ist für die DEMO-Bank geeignet, er startet die Eingabe eines Termins für die Terminverwaltung `MemoFLEX` (V23). Eine Anwendung der Kalenderfunktion ist schon eingebaut in den neuen FLEX `nel.flx` , der einem die bequeme Bildung einer Ergebnismenge für die Neuerwerbungsliste ermöglicht. Dabei wird ein spezieller term.flx gebildet. 
Der Kalender des laufenden Monats wird abgerufen mit dem Befehl  `X kalender`. Dieser ist auch im Füllhorn zu finden (Mitte rechts). Gezielt kann man auch einen Kalender für einen bestimmten Monat abrufen. Will man z.B. den Kalender des Monats Oktober im Jahre 2045 sehen, gibt man ein:   `X kalender 204510`. Das funktioniert für den Zeitraum 1601 bis 2399. 
Für die Errechnung der beweglichen Feiertage wird übrigens der Gaußsche Oster-Algorithmus angewendet. Dieser wird auch separat in der Datei  `gauss.flx`  mitgeliefert. Darin ist kommentiert, wie man den Algorithmus als Unterprogramm in eigene FLEXe einbauen kann. 

Beispiel
Wenn man am 25. Mai 2005 diesen Befehl eingibt:  X kalender, erhält man das folgende Bild: 
(Die Flips <<< bzw. >>> schalten einen Monat zurück bzw. weiter):

 JAN  FEB  MRZ  APR  MAI  JUN  JUL  AUG  SEP  OKT  NOV  DEZ   
   ---Jahr       <<<<<       >>>>>    Jahr+++ 
 Feiertage des Jahres      Anderes Jahr      Druckversion 

Mai  2005

Woche	Mo	Di	Mi	Do	Fr	Sa	So
17 							  1a 
18 	  2b 	  3c 	  4d 	  5e 	  6f 	  7g 	  8h 
19 	  9i 	 10j 	 11k 	 12l 	 13m 	 14n 	 15o 
20 	 16p 	 17q 	 18r 	 19s 	 20t 	 21u 	 22v 
21 	 23w 	 24x 	 25y 	 26z 	 27A 	 28B 	 29C 
22 	 30D 	 31E 

1. Tag der Arbeit * 5. Himmelfahrt * 15. Pfingstsonntag * 16. Pfingstmontag * 
26. Fronleichnam (kath. Bundesl.) 

Heute ist der 145. Tag des Jahres. 
In 214 Tagen ist der 25.12. 

Termin notieren: auf die Tageszahl klicken. 
Alle Angaben ohne Gewähr.
© allegro-C 2005

Ein Klick auf  Feiertage des Jahres  bringt dann die folgende Übersicht hervor: 
(Die "Druckversion" enthält, hier wie oben, dasselbe, aber ohne die Flips. Die Druckversion eignet sich besser für Copy+Paste, um das Kalenderblatt oder die Feiertagsliste in eigene Texte zu übernehmen.) 
Wenn man hier auf "Aschermittwoch" usw. klickt, erhält man den Kalender des betreffenden Monats, in diesem Fall also den vom Februar 2005. 

Feiertage im Jahre  
  2004           2005         2006  
 JAN  FEB  MRZ  APR  MAI  JUN  JUL  AUG  SEP  OKT  NOV  DEZ   

 Kalender dieses Monats     Anderes Jahr     Druckversion  
 
Das Jahr 2005 ist ein  	Normaljahr

Neujahr ist an einem 	Sa
  
Bewegliche Feiertage 
Im Jahre 2005 ist 
	 Aschermittwoch   	9. Feb
	 Ostersonntag   	27. Mrz    
	 Himmelfahrt  	5. Mai 
	 Pfingsten  	15. Mai  
	 Fronleichnam  	26. Mai  
	 Buß- und Bettag  	16. Nov  

Die  Adventssonntage  sind  	27. Nov / 4. Dez / 11. Dez / 18. Dez 

Wochentage der unbeweglichen Feiertage
 Heiligabend und Silvester 	Sa 

Der Erste April 	Fr 
Der Erste Mai 	So 

Die folgenden Feiertage sind alle an einem  Mo
 Augsburger  Friedensfest  (8.8.) 
 Mariä Himmelfahrt (15.8.) 
 Tag der Deutschen Einheit  (3.10.) 
 Reformation (31.10.) 

Sonderservice:	 `Osterdatum`  ausrechnen mit dem Gauß-Algorithmus (gauss.flx)
			  Alle Ostertermine  `1700-2199` . 
			  Feststellung, ob ein Jahr  `Schaltjahr`  ist 
			 `Wochentag`  eines bestimmten Datums 1601-2399 

Hinweise:  
Einen kostenlosen, vollständigen Service zur Berechnung aller katholisch-kirchlichen Fest-, Feier- und Gedenktage zu jedem gewählten Jahr bieten die  `Salesianer` . 
Eine Tabelle aller Feiertage von  `1700 bis 2199 `  findet man am Lehrstuhl für Liturgiewissenschaft in Bamberg. Dort ist auch die Formel zur Berechnung des Osterdatums zu finden. 
Umfangreiche Darstellung aller Kalenderfragen:  `http://www.ortelius.de/kalender/`  Dort auch ein "Oster-Rechner" mit Liste aller kirchlichen Feiertage eines gewählten Jahres ab 1583 sowie ein allgemeiner Kalender-Rechner. 
Alle Angaben ohne Gewähr. 

Experten fragen: Wie funktioniert das? 
Der FLEX kalender.flx produziert eine RTF-Datei namens kblatt.rtf auf dem TEMP-Verzeichnis (wegen der Schreibberechtigung). Es wird keine weitere Hilfsdatei dafür benötigt, d.h. der FLEX stellt die gesamte Datei selber her. 
Zur Berechnung der beweglichen Feiertage ist der Gauß-Algorithmus für das Osterdatum eingebaut. 

Der wichtigste FLEX-Befehl ist  `Day`. Dieser rechnet ein gegebenes Datum der Form JJJJMMTT um in die Form JJJJMMTT/00:00:00 WT, TT. MN JJJJ, wobei WT der Name des Wochentags ist (Mo, Di, ...) und MN der Name des Monats (Jan, Feb, ...). Das funktioniert für die Jahre 1901-2099 - Das Problem mit dem Jahr 2038 wird intern umgangen: 

Problem: Ausrechnung eines Wochentags funktioniert im Windows-Programmiersystem und auch unter UNIX nur für Jahre zwischen 1970 und 2038. 

Lösung: Jahreszahl vor der Berechnung auf ein anderes Jahr ändern, das mit demselben Wochentag beginnt, das aber gleichfalls ein Schaltjahr bzw. kein Schaltjahr ist. Wie findet man leicht ein solches Jahr? 
Zuverlässig ist das dann der Fall, wenn man von der Jahreszahl die Zahl 28 subtrahiert oder zu ihr addiert, ggfls. ein Vielfaches von 28, so daß die Jahreszahl dann im Bereich 1970-2038 liegt. Dann den Wochentag ausrechnen und auf die Jahreszahl den vorher subtrahierten Betrag wieder addieren bzw. umgekehrt. Dies funktioniert allerdings nur im Zeitraum 1901 bis 2099, weil die Jahre 1900 und 2100 keine Schaltjahre sind (ergibt sich aus der Gregorianischen Kalenderreform von 1582). Damit haben wir 200 Jahre statt nur 68, in denen wir die Wochentage berechnen können. 
Man sieht leicht ein, wie sich die Zahl 28 ergibt: Nimmt man ein beliebiges Jahr im genannten Zeitraum, so ist nach 4 Jahren der 1. Januar um 5 Wochentage vorgerückt, weil mit Sicherheit genau ein 29. Februar dazwischen war. 
Nach 7mal 4 Jahren, also 28 Jahren (aber nur im genannten Zeitraum!), ist der 1. Januar um 35 Wochentage vorgerückt, also um genau 5 Wochen, d.h. der 1. Januar hat zuverlässig wieder denselben Wochentag und das Jahr ist wieder ein Schaltjahr bzw. kein Schaltjahr. Man hat daher zwischen 1900 und 2100 alle 28 Jahre genau dieselbe Anordnung der Wochentage. 

Ab V29.2 gibt es ein neues FLEX-Unterprogramm :Day (eingepackt in day.inc), mit dem man die Jahre 1601 bis 2399 im Griff hat. Es wurde statt der Funktion Day in die KalenderFLEXe eingebaut. 

?MemoFLEX=h memo 
?Day=h xdate 
?Osterdatum=X gauss 
?1700-2199=X ostertag 
?Schaltjahr=X leapyear 
?Salesianer=x janas http://www.salesianer.de/util/liturkal.html 
?Wochentag=X weekday 
?1700 bis 2199 =x janas http://www.uni-bamberg.de/ktheo/liturgie/@fkal.html 
?http://www.ortelius.de/kalender/=x jan http://www.ortelius.de/kalender/ 
?gauss.flx=X gauss 
?X kalender 204510=X kalender 204510 
?X kalender=X kalender 
?nel.flx=h nel.flx