                          Birthday 7.5
                  Das Geburtstags- und berweisungs-
                       Erinnerungsprogramm
                       von Oliver Buchmann

                    Birthday-Edition 10.3.98

Einleitung
----------

Dieses Programm, das an die nchsten Geburtstage der lieben Bekannt- oder
Verwandtschaft erinnern soll, ist klein, schnell, komfortabel (naja) und
sehr sauber in einem Fenster realisiert. 

Es erinnert Sie ferner an wiederkehrende berweisungen, wenn Sie ein 
berweisungsprogramm verwenden, das eine Schnittstelle zu Birthday 
enthlt (z.B. PayDay von Ingo Plckhahn).

PayDay ist ein Programm um Offline-berweisungen fr ST Online zu 
generieren. Auf Wunsch erzeugt PayDay eine Datei, die an 
immerkehrende berweisungen erinnert. Diese werden dann von Birthday 
mitten in die Geburtstage eingestreut, um Sie an die berweisung zu 
erinnern. 


Installation 
------------

BIRTHDAY.PRG kopieren Sie am besten in den APPS-Ordner von MagiC 
(GEMSYS\MAGIC\START). Unter Single-TOS mssen Sie das Programm als 
AUTO-Start-Anwendung anmelden. 
Es darf nicht in den AUTO-Ordner kopiert oder als Accessory installiert
werden. Im gleichen Verzeichnis mu sich die Datei BIRTHDAY.DAT befinden, 
in der Sie die Geburtstage eintragen. Jede Person mit Geburtsdatum mu 
in einer Zeile durch CR/LF getrennt eingegeben werden. Das Datum mu 
das Format TT.MM.JJJJ haben, danach mu ein Komma, danach am besten ein 
Leerzeichen und dann der Name folgen. Das Alter, das die Person erreicht, 
wird spter vom Program errechnet (sehr komplizierter Algorithmus :-)) 
und am rechten Fensterrand dargestellt. Hier ein Beispiel fr eine 
solche Datei:

01.04.1965, Dr. med. Wurst
10.03.1967, Peter Schlnzke

Die nchsten Geburtstage werden beim Booten dann in einem Fenster
sortiert nach dem Auftreten dargestellt. Wenn Sie in Farbe arbeiten, 
wird der Geburtstag, der "heute" ist, rot dargestellt. Ansonsten wird
er fettgedruckt dargestellt. 


Birthday und Phoenix
--------------------

Natrlich bietet es sich an, die Geburtstagsdatei mit Phoenix zu 
erzeugen, wenn man dort schon seine Adressen samt 
Geburtsdaten verwaltet.
Hierzu sollten Sie folgende Abfrage namens "Geburtstag eingegeben" 
so definieren, da Sie im Abfragefenster im Feld Geburtstag "<> ''"
eingeben.

Danach definieren Sie einen Report namens "Geburtstag", der so aussehen 
sollte:

{$BREITE = 80}{$LNGE = 1}{$TABELLE = LEUTE}
{Geburtstag}, {Vorname} {Name}

Nun knnen Sie sich noch folgenden Batch namens "Geburtstagsexport" 
definieren:

REPORT query="Geburtstag eingegeben" name="Geburtstag" file="C:\GEMSYS\MAGIC\START\BIRTHDAY.DAT"

Das war's.


Konfigurieren von Birthday
--------------------------

Es gibt eine Konfigurationsdatei namens BIRTHDAY.CFG, die sich im 
selben Verzeichnis wie BIRTHDAY.PRG befinden mu. Ist keine Datei 
vorhanden, legt Birthday selbst eine an.
Die CFG- und die DAT-Dateien werden zuerst im aktuellen und danach im 
Start-Verzeichnis von MagiC gesucht.
Die Datei, die in diesem Archiv mitgeliefert wird, erklrt sich von 
selbst, hier aber der Vollstndigkeit halber der Inhalt der Datei:

; CFG-Datei zu Birthday. Kommentare beginnen mit Semikolon
ANZAHL:10 ; Anzahl der Zeilen
BREITE:45 ; Breite des Fensters. Mu mind. 40 sein.
;XPOS:100 ; X-Position des Fensters
;YPOS:100 ; Y-Position des Fensters
ALTER:2   ; Altersanzeige. Bei 1 wird das Alter angezeigt, bei 0 die verbleibenden Tage zum Geburtstag. Bei 2 beides. 
VERSCHWINDE:10 ; nach 10 Sekunden soll das Fenster verschwinden. Bei Null oder Fehlen dieser Zeile bleibt das Fenster stehen, bis es geschlossen wird.
MINIMUM:30 ; Nur Anzeigen, wenn der nchste Geburtstag nur noch 30 Tage entfernt ist.
KOPFZEILE:1 ; Bei 1 wird eine Kopfzeile im Fenster angezeigt.
INTERVALL:80 ; Nur die nchsten 80 Tage bercksichtigen.
VORWARNUNGSFARBE:3 ; Ist der Geburtstag am nchsten Tag, diesen Termin in dieser Farbe darstellen. 3=grn
VORWARNUNGSATTRIBUT:0 ; Geburtstag am nchsten Tag, diesen Termin mit diesem Schriftattribut darstellen. 1=hell.
HEUTEFARBE: 2 ; Ist der Geburtstag heute, dann diese Farbe verwenden. 2=rot
HEUTEATTRIBUT: 1 ; Ist der Geburtstag heute, dann dieses Schriftattribut verwenden. 1=dick
TERMINFARBE: 4 ; Ist der Termin heute, dann diese Farbe verwenden. 4=blau
TERMINATTRIBUT: 4 ; Ist der Termin heute, dann dieses Schriftattribut verwenden. 4=kursiv
KOPFZEILEFARBE: 4 ; Kopfzeile in dieser Farbe darstellen. 4=blau
KOPFZEILEATTRIBUT: 8 ; Kopfzeile mit diesem Schriftattribut darstellen. 8=unterstrichen
VERPASSTATTRIBUT: 0 ; Attribut, in der der verpate Geburtstag dargestellt wird. 
VERPASSTFARBE: 10 ;  Farbe, in der der verpate Geburtstag dargestellt wird. 
BREMSE:0 ; Ist dieser Wert 1, so kann man das Fenster vor Ablauf der Verschwindezeit nicht mit der Maus schlieen
HINTERGRUND:8 ; In Farbauflsungen Farbe des Fensterhintergrunds. 8=grau
JAHRHUNDERT:1 ; Bei 0 wird das Jahrhundert ausgeschrieben, bei 1 werden die ersten beiden Ziffern weggelassen, bei 2 die ganze Jahresangabe
WOCHENTAG:1 ; Bei 1 wird zustzlich das Wochentagskrzel ausgegeben.
KOMMA:1 ; Bei 0 wird ein vorhandenes Komma entfernt.
NUREINMAL:0 ; Bei 1 wird Birthday nur einmal pro Tag gestartet. Auer man hlt beim Start die Shift-Taste gedrckt
VERPASST:1 ; Ist dieser Wert 1, wird der zuletzt stattgefundene und damit evtl. verpate Geburtstag in der letzten Fensterzeile, getrennt durch eine Linie, dargestellt. 


Erklrung der einzelnen Parameter:
----------------------------------

ANZAHL legt die Anzahl der Zeilen fest, die das Fenster maximal gro 
werden darf.

BREITE legt die Fensterbreite fest.

Vor XPOS und YPOS ist ein Semikolon. Dadurch wird diese Zeile 
ignoriert und das Fenster auf dem Bildschirm zentriert angezeigt. 
Sonst kann man hier eben die Position einstellen, falls man es an 
andere Stelle erscheinen lassen mchte. Sie knnen aber auch in 
Birthday das Fenster an die gewnschte Postion schieben und beim 
Beenden wird diese Postion in der CFG-Datei gespeichert.

Ist ALTER 0, so werden die noch verbleibenden Tage bis zum Geburtstag 
angezeigt, ist ALTER 1, wird das Alter angezeigt, das erreicht wird. 
Ist ALTER 2, wird beides angezeigt. 

Bei VERSCHWINDE kann eine Zeit in Sekunden angegeben werden, nach der das
Fenster geschlossen und das Programm beendet werden soll. Ist hier 0 
angegeben, bleibt das Fenster, bis es von Hand geschlossen wird.

Man kann einstellen, da das Fenster nur gezeigt wird, wenn der nchste 
Geburtstag in soundsoviel Tagen ansteht.
Hierzu dient der Parameter MINIMUM.
Wenn der nchste Geburtstag noch mehr Tage entfernt ist, als hier angegeben, 
wird das Fenster nicht geffnet, sondern Birthday gleich wieder beendet.
Ist ein Geburtstag in diesem Zeitraum vorhanden, werden alle weiteren 
Termine ebenfalls gezeigt. 
Wenn man den Parameter auf 1 stellt, werden Geburtstage also nur 
gezeigt, wenn an diesem Tag auch einer ansteht. Wird eine 0 
angegeben, wird das Fenster immer gezeigt.


Es kann eine Kopfzeile ausgegeben werden, in der
Datum, Name, Alter und/oder Tage bis Geburtstag steht. Fehlt die Kopfzeile,
wird die Anzeige der Daten vertikal zentriert, was einen schnen Rand ergibt.

Bei INTERVALL kann man angeben, wieviel Tage im voraus Birthday Termine
bercksichtigen soll. Nur Termine in diesem Zeitraum werden angezeigt. Stehen 
keine Termine in diesem Zeitraum an, beendet sich Birthday sofort wieder. 

Bei VORWARNUNGSFARBE kann man eine Farbe angeben, die benutzt wird, 
wenn der Termin am nchsten Tag ist.
Das ist praktisch, wenn man jemandem per Mail im Mausnetz gratulieren will, 
denn dort betrgt die Maillaufzeit normalerweise einen Tag. 
Bei VORWARNUNGSATTRIBUT kann man ein Textattribut angeben, falls man 
das zustzlich mchte oder nur ber eine monochromen Bildschirm 
verfgt.

Die gleichen Dinge gelten fr HEUTEFARBE, HEUTEATTRIBUT, TERMINFARBE, 
TERMINATTRIBUT, KOPFZEILEFARBE, KOPFZEILEATTRIBUT, VERPASSTFARBE 
und VERPASSTATTRIBUT. 
HEUTEFARBE ist fr die Geburtstage gedacht, die am aktuellen Tag 
sind, TERMINFARBE fr alle berweisungstermine, KOPFZEILEFARBE fr 
die Farbe der Kopfzeile, sofern man eine verwendet und VERPASSFARBE
fr den zuletzt stattgefundenen Geburtstag. 

Wenn BREMSE den Wert 1 bekommt, kann man das Fenster mit dem Closer nicht 
wegklicken, bevor die Zeit bei VERSCHWINDE verstrichen ist.

Bei HINTERGRUND kann man eine Fensterhintergrundfarbe bestimmen, 
z.B. 8 fr Hellgrau. 

Ist JAHRHUNDERT 0, wird das Jahrhundert ganz ausgeschrieben 
(01.01.1998), bei 1 werden die ersten beiden Ziffern weggelassen 
(01.01.98), bei 2 die ganze Jahresangabe (01.01.). Im letzten Fall 
sollte man den Wert KOMMA auf 1 setzen, da das Datum mit einem Punkt 
endet und das Komma danach etwas hlich wirkt.

Ist der Wert WOCHENTAG eine 1, wird zustzlich das Wochentagskrzel 
vor dem Datum ausgegeben.

Wenn KOMMA den Wert 1 erhlt, wird das erste in der Zeile vorkommende 
Komma gelscht. Siehe JAHRHUNDERT.

Durch Setzen von NUREINMAL auf 1 kann man erreichen, da Birthday nur einmal 
pro Tag gesartet wird. Es vermerkt dies in der Datei BIRTHDAY.LOG. Will man 
beim nchsten Rechnerstart Birthday trotzdem starten lassen, mu man in der 
Startphase von Birthday die linke Shift-Taste gedrckt halten. Die 
Einstellung wird dann ignoriert.

Hat VERPASST den Wert 1, wird der zuletzt stattgefundene und damit evtl. 
verpate Geburtstag in der letzten Fensterzeile, getrennt durch eine Linie, 
dargestellt. 

Untersttzung von Terminen fr wiederkehrende berweisungsauftrge
------------------------------------------------------------------

Hierzu wird die Datei BIRTHPAY.DAT (man verzeihe mir diese grliche 
Wortschpfung, aber die Datei steht dann im Verzeichnis bei 
alphabetischer Sortierung genau unter BIRTHDAY und es geht ja ums 
Bezahlen) verwendet.

berweisungstermine werden blau bzw. kursiv dargestellt. Ist eine 
berweisung am aktuellen Tag fllig, wird sie wie ein Geburtstag rot 
bzw. fett dargestellt.

Aufbau der BIRTHPAY.DAT
-----------------------

In jeder Zeile steht wie bei den Geburtstagen ein Datum (bei dem das 
Jahr nicht relevant ist, da die Termine immer wiederkehren), der 
Erinnergungstext
und am Ende in Klammern das Intervall in Monaten).
Also z.B. so:

10.03.1997, berweisung ans Finanzamt (03)
01.01.1996, Miete berweisen (01)
10.01.1994, berweisung Steuer Auto (12)

Im ersten Beispiel wird vierteljhrlich angemahnt, im zweiten monatlich, im dritten
einmal im Jahr.

Diese Datei wird unter Umstnden von Ihrem berweisungsprogramm PAYDAY oder KIES
auf Wunsch automatisch erzeugt.

Will man Termine nicht monatlich, sondern z.B. auch wchentlich 
angezeigt bekommen, so kann man ein zweistelliges Tagesintervall in 
eckigen Klammern verwenden.
Also z.B.
28.02.1998, Auto waschen [14]
um alle zwei Wochen an etwas erinnert zu werden (nein, ich wasche 
mein Auto nie).

Shutdown
--------
Der Shutdown-Mechanismus von MagiC wird von Birthday untersttzt.

Tasten
------
Wenn das Birthday-Fenster das oberste ist, erscheint auf Druckvon Help, Tab
oder Ctrl-I eine Info-Box. Mit Ctrl-Q wird das Programm beendet.


Das Programm ist Fairware und darf nur zusammen mit den Dateien
BIRTHDAY.TXT, BIRTHDAY.HYP, BIRTHDAY.REF, BIRTHDAY.DAT und 
BIRTHDAY.CFG weitergegeben werden. Wer es 
gut findet und stndig installiert hat, sollte sich mit einem kleinen 
Obulus (der Betrag ist jedem freigestellt) bei mir erkenntlich zeigen. 
Dann wird es auch weiterhin so ungemein praktische Programme von mir geben.

Im MAUS-Netz bin ich unter Oliver Buchmann @KA2 zu erreichen. Sonst 
ber Oliver.Buchmann@t-online.de

Das Programm wurde in PurePascal geschrieben.

Oliver Buchmann
Hermann-Hampe-Weg 4
69126 Heidelberg

Bankverbindung: Commerzbank Heidelberg, BLZ 67240039, Konto 1831742.




History:
========
Erweiterungen in der Version 2:
Es gibt jetzt eine Konfigurationsdatei namens BIRTHDAY.CFG, die sich 
im selben Verzeichnis wie BIRTHDAY.PRG befinden mu.

Neu in der Version 3:
Bei VERSCHWINDE kann eine Zeit in Sekunden angegeben werden, nach der das
Fenster geschlossen und das Programm beendet werden soll.

Neu in der Version 4:
Man kann einstellen, da das Fenster nur gezeigt wird, wenn der nchste 
Geburtstag in soundsoviel Tagen ansteht.
Bei Mono wird aktueller Geburtstag fett geschrieben.
Version 5: PayDay-berweisungen werden angemahnt.
Version 6: Pay-Day-berweisungen optimiert.
Version 6.1: berweisungen wieder blau
Version 6.2: Neu: Intervall. Zeigt nur diese nchsten Tage an.
Version 6.3: Neu: Vorwarnung. Zeigt auch Termine fr den nchsten Tag markiert an.
Version 6.4: Neu: Bremse. Verhindert das vorzeitige Schlieen des Fensters.
Version 6.5: Bugfix: yoffs wieder korrekt zentriert.
             Neu: Farbiger Fensterhintergrund.
Version 7.0: Bugfix: Am Ende des Jahres wurden keine berweisungen des nchsten Jahres 
                     bercksichtigt.
             Neu: Jahrhundert und Jahreszahl knnen weggelassen werden.
             Neu: Komma kann weggelassen werden.
             Neu: Wochentagskrzel knnen vorangestellt werden.
			 Neu: Farbe und Attribute fr alles einstellbar.
			 Neu: Wiederholung nicht nur monatlich, sondern auch nach Tagen einstellbar.
			 Neu: Es kann eingestellt werden, da es nur einmal tglich gestartet wird.
Version 7.1:          Bugfix: Kopfzeile konnte nicht abgeschaltet werden. 
                      Bugfix: Altersanzeige kann wieder ausgeschaltet werden.
                      Bugfix: Tgliche Intervalle in BIRTHPAY.DAT 
                      sollten jetzt korrekt funktionieren. Bugfix: 
                      Fenstertitel wird jetzt mit einer anderen 
                      Funktion erzeugt. Bugfix: Variablentyp fr 
                      Berechnung der tglichen Intervalle gendert.
Version 7.2:          Bugfix: Anzahl der mglichen Zeilen in der CFG erhht 
                      (jedoch max. 80).Bugfix: Bei der Berechnung der 
                      tglichen Wiederholungen in der BIRTHPAY mit [] war ein 
                      dmlicher Fehler.
Version 7.3:          Neu: Verpater (letzter) Geburtstag wird auf Wunsch in 
                      letzter Zeile angezeigt.
Version 7.4:          Einige interne nderungen bei der Berechnung. 
Version 7.5:          Wird als Jahreszahl 19__ (Leerzeichen) oder 19XX angegeben, man 
                      das genaue Geburtsjahr also nicht wei, wird kein Alter angegeben.
                      Bei Verpat wird garantiert nur ein Geburtsdatum ermittelt. 
                      Bugfix: Ist NUREINMAL eingeschaltet, aber es steht kein Termin an, 
                      wird Birthday nicht mehr trotzdem gestartet. 
