APPLICATIONSBUREAUTIQUE ★ EWIGER GREGORIANISCHER KALENDER ★

Erwiger Gregorianischer Kalender (CPC Amstrad International)Applications Bureautique
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Der Arbeitsbereich dieses Programms zur Wochentagsbestimmung bzw. Kalenderausgabe umfaßt den Zeitraum von 1582 bis 4915; eine danach fällige Kalenderanpassung wurde wahrscheinlich noch nicht festgelegt. Die Berechnung des Osterfestes wird nach der Formel von Joh. Hartmann durchgeführt, die dieser für die Zeit von 1582 bis 2399 aufstellte. Dieser Einschränkung habe ich bei der Steuerung des Kalenderdrucks Rechnung getragen.

Programmablauf:

In Zeile 1000 erfolgt ein Sprung zur Initialisierung (Zeilen 3030 - 3280); Umlaute werden definiert, ein kleines Menue wird ausgegeben und anschließend werden die Standardwerte eingelesen. Der Bildschirm wird in Fenster zur Datumseingabe und Kalenderausgabe unterteilt. Die Abfrage in Zeile 3280 verzweigt bei richtiger Beantwortung zur gewünschten Abrufart, andernfalls bricht das Programm ab. Immerwährender Kalender (1090 - 1140): Zunächst wird das eingegebene Datum auf seine Richtigkeit hin überprüft (1410 - 1470). Tritt ein Eingabefehler auf. so wird die entsprechende Meldung ausgegeben (Zeilen 1490 -1540), und anschließend eine neue Eingabe verlangt (Zeile 1120). Bei richtiger Eingabe wird zur Startwert-Ermittlung gesprungen (1580 - 1650), wo zuerst eine Einordnung in ein 28er-Schema erfolgt. Dabei wird der ermittelte Divisionsrest solange erhöht, bis keine der Bedingungen mehr zutrifft. Das Ergebnis wird dann durch nochmalige Restbestimmung vereinheitlicht und zum Grundwert der Zeilennummer addiert. Zeile 1620 setzt im RESTORE-Unterprogramm das Token für die Zeilennummer ein; dies ist nötig, da der CPC nach Auffinden der Zeilennummer die zugehörige Zeilenadresse samt Token einsetzt, was ggf. zu Komplikationen führen kann. Zeile 1630 POKEd die Werte der berechneten Zeilennummer in das Unterprogramm, das anschließend aufgerufen wird und das Einlesen der Startwerte ermöglicht. Zurück in Zeile 1140 wird nun noch das Tagesdatum zum Startwert addiert, der Divisionsrest (7) ermittelt und mit seiner Hilfe der richtige Wochentag im Formatstring f$(0) ausgegeben.

Danach springt das Programm zur Tastenabfrage (1320 -1370): Zeile 1350 vertauscht den Wert der Variablen , wenn ein Abrufwechsel gewünscht wird. Soll im gleichen Steuerprogramm weitergemacht werden, kann eine beliebige Taste außer J, E oder W gedrückt werden. Wird die Taste W gedrückt, so wird bei wahl=l das gleiche Datum noch einmal verwendet, während bei wahl=2 (Jahreskalender-Ausdruck) der Kalenderdruck wiederholt wird. Jahreskalender-Ausdruck (Zeilen 1180 - 1300): Zunächst werden alle nötigen Daten erfragt. Bei einer falschen Eingabe bewirken die Steuerzeichen (ll)+(7), daß nach ihrer Ausführung die Eingabe auf dergleichen Zeile wie vorher erfolgt, die falsche Eingabe aber noch sichtbar ist. Entsprechend dem gewünschten Kalenderformat werden dann die Variablen für die Schrittweite belegt; bei Ausgabe auf Drucker wird dieser auf die entsprechende Druckart eingestellt (1240). Der Cursor bleibt hinter "Bitte warten" stehen, wo vor Ermittlung eines Monats ein Punkt ausgegeben wird (was die Wartezeit optisch verkürzen soll). Das Programm ermittelt nun die Startwerte (s.o.). Die Ermittlung der Kalenderdaten (Zeilen 1690 - 2020) läuft folgendermaßen ab: Die Jahreszahl wird um 1 erniedrigt, um das Vorjahr zu überprüfen (ein Schalttag verschiebt das Monatsraster um 1 nach vorn). Danach wird der Wert des Wochenindex nach Anteil der beiden Jahre an der Woche »zwischen den Jahren« bestimmt. Ist dies geschehen, so beginnt das Programm mit dem Auffüllen der Monatsraster (1770 - 2020). Der Startwert des jeweiligen Monats bestimmt nun die Anzahl der Leerfelder, dann werden die Tageszahlen in das Raster eingetragen (die hier verwendeten DECS-Befehle müssen für CPC 664 und 6128 korrigiert werden! Siehe auch Hinweis in Heft 11/85. Seite 76). Die Zeilen 1850 bzw. 1970 (Verkettung der Rasterspalten) sehen zwar etwas aufwendig aus, sind aber hinsichtlich der Schnelligkeit des String-handlings durch keinen BASIC-Befehl zu überbieten. Nach der Rasterfüllung wird der Wochenindex hochgezählt und übertragen, bis im betreffenden Monat kein Sonntag bzw. Montag mehr vorkommt, und der nächste Monat bearbeitet werden kann.

Zeile 1910 bzw. 2010 verhindert, daß die Wochen im neuen Jahr mit 54 und darüber gezählt werden. (Anmerkung: Die Befehle zur Einbindung der Wochenzahlen habe ich im Horizontalformat unwirksam gemacht, da diese eine andere Ausdruckformatierung erfordern.)

Nach Ermittlung der Kalenderraster, wird mit Hilfe der Hart-mannschen Formel das Datum des Osterfestes bestimmt (Zeilen 2070-2190).

Vom Osterfest ausgehend, werden nun die übrigen Feiertage errechnet. Dabei genügt eine Fallunterscheidung, die prüft, ob der Ostermonat der März oder der April ist. Alle Feiertage werden nach den bekannten Regeln so mit dem Osterfest kombiniert, daß man nur noch Abzüge bzw. Hochrechnungen treffen muß, wenn der Feiertag außerhalb seines Standard-Monats liegt (die im Programm verwendeten Formeln sind das Ergebnis von algebraischen Vereinfachungen). Die Feiertage des zweiten Halbjahres sind auf den 1. Advent ausgerichtet, auch hier kann man ohne große Fallunterscheidungen auskommen.

Anmerkung: Die Zeilen 2070 - 2190 sowie 2230 - 2340 werden bei Jahreszahlen, diegrößer als 2399 sind, nicht übersprungen (obwohl die Formel nurbis 2399 aufgestellt wurde); Zeile 2430 verhindert aber den Ausdruck der, in einem solchen Falle, falschen Feiertagsdaten.

Steuerung des Kalenderdrucks (2380 - 2450): Diese Routine spricht jedes Ausgabegerät speziell an; für g=0 wird eine Reihe von Anweisungen ausgeführt: Verbreiterung des Ausgabebereichs, Warten auf Tastendruck (in Zeile 2420") und Re-Positionierung des Cursors. Im Falle von g=9 wird eine ASCII-Datei eröffnet: ansonsten benutzt die Routine für alle Ausgabegeräte die gleichen PRINT-Unterprogramme (2490 - 2530 / 2550 - 2590, 2630 - 2680). In der zuletzt genannten Routine habe ich die USING-Formate in Variablen gespeichert; dies bietet die Möglichkeit, die Ausgabe (unter Berücksichtigung der Reihenfolge der Parameter) jederzeit neu formatieren zu können, ohne dabei am Programm selbst herumbasteln zu müssen.

Die DATA-Zeilen 2720 - 2990 dürfen keinesfalls verändert werden; sie stellen die 28er-Tabelle dar, die von links nach rechts die Startwerte der Kalendermonate und von oben nach unten 28 Standardjahre beinhaltet. Eine Abweichung von diesen Werten würde zwangsläufig zu falschen Ergebnissen führen. Die Summe aus allen 336 Werten muß 1008 ergeben, andernfalls ist eine der Zeilen falsch!

CPCAI 8601

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1985
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1986
★ AUTHOR: Matthias Iwachiw
★ INFO: EDIT 3090
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Erwiger  Gregorianischer  Kalender    (CPC  Amstrad  International)DATE: 2013-08-12
DL: 233
TYPE: ZIP
SiZE: 8Ko
NOTE: 40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Terminkalender (Schneider Aktiv)
» Applications » Computer Calender (Amstrad Action)
» Applications » Immerwaehrender Kalender (Schneider Aktiv)
» Applications » Termin-Kalender (Happy Computer)
» Applications » Kalenderdrucker (CPC Amstrad International)
» Applications » Kalender Von 1600 Bis 2299 (CPC Magazin)
Je participe au site:
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 350 millisecondes et consultée 1735 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.