This is Info file de/gcal.info, produced by Makeinfo-1.64 from the
input file de/gcal.texi.

START-INFO-DIR-ENTRY
* Gcal: (gcal).              Das GNU Kalenderprogramm.
END-INFO-DIR-ENTRY

Diese Datei beschreibt Gcal, ein Programm um Kalender auszugeben.  Gcal
gibt Monatskalender und Jahreskalender, ewige Feiertagslisten sowie
Terminwarnungslisten auf viele verschiedene Arten und Weisen aus.  Es
berücksichtigt diejenigen Daten korrekt, welche übergangen wurden,
als der derzeitig gültige Gregorianische Kalender den vormals gültigen
Julianischen Kalender ablöste.

Copyright (C) 1994, 1995, 1996 Thomas Esken

Das ist die erste Ausgabe der Gcal Dokumentation.

Hiermit wird die Erlaubnis erteilt, wortgetreue Kopien dieses Handbuchs
zu erstellen und zu vertreiben, sofern alle gemachten Kopien mit dem
Copyrightvermerk und diesem Genehmigungsvermerk ausgestattet sind und
vorgenannte Vermerke erhalten bleiben.

Hiermit wird die Erlaubnis erteilt, veränderte Kopien dieses Handbuchs
wie unter den Bedingungen für wortgetreue Kopien zu erstellen und zu
vertreiben, sofern die ausgeführten Arbeiten in Ableitung und
Gesamtheit innerhalb der Bestimmungen eines Genehmigungvermerks liegen
und zudem mit diesem ausgestattet sind, welcher mit diesem hier
identisch ist.

Hiermit wird die Erlaubnis erteilt, wie unter den vorgenannten
Bedingungen für veränderte Versionen Übersetzungen dieses Handbuchs
in eine andere Sprache zu erstellen und zu vertreiben, mit der
Ausnahme, daß dieser Genehmigungsvermerk in einer Übersetzung
angegeben sein darf, welche von der Free Software Foundation gebilligt
wird.

Jedwede Vorschläge, Verbesserungen, Erweiterungen, Fehlerberichte,
Geld- und Sachspenden, Programmieraufträge usw. sind stets willkommen.
Bitte senden Sie diese direkt an meine Email Adresse.  Wenn Sie dieses
Werkzeug mögen, so würde ich mich sehr über eine Postkarte von Ihnen
freuen!

                                \\\_''/'
-------------------------oOO    (/o-o\)    OOo-------------------------
Thomas Esken                o  (.  "  .)  o   Internet :
Im Hagenfeld 84              \___) ~ (___/      (esken@uni-muenster.de)
D-48147 Muenster; GERMANY                     Phone    : +49 251 232585


File: gcal.info,  Node: Textteil einer Zeile,  Next: Zeile kommentieren,  Prev: Weitere Datumteil-Attribute,  Up: Ressourcendatei

Textteil einer Zeile
--------------------

Der "Textteil" einer Zeile der Ressourcendatei darf jeden beliebigen
Text enthalten den Sie mögen.  Falls der Textteil nicht von Gcal
selbst erzeugte Zeichen zur Druckaufbereitung oder Hervorhebung
enthält oder Zeichen, denen in der Tabelle des verwendeten
Zeichensatzes ein Wert größer 127 (dezimal) zugeordnet ist (diese
sind evtl. nicht druckbar), so werden auch diese Zeichen von Gcal
ausgegeben, allerdings *uninterpretiert*!  Deswegen können bei der
Ausgabe solcher Zeichen unter Umständen Probleme mit der verwendeten
Bildschirmtreiber Software und/oder dem externen Paginiererprogramm
auftreten, ebenso wie beim Versand solcher Zeichen mittels
elektronischer Post.

Sogenannte `NUL' Zeichen (das ist das Zeichen, welchem in der Tabelle
des verwendeten Zeichensatzes der Wert Null zugeordnet ist) dürfen
auch im Textteil enthalten sein, diese bewirken aber, daß der gesamte
Text, der dem ersten Auftreten von einem `NUL' Zeichen folgt,
unterdrückt wird.  Da es meiner Meinung nach keinen erkennbaren Sinn
macht auch diese Zeichen als solche uninterpretiert auszugeben, dienen
diese also nur zum kommentieren; ansonsten würden `NUL' Zeichen auch
die bereits vorgenannten Probleme verursachen.

Eine Zeile der Ressourcendatei wird auf der Folgezeile fortgesetzt, wenn
eine `\-\n' (Backslash-Newline) Zeichensequenz vorgefunden wird, d.h.
das Newline Zeichen der Zeile durch ein Backslash Zeichen unterdrückt
wird, z.B.:

Die Zeile:
     000000Mo Jeden Montag

und die Zeilen:
     000000Mo \
     Jeden \
     Montag

bewirken die gleiche Ausgabe und sind insofern identisch.

Ferner können *lange* Textzeilen aus der Ressourcendatei an beliebiger
Stelle umgebrochen werden.  Die Bezeichnung *lang* bedeutet in diesem
Zusammenhang, daß der von Gcal bei der Ausgabe dargestellte Text den
rechten Bildschirmrand überschreiten bzw. an diesem umgebrochen
würde.  Jedesmal wenn ein `~' (Tilde) Zeichen im Textteil vorgefunden
wird, so wird dieses Zeichen durch ein echtes `\n' (Newline) Zeichen
ersetzt und der so umgebrochene Text bei der Ausgabe linksbünding
formatiert dargestellt.

Falls das `~' (Tilde) Zeichen als Zeichen selbst verwendet werden soll,
so muß es durch ein führendes `\' (Backslash) Zeichen quotiert werden,
z.B. `\~'.

Wenn die Zeichen `\~' selbst als Zeichenfolge verwendet werden sollen,
so muß das `\' (Backslash) Zeichen mit sich selbst quotiert werden,
z.B. `\\~'.

Die Ressourcendatei `beispiel.rc'

     ;
     ; Hallo, ich bin `beispiel.rc' und jetzt lebendig
     ;
     0 Ich weiss ich bin ein kurzer Text
     0 Ich hoffe ich bin lang genug~hier, ein Zeilenumbruch\
     ~und noch einer~und nun zum letzten Mal...
     0 Bin ich ein kurzer Text? Weiss nicht...

wird wie folgt ausgegeben:

     $ gcal --resource-file=beispiel.rc --disable-highlighting
     -|
     -| Terminliste:
     -|
     -| Mi,  14 Sep 1994: Bin ich ein kurzer Text? Weiss nicht...
     -| Mi,  14 Sep 1994: Ich hoffe ich bin lang genug
     -|                   hier, ein Zeilenumbruch
     -|                   und noch einer
     -|                   und nun zum letzten Mal...
     -| Mi,  14 Sep 1994: Ich weiss ich bin ein kurzer Text

Da *whitespace* Zeichen zur Trennung von Datum- und Textteil verwendet
werden, ist es somit nicht ohne weiteres möglich den Textteil mit
führenden *whitespace* Zeichen zu versehen, weil diese intern
übersprungen werden und somit nicht zur Ausgabe gelangen.  Falls nun
aber doch *whitespace* Zeichen den Textteil anführen sollen, so muß
das *erste* dieser *whitespace* Zeichen durch ein führendes `\'
(Backslash) Zeichen quotiert werden, z.B. `\ ', wenn es sich um ein
Leerzeichen handelt.  Gcal erkennt an Hand einer solchen Zeichenfolge,
daß der Text, der dem `\' Zeichen nachfolgt, nicht mehr länger der
Trennung dient, sondern Bestandteil vom Textteil ist.  Gcal
überspringt sodann dieses besondere, nur der Markierung dienende
Backslash Zeichen (stellt es also nicht in die Ausgabe), und
verarbeitet den Rest der Zeile wie üblich.

Folgendes Beispiel sollte genügen um den vorstehenden Sachverhalt zu
verdeutlichen.  Die Ressourcendatei `whitespc.rc'

     0 BANG BANG
     0 bogus
     0         bogomips
     0    \hallo welt
     0    \ main(){for(;;)fork();}
     0 \     sh $0 & $0 &
     0    \  a  \  b  \\  c  \\\  d
     0    Was passiert nun?\
     ~0  \  Dieses!
     0    Was passiert nun?\\
     ~0  \  Jenes!

wird wie folgt ausgegeben:

     $ gcal --resource-file=whitespc.rc --disable-highlighting
     -|
     -| Terminliste:
     -|
     -| Mi,  14 Sep 1994:      sh $0 & $0 &
     -| Mi,  14 Sep 1994:   a  \  b  \\  c  \\\  d
     -| Mi,  14 Sep 1994:  main(){for(;;)fork();}
     -| Mi,  14 Sep 1994: BANG BANG
     -| Mi,  14 Sep 1994: Was passiert nun?~0  \  Jenes!
     -| Mi,  14 Sep 1994: Was passiert nun?
     -|                   0  \  Dieses!
     -| Mi,  14 Sep 1994: \hallo welt
     -| Mi,  14 Sep 1994: bogomips
     -| Mi,  14 Sep 1994: bogus


File: gcal.info,  Node: Zeile kommentieren,  Next: Include Anweisungen,  Prev: Textteil einer Zeile,  Up: Ressourcendatei

Zeile kommentieren
------------------

Eine Zeile der Ressourcendatei, die mit einem `;' (Semikolon) Zeichen
beginnt, ist ein Kommentar und wird von Gcal vollständig ignoriert!
Führende *whitespace* Zeichen dürfen dem Kommentarzeichen vorangehen.
Siehe in diesem Zusammenhang auch *Note Textteil einer Zeile::, wo
erklärt wird, wie ein `NUL' Zeichen zur Kommentierung in einem
Textteil benutzt werden kann.


File: gcal.info,  Node: Include Anweisungen,  Next: Spezielle Textmakros,  Prev: Zeile kommentieren,  Up: Ressourcendatei

Include Anweisungen
-------------------

Es dürfen `#include' Anweisungen in einer Ressourcendatei eingefügt
werden (ein Mechanismus ähnlich demjenigen, den der C Preprocessor
benutzt), welche daß Aufsuchen und Vorladen weiterer Ressourcendateien
bewirken.  Eine `#include' Anweisung veranlasst Gcal das Lesen der
laufenden Ressourcendatei zu unterbrechen und eine andere
Ressourcendatei zu lesen, bevor mit dem Weiterlesen der laufenden
Ressourcendatei fortgefahren wird.  Die Anweisung ist eine Zeile in der
Ressourcendatei, die wie die folgende Schablone aussieht:

     #include *whitespace* ARGUMENT [*whitespace*] *newline*

Das ARGUMENT kann entweder

     "DATEINAME"

oder

     <DATEINAME>

sein (also ein Dateiname, der entweder mit `""' oder `<>' umfasst ist).

Mindestens ein *whitespace* Zeichen ist notwending zwischen `#include'
und dem ARGUMENT.  Dem ARGUMENT dürfen beliebig viele *whitespace*
Zeichen folgen und die Zeile muß mit einem `\n' (Newline) Zeichen
enden, ausgenommen es ist die letzte Zeile in einer Ressourcendatei.

Nun zu einem etwas konkreteren Beispiel:

  1. #include "foo/bar"

  2. #include <bar>

Die erste `#include' Anweisung regt Gcal an, die Datei `bar' im
Dateiverzeichnis `foo' vom aktuellen Dateiverzeichnis aus einzufügen.
Falls das nicht gelingt, versucht Gcal mittels der Schritte 1...4 des
bereits zuvor erklärten Datei-Suchmechanismus' diese Datei einzufügen
(*note Datei-Suchmechanismus: Ressourcendatei.).

Die zweite `#include' Anweisung regt Gcal an, die Datei `bar' aus dem
Benutzer- bzw. System-Datenverzeichnis mittels der Schritte 3...4 des
bereits zuvor erklärten Datei-Suchmechanismus' einzufügen.
Allerdings ist es nicht gestattet Dateien, deren Zugriffspfad vom
Wurzeldateiverzeichnis aus fest vorgegeben ist, mittels einer solchen
`#include' Anweisung einzufügen, wie z.B.: `#include </file>' oder
`#include </foo/bar/file>'.  Ebenfalls nicht gestattet ist die Angabe
eines einfachen oder erweiterten Dateinamens, der mit einer
Laufwerksangabe versehen ist bei dieser Art von `#include' Anweisungen
(auch wenn ein Betriebssystem wie MS-DOS oder OS/2 eine solche
Laufwerksangabe grundsätzlich erlauben würde), da der mit führendem
Benutzer- bzw. System-Datenverzeichnisnamen ausgestattete resultierende
erweiterte Dateiname nicht mehr den geltenden Dateinamenskonventionen
entsprechen würde.

Eingefügte Dateien dürfen ihrerseits wiederum weitere Dateien
einfügen.  Allerdings ist die Schachtelungstiefe eingefügter Dateien
einerseits durch die Größe des zur Verfügung stehenden
Hauptspeichers begrenzt, und andererseits durch den Wert, der vom
Betriebssystem bzw. Kompilierer als Obergrenze von gleichzeitig
geöffneten Dateien vorgegeben ist.  Rekursive Einfügungen (1) oder
zyklische Einfügungen (2) sind nicht erlaubt, da solche
Rückwärtsbezüge eine programminterne Endlosschleife erzeugen würden!
Gcal erkennt solche Situationen und beendet sich sofort mit einem
fatalen Fehler.

Falls eine eingefügte Ressourcendatei nicht gefunden wurde und keine
`--debug=abort' Option angegeben wurde, so wird mit der Verarbeitung
der Ressourcendatei, welche `#include' enthielt, fortgefahren.

  ---------- Footnotes ----------

  (1)  Die eingefügte Datei versucht sich selbst erneut einzufügen.

  (2)  Die eingefügte Datei wird von einer anderen Datei, die an einer
tieferen Stelle in einer solchen Kette auftritt, erneut eingefügt.


File: gcal.info,  Node: Spezielle Textmakros,  Next: Datumvariablen,  Prev: Include Anweisungen,  Up: Ressourcendatei

Spezielle Textmakros
--------------------

* Menu:

* %s Textmakro::  Wie ein Start eines Termins Textmakro benutzt wird.
* %e Textmakro::  Wie ein Ende eines Termins Textmakro benutzt wird.
* %o Textmakro::  Wie ein Wochentagsname Textmakro benutzt wird.
* %k Textmakro::  Wie ein Wochennummer Textmakro benutzt wird.
* %b Textmakro::  Wie ein Geburtstags Textmakro benutzt wird.
* %y Textmakro::  Wie ein Jahreszahl Textmakro benutzt wird.
* %m Textmakro::  Wie ein Monatszahl Textmakro benutzt wird.
* %w Textmakro::  Wie ein Wochenzahl Textmakro benutzt wird.
* %d Textmakro::  Wie ein Tageszahl Textmakro benutzt wird.
* %j Textmakro::  Wie ein Julianische Tageszahl Textmakro benutzt wird.
* %n Textmakro::  Wie ein Datumtext Textmakro benutzt wird.
* %t Textmakro::  Wie ein Aktuelle Uhrzeit Textmakro benutzt wird.
* %1 Textmakro::  Wie ein Start Hervorhebungssequenz 1 Textmakro benutzt wird.
* %2 Textmakro::  Wie ein Ende Hervorhebungssequenz 1 Textmakro benutzt wird.
* %3 Textmakro::  Wie ein Start Hervorhebungssequenz 2 Textmakro benutzt wird.
* %4 Textmakro::  Wie ein Ende Hervorhebungssequenz 2 Textmakro benutzt wird.

Der Textteil einer Zeile der Ressourcendatei darf 16 verschiedene,
spezielle Textmakros enthalten, welche in jeder (sinnvollen) beliebigen
Anzahl und Reihenfolge auftreten dürfen.  Diese Texte beginnen alle
mit dem `%' (Prozent) Zeichen, welches seinerseits durch ein führendes
`\' (Backslash) Zeichen hinsichtlich seiner speziellen Bedeutung
entwertet (quotiert) werden kann, falls das `%' (Prozent) Zeichen
selbst im Textteil verwendet werden soll, z.B. `\%'.  Dem `%' Zeichen
folgt sodann ein Kennzeichen, welches die Art des Textmakros definiert.
Falls das Kennzeichen ein Buchstabe ist, so wird nicht zwischen Groß-
bzw. Kleinschreibung unterschieden.

     *Bitte beachten:*
     Das optionale Datum nach den `%s...', `%e...', `%o...', `%k...',
     `%b...' und `%y...' Textmakros darf entweder im
     `JJJJ[MM[TT|WWWN]]', `JJJJ*d|wN[WWW]' oder
     `JJJJ@e|DVAR[[+|-]N[WWW]]' Datumformat angegeben werden.


File: gcal.info,  Node: %s Textmakro,  Next: %e Textmakro,  Prev: Spezielle Textmakros,  Up: Spezielle Textmakros

%s Textmakro
............

`%s[JJJJ[MM[TT|WWWN]]]' bezeichnet das "Startdatum" eines Termins, d.h.
das erste Datum, an dem dieser Termin auftreten darf.  Wenn das Datum,
welches im `%s...' Textmakro kodiert ist, größer dem laufenden bzw.
abgefragten Datum ist, so wird der gesamte Warnungstext unterdrückt.
Wenn der Warnungstext angezeigt werden muß, so wird stets der gesamte
Text dieses Makros bei der Ausgabe unterdrückt.  Diesem Textmakro
*muß* stets ein *whitespace* Zeichen folgen, welches in der Ausgabe
entfernt wird.

   * Falls JJJJ... nicht angegeben ist (==*kein* Datum kodiert), so
     wird der 01 Januar des laufenden Jahres als Datum angenommen.

   * Falls JJJJ auf den Wert 0000 gesetzt ist, so wird das laufende Jahr
     als Jahr angenommen.

   * Falls MM nicht angegeben ist, so wird 01 (==Januar) als Monat
     angenommen.

   * Falls MM auf den Wert 00 gesetzt ist, so wird der laufende Monat
     als Monat angenommen.

   * Falls TT|WWW nicht angegeben ist, so wird 01 als Tag angenommen.

   * Falls TT auf den Wert 00 gesetzt ist, so wird der laufende Tag als
     Tag angenommen.

   * Falls das N Feld angegeben ist (Bereich 1...5 oder 9), so muß
     auch ein WWW Feld angegeben sein.


File: gcal.info,  Node: %e Textmakro,  Next: %o Textmakro,  Prev: %s Textmakro,  Up: Spezielle Textmakros

%e Textmakro
............

`%e[JJJJ[MM[TT|WWWN]]]' bezeichnet das "Endedatum" eines Termins, d.h.
das letzte Datum, an dem dieser Termin auftreten darf.  Wenn das Datum,
welches im `%e...' Textmakro kodiert ist, kleiner dem laufenden bzw.
abgefragten Datum ist, so wird der gesamte Warnungstext unterdrückt.
Wenn der Warnungstext angezeigt werden muß, so wird stets der gesamte
Text dieses Makros bei der Ausgabe unterdrückt.  Diesem Textmakro
*muß* stets ein *whitespace* Zeichen folgen, welches in der Ausgabe
entfernt wird.

   * Falls JJJJ... nicht angegeben ist (==*kein* Datum kodiert), so
     wird der 31 Dezember des laufenden Jahres als Datum angenommen.

   * Falls JJJJ auf den Wert 0000 gesetzt ist, so wird das laufende Jahr
     als Jahr angenommen.

   * Falls MM nicht angegeben ist, so wird 12 (==Dezember) als Monat
     angenommen.

   * Falls MM auf den Wert 00 gesetzt ist, so wird der laufende Monat
     als Monat angenommen.

   * Falls TT|WWW nicht angegeben ist, so wird der letzte Tag des
     Monats MM als Tag angenommen.

   * Falls TT auf den Wert 00 gesetzt ist, so wird der laufende Tag als
     Tag angenommen.

   * Falls das N Feld angegeben ist (Bereich 1...5 oder 9), so muß
     auch ein WWW Feld angegeben sein.


File: gcal.info,  Node: %o Textmakro,  Next: %k Textmakro,  Prev: %e Textmakro,  Up: Spezielle Textmakros

%o Textmakro
............

`%o[JJJJ[MM[TT|WWWN]]]' bezeichnet einen "Wochentagsnamen" und wird in
einen *Wochentagstext* umgesetzt, z.B.:

     Der Text `Heute ist %o , der %n' wird umgesetzt in
     ==> `Heute ist Montag, der 10-Jun-1996', falls das aktuelle Datum
     der 10'te Juni 1996 ist.

Wenn der Warnungstext angezeigt werden muß, so wird stets der gesamte
Text dieses Makros bei der Ausgabe unterdrückt.  Diesem Textmakro
*muß* stets ein *whitespace* Zeichen folgen, welches in der Ausgabe
entfernt wird.

   * Falls JJJJ... nicht angegeben ist (==*kein* Datum kodiert), so
     wird laufende Datum als Datum angenommen.

   * Falls JJJJ auf den Wert 0000 gesetzt ist, so wird das laufende Jahr
     als Jahr angenommen.

   * Falls MM nicht angegeben oder auf den Wert 00 gesetzt ist, so wird
     der laufende Monat als Monat angenommen.

   * Falls TT|WWW nicht angegeben oder auf den Wert 00 gesetzt ist, so
     wird der laufende Tag als Tag angenommen.

   * Falls das N Feld angegeben ist (Bereich 1...5 oder 9), so muß
     auch ein WWW Feld angegeben sein.


File: gcal.info,  Node: %k Textmakro,  Next: %b Textmakro,  Prev: %o Textmakro,  Up: Spezielle Textmakros

%k Textmakro
............

`%k[JJJJ[MM[TT|WWWN]]]' bezeichnet eine "Wochennummer" und wird in einen
ISO-*Wochennummer-Text* umgesetzt, z.B.:

     Der Text `Heute ist %o  der Kalenderwoche %k' wird umgesetzt in
     ==> `Heute ist Montag der Kalenderwoche 24', falls das aktuelle
     Datum der 10'te Juni 1996 ist.

Wenn der Warnungstext angezeigt werden muß, so wird stets der gesamte
Text dieses Makros bei der Ausgabe unterdrückt.  Diesem Textmakro
*muß* stets ein *whitespace* Zeichen folgen, welches in der Ausgabe
entfernt wird.

   * Falls JJJJ... nicht angegeben ist (==*kein* Datum kodiert), so
     wird laufende Datum als Datum angenommen.

   * Falls JJJJ auf den Wert 0000 gesetzt ist, so wird das laufende Jahr
     als Jahr angenommen.

   * Falls MM nicht angegeben oder auf den Wert 00 gesetzt ist, so wird
     der laufende Monat als Monat angenommen.

   * Falls TT|WWW nicht angegeben oder auf den Wert 00 gesetzt ist, so
     wird der laufende Tag als Tag angenommen.

   * Falls das N Feld angegeben ist (Bereich 1...5 oder 9), so muß
     auch ein WWW Feld angegeben sein.


File: gcal.info,  Node: %b Textmakro,  Next: %y Textmakro,  Prev: %k Textmakro,  Up: Spezielle Textmakros

%b Textmakro
............

`%b[JJJJ[MM[TT|WWWN]]]' bezeichnet ein "Geburtsjahr" und wird in einen
*Alterswert* umgesetzt, z.B.:

     Der Text `Mein %b1962  Geburtstag%s1952 %e2062' wird umgesetzt in
     ==> `Mein 32 Geburtstag', falls das aktuelle Jahr 1994 ist.

Der Alterswert wird nur dann ausgegeben, wenn sich bei dessen Berechnung
ein Wert größer Null ergibt.  Zudem wird die Terminwarnung in diesem
vorangehenen Beispiel nur während der Jahre 1952 bis 2062
(einschließlich) ausgegeben.  Wenn der Warnungstext angezeigt werden
muß, so wird stets der gesamte Text dieses Makros bei der Ausgabe
unterdrückt.  Diesem Textmakro *muß* stets ein *whitespace* Zeichen
folgen, welches in der Ausgabe entfernt wird.  Falls im verwendeten
Datumformat vereinbart wurde, daß bei der Ausgabe von einem Datum auch
ein Ordnungszahlanhang verwendet werden soll, so wird auch der
ermittelte Alterswert automatisch mit einem nachfolgenden
Ordnungszahlanhang versehen.  *Note `--date-format=de|us|gb|TEXT':
Kalender Optionen, für weitere Details.

   * Falls JJJJ... nicht angegeben ist (==*kein* Datum kodiert), so
     wird laufende Datum als Datum angenommen.

   * Falls JJJJ auf den Wert 0000 gesetzt ist, so wird das laufende Jahr
     als Jahr angenommen.

   * Falls MM nicht angegeben oder auf den Wert 00 gesetzt ist, so wird
     der laufende Monat als Monat angenommen.

   * Falls TT|WWW nicht angegeben oder auf den Wert 00 gesetzt ist, so
     wird der laufende Tag als Tag angenommen.

   * Falls das N Feld angegeben ist (Bereich 1...5 oder 9), so muß
     auch ein WWW Feld angegeben sein.


File: gcal.info,  Node: %y Textmakro,  Next: %m Textmakro,  Prev: %b Textmakro,  Up: Spezielle Textmakros

%y Textmakro
............

`%y[JJJJ[MM[TT|WWWN]]]' bezeichnet jedwedes Jahr und wird in einen
"Jahresdifferenzenwert" umgesetzt, z.B.:

     Der Text `Silvester 1912 liegt %y1912  Jahre zurück' wird
     umgesetzt in
     ==> `Silvester 1912 liegt -82 Jahre zurück', falls das aktuelle
     Jahr 1994 ist.

Wenn der Warnungstext angezeigt werden muß, so wird stets der gesamte
Text dieses Makros bei der Ausgabe unterdrückt.  Diesem Textmakro
*muß* stets ein *whitespace* Zeichen folgen, welches in der Ausgabe
entfernt wird.

   * Falls JJJJ... nicht angegeben ist (==*kein* Datum kodiert), so
     wird laufende Datum als Datum angenommen.

   * Falls JJJJ auf den Wert 0000 gesetzt ist, so wird das laufende Jahr
     als Jahr angenommen.

   * Falls MM nicht angegeben oder auf den Wert 00 gesetzt ist, so wird
     der laufende Monat als Monat angenommen.

   * Falls TT|WWW nicht angegeben oder auf den Wert 00 gesetzt ist, so
     wird der laufende Tag als Tag angenommen.

   * Falls das N Feld angegeben ist (Bereich 1...5 oder 9), so muß
     auch ein WWW Feld angegeben sein.


File: gcal.info,  Node: %m Textmakro,  Next: %w Textmakro,  Prev: %y Textmakro,  Up: Spezielle Textmakros

%m Textmakro
............

`%m' bezeichnet die laufende bzw. abgefragte "Monatsnummer" relativ zum
aktuellen (==heutigen) Datum.


File: gcal.info,  Node: %w Textmakro,  Next: %d Textmakro,  Prev: %m Textmakro,  Up: Spezielle Textmakros

%w Textmakro
............

`%w' bezeichnet die laufende bzw. abgefragte "Wochennummer" relativ zum
aktuellen (==heutigen) Datum.


File: gcal.info,  Node: %d Textmakro,  Next: %j Textmakro,  Prev: %w Textmakro,  Up: Spezielle Textmakros

%d Textmakro
............

`%d' bezeichnet die laufende bzw. abgefragte "Tagesnummer" relativ zum
aktuellen (==heutigen) Datum, z.B.:

     Die Ressourcendateizeile `0 %d Tage vergangen' wird umgesetzt in
     ==> `-10 Tage vergangen', falls Gcal mit der Option `-c10-' und
     keinem Kommando aufgerufen wird.


File: gcal.info,  Node: %j Textmakro,  Next: %n Textmakro,  Prev: %d Textmakro,  Up: Spezielle Textmakros

%j Textmakro
............

`%j[[-]N]' bezeichnet die laufende bzw. abgefragte "Julianische
Tageszahl" relativ zum aktuellen (==heutigen) Datum.  Diese Tageszahl
bezieht sich auf das Datum 1'ter Januar 4713 vor Christus, welches für
astronomische Berechnungen als der Tag Null einer durchlaufenden
Tageszählung angesehen wird und als das Julianisches Datum (J.D.)
bekannt ist.  Der exakte Nullpunkt von diesem Datum ist um 12 Uhr
Weltzeit; der Tageswechsel erfolgt also nicht um Mitternacht, sondern
um Mittag Weltzeit.  Da Gcal derzeit nicht die Zeitzone des vom Rechner
gelieferten Systemdatum auswertet, wird diese Tageszahl nur ganzzahlig
dargestellt in der Annahme, daß der Tageswechsel bereits Mittags
stattgefunden hat.  Wer den Tageswechsel als Mittags noch nicht bereits
vollzogen haben möchte, der soll die sich aus dem Textmakro ergebende
Julianische Tageszahl stets um den Faktor eins vermindern, z.B. `%j-1'.

Beispiel:

     Die Ressourcendateizeile
     `0 Julianischer Tag %j seit 01-Jan-4713 v.Chr.' wird umgesetzt in
     ==> `Julianischer Tag 2437929 seit 01-Jan-4713 v.Chr.', falls Gcal
     mit den Optionen `-c %19620921' sowie keinem Kommando aufgerufen
     wird.

Wenn dem `%j' Text eine Zahl direkt folgt, so wird diese Zahl von der
tatsächlichen Julianischen Tageszahl stets subtrahiert (ein negatives
Vorzeichen kann der besseren Lesbarkeit wegen angegeben werden), so
daß im Text mit beliebigen Bezugsgrößen gearbeitet werden kann, z.B.:

     Die Ressourcendateizeile
     `0 Julianischer Tag %j-2415021 seit 01-Jan-1900' wird umgesetzt in
     ==> `Julianischer Tag 4 seit 01-Jan-1900', falls Gcal mit den
     Optionen `-c %19000105' sowie keinem Kommando aufgerufen wird.


File: gcal.info,  Node: %n Textmakro,  Next: %t Textmakro,  Prev: %j Textmakro,  Up: Spezielle Textmakros

%n Textmakro
............

`%n[[+|-]N]' bezeichnet die laufende bzw. abgefragte "Tagesnummer"
relativ zum laufenden Datum `+/-' N Tagen und wird in einen, sich auf
ein absolutes Datum beziehenden "Datumtext" umgesetzt, z.B.:

     Die Ressourcendateizeile `1962Sep21 10000 Tage alt: %n+10000' wird
     umgesetzt in
     ==> `10000 Tage alt: 06-Feb-1990', falls Gcal mit der einfachen
     `-c' Option und dem `sep 1962' Kommando aufgerufen wird (*note `MM
     JJJJ': Einfache Kommandos.).


File: gcal.info,  Node: %t Textmakro,  Next: %1 Textmakro,  Prev: %n Textmakro,  Up: Spezielle Textmakros

%t Textmakro
............

`%t[12|24]' bezeichnet die "aktuelle Systemuhrzeit", z.B.:

     Der Text `Uhrzeit: %t --> Zahnarzttermin um 10.00 Uhr' wird
     umgesetzt in
     ==> `Uhrzeit: 07.32 --> Zahnarzttermin um 10.00 Uhr', falls die
     aktuelle Systemuhrzeit 07.32 Uhr (hh.mm) ist.

Der Systemuhrzeitwert wird standardgemäß im *24-Stunden* Format
ausgegeben.  Um im *12-Stunden* Format auszugeben, muß hinter `%t' die
Zahl `12' geschrieben werden, z.B. `%t12'.


File: gcal.info,  Node: %1 Textmakro,  Next: %2 Textmakro,  Prev: %t Textmakro,  Up: Spezielle Textmakros

%1 Textmakro
............

`%1' wird ersetzt durch die Start Hervorhebungssequenz bzw. das Start
Markierungszeichen, welches zur Hervorhebung des aktuellen Tages
benutzt wird (*note `--highlighting=TEXT': Globale Optionen.).  Damit
wird erreicht, daß der diesem Textmakro nachfolgende Text der Zeile in
gleicher Weise ausgegeben wird, wie der hervorgehobene bzw. markierte
aktuelle Tag.  `%1' wird in Verbindung mit dem `%2' Textmakro benutzt,
welches die mit `%1' eingeschaltete Hervorhebung wieder ausschaltet
bzw. ein Ende Markierungszeichen produziert.  Sollte einem `%1' Text
kein `%2' Text auf der Zeile nachfolgen, so fügt Gcal automatisch
einen solchen `%2' Text am Zeilenende ein.

Zum Beispiel:

     In dieser Zeile wird nur %1DIESES%2 Wort hervorgehoben.
     %1In dieser Zeile wird alles bis hierhin%2 hervorgehoben.
     Alles ab %1hier bis zum Zeilenende wird hervorgehoben.


File: gcal.info,  Node: %2 Textmakro,  Next: %3 Textmakro,  Prev: %1 Textmakro,  Up: Spezielle Textmakros

%2 Textmakro
............

`%2' wird ersetzt durch die Ende Hervorhebungssequenz bzw. das Ende
Markierungszeichen, welches zur Hervorhebung des aktuellen Tages
benutzt wird.  Damit wird erreicht, daß ab der Stelle des Auftretens
dieses Textmakros eine möglicherweise aktive Hervorhebung entsprechend
der des aktuellen Tages wieder abgeschaltet bzw. ein Ende
Markierungszeichen produziert wird.  `%2' wird in Verbindung mit dem
`%1' Textmakro benutzt.  Sollte vor einem `%2' Text kein `%1' Text auf
der Zeile vorgefunden werden, so hat der `%2' Text keinerlei Wirkung.


File: gcal.info,  Node: %3 Textmakro,  Next: %4 Textmakro,  Prev: %2 Textmakro,  Up: Spezielle Textmakros

%3 Textmakro
............

`%3' wird ersetzt durch die Start Hervorhebungssequenz bzw. das Start
Markierungszeichen, welches zur Hervorhebung eines Feiertages benutzt
wird (*note `--highlighting=TEXT': Globale Optionen.).  Damit wird
erreicht, daß der diesem Textmakro nachfolgende Text der Zeile in
gleicher Weise ausgegeben wird, wie ein hervorgehobener bzw. markierter
Feiertag.  `%3' wird in Verbindung mit dem `%4' Textmakro benutzt,
welches die mit `%3' eingeschaltete Hervorhebung wieder ausschaltet bzw.
ein Ende Markierungszeichen produziert.  Sollte einem `%3' Text kein
`%4' Text auf der Zeile nachfolgen, so fügt Gcal automatisch einen
solchen `%4' Text am Zeilenende ein.

Zum Beispiel:

     In dieser Zeile wird nur %3DIESES%4 Wort hervorgehoben.
     %3In dieser Zeile wird alles bis hierhin%4 hervorgehoben.
     Alles ab %3hier bis zum Zeilenende wird hervorgehoben.


File: gcal.info,  Node: %4 Textmakro,  Prev: %3 Textmakro,  Up: Spezielle Textmakros

%4 Textmakro
............

`%4' wird ersetzt durch die Ende Hervorhebungssequenz bzw. das Ende
Markierungszeichen, welches zur Hervorhebung eines Feiertages benutzt
wird.  Damit wird erreicht, daß ab der Stelle des Auftretens dieses
Textmakros eine möglicherweise aktive Hervorhebung entsprechend der
eines Feiertages wieder abgeschaltet bzw. ein Ende Markierungszeichen
produziert wird.  `%4' wird in Verbindung mit dem `%3' Textmakro
benutzt.  Sollte vor einem `%4' Text kein `%3' Text auf der Zeile
vorgefunden werden, so hat der `%4' Text keinerlei Wirkung.


File: gcal.info,  Node: Datumvariablen,  Next: Textvariablen,  Prev: Spezielle Textmakros,  Up: Ressourcendatei

Datumvariablen
--------------

Gcal respektiert *globale* und/oder *lokale* Datumvariablen, welche
entweder im Datumteil einer Zeile der Gcal Ressourcendatei oder als
Bestandteil eines speziellen Textmakros im Textteil einer Zeile der
Ressourcendatei verwendet werden dürfen.  *Note
`--date-variable=ARGUMENT': Terminwarnung Optionen.  Das bedeutet, daß
bis zu *25* benutzerdefinierte Datumvariablen gesetzt und während der
Programmausführung referenziert werden können.  Der Name einer
Datumvariablen DVAR besteht aus einem einzelnen Buchstaben (Groß- bzw.
Kleinbuchstaben werden nicht unterschieden und ausgenommen dem
Buchstaben `e', welcher intern für das Datum des Ostersonntags
reserviert ist und welcher deswegen nicht zuweisbar/inoperabel ist),
und wird bei einer Definition gefolgt von dem Zuweisungsoperator `='
und den Zahlenwerten für Monat MM (oder einem Monatsnamen im
dreistelligen Kurzformat, z.B. `Jan', `Feb', ...) und Tag TT, welche
diese Variable aufzunehmen hat (oder dem Namen einer anderen
Datumvariablen), z.B.:

     a=1127
     c=a

speichert den 27'ten November in der lokalen Datumvariablen A und in
der lokalen Datumvariablen C.  Sie sollten stets in Erinnerung behalten,
daß Datumvariablen erst dann in einer Zeile referenziert werden
können, wenn diese bereits definiert worden sind, da eine
Ressourcendatei von Gcal Zeile für Zeile abgearbeitet wird.

Nur an lokale Datumvariablen können dynamische Daten, die im `MMWWWN',
`DVAR[+|-]N[WWW]' oder `*d|wN[WWW]' Format angegeben werden, zugewiesen
werden, z.B.:

     a=03so2
     b=JunMon9
     c=b-3
     d=c+4Sa
     x=*d10
     y=*d10fre
     z=*w3So

Vorstehendes bedeutet, daß die Datumvariable A das Datum des 2'ten
Sonntags im März speichert und B das Datum des letzten Montags im
Monat Juni speichert.  Datumvariable C speichert das Datum, welches
drei Tage vor dem Datum des letzten Montags im Juni liegt und in der
Datumvariablen D wird dieses Datum auf dasjenige Datum gesetzt, welches
sich vier Samstage nach dem Datum von C ergibt.  Datumvariable X
speichert das Datum des 10'ten absoluten Tages des Jahres (== 10'ter
Januar).  Y speichert das Datum des 10'ten Freitags des Jahres, und Z
wird das Datum des Sonntags, der in die 3'te ISO-Kalenderwoche fällt,
zugewiesen.

*Achtung:*
Diese Art der Zuweisung an Datumvariablen wird *nur* innerhalb einfacher
Jahresgrenzen korrekt berechnet, also nicht in denjenigen
Terminwarnungen, welche ausgegeben werden, nachdem das laufende Jahr
gewechselt hat, z.B.  in *Fiskaljahren*.

Datumvariablen die in einer Ressourcendatei definiert werden sind stets
lokal, und werden nur in dieser spezifischen Datei *und* derjenigen
Datei respektiert, welche in diese eingefügt wird.  Das bedeutet
hinsichtlich der eingefügten Datei, daß alle lokalen Variablen der
aufrufenden Datei sichtbar sind.  Die eingefügte Datei selbst darf
eigene lokale Variablen definieren, welche dann die bereits an anderer
Stelle definierten lokalen Variablen überdecken und welche nicht bei
Rückkehr zur aufrufenden Datei exportiert werden.  Alle anderen
Definitionen von Datumvariablen (in der Kommandozeile,
Umgebungsvariable `GCAL' oder Antwortdatei) sind stets global.  Falls
eine Zeile einer Ressourcendatei eine Referenz auf eine Datumvariable
enthält, die nicht lokal in dieser Datei definiert ist, so wird Gcal
versuchen, die Werte der entsprechenden globalen Variablen zu benutzen.
Sollte dieses nicht gelingen, da keine globale Definition dieser
Datumvariablen vorliegt, so wird Gcal diese Zeile nicht verarbeiten.
Wenn zudem die einfache `--debug' bzw. `--debug=internal' Option
angegeben wurde, so wird ein Warnungstext für jede undefinierte
Datumvariable ausgegeben (*note `--debug=internal': Globale Optionen.).
Falls die `--debug=abort' Option angegeben wurde, so wird Gcal das
Programm dann abbrechen, sobald die erste Referenz einer undefinierten
Datumvariablen auftritt.  Für weitere Informationen, siehe auch *Note
`--debug=abort': Globale Optionen.

Eine lokale Datumvariable kann aber auch gelöscht werden, was bedeutet,
daß diese Datumvariable keinen lokalen Gültigkeitsbereich mehr
aufweist und somit undefiniert ist.  So ist es dann möglich, daß in
einer Folgezeile, in der diese Datumvariable referenziert wird, ein
möglicherweise global gesetzter Wert dieser Datumvariable verwendet
werden kann.  Das nachfolgende Beispiel der Ressourcendatei `dvar.rc'
verdeutlicht diesen Sachverhalt:

     z=0202
     0@z Das lokal an `z' zugewiesene Datum
     z=
     0@z Das global an `z' zugewiesene Datum
     z=0404
     0@z Das lokal an `z' zugewiesene Datum

So erzeugt Gcal die folgende Ausgabe:

     $ gcal %1777 -H no -x -v z=1212 -f ./dvar.rc -y
     -|
     -| So,   2 Feb 1777: Das lokal an `z' zugewiesene Datum
     -| Fr,   4 Apr 1777: Das lokal an `z' zugewiesene Datum
     -| Fr,  12 Dez 1777: Das global an `z' zugewiesene Datum
     $ gcal %1777 -H no -x -f ./dvar.rc -y
     -|
     -| So,   2 Feb 1777: Das lokal an `z' zugewiesene Datum
     -| Fr,   4 Apr 1777: Das lokal an `z' zugewiesene Datum

Nur fortgeschrittene Benutzer sollten die `--export-date-variables'
Option benutzen, welche bewirkt, daß die aktuelle Inkarnation einer
lokalen Datumvariablen - welche zuvor in einer Ressourcendatei
definiert wurde und nicht in einer eingefügten Datei - an weitere
Ressourcendateien exportiert wird anstelle der Benutzung deren globalen
Wertes, falls diese Datumvariable nicht lokal in dieser weiteren
Ressourcendatei definiert ist.  *Note Include Anweisungen::, für
weitere Details.

Aber seien Sie vorsichtig, die Benutzung dieser Option könnte
unerwartete Ergebnisse erzeugen, da die Reihenfolge der Abarbeitung der
Ressourcendateien eine wichtige Größe hinsichtlich der Handhabung der
`--export-date-variables' Option ist, so daß es nicht empfohlen werden
kann, diese Option zu benutzen.  Sie, der Benutzer, müssen sehr genau
wissen was Sie mit dieser Option bewirken wollen; *Sie seien nun
ausdrücklich gewarnt!*

Einige grundlegende Operationen können auf Datumvariablen ausgeführt
werden:

`DVAR++'
     Einfache Inkrementierung um einen Tag.

`DVAR--'
     Einfache Dekrementierung um einen Tag.

`DVAR+=N'
     Addition eines konstanten numerischen Tagesfaktors N.

`DVAR-=N'
     Subtraktion eines konstanten numerischen Tagesfaktors N.

`DVAR+=NWWW'
     Addition von N Wochentagen WWW.

`DVAR-=NWWW'
     Subtraktion von N Wochentagen WWW.

Der Gültigkeitsbereich der Operationen, welche auf einer lokalen
Datumvariablen durchgeführt werden, erstreckt sich auf die
Ressourcendatei oder die eingefügte Datei, in welcher die lokale
Datumvariable definiert wurde.

Falls Operationen auf eine globale Datumvariable in einer
Ressourcendatei oder in derjenigen Datei, die in diese eingefügt wird,
durchgeführt werden, so sind diese Operationen nur in dieser
entsprechenden Datei gültig (diese werden nur lokal ausgeführt),
nicht in weiteren Ressourcendateien, welche verarbeitet werden.  Das
bedeutet, daß die Initialwerte der globalen Datumvariablen stets
restauriert werden, falls die zu verarbeitende Ressourcendatei wechselt.

Bitte beachten Sie abschließend, daß jede Zuweisung oder Operation
auf eine Datumvariable in einer separaten Zeile der Ressourcendatei
erfolgen muß.


File: gcal.info,  Node: Textvariablen,  Prev: Datumvariablen,  Up: Ressourcendatei

Textvariablen
-------------

Gcal respektiert *globale* und/oder *lokale* Textvariablen, welche
überall in einer Zeile der Gcal Ressourcendatei verwendet werden
dürfen.  *Note `--text-variable=ARGUMENT': Terminwarnung Optionen.  Das
bedeutet, daß bis zu *26* benutzerdefinierte Textvariablen gesetzt und
während der Programmausführung referenziert werden können.  Der Name
einer Textvariablen "tvar" besteht aus einem `$' Präfix und einem
einzelnen Buchstaben (Groß- bzw. Kleinbuchstaben werden nicht
unterschieden), und wird in einer Definition gefolgt von dem
Zuweisungsoperator `=' und dem Text, welchen diese Variable aufzunehmen
hat.  Nur lokale Textvariablen werden auf einen undefinierten Wert
gesetzt falls kein Text rechts des Zuweisungsoperators angegeben ist.
Sie sollten stets in Erinnerung behalten, daß Textvariablen erst dann
in einer Zeile referenziert werden können, wenn diese bereits
definiert worden sind, da eine Ressourcendatei von Gcal Zeile für
Zeile abgearbeitet wird.  Textvariablenreferenzen werden von Gcal stets
solange rekursiv expandiert, bis alle Sub-Referenzen auf andere
Textvariablen aufgelöst sind.

Falls das `$' Zeichen im Text als Zeichen selbst verwendet werden soll,
so muß dieses durch ein führendes `\' (Backslash) Zeichen quotiert
(geschützt/entwertet) werden, z.B. `\$'.

Wenn die Zeichen `\$' im Text selbst als Zeichenfolge verwendet werden
sollen, so muß das `\' (Backslash) Zeichen mit sich selbst quotiert
werden, z.B. `\\$'.

Nun folgen ein paar Beispiele, wie Textvariablen von Gcal verarbeitet
werden.  Angenommen es existiert eine Ressourcendatei mit dem Namen
`demo.rc' und dem folgenden Inhalt:

     $a=foo
     0 \$a:1=$a
     $c=$a
     0 \$c=$c
     $b=$c bar $a
     0 \$b=$b
     $a=bar $b baz $a booz
     0 \$a:2=$a
     $a=
     $b=0 $b $c frozz $a frozz
     $b --> Das ist \$b
     0 \$x='$x' und \$d ist nicht definiert: $d...
     $a= 0 ~ 1~2~\$3~%n~$c~jetzt ist's genug!
     0 \$a=---$a---
     $a=0 \   \ \\ Und das...
     $a geht auch!

So erzeugt Gcal die folgende Ausgabe:

     $ gcal %19960101 -H no -x -r '$A=FROBOZZ:$x=' -f ./demo.rc
     -|
     -| Mo,   1 Jan 1996: $a:1=foo
     -| Mo,   1 Jan 1996: $a:2=bar foo bar foo baz foo booz
     -| Mo,   1 Jan 1996: $a=--- 0
     -|                    1
     -|                   2
     -|                   $3
     -|                   01-Jan-1996
     -|                   foo
     -|                   jetzt ist's genug!---
     -| Mo,   1 Jan 1996: $b=foo bar foo
     -| Mo,   1 Jan 1996: $c=foo
     -| Mo,   1 Jan 1996:    \ \\ Und das... geht auch!
     -| Mo,   1 Jan 1996: foo bar foo foo frozz FROBOZZ frozz --> Das ist $b
     -| Mo,   1 Jan 1996: $x='' und $d ist nicht definiert: $d...

Oder es existiert eine Ressourcendatei mit dem Namen `demo2.rc' und
folgendem Inhalt:

     $a=$b foo
     $b=0@e
     $a bar
     $b \$b
     0 \$a:$a
     0 \$b:$b

So erzeugt Gcal die folgenden Ausgaben:

     $ gcal %19960101 -H no -x -f ./demo2.rc
     -|
     -| Mo,   1 Jan 1996: $a:0@e foo
     -| Mo,   1 Jan 1996: $b:0@e
     $ gcal %19960101 -H no -x -f ./demo2.rc -y
     -|
     -| So,   7 Apr 1996: $b
     -| So,   7 Apr 1996: foo bar

Wie zuvor gesehen können vollständige (oder auch teilweise) Datumteile
(*note Datumteil einer Zeile::.), sowie spezielle Textmakros (*note
Spezielle Textmakros::.) in Textvariablen angegeben werden, oder auch
Referenzen auf andere Textvariablen, welche nach Expansion der
Textvariablen von Gcal verarbeitet werden.

Textvariablen die in einer Ressourcendatei definiert werden sind stets
lokal, und werden nur in dieser spezifischen Datei *und* derjenigen
Datei respektiert, welche in diese eingefügt wird.  Das bedeutet
hinsichtlich der eingefügten Datei, daß alle lokalen Variablen der
aufrufenden Datei sichtbar sind.  Die eingefügte Datei selbst darf
eigene lokale Variablen definieren, welche dann die bereits an anderer
Stelle definierten lokalen Variablen überdecken und welche nicht bei
Rückkehr zur aufrufenden Datei exportiert werden.  Alle anderen
Definitionen von Textvariablen (in der Kommandozeile, Umgebungsvariable
`GCAL' oder Antwortdatei) sind stets global.  Falls eine Zeile einer
Ressourcendatei eine Referenz auf eine Textvariable enthält, die nicht
lokal in dieser Datei definiert ist, so wird Gcal versuchen, die Werte
der entsprechenden globalen Variablen zu benutzen.  Sollte dieses nicht
gelingen, da keine globale Definition dieser Textvariablen vorliegt, so
wird Gcal den Namen dieser Textvariablen unverändert in der Zeile
belassen.

Nur fortgeschrittene Benutzer sollten die `--export-text-variables'
Option benutzen, welche bewirkt, daß die aktuelle Inkarnation einer
lokalen Textvariablen - welche zuvor in einer Ressourcendatei definiert
wurde und nicht in einer eingefügten Datei - an weitere
Ressourcendateien exportiert wird anstelle der Benutzung deren globalen
Wertes, falls diese Textvariable nicht lokal in dieser weiteren
Ressourcendatei definiert ist.  *Note Include Anweisungen::, für
weitere Details.

Aber seien Sie vorsichtig, die Benutzung dieser Option könnte
unerwartete Ergebnisse erzeugen, da die Reihenfolge der Abarbeitung der
Ressourcendateien eine wichtige Größe hinsichtlich der Handhabung der
`--export-text-variables' Option ist, so daß es nicht empfohlen werden
kann, diese Option zu benutzen.  Sie, der Benutzer, müssen sehr genau
wissen was Sie mit dieser Option bewirken wollen; *Sie seien nun
ausdrücklich gewarnt!*

Der Gültigkeitsbereich der Definitionen, welche auf eine lokale
Textvariable durchgeführt werden, erstreckt sich auf die
Ressourcendatei oder die eingefügte Datei, in welcher die lokale
Textvariable definiert wurde.

Falls Redefinitionen einer globalen Textvariable in einer
Ressourcendatei oder in derjenigen Datei, die in diese eingefügt wird,
durchgeführt werden, so sind diese Definitionen nur in dieser
entsprechenden Datei gültig (diese werden nur lokal ausgeführt),
nicht in weiteren Ressourcendateien, welche verarbeitet werden.  Das
bedeutet, daß die Initialwerte der globalen Textvariablen stets
restauriert werden, falls die zu verarbeitende Ressourcendatei wechselt.

Bitte beachten Sie abschließend, daß jede Zuweisung an eine
Textvariable in einer separaten Zeile der Ressourcendatei erfolgen muß.


File: gcal.info,  Node: Ressourcendateibeispiele,  Prev: Ressourcendatei,  Up: Terminwarnungen

Ressourcendateibeispiele
========================

Um einen konkreten Eindruck von den Einsatzmöglichkeiten aller die
Terminwarnungen betreffenden Eigenschaften von Gcal zu erhalten, folgen
nun einige Beispiele problembezogener Ressourcendateien.

Zunächst ein ganz allgemeines Beispiel:

     ; Das ist ein allgemeines Beispiel einer Ressourcendatei.
     ;
     19940715 Uhrzeit: %t --> Zahnarzttermin um 10:00 Uhr
     00000921 Mein %b1962 Geburtstag%s1962 %e2062
     0000093 Die~Gregorianische Reformation\~war vor %y1582 Jahren
     0000Sep03 Die~Gregorianische Reformation\~war vor %y1582 Jahren
     0 Jeder Tag in jedem Monat in jedem Jahr
     0000 Jeder Tag in jedem Monat in jedem Jahr
     00000000 Jeder Tag in jedem Monat in jedem Jahr
     199400fre        Immer Freitags 1994
     000007mo3 Jeder dritte Montag im Juli~jeden Jahres kleiner 1980%e1979
     0000@e-10 Ostersonntag-10 Tage in jedem Jahr
     0@e-10 Ostersonntag-10 Tage in jedem Jahr
     00000000@e+10 Ostersonntag+10 Tage in jedem Jahr
     a=1127
     0@a+20 20 Tage nach dem Datum der Datumvariablen `a'
     a=*W10FR
     0@a-1 Der Donnerstag der 10'ten ISO-Woche in jedem Jahr
     0@a   Der Freitag der 10'ten ISO-Woche in jedem Jahr
     0@a1  Der Samstag der 10'ten ISO-Woche in jedem Jahr
     1995*d10    Der 10'te absolute Tag in 1995
     1995*d99die Der letzte Dienstag in 1995
     0*w99so Der Sonntag der letzten ISO-Woche in jedem Jahr
     ;
     ; Der folgende Eintrag wird von ALLEN
     ;   Terminwarnungszeitraum-Modifizierern verarbeitet.
     ;
     1994*d1sun#SON.7 Jeder Sonntag in 1994
     ;
     ; Buss- und Bettag ist der Mittwoch vor dem Sonntag,
     ;   der vor dem 1'ten Adventssonntag liegt.
     ;
     a=1225
     a=a-5so
     0@a-4 Buss- und Bettag

Und hier eine Ressourcendatei mit dem Dateinamen `demo3.rc', mit der
alle Freitage bestimmt werden können, die auf den 13'ten Tag eines
Monats fallen:

     $a=Freitag der 13'te%s0000
     $b= %e0000
     $c=fr2
     $d=fr3
     00000113 $a01$c$b01$c
     00000113 $a01$d$b0$1d
     00000213 $a02$c$b02$c
     00000213 $a02$d$b02$d
     00000313 $a03$c$b03$c
     00000313 $a03$d$b03$d
     00000413 $a04$c$b04$c
     00000413 $a04$d$b04$d
     00000513 $a05$c$b05$c
     00000513 $a05$d$b05$d
     00000613 $a06$c$b06$c
     00000613 $a06$d$b06$d
     00000713 $a07$c$b07$c
     00000713 $a07$d$b07$d
     00000813 $a08$c$b08$c
     00000813 $a08$d$b08$d
     00000913 $a09$c$b09$c
     00000913 $a09$d$b09$d
     00001013 $a10$c$b10$c
     00001013 $a10$d$b10$d
     00001113 $a11$c$b11$c
     00001113 $a11$d$b11$d
     00001213 $a12$c$b12$c
     00001213 $a12$d$b12$d

Für die Jahre 1996...2002 ist das Ergebnis wie folgt:

     $ gcal -H no -u -x -f ./demo3.rc 1996+2002
     -|
     -| Fr,  13 Sep 1996: Freitag der 13'te
     -| Fr,  13 Dez 1996: Freitag der 13'te
     -|
     -| Fr,  13 Jun 1997: Freitag der 13'te
     -|
     -| Fr,  13 Feb 1998: Freitag der 13'te
     -| Fr,  13 Mae 1998: Freitag der 13'te
     -| Fr,  13 Nov 1998: Freitag der 13'te
     -|
     -| Fr,  13 Aug 1999: Freitag der 13'te
     -|
     -| Fr,  13 Okt 2000: Freitag der 13'te
     -|
     -| Fr,  13 Apr 2001: Freitag der 13'te
     -| Fr,  13 Jul 2001: Freitag der 13'te
     -|
     -| Fr,  13 Sep 2002: Freitag der 13'te
     -| Fr,  13 Dez 2002: Freitag der 13'te

Oder eine etwas kürzere Version der Ressourcendatei `demo3.rc' mit dem
Dateinamen `demo4.rc', mit der ebenfalls alle Freitage bestimmt werden
können, die auf den 13'ten Tag eines Monats fallen:

     $a=Freitag der 13'te ist am %n+12%s0000
     $b= %e0000
     $c=so1
     00000101 $a01$c$b01$c
     00000201 $a02$c$b02$c
     00000301 $a03$c$b03$c
     00000401 $a04$c$b04$c
     00000501 $a05$c$b05$c
     00000601 $a06$c$b06$c
     00000701 $a07$c$b07$c
     00000801 $a08$c$b08$c
     00000901 $a09$c$b09$c
     00001001 $a10$c$b10$c
     00001101 $a11$c$b11$c
     00001201 $a12$c$b12$c

Für die Jahre 1996...2002 ist das Ergebnis wie folgt:

     $ gcal -H no -u -x -f ./demo4.rc 1996+2002
     -|
     -| So,   1 Sep 1996: Freitag der 13'te ist am 13-Sep-1996
     -| So,   1 Dez 1996: Freitag der 13'te ist am 13-Dez-1996
     -|
     -| So,   1 Jun 1997: Freitag der 13'te ist am 13-Jun-1997
     -|
     -| So,   1 Feb 1998: Freitag der 13'te ist am 13-Feb-1998
     -| So,   1 Mae 1998: Freitag der 13'te ist am 13-Mae-1998
     -| So,   1 Nov 1998: Freitag der 13'te ist am 13-Nov-1998
     -|
     -| So,   1 Aug 1999: Freitag der 13'te ist am 13-Aug-1999
     -|
     -| So,   1 Okt 2000: Freitag der 13'te ist am 13-Okt-2000
     -|
     -| So,   1 Apr 2001: Freitag der 13'te ist am 13-Apr-2001
     -| So,   1 Jul 2001: Freitag der 13'te ist am 13-Jul-2001
     -|
     -| So,   1 Sep 2002: Freitag der 13'te ist am 13-Sep-2002
     -| So,   1 Dez 2002: Freitag der 13'te ist am 13-Dez-2002

Und hier eine Ressourcendatei mit dem Dateinamen `demo5.rc', mit der
alle Werktage eines beliebigen Monats bestimmt werden können:

     $a=Werktag
     $c=%e0000$b99
     a=$bmo1
     0@a#+4 $a
     a=$bdi1
     0@a#+3 $a
     a=$bmi1
     0@a#+2 $a
     a=$bdo1
     0@a#+1 $a
     a=$bfr1
     0@a $a
     a=$bmo2
     0@a#+4 $a
     a=$bmo3
     0@a#+4 $a
     a=$bmo4
     0@a#+4 $a$c
     a=$bmo9
     0@a#+4 $a$c

Beziehungsweise eine etwas kürzere Version der Ressourcendatei
`demo5.rc':

     $a=Werktag
     $c=%e0000$b99
     0000$bmo1:5 $a
     0000$bdi1:4 $a
     0000$bmi1:3 $a
     0000$bdo1:2 $a
     0000$bfr1:1 $a
     0000$bmo2:5 $a
     0000$bmo3:5 $a
     0000$bmo4:5 $a$c
     0000$bmo9:5 $a$c

Und es existiert eine Ressourcendatei mit dem Namen `include.rc', die
nur zur Einfügung einer beliebigen Ressourcendateien gedacht ist:

     #include "$f"

Dann ist das Ergebnis für den Monat Februar 1996 wie folgt:

     $ gcal -H no -u -x -r '$b=02:$f=demo5.rc' -f ./include.rc feb 1996
     -|
     -| Do,   1 Feb 1996: Werktag
     -| Fr,   2 Feb 1996: Werktag
     -| Mo,   5 Feb 1996: Werktag
     -| Di,   6 Feb 1996: Werktag
     -| Mi,   7 Feb 1996: Werktag
     -| Do,   8 Feb 1996: Werktag
     -| Fr,   9 Feb 1996: Werktag
     -| Mo,  12 Feb 1996: Werktag
     -| Di,  13 Feb 1996: Werktag
     -| Mi,  14 Feb 1996: Werktag
     -| Do,  15 Feb 1996: Werktag
     -| Fr,  16 Feb 1996: Werktag
     -| Mo,  19 Feb 1996: Werktag
     -| Di,  20 Feb 1996: Werktag
     -| Mi,  21 Feb 1996: Werktag
     -| Do,  22 Feb 1996: Werktag
     -| Fr,  23 Feb 1996: Werktag
     -| Mo,  26 Feb 1996: Werktag
     -| Di,  27 Feb 1996: Werktag
     -| Mi,  28 Feb 1996: Werktag
     -| Do,  29 Feb 1996: Werktag

Und abschließend eine Ressourcendatei mit dem Namen `swtime.rc', die
Terminwarnungen für den Zeitraum zwei Tage vor bis zwei Tage nach
Umstellung auf Sommerzeit/Winterzeit (ab 1980) für die Bundesrepublik
Deutschland bewirkt:

     ;
     ; `swtime.rc'; Sommerzeit/Winterzeit BRD
     ;
     $a=zeitumstellung am Sonntag
     ;
     a=03so9
     0@a-2#+2 Sommer$a~+1 Std. (02.00 --> 03.00 Uhr)%s1980
     ;
     a=09so9
     0@a-2#+2 Winter$a~-1 Std. (03.00 --> 02.00 Uhr)%s1980 %e1995
     ;
     a=10so9
     0@a-2#+2 Winter$a~-1 Std. (03.00 --> 02.00 Uhr)%s1996

