Diese Datei beschreibt Gcal, ein Programm um Kalender auszugeben.  Gcal
gibt Monatskalender und Jahreskalender, ewige Feiertagslisten sowie
Terminlisten auf viele verschiedene Arten und Weisen aus.  Es
bercksichtigt diejenigen Daten korrekt, welche bergangen wurden, als
der derzeitig gltige Gregorianische Kalender den vormals gltigen
Julianischen Kalender ablste.

Copyright (C) 1994, 1995, 1996, 1997 Thomas Esken

Das ist die zweite 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, vernderte Kopien dieses Handbuchs
wie unter den Bedingungen fr wortgetreue Kopien zu erstellen und zu
vertreiben, sofern die ausgefhrten Arbeiten in Ableitung und Gesamtheit
innerhalb der Bestimmungen eines Genehmigungsvermerks liegen und zudem
mit diesem ausgestattet sind, welcher mit diesem hier identisch ist.

Hiermit wird die Erlaubnis erteilt, wie unter den vorgenannten
Bedingungen fr vernderte 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 Vorschlge, Verbesserungen, Erweiterungen, Fehlerberichte, Geld-
und Sachspenden, Programmierauftrge usw. sind stets willkommen.  Bitte
senden Sie diese direkt an meine eMail Adresse.  Wenn Sie dieses
Werkzeug mgen, so wrde ich mich sehr ber eine Postkarte von Ihnen
freuen!

------------------------oOO      \\\_''/      OOo---------------------------
Thomas Esken               O     (/o-o\)     O  eMail: esken@uni-muenster.de
Im Hagenfeld 84                 ((  ^  ))       Phone: +49 251 232585
D-48147 Muenster; Germany    \____) ~ (____/    MotD : 2old2live, 2young2die

Gcal
****

Gcal ist ein Programm um Kalender auszugeben.  Gcal gibt Monatskalender
und Jahreskalender, ewige Feiertagslisten sowie Terminlisten auf viele
verschiedene Arten und Weisen aus.  Es bercksichtigt diejenigen Daten
korrekt, welche bergangen wurden, als der derzeitig gltige
Gregorianische Kalender den vormals gltigen Julianischen Kalender
ablste.

Das ist die Ausgabe 2.40 der Gcal Dokumentation vom 06 Mai 1997, fr
Gcal 2.40.

Jedwede Vorschlge, Verbesserungen, Erweiterungen, Fehlerberichte, Geld-
und Sachspenden, Programmierauftrge usw. sind stets willkommen.  Bitte
senden Sie diese direkt an meine eMail Adresse.  Wenn Sie dieses
Werkzeug mgen, so wrde ich mich sehr ber eine Postkarte von Ihnen
freuen!

------------------------oOO      \\\_''/      OOo---------------------------
Thomas Esken               O     (/o-o\)     O  eMail: esken@uni-muenster.de
Im Hagenfeld 84                 ((  ^  ))       Phone: +49 251 232585
D-48147 Muenster; Germany    \____) ~ (____/    MotD : 2old2live, 2young2die

Einleitung
**********

Neben den blichen und altbekannten Kalenderfunktionen wie der Ausgabe
eines Monatskalenderblatts oder eines Jahreskalenderblatts, oder der
Ausgabe einer ewigen Feiertagsliste, bietet Gcal die Mglichkeit,
Termine am Tag ihres Auftretens auszugeben, und so den Benutzer auf
einen Termin hinzuweisen.  So ist es vorstellbar, da beim Starten des
Computers oder der Arbeitssitzung dem Benutzer von Gcal alle Termine,
welche an diesem Tag wahrzunehmen sind, am Bildschirm aufgezeigt oder
via elektronischer Post zugesandt werden.

Der Zeitraum, fr welchen Gcal anfallende Termine bercksichtigt, kann
vom Benutzer frei vorgewhlt werden.  So knnen Termine, die sich z.B.
auf den morgigen Tag beziehen, ebenso wie Termine, die in der gesamte
Woche, dem gesamten Monat oder dem gesamten Jahr auftreten, von Gcal
ausgegeben werden.  Termine, die an einem bestimmten Tag des Jahres
auftreten, werden ebenso wie Termine, die relativ zu einem anderen,
vorgegebenen Datum auftreten, von Gcal ausgegeben; entweder nur bezogen
auf dieses Einzeldatum oder als Terminliste, beginnend bei einem
Startdatum und endend am aktuellen Tag (1).

Es bestehen zwei Mglichkeiten, eine Terminvorschau (2) oder eine
Terminrckschau (3) vorzunehmen.  So kann Gcal einerseits mittels einer
Option, welche das vom Computer gelieferte aktuelle Systemdatum fr den
Augenblick des Gcal-Programmlaufs auf ein vorgegebenes Datum setzt,
verwendet werden, um eine Terminvorschau bzw. Terminrckschau so
vorzunehmen, als ob das Systemdatum tatschlich eben dieses vorgegebene
Datum wre, so da der zu bercksichtigende Zeitraum via Option vom
Benutzer beliebig vorgegeben werden kann.  Andererseits kann mittels
eines Kommandos veranlat werden, anstelle des aktuellen Jahres ein
anderes Jahr zu bercksichtigen, so da Gcal anfallende Termine fr
eben dieses andere Jahr ausgibt.  Das hat allerdings zur Folge, da der
vorgewhlte Zeitraum nicht mehr via Option vom Benutzer beliebig
gesetzt werden kann, sondern sich in diesem Fall stets auf das gesamte
Jahr bezieht.

Gcal vermag nicht nur Termine auszugeben, die fr ein konkretes Datum
gespeichert wurden, z.B. `Termin am 1'ten Dezember 1995', sondern auch
Termine, die in bestimmten Abstnden immer wieder auftreten.  So ist es
mglich, wiederkehrende Termine wie z.B. `Dieser Termin findet an allen
Tagen im Monat Mai 1995 statt' oder `Immer am 15'ten November eines
jeden Jahres' zu vereinbaren.  Diese Terminvereinbarungen werden in
sogenannten Ressourcendateien gespeichert, und bei Programmaufruf kann
Gcal via Option mitgeteilt werden, welche Ressourcendateien auszuwerten
sind.

Einmal fr sinnvoll erachtete Aufrufe von Gcal knnen hinsichtlich der
an das Programm bergebenen Kommandozeilenargumente dauerhaft in einer
sogenannten Antwortdatei oder in einer shell script Datei gespeichert
werden.  Eine Antwortdatei enthlt ebenso wie eine shell script Datei
alle Argumente, die an Gcal zur Verarbeitung bergeben wurden, nur ist
eine solche Antwortdatei nicht eigenstndig ablauffhig.  Wenn bei
einem erneuten Aufruf von Gcal der Name dieser automatisch erzeugten
Antwortdatei via Option bergeben wird, so liest Gcal den Inhalt dieser
Antwortdatei ein und behandelt diesen so, als ob dieser in der
Kommandozeile angegeben wre.  Im Gegensatz dazu wird bei Aufruf einer
shell script Datei das Gcal Programm direkt mit den in der shell script
Datei gespeicherten Argumenten sowie den zustzlich in der
Kommandozeile angegebenen Argumenten ausfhrt.

Um einen konkreten Eindruck von den weiteren Mglichkeiten des Gcal
Programms zu erhalten, werden im nchsten Kapitel alle verwendbaren
Kommandozeilenargumente sowie deren Bedeutung vorgestellt.

  ---------- Fussnoten ----------

  (1)  Einschlielich oder ausschlielich.

  (2)  Termine zuknfiger Jahre.

  (3)  Termine vergangener Jahre.

Aufruf von `gcal'
*****************

Gcal ist ein kommandozeilenorientiertes Programm.  Es wird blicherweise
vom Kommandointerpretierer des Betriebssystems aus aufgerufen (1), und
verarbeitet die ihm bergebenen Argumente, welche Optionen und
Kommandos sind.  Optionen mssen vor Kommandos angegeben werden, d.h.
Gcal mu auf folgende Art und Weise aufgerufen werden:

           gcal [ [OPTION...] [%DATUM] [@DATEI...] ]  [KOMMANDO]


Wenn Gcal ohne entsprechende Optionen aufgerufen wird bzw. kein Kommando
angegeben wird, so wird ein Kalender des laufenden Monats ausgegeben.
Wenn der Kalender eines bestimmten Jahres ausgegeben werden soll, so
mu das Jahr vollstndig angegeben werden, z.B. `gcal 94' wrde nicht
den Jahreskalender von 1994 ausgeben, sondern den Jahreskalender des
Jahres 94.

Werden zwei Argumente als Kommando angegeben, so bezieht sich das
*erste* Argument auf den Monat, und das *zweite* Argument auf das Jahr.
Werden beim Aufruf fehlerhafte Kommandos angegeben, so wird die
Programmausfhrung unter Benutzung interner Grundeinstellungen von Gcal
vorgenommen.

In der deutschen Programmversion wird angenommen, da die Gregorianische
Reformation am 5'ten Oktober 1582 stattgefunden hat.  *Siehe
Entstehungsgeschichte des Gregorianischen Kalenders: Heutiger Kalender,
und *Siehe Gesichtspunkte zur Internationalisierung:
Internationalisierung, fr weitere Details.

  ---------- Fussnoten ----------

  (1)  Im Englischen mit "shell" bezeichnet; dieses
Betriebssystemprogramm interpretiert Kommandozeilen und fhrt diese aus.

Kommandozeilenargumente
=======================

Dieses Kapitel beschreibt alle Argumente der Kommandozeile, die von
Gcal verarbeitet werden.  Es gibt insgesamt vier verschiedene Typen von
Kommandozeilenargumenten.  Ein wichtiger Typ von Argumenten sind die
"Optionen", welche verschiedene Verhaltensweisen bei Gcal auslsen.
Andere Argumenttypen sind die `%DATUM' und die `@DATEI' Option.  Die
`%DATUM' Option setzt den Zeitraum, welcher von Gcal bercksichtigt
werden soll, auf ein vorbestimmtes Startdatum; die `@DATEI' Option ldt
Optionen und Kommandos aus einer Antwortdatei vor.  Die wichtigsten
Argumente sind die "Kommandos", welche die Zeitrume kontrollieren, die
von Gcal bercksichtigt werden.

Eine Option wird durch ein fhrendes Umschaltzeichen (1) definiert;
entweder das `-' oder das `/' Zeichen bei traditionellen Kurzoptionen,
oder zwei `--' bei den mnemotechnischen Langoptionen; einem Kommando
darf kein Umschaltzeichen vorangehen.  Optionen (2) *mssen* vor
Kommandos angegeben werden!

Abhngig vom benutzten Betriebssystem bzw. der shell kann es sein, da
einige der in der Kommandozeile angegebenen Argumente und Texte durch
`"' oder `'' Zeichen quotiert, bzw. durch das `\' Zeichen gegen die
Auswertung durch die shell geschtzt bzw. entwertet werden mssen.

Hier folgt eine unvollstndige Liste von Zeichen, die eventuell
geschtzt werden mssen:

     `(', `)', `<', `>', `[', `]', `{', `}', `\', `|', `$', `@', `!',
     `&', `~', `"', `'', ``', `;'

  ---------- Fussnoten ----------

  (1)  Im Englischen mit *switch* Zeichen bezeichnet.

  (2)  Inklusive `%DATUM' und `@DATEI'.

Optionen
--------

Die Optionen, welche von Gcal verarbeitet werden, knnen in vier
Hauptklassen unterteilt werden.  Die Optionen der "Allgemeinen
Optionsklasse" sind die Standardoptionen, welche jede GNU Software
wenigstens teilweise aufweisen sollte.  Die "Globale Optionsklasse"
enthlt Optionen, welche die vom Programm erzeugte Ausgabe
beeinflussen.  Die Optionen der "Kalender Optionsklasse" steuern das
Kalender Layout, und die Optionen der "Termin Optionsklasse"
kontrollieren das Layout der Termine und deren Intensitt.

Gcal ist in der Lage, Kurzoptionen sowie auch GNU Langoptionen zu
verarbeiten.  Kurzoptionen werden von einem einzelnen Umschaltzeichen
angefhrt, sodann folgt ein Optionszeichen und evtl. ein Modifizierer
oder ein Argument.  Die meisten Einzelzeichenoptionen (1) knnen zu
einem einzelnen Kommandozeilenwort zusammengefat werden: `-Ax' ist
gleichwertig zu `-A -x'.  GNU Langoptionen werden von `--' Zeichen
angefhrt, sodann folgt ein Optionsname und evtl. ein Argument.
Langoptionen sowie deren Argumente drfen abgekrzt werden, sofern die
vorgenommene Abkrzung eindeutig ist.  Wenn ein Argument an eine
Langoption bergeben werden soll, so werden der Optionsname und das
Argument mit einem `=' Zeichen verbunden.

Eckige Klammern ([ und ]) deuten in den nachfolgenden Aufstellungen an,
da eine Option ein optionales Argument annimmt.  Das `|' Zeichen wird
dazu benutzt, um mehrere zur Auswahl stehende Argumente voneinander
abzugrenzen.

Gcal verarbeitet GNU Langoptionen in einem besonderen, nicht
standardgemen Weg.  So unterscheidet das Programm fnf verschiedene
Typen von Langoptionen:

  1. `--foo'
     Schaltet die `--foo' Option an.

  2. `--foo=BAR'
     Schaltet die `--foo' Option mit dem bentigtem BAR Argument an.

  3. `--foo[=BAR[|...|BAR]]'
     Die `--foo' Option darf ein BAR Argument annehmen.  Falls keine
     Argumentliste gegeben ist, so darf diese Option jedes Argument
     annehmen.  Wenn aber doch eine Argumentliste gegeben ist, so darf
     diese Option genau ein Argument aus der gegebenen Liste annehmen.
     Falls in dieser Hinsicht kein Argument angewhlt wird, so wird
     automatisch das erste BAR Argument aus der Argumentliste
     angenommen.

  4. `--foo=BAR|...|BAR'
     Die `--foo' Option mu genau ein BAR Argument annehmen, welches
     aus der gegebenen Argumentliste angewhlt werden mu.

  5. `--foo=BAR|...|BAR|BAZ'
     Die `--foo' Option mu entweder genau ein BAR Argument annehmen,
     welches aus der gegebenen BAR Argumentliste angewhlt werden mu,
     oder alternativ das BAZ Argument annehmen.

Traditionelle Kurzoptionen unterscheiden sich wie folgt:

  1. `-x'
     Schaltet die `-x' Option an.

  2. `-x BAR'
     Schaltet die `-x' Option mit dem bentigtem BAR Argument an.  Das
     BAR Argument darf durch ein fhrendes *whitespace* Zeichen von dem
     Kurzoptionszeichen `x' abgegrenzt werden.  Das bedeutet, da
     folgende Notationen zur Angabe eines Arguments verwendet werden
     knnen, nmlich `-x BAR' und `-xBAR'.

  3. `-x[BAR|...|BAR]'
     Die `-x' Option darf einen oder mehrere BAR "Modifizierer"
     annehmen.  Modifizierer in diesem Sinne sind ein oder mehrere
     Zeichen, welche einen speziellen Modus definieren, der durch die
     `-x' Option ausgelst wird.  Ein Modifizierer darf nicht durch ein
     fhrendes *whitespace* Zeichen vom Kurzoptionszeichen abgegrenzt
     werden.

  ---------- Fussnoten ----------

  (1)  Sofern diese kein Argument annehmen.

Allgemeine Optionen
...................

`-?'
`-h'
`--help'
     Ausgabe eines verdichteten Hilfetextes, der die meisten aller
     verfgbaren Optionen aufzeigt; sodann erfolgreiche Beendigung des
     Programms.

`-??'
`-hh'
`--usage[=ARGUMENT]'
`--long-help[=ARGUMENT]'
     Ausgabe eines erweiterten Hilfetextes, der alle verfgbaren
     Optionen aufzeigt; sodann erfolgreiche Beendigung des Programms.
     Falls ARGUMENT angegeben wird und ein zulssiger Langoptionsname
     ist, so wird nur ein erweiterter Hilfetext zu dem angegebenen
     Langoptionsnamen ausgegeben, z.B.:

          --long-help=long-help

     gibt einen erweiterten Hilfetext zur Langoption `--long-help' aus.

     Falls ARGUMENT nur aus einem einzelnen `?' Zeichen besteht oder
     kein gltiger Langoptionsname ist, so wird eine Liste aller
     zulssigen Langoptionsnamen ausgegeben.

`-L'
`--license'
`--copyleft'
`--copyright'
     Ausgabe des Software-Lizenztextes; sodann erfolgreiche Beendigung
     des Programms.

`-V'
`--version'
     Ausgabe der Versionsnummer und der Kompilations-Optionen; sodann
     erfolgreiche Beendigung des Programms.

`--exit-status-help-127'
     Setzt den Endestatus des Programms auf 127 anstatt auf 0, wenn
     eine der anderen Optionen der *Allgemeinen Optionsklasse* benutzt
     wurde.

Globale Optionen
................

`-R DATEINAME'
`--response-file=DATEINAME'
     Inhalt der Umgebungsvariable `GCAL' (*siehe GCAL:
     Umgebungsvariablen.), und sodann die Argumente der Kommandozeile
     (in genau dieser Reihenfolge) in die Datei DATEINAME schreiben,
     d.h. Antwortdatei `Dateiname' erzeugen.  *Siehe Antwortdatei::, fr
     weitere Details.

`-S DATEINAME'
`--shell-script=DATEINAME'
     Inhalt der Umgebungsvariable `GCAL' (*siehe GCAL:
     Umgebungsvariablen.), und sodann die Argumente der Kommandozeile
     (in genau dieser Reihenfolge) in die shell script Datei DATEINAME
     schreiben, d.h. shell script `Dateiname' erzeugen.  Eine
     automatisch erzeugte shell script Datei ist eigenstnding
     ablauffhig und ruft Gcal direkt mit den im Script gespeicherten
     Argumenten auf.  Beim Aufruf der shell script Datei drfen weitere
     Kommandozeilenargumente gegeben werden, welche dann zudem an Gcal
     bermittelt werden.

`--debug[=internal|handled|unhandled|all|abort]'
     Einige Debug-Informationen ausgeben.

    `--debug=internal'
          Informationstext bei Erreichen programminterner Maxima bzw.
          bei Auftreten sonstiger Bedingungen ausgeben.

    `--debug=handled'
          Wie `--debug=internal', zudem werden die Dateinamen
          ausgegeben, die gehandhabt werden.

    `--debug=unhandled'
          Wie `--debug=internal', zudem werden die Dateinamen
          ausgegeben, die nicht gehandhabt werden.

    `--debug=all'
          Wie `--debug=handled' und `--debug=unhandled' zusammen.

    `--debug=abort'
          Wie `--debug=all', und Abbruch mit Fehlerkode beim ersten
          Auftreten eines nicht gehandhabten Dateinamens bzw. beim
          Auftreten sonstiger, nicht erfllbarer Bedingungen.  *Siehe
          Fehlerkodes::.

`-p'
`--pager'
     Smtliche Ausgaben von Gcal entweder durch einen *externen*
     Paginierer oder durch einen einfachen, *internen* Paginierer
     lenken.  Falls eine `PAGER' Umgebungsvariable gesetzt ist, so wird
     deren Wert zum Auffinden des externen Paginiererprogramms
     bercksichtigt.  *Siehe PAGER: Umgebungsvariablen, fr weitere
     Informationen.

     Falls keine `PAGER' Umgebungsvariable gesetzt ist oder aber deren
     Wert ungltig ist, so versucht Gcal den `less' Paginierer zu
     benutzen; falls dieses Programm aber whrend des Absuchens des
     Dateibaums unter Zuhilfenahme der `PATH' Umgebungsvariable nicht
     vorgefunden wird, so wird Gcal versuchen, das `more'
     Paginiererprogramm, wenn dieses nicht gefunden wird, das `pg'
     Paginiererprogramm in gleicher Weise aufzuspren (1).  *Siehe PATH:
     Umgebungsvariablen.

     Falls alle diese Aktionen versagt haben sollten, so wird Gcal einen
     einfachen, eingebauten Paginierer benutzen.  Wenn der einfache,
     interne Paginierer benutzt wird, so ermittelt Gcal die Anzahl der
     Zeilen, welche vor einer Eingabeaufforderung des internen
     Paginierers ausgegeben werden, nach folgenden Methoden:

       1. Gcal benutzt die Werte, die in den Umgebungsvariablen `LINES'
          und `COLUMNS' angegeben sind.  *Siehe LINES:
          Umgebungsvariablen, und *Siehe COLUMNS: Umgebungsvariablen,
          fr weitere Informationen.

       2. Falls vorherige Aktion versagt, so benutzt Gcal die Werte,
          die in den Umgebungsvariablen `LI' und `CO' angegeben sind.
          *Siehe LI: Umgebungsvariablen, sowie *Siehe CO:
          Umgebungsvariablen, fr weitere Informationen.

       3. Falls vorherige Aktion versagt, so benutzt Gcal die Werte,
          die in der `termcap' (2) Datei fr das verwendete Sichtgert
          vorgefunden werden (*siehe TERM: Umgebungsvariablen.).  Dieser
          Schritt wird nur auf Systemen ausgefhrt, welche die
          Benutzung von Termcap untersttzen.

          Unter MS-DOS, OS/2 und einigen anderen Betriebssystemen
          benutzt Gcal eine systemabhngige *low-level* Funktion, und
          benutzt die Werte, die von dieser geliefert werden.

       4. Falls alle vorherigen Aktionen fehlschlagen, so benutzt Gcal
          Standardwerte (3).

`-H yes'
`--force-highlighting'
`--highlighting=yes'
     Falls die Ausgabe des Programms "redirektioniert" (4) wird, oder
     in einer "pipe" (5) benutzt wird, so werden Hervorhebungssequenzen
     *nicht* automatisch in die entsprechenden Markierungszeichen
     umgesetzt, sondern unverndert ausgegeben.  Diese Option hat keine
     Wirkung, wenn die Ausgabe des Programms mittels elektronischer
     Post versandt wird.  *Siehe `--mail=ADRESSE': Globale Optionen.

`-H no'
`--disable-highlighting'
`--highlighting=no'
     Hervorhebungssequenz-/ Markierungszeichen Paare von aktuellen
     Tagen, Feiertagen bzw. Text unterdrcken.

`-H TEXT'
`--highlighting=TEXT'
     Setze Hervorhebungssequenz / Markierungszeichen Paare explizit.
     "Hervorhebungssequenzen" in diesem Sinne sind Folgen von
     Steuerzeichen, die eine Farbumschaltung oder eine
     Intensittsumschaltung von auszugebendem Text bewirken.  Typische
     Steuerzeichenfolgen sind die sogenannten ANSI Escape-Sequenzen,
     welche als erstes Zeichen der Sequenz ein Escape Zeichen
     aufweisen, und danach weitere Zeichen, die die Art der ANSI
     Escape-Sequenz definieren.  "Markierungszeichen" in diesem Sinne
     sind einzelne, druckbare Zeichen, die dem auszugebenden Text
     vorangehen bzw. folgen.

     Das TEXT Argument mu ein durch `:' (Doppelpunkt) Zeichen
     abgegrenzter Text der Form
     SEQ1_START:SEQ1_ENDE:SEQ2_START:SEQ2_ENDE sein.  Die *erste*
     Sequenz wird dazu benutzt, um einen aktuellen Tag hervorzuheben,
     die *zweite* Sequenz hebt einen Feiertag hervor.  Die Sequenzen
     mssen in der Form eines Sequenzen-Paares angegeben werden;
     SEQ?_START schaltet die Hervorhebung/Markierung ein, SEQ?_ENDE
     schaltet sie wieder aus.  Es werden stets nur zwei Sequenzen-Paare
     bercksichtigt; falls mehr Sequenzen-Paare angegeben sind, so
     werden diese ignoriert.  Es drfen entweder nur
     Hervorhebungssequenzen-Paare oder nur Markierungszeichen-Paare
     definiert werden, d.h. eine gemischte Verwendung beider
     Hervorhebungsarten ist nicht erlaubt!

     Zum Beispiel:

          `-H \x20:\x20:\x1:#' bzw.
          `--highlighting=\x20:\x20:\x1:#'
          markiert den aktuellen Tag in der Form `\x20TAGESDATUM\x20'
          (6), und Feiertage in der Form `\x1FEIERTAGSDATUM#' mit den
          gegebenen Markierungszeichen.

          `-H \x1b[34;42m:\x1b[0;40m' oder
          `-H \033[34;42m:\033[0;40m' oder
          `-H \E[34;42m:\E[0;40m'
          definiert zum Hervorheben des aktuellen Tages die hier
          angegebene ANSI Escape-Startsequenz `\x1b[34;42m' und die
          ANSI Escape-Endesequenz `\x1b[0;40m'.  Da keine
          Hervorhebungssequenzen fr den Feiertag angegeben sind,
          werden die internen Grundeinstellungen der
          Hervorhebungssequenzen fr diesen verwendet.  Bitte beachten
          Sie in diesem Zusammenhang den letzten Absatz in diesem Text,
          welcher ber weitere Details informiert.  Und beachten Sie
          auch *Siehe GCALANSI: Umgebungsvariablen.

     Steuerzeichensequenzen drfen jedes druckbare Zeichen enthalten.
     Nicht druckbare Zeichen knnen oktal oder hexadezimal kodiert
     werden.  Die Abkrzung `\E' kodiert direkt das Escape Zeichen
     (oktal `\033' bzw. hexadezimal `\x1B').

     Ein Zeichen kann durch `\NNN' (Backslash-Oktalziffer(n)) oktal
     kodiert werden, wobei N eine gltige Oktalziffer (0...7) sein mu.
     Normalerweise mssen drei Oktalziffern angegeben werden.  Falls
     der oktale Zeichenkode nur aus einer oder zwei Oktalziffern
     besteht, so mssen fhrende Nullen hinzugefgt werden;
     ausgenommen, das kodierte Oktalzeichen wird zuletzt in einer
     Einzelsequenz angegeben.

     Ein Zeichen kann durch `\xNN' (Backslash-x-Hexadezimalziffer(n))
     hexadezimal kodiert werden, wobei N eine gltige Hexadezimalziffer
     (0...9A...Fa...f) sein mu.  Normalerweise mssen zwei
     Hexadezimalziffern angegeben werden.  Falls der hexadezimale
     Zeichenkode nur aus einer Hexadezimalziffer besteht, so mu eine
     fhrende Null hinzugefgt werden; ausgenommen, das kodierte
     Hexadezimalzeichen wird zuletzt in einer Einzelsequenz angegeben.

     Falls das Sequenzen-Trennzeichen, also das `:' (Doppelpunkt)
     Zeichen selbst als Markierungszeichen benutzt werden soll, so mu
     dieses Zeichen entweder oktal `\072' oder hexadezimal `\x3A'
     kodiert werden.

     Falls das C Preprocessorsymbol USE_PAGER definiert wurde, und die
     Ausgabe des Programms redirektioniert wird oder in einer pipe
     verwendet wird, so werden Hervorhebungssequenzen automatisch in
     die entsprechenden Markierungszeichen umgesetzt, falls USE_PAGER
     nicht definiert wurde, so bleiben Hervorhebungssequenzen
     unverndert.

     Unvollstndig oder garnicht angegebene Hervorhebungssequenzen
     werden durch intern fest voreingestellte ANSI
     Escape-Hervorhebungssequenzen ersetzt, falls eine `GCALANSI'
     Umgebungsvariable definiert ist, andernfalls vollstndig durch
     deren entsprechende Markierungszeichen ersetzt.  *Siehe GCALANSI:
     Umgebungsvariablen.

`--mail=ADRESSE'
     Versand der von Gcal erzeugten Ausgabe via `mail' (7) Programm an
     die angegebene ADRESSE, z.B.:

          --mail=esken@uni-muenster.de

     Alle von Gcal selbst erzeugten Hervorhebungssequenzen werden beim
     Versenden einer eMail stets unterdrckt bzw. automatisch in ihre
     entsprechenden Markierungszeichen umgesetzt, ganz gleich, ob die
     `--force-highlighting' Option angegeben wurde oder nicht.  Dieses
     Verhalten von Gcal ist deswegen zwingend erforderlich, da sonst
     das `mail' Programm den Versand der Post evtl. nicht korrekt
     vollziehen kann.  Beachten Sie bitte in diesem Zusammenhang auch
     die Hinweise hinsichtlich der Einschrnkungen im Textteil einer
     Zeile der Ressourcendatei (*siehe Textteil einer Zeile::.).

     Falls eine `MAILPROG' Umgebungsvariable definiert und gesetzt ist,
     so wird deren Inhalt als Programmname des Mailprogramms benutzt
     anstelle des Standard `mail' Programms.  *Siehe MAILPROG:
     Umgebungsvariablen, fr weitere Informationen.

  ---------- Fussnoten ----------

  (1)  Beachten Sie die Standard-Handbuchseiten zu `less', `more' und
`pg'.

  (2)  Beachten Sie die Standard-Handbuchseiten zu Termcap.

  (3)  Entweder 23 oder 24 Zeilen, und 80 Spalten.

  (4)  D.h. auf einen anderen Gertekanal umgelenkt wird.

  (5)  D.h. als Eingabedatenstrom fr ein weiteres Programm dient.

  (6)  D.h. mit vorangehendem und nachfolgendem Leerzeichen.

  (7)  Beachten Sie die Standard-Handbuchseiten zu `mail'.

Kalender Optionen
.................

`-n|N[-]'
`--holiday-list[=long|short]'
`--descending-holiday-list[=long|short]'
     Ausgabe der ewigen Feiertagsliste.  *Siehe Ewige Feiertage::, fr
     zustzliche Informationen.

    `-n'
    `--holiday-list=long'
          Aufsteigend sortierte Ausgabe der ewigen Feiertagsliste mit
          allen Feiertagen, d.h. den gesetzlichen Feiertagen und den
          Gedenktagen.

    `-n-'
    `--descending-holiday-list=long'
          Absteigend sortierte Ausgabe der ewigen Feiertagsliste mit
          allen Feiertagen, d.h. den gesetzlichen Feiertagen und den
          Gedenktagen.

    `-N'
    `--holiday-list=short'
          Aufsteigend sortierte Ausgabe der ewigen Feiertagsliste mit
          nur den gesetzlichen Feiertagen.

    `-N-'
    `--descending-holiday-list=short'
          Absteigend sortierte Ausgabe der ewigen Feiertagsliste mit
          nur den gesetzlichen Feiertagen.

`-X'
`--exclude-holiday-list-title'
     Die Ausgabe der berschrift in der ewigen Feiertagsliste
     unterdrcken.

`--without-standard-holidays'
     Die ewige Feiertagsliste wird ohne Standardfeiertage ausgestattet.
     Zudem werden auch in Kalenderblttern nicht mehr die Tage
     hervorgehoben, die standardmig in die ewige Feiertagsliste
     eingebracht und hervorgehoben werden.

`--christan-holidays'
     Die ewige Feiertagsliste wird zustzlich mit christlichen
     Feiertagen ausgestattet.  Zudem werden auch in Kalenderblttern
     die Tage hervorgehoben, die durch diese Option in die ewige
     Feiertagsliste eingebracht und hervorgehoben werden.

`-q CC[+...]'
`--cc-holidays=CC[+...]'
     Die ewige Feiertagsliste wird zustzlich mit landesspezifischen
     Feiertagen ausgestattet.  Zudem werden auch in Kalenderblttern
     die Tage hervorgehoben, die durch diese Option in die ewige
     Feiertagsliste eingebracht und hervorgehoben werden.

     Das CC Argument ist ein aus zwei Buchstaben bestehender
     Territoriums- oder Landeskode (1), wie er in der ISO-3166
     definiert ist, z.B. `GB' fr Grobritannien oder `US' fr die USA.
     Fr weitere Einzelheiten hierzu sei auf die einschlgige
     Fachliteratur verwiesen.

     Es kann mehr als ein Landeskode CC verwendet werden, wenn die
     zustzlichen Landeskodes, durch ein `+' Zeichen verbunden,
     aufgefhrt werden, z.B.:

          `--cc-holidays=ca+DE+fr+it' bzw.
          `-q ca+DE+fr+it'

     fgt alle diejenigen landesspezifischen Feiertage in die ewige
     Feiertagsliste ein, die in dem vorstehenden Argument aufgefhrt
     sind, d.h. kanadische, deutsche, franzsische und italienische
     Feiertage.

     Derzeit bercksichtigt Gcal die folgenden Landeskodes:

    `at'
          sterreich

    `au'
          Australien

    `be'
          Belgien

    `ca'
          Kanada

    `ch'
          Schweiz

    `cz'
          Tschechien

    `de'
          Deutschland

    `dk'
          Dnemark

    `es'
          Spanien

    `fi'
          Finnland

    `fr'
          Frankreich

    `gb'
          Grobritannien

    `gr'
          Griechenland

    `hu'
          Ungarn

    `it'
          Italien

    `mx'
          Mexiko

    `nl'
          Niederlande

    `no'
          Norwegen

    `pl'
          Polen

    `pt'
          Portugal

    `se'
          Schweden

    `si'
          Slowenien

    `th'
          Thailand

    `us'
          USA

`-i[-]'
`--type=special|standard'
     Um das "Standard" Kalenderformat zu erhalten, so sollte Gcal
     entweder ganz ohne die `-i[-]' Option aufgerufen werden, da diese
     voreingestellt ist.  *Siehe Gesichtspunkte zur
     Internationalisierung: Internationalisierung, fr weitere Details.
     Oder aber, um die Ausgabe eines Kalenderblatts zu erzwingen,
     sollte Gcal mit der `-i-' bzw. `--type=standard' Option aufgerufen
     werden:

          $ gcal -i-
          -|
          -| September 1994
          -|
          -| Montag           5 12 19 26
          -| Dienstag         6 13 20 27
          -| Mittwoch         7 14 21 28
          -| Donnerstag    1  8 15 22 29
          -| Freitag       2  9 16 23 30
          -| Samstag       3 10 17 24
          -| Sonntag       4 11 18 25

     Um das "Spezielle" Kalenderformat (2) zu erhalten, so sollte Gcal
     mit der `-i' Option bzw. mit der Option `--type=special' gestartet
     werden (3):

          $ gcal -i
          -|
          -|    September 1994
          -| Mo Di Mi Do Fr Sa So
          -|           1  2  3  4
          -|  5  6  7  8  9 10 11
          -| 12 13 14 15 16 17 18
          -| 19 20 21 22 23 24 25
          -| 26 27 28 29 30

`-O'
`--orthodox-calendar'
     Die Schaltjahrregel verwenden, die von den stlichen orthodoxen
     Kirchen benutzt wird.

     Ohne die Angabe der `--orthodox-calendar' Option ist Gcal unfhig,
     Gregorianische Jahre nach dem Jahre 2799 fr die stlichen
     orthodoxen Kirchen korrekt auszugeben, da diese ein anderes
     Rechenschema zur Ermittlung der Schaltjahre verwenden.  Die
     Methode zur Ermittlung der Schaltjahre im gewhnlichen
     Gregorianischen Kalender, die standardmig von Gcal verwendet
     wird, ist wie folgt:

          Ein Schaltjahr ist jedes Jahr, dessen Nummer ohne Rest durch
          4 geteilt werden kann, und Jahrhundertwenden sind keine
          Schaltjahre, wenn sie nicht ganzzahlig durch 400 geteilt
          werden knnen.

     Aber die stlichen orthodoxen Kirchen berechnen Schaltjahre
     innerhalb des Gregorianischen Kalenders mittels einer anderen
     Regel:

          Ein Schaltjahr ist jedes Jahr, dessen Nummer ohne Rest durch
          4 geteilt werden kann, und Jahrhundertwenden sind
          Schaltjahre, wenn sie durch 9 geteilt einen Divisionsrest von
          2 oder 6 aufweisen.

     Der erste Unterschied tritt demnach im Jahre 2800 auf, welches ein
     Schaltjahr im gewhnlichen Gregorianischen Kalender ist, aber im
     Kalender der stlichen orthodoxen Kirchen nur ein Gemeinjahr ist.

`-K'
`--with-week-number'
     Das Kalenderblatt mit ISO-8601:1988 Wochennummern ausstatten.

     *Bitte beachten:*
     Es werden die Methoden der ISO-8601:1988 zur Ermittlung der
     Wochennummern verwendet.  Das bedeutet, da eine Woche mit einem
     Montag beginnt, und die erste Woche des Jahres ist diejenige
     Woche, in welche der erste Donnerstag fllt, also gleich der Woche
     ist, in welcher der 4'te Januar auftritt.

     Sollte der Starttag der Woche nicht auf Montag gesetzt sein (*siehe
     `--starting-day=ARGUMENT': Kalender Optionen.), so werden die
     Wochennummern in den meisten Fllen nicht korrekt dargestellt.
     Sie sollten also darauf achten, da bei Verwendung dieser Option
     der Montag als Starttag der Woche gesetzt ist!  *Siehe
     Gesichtspunkte zur Internationalisierung: Internationalisierung,
     fr weitere Details.

`-u'
`--suppress-calendar'
     Die Ausgabe eines Kalenderblatts explizit unterdrcken.

`-b ANZAHL'
`--blocks=ANZAHL'
     Setzen der ANZAHL von Blcken, in die ein Jahreskalender
     unterteilt wird (zulssige Argumente: `1|2|3|4|6|12').  Die
     voreingestellte ANZAHL ist beim *Standard* Kalenderformat `-b 3'
     bzw. `--blocks=3', und beim *Speziellen* Kalenderformat `-b 4'
     bzw. `--blocks=4'.  Falls diese Option vorgefunden wird, so
     impliziert das Programm, da die Ausgabe eines Jahreskalenders
     gewnscht wird!

    `-b 1'
    `--blocks=1'
          Gibt einen Block mit allen zwlf Monaten aus.

    `-b 2'
    `--blocks=2'
          Gibt zwei Blcke mit je sechs Monaten aus.

    `-b 3'
    `--blocks=3'
          Gibt drei Blcke mit je vier Monaten aus.

    `-b 4'
    `--blocks=4'
          Gibt vier Blcke mit je drei Monaten aus.

    `-b 6'
    `--blocks=6'
          Gibt sechs Blcke mit je zwei Monaten aus.

    `-b 12'
    `--blocks=12'
          Gibt zwlf Blcke mit je einem Monat aus.

`-j[b]'
`--calendar-dates=special|both'
     Benutzen des alternativen Datumformats im Kalenderblatt anstelle
     des voreingestellten Standardformats, welches die laufenden Tage
     im Monat ausgibt.

    `-j'
    `--calendar-dates=special'
          Ausgabe des Kalenderblatts im speziellen Datumformat.
          Darunter ist zu verstehen, da anstelle der Folge der
          Tagesnummern der Monate die Folge der Tagesnummern des Jahres
          ausgegeben wird.

    `-jb'
    `--calendar-dates=both'
          Ausgabe des Kalenderblatts im Standard- und speziellem
          Datumformat.

`-jn[b]'
`--holiday-dates=special|both'
     Benutzen des alternativen Datumformats in ewiger Feiertagsliste
     anstelle des voreingestellten Standardformats, welches die
     laufenden Tage im Monat ausgibt.  *Siehe
     `--holiday-list[=long|short]': Kalender Optionen.

    `-jn'
    `--holiday-dates=special'
          Ausgabe der ewige Feiertagsliste im speziellen Datumformat.
          Darunter ist zu verstehen, da anstelle der Folge der
          Tagesnummern der Monate die Folge der Tagesnummern des Jahres
          ausgegeben wird.

    `-jnb'
    `--holiday-dates=both'
          Ausgabe der ewige Feiertagsliste im Standard- und speziellem
          Datumformat.

`-jc[b]'
`--fixed-dates=special|both'
     Benutzen des alternativen Datumformats in Terminliste anstelle des
     voreingestellten Standardformats, welches die laufenden Tage im
     Monat ausgibt.  *Siehe `--list-of-fixed-dates[=short|long]': Termin
     Optionen.

    `-jc'
    `--fixed-dates=special'
          Ausgabe der Terminliste im speziellen Datumformat.  Darunter
          ist zu verstehen, da anstelle der Folge der Tagesnummern der
          Monate die Folge der Tagesnummern des Jahres ausgegeben wird.

    `-jcb'
    `--fixed-dates=both'
          Ausgabe der Terminliste im Standard- und speziellen
          Datumformat.

`-s ARGUMENT'
`--starting-day=ARGUMENT'
     Setzen des Starttags der Woche
     (zulssiges ARGUMENT: `0, 1...7 | today | WOCHENTAGSNAME').

     Zum Beispiel:

          --starting-day=Sonntag oder
          --starting-day=7 oder
          -s SONNTAG oder
          -s sonnt oder
          -sSo oder
          -s 7

     bezeichnet den Sonntag (1==Mo, 2==Di ... 7==So).

     Wenn die `-s today' Option (bzw. die `--starting-day=today') oder
     die `-s 0' Option (bzw. die `--starting-day=0') vorgefunden wird,
     so wird der Starttag der Woche auf den gerade aktuellen Wochentag
     gesetzt, welchen das Systemdatum liefert.  *Siehe Gesichtspunkte
     zur Internationalisierung: Internationalisierung, fr weitere
     Details.

`--gregorian-reform=1582|1700|1752|1753|ARGUMENT'
     Setzen des Zeitraums, der bei der Gregorianischen Reformation
     bergangen wurde.  *Siehe Gesichtspunkte zur Internationalisierung:
     Internationalisierung, fr weitere Details.  Derzeit werden vier
     fest vorgegebene Zeitrume untersttzt, und zwar im Jahr 1582, im
     Jahr 1700, im Jahr 1752 und im Jahr 1753.

     Wird Gcal mit der `--gregorian-reform=1582' Option aufgerufen, so
     wird angenommen, da die Gregorianische Reformation vom 5'ten bis
     zum 14'ten Oktober 1582 stattgefunden hat.

     Wird Gcal mit der `--gregorian-reform=1700' Option aufgerufen, so
     wird angenommen, da die Gregorianische Reformation vom 19'ten bis
     zum 28'ten Februar 1700 stattgefunden hat.

     Wird Gcal mit der `--gregorian-reform=1752' Option aufgerufen, so
     wird angenommen, da die Gregorianische Reformation vom 3'ten bis
     zum 13'ten September 1752 stattgefunden hat.

     Wird Gcal mit der `--gregorian-reform=1753' Option aufgerufen, so
     wird angenommen, da die Gregorianische Reformation vom 18'ten bis
     zum 28'ten Februar 1753 stattgefunden hat.

     Soll ein anderer Zeitraum bercksichtigt werden, so kann dieser als
     ARGUMENT der Form `JJJJ,MM,STARTTAG,ENDETAG' vereinbart werden.
     Wenn die Gregorianische Reformation zum Beispiel vom 7'ten bis zum
     17'ten April 1802 stattgefunden hat, so kann das wie folgt
     vereinbart werden:

          --gregorian-reform=1802,4,7,17

     Bitte beachten Sie das es mglich ist, da die Kalender sowie die
     Terminfunktion (die nun auch in denjenigen Jahren korrekt
     funktioniert, in denen die Gregorianische Reformation
     stattgefunden hat) logisch verdorben werden, falls ARGUMENT nicht
     mit Sorgfalt verwandt wird.

`--date-format=de|us|gb|TEXT'
     Setzen des Datumformats, welches die Anordnung und Darstellung von
     einem ausgegebenen Datum beeinflut.  *Siehe Gesichtspunkte zur
     Internationalisierung: Internationalisierung, fr weitere Details.
     Der Datumformattext wird von Gcal in der ewigen Feiertagsliste,
     in der Terminliste und in den Kalenderblttern bercksichtigt;
     zudem versucht Gcal intern, stets die bestmglichste Darstellung
     von einem ausgegebenen Datum zu erzielen, wenn fortlaufende Tage
     des Jahres anstelle fortlaufender Tage des Monats ausgegeben
     werden sollen.

     Derzeit werden drei fest vorgegebene Datumformate untersttzt, und
     zwar fr deutsche Benutzer, US amerikanische Benutzer und Benutzer
     in Grobritannien.

     Wird Gcal mit `--date-format=de' aufgerufen, so wird der
     `%w,  %1%D%2 %b %y' Formattext benutzt.

     Wird Gcal mit `--date-format=us' aufgerufen, so wird der
     `%W, %b  %1%U%2 %y' Formattext benutzt.

     Wird Gcal mit `--date-format=gb' aufgerufen, so wird der
     `%W,  %1%U%2 %b %y' Formattext benutzt.

     Soll ein anderer Formattext bercksichtigt werden, so kann dieser
     entweder in der Umgebungsvariable `GCAL_DATE_FORMAT' angegeben
     werden (4), oder aber als Optionsargument TEXT vereinbart werden,
     z.B.:

          --date-format="%Y %D %m ; %1(%A)%2"

     Der Formattext kann alle von Gcal ausgebbare Zeichen enthalten,
     sowie Zeichenersatzangaben und Formatanweisungen, die zur Laufzeit
     in ihre entsprechenden Werte umgesetzt werden.  Ein minimaler
     Datumformattext mu Komponenten aus der Tag-Gruppe, der
     Monat-Gruppe, der Jahr-Gruppe und der Hervorhebung-Gruppe
     enthalten.  Eine Komponente aus der Wochentagsname-Gruppe ist
     optional.  Folgende Formatanweisungen und Zeichenersatzangaben
     werden gegenwrtig untersttzt:

     Tag-Gruppe (genau ein Mitglied mu definiert werden):

    `%d'
          Tageszahl mit fhrenden Nullen

    `%D'
          Tageszahl mit fhrenden Leerzeichen

    `%u'
          Tageszahl mit fhrenden Nullen und nachfolgendem
          Ordnungszahlanhang

    `%U'
          Tageszahl mit fhrenden Leerzeichen und nachfolgendem
          Ordnungszahlanhang

     Monat-Gruppe (genau ein Mitglied mu definiert werden):

    `%B'
          Vollstndiger Monatsname

    `%b'
          Abgekrzter Monatsname (3 Buchstaben)

    `%m'
          Monatszahl mit fhrender Null

    `%M'
          Monatszahl mit fhrendem Leerzeichen

     Jahr-Gruppe (genau ein Mitglied mu definiert werden):

    `%y'
          Vollstndige Jahreszahl mit fhrenden Nullen

    `%Y'
          Vollstndige Jahreszahl mit fhrenden Leerzeichen

    `%z'
          Letzten zwei Ziffern der Jahreszahl mit fhrender Null

    `%Z'
          Letzten zwei Ziffern der Jahreszahl mit fhrendem Leerzeichen

     Wochentagsname-Gruppe (ein Mitglied darf definiert werden):

    `%A'
          Vollstndiger Wochentagsname

    `%W'
          Abgekrzter Wochentagsname (3 Buchstaben)

    `%w'
          Abgekrzter Wochentagsname (2 Buchstaben)

     Hervorhebung-Gruppe (alle Mitglieder mssen definiert werden, und
     `%1' mu vor `%2' angegeben werden):

    `%1'
          Start von Hervorhebungssequenz / Markierungszeichen

    `%2'
          Ende von Hervorhebungssequenz / Markierungszeichen

     Zeichenersatzangaben:

    `_'
          Leerzeichen ` '

    `\_'
          Unterstrichzeichen `_'

    `\%'
          Prozentzeichen `%'

  ---------- Fussnoten ----------

  (1)  Im Englischen mit *country code* bezeichnet.

  (2)  hnlich dem des BSD-`cal' Programms.

  (3)  Auch hier wird die Ausgabe eine Kalenderblatts erzwungen.

  (4)  Allerdings wird `GCAL_DATE_FORMAT' nur dann benutzt, wenn keine
`--date-format=de|us|gb|TEXT' Option angegeben wird.

Termin Optionen
...............

`-v ARGUMENT'
`--date-variable=ARGUMENT'
     Definiere "globale" Datumvariable, welche in allen referenzierten
     Ressourcendateien sichtbar ist (*siehe Datumvariablen::.).  Das
     ARGUMENT mu entweder eine einzelne Datumvariablen-Definition oder
     eine durch `:' Doppelpunkt verbundene Folge von Definitionen sein.

     Der Name einer Datumvariablen DVAR besteht aus einem einzelnen
     Buchstaben (1), und wird in einer Definition von dem
     Zuweisungsoperator `=' gefolgt, sowie den Zahlenwerten fr Monat
     MM (oder einem Monatsnamen im 3-Buchstaben Kurzformat, z.B. `Jan',
     `Feb', ...) und Tag TT, welche diese Variable aufzunehmen hat (2).

     Zum Beispiel:

          `--date-variable=a=1127:c=a' bzw.
          `-v a=1127:c=a'
          speichert den 27'ten November in der globalen Datumvariablen A
          und in der globalen Datumvariablen C.

`--export-date-variables'
     Bewirkt den Export lokaler Datumvariablen von Ressourcendatei zu
     Ressourcendatei.  *Siehe Datumvariablen::, fr weitere Details.

`-r ARGUMENT'
`--text-variable=ARGUMENT'
     Definiere "globale" Textvariable, welche in allen referenzierten
     Ressourcendateien sichtbar ist (*siehe Textvariablen::.).  Das
     ARGUMENT mu entweder eine einzelne Textvariablen-Definition oder
     eine durch `:' Doppelpunkt verbundene Folge von Definitionen sein.

     Der Name einer Textvariablen TVAR besteht aus einem `$' Prfix und
     einem einzelnen Buchstaben (3), und wird in einer Definition von
     dem Zuweisungsoperator `=' gefolgt, sowie dem Text, welchen diese
     Variable aufzunehmen hat.  Eine globale Textvariable wird mit
     *leerem* Inhalt definiert, falls kein Text rechts des
     Zuweisungsoperators angegeben ist.

     Zum Beispiel:

          `--text-variable=$a=foo:$c=$a' bzw.
          `-r $a=foo:$c=$a'
          speichert den Text `foo' in der globalen Textvariablen $A und
          in der globalen Textvariablen $C.

     Falls das `:' Zeichen im Text als Zeichen selbst verwendet werden
     soll, so mu dieses durch ein fhrendes `\' (Backslash) Zeichen
     hinsichtlich seiner speziellen Bedeutung entwertet werden, z.B.
     `\:'.  Wenn die Zeichen `\:' im Text selbst als Zeichenfolge
     verwendet werden sollen, so mu das `\' (Backslash) Zeichen mit
     sich selbst geschtzt werden, z.B. `\\:'.

     Falls das `$' Zeichen im Text als Zeichen selbst verwendet werden
     soll, so mu dieses durch ein fhrendes `\' (Backslash) Zeichen
     hinsichtlich seiner speziellen Bedeutung entwertet werden, z.B.
     `\$'.  Wenn die Zeichen `\$' im Text selbst als Zeichenfolge
     verwendet werden sollen, so mu das `\' (Backslash) Zeichen mit
     sich selbst geschtzt werden, z.B. `\\$'.

     Jedesmal wenn ein `_' (Unterstrich) Zeichen in ARGUMENT vorgefunden
     wird, so wird dieses Zeichen durch ein echtes ` ' (Leerzeichen)
     Zeichen ersetzt.

     Falls das `_' (Unterstrich) Zeichen als Zeichen selbst verwendet
     werden soll, so mu dieses durch ein fhrendes `\' (Backslash)
     Zeichen hinsichtlich seiner speziellen Bedeutung entwertet werden,
     z.B. `\_'.  Wenn die Zeichen `\_' selbst als Zeichenfolge
     verwendet werden sollen, so mu das `\' (Backslash) Zeichen mit
     sich selbst geschtzt werden, z.B. `\\_'.

`--export-text-variables'
     Bewirkt den Export lokaler Textvariablen von Ressourcendatei zu
     Ressourcendatei.  *Siehe Textvariablen::, fr weitere Details.

`-D ARGUMENT'
`--filter-day=ARGUMENT'
     Gibt nur diejenigen Termine aus, welche nicht durch das angegebene
     ARGUMENT ausgeschlossen werden.  *Siehe Datumteil einer Zeile::,
     sowie ebenfalls *Siehe Ausschlieen ohne Argument `%?'
     Spezialtexte: Ausschliessen ohne Argument.  Das ARGUMENT besteht
     aus einem oder mehreren Zeichen, wie sie im Ausschlieen ohne
     Argument `%?' Spezialtext verwandt werden; allerdings ohne das
     jeweils anfhrende `%' Zeichen.

     So kann zum Beispiel Gcal dazu veranlat werden, eine
     Jahresbersicht nur derjenigen Termine aus der Datei `demo.rc'
     auszugeben, die auf gesetzliche Feiertage fallen, und zudem
     Samstage oder Sonntage sind:

          gcal -f demo.rc --year --filter-day=Rv

`-P ARGUMENT'
`--filter-period=ARGUMENT'
     Gibt nur diejenigen Termine aus, welche nicht durch das angegebene
     ARGUMENT ausgeschlossen werden.  *Siehe Datumteil einer Zeile::,
     sowie ebenfalls *Siehe Ausschlieen mit Datumargument `%?[DATUM]'
     Spezialtexte: Ausschliessen mit Datumargument.  Das ARGUMENT
     besteht aus einem oder mehreren Ausdrcken, wie sie im
     Ausschlieen mit Datumargument `%?[DATUM]' Spezialtext verwandt
     werden; allerdings ohne das jeweils anfhrende `%' Zeichen.  Es
     knnen mehrere dieser `%?[DATUM]' Ausdrcke angegeben werden, wenn
     diese durch ein `,' Zeichen verbunden werden.

     So kann zum Beispiel Gcal dazu veranlat werden, eine
     Jahresbersicht nur derjenigen Termine aus der Datei `demo.rc'
     auszugeben, die in den Zeitraum vom 17'ten bis zum 20'ten jeden
     Monats fallen, und die auf den 31'ten jeden Monats fallen:

          gcal -f demo.rc -y -P i00000017#00000020,i00000031#00000031

`-I SUCHMUSTER'
`--filter-text=SUCHMUSTER'
     Gibt nur diejenigen Termine aus, deren vollstndig expandierter
     Termintext (4) das angegebene SUCHMUSTER enthalten.  *Siehe
     Textteil einer Zeile::, sowie ebenfalls *Siehe `%?'... Spezialtexte
     zum Textersatz: Ersetzen.  Das SUCHMUSTER ist ein *regulrer
     Ausdruck* (5), wie es vom Unix `ed' Zeileneditor erkannt wird.
     *Siehe Regulaere Ausdruecke: Regulaere Ausdruecke, fr weitere
     Informationen.

     So kann zum Beispiel Gcal dazu veranlat werden, alle Zahnarzt- und
     Augenarzttermine aus der Datei `doktor.rc' auszugeben, die im
     laufenden Monat anfallen:

          gcal -f doktor.rc --month -I "[zZ]ahnarzt|[aA]ugenarzt"

     Jedesmal wenn ein `_' (Unterstrich) Zeichen im SUCHMUSTER Argument
     vorgefunden wird, so wird dieses Zeichen durch ein echtes ` '
     (Leerzeichen) Zeichen ersetzt.

     Falls das `_' (Unterstrich) Zeichen als Zeichen selbst verwendet
     werden soll, so mu dieses durch ein fhrendes `\' (Backslash)
     Zeichen hinsichtlich seiner speziellen Bedeutung entwertet werden,
     z.B. `\_'.  Wenn die Zeichen `\_' selbst als Zeichenfolge
     verwendet werden sollen, so mu das `\' (Backslash) Zeichen mit
     sich selbst geschtzt werden, z.B. `\\_'.

`-c|C[-]'
`--today'
`--list-of-fixed-dates[=short|long]'
`--descending-fixed-dates[=short|long]'
     Aktivierung der Terminfunktion und Ausgabe von Terminen.

    `-c'
    `--today'
    `--list-of-fixed-dates=short'
          Aktivierung der Terminfunktion (implizite Benutzung der
          Standard-Ressourcendatei) und alle Daten in aufsteigender
          Reihenfolge ausgeben, die sich auf das aktuelle Systemdatum
          (==heute) beziehen.  Wenn keine Daten zum heutigen Tag
          vorgefunden werden, so werden keine Termine ausgegeben und
          das Programm wird mit Fehlerkode abgebrochen.  *Siehe 1:
          Fehlerkodes.

    `-c-'
    `--descending-fixed-dates=short'
          Aktivierung der Terminfunktion (implizite Benutzung der
          Standard-Ressourcendatei) und alle Daten in absteigender
          Reihenfolge ausgeben, die sich auf das aktuelle Systemdatum
          (==heute) beziehen.  Wenn keine Daten zum heutigen Tag
          vorgefunden werden, so werden keine Termine ausgegeben und
          das Programm wird mit Fehlerkode abgebrochen.  *Siehe 1:
          Fehlerkodes.

    `-C'
    `--list-of-fixed-dates=long'
          Aktivierung der Terminfunktion (implizite Benutzung der
          Standard-Ressourcendatei) und alle Daten in aufsteigender
          Reihenfolge ausgeben, die sich auf das aktuelle Systemdatum
          (==heute) beziehen.  Wenn keine Daten zum heutigen Tag
          vorgefunden werden, so wird ein nur aus dem Datum bestehender
          "leerer" Termin ausgegeben.

    `-C-'
    `--descending-fixed-dates=long'
          Aktivierung der Terminfunktion (implizite Benutzung der
          Standard-Ressourcendatei) und alle Daten in absteigender
          Reihenfolge ausgeben, die sich auf das aktuelle Systemdatum
          (==heute) beziehen.  Wenn keine Daten zum heutigen Tag
          vorgefunden werden, so wird ein nur aus dem Datum bestehender
          "leerer" Termin ausgegeben.

`-f|F DATEINAME[+...]'
`--resource-file=DATEINAME[+...]'
     Aktivierung der Terminfunktion und DATEINAME anstelle der
     Standard-Ressourcendatei benutzen.  Sodann alle Daten in
     aufsteigender Reihenfolge ausgeben, die in den Terminzeitraum
     fallen.  Wurde kein besonderer Terminzeitraum angegeben, so wird
     das aktuelle Systemdatum (==heute) als Terminzeitraum angenommen.
     Wurde der Optionsbuchstabe `f' bei der Kurzoption benutzt und es
     werden keinerlei Daten in DATEINAME vorgefunden, die in den
     Terminzeitraum fallen, so werden keine Termine ausgegeben und das
     Programm wird mit Fehlerkode abgebrochen.  *Siehe 1: Fehlerkodes.
     Wurde der Optionsbuchstabe `F' bei der Kurzoption benutzt und es
     werden keinerlei Daten in DATEINAME vorgefunden, die in den
     Terminzeitraum fallen, so wird ein nur aus dem Datum bestehender
     "leerer" Termin ausgegeben.

     Es kann mehr als eine Ressourcendatei DATEINAME verwendet werden,
     wenn die zustzlichen Ressourcendateien, durch ein `+' Zeichen
     verbunden, aufgefhrt werden, z.B.:

          `--resource-file=./foo+xyz+/data/bar+$HOME/.gcalrc' bzw.
          `-f ./foo+xyz+/data/bar+$HOME/.gcalrc'

     bercksichtigt alle Dateien, die in dem vorstehenden Argument
     aufgefhrt sind; dabei wird ein spezieller Suchmechanismus zum
     Auffinden der Dateien benutzt.  *Siehe Datei-Suchmechanismus:
     Ressourcendatei, fr weitere Details.  Wenn DATEINAME auf
     `/dev/null' gesetzt ist, so wird da Vorladen einer
     Standard-Ressourcendatei verhindert, was ntzlich ist, wenn leere
     Terminlisten erzeugt werden sollen.

     Falls das `+' Zeichen als Zeichen selbst verwendet werden soll, so
     mu dieses durch ein fhrendes `\' (Backslash) Zeichen
     hinsichtlich seiner speziellen Bedeutung entwertet werden, z.B.
     `\+'.  Wenn die Zeichen `\+' selbst als Zeichenfolge verwendet
     werden sollen, so mu das `\' (Backslash) Zeichen mit sich selbst
     geschtzt werden, z.B. `\\+'.

     Jedesmal wenn ein `_' (Unterstrich) Zeichen in DATEINAME
     vorgefunden wird, so wird dieses Zeichen durch ein echtes ` '
     (Leerzeichen) Zeichen ersetzt.

     Falls das `_' (Unterstrich) Zeichen als Zeichen selbst verwendet
     werden soll, so mu dieses durch ein fhrendes `\' (Backslash)
     Zeichen hinsichtlich seiner speziellen Bedeutung entwertet werden,
     z.B. `\_'.  Wenn die Zeichen `\_' selbst als Zeichenfolge
     verwendet werden sollen, so mu das `\' (Backslash) Zeichen mit
     sich selbst geschtzt werden, z.B. `\\_'.

`-# ZEILE'
`--here=ZEILE'
     Aktivierung der Terminfunktion und das ZEILE Argument zusammen mit
     der Standard-Ressourcendatei bzw. den zustzlichen
     Ressourcendateien benutzen.  Das ZEILE Argument mu einer
     zulssigen, logischen Zeile entsprechen, wie sie in einer Gcal
     Ressourcendatei auftreten darf (*siehe Struktur einer
     Ressourcendatei::.), und wird stets zuletzt *nach* der
     Verarbeitung aller Ressourcendateien ausgewertet, so da Bezge
     auf exportierte, lokale Datum- oder Textvariablen vorgenommen
     werden knnen.  Diese Option darf mehrfach angegeben werden, und
     wird in genau der vorgefundenen Reihenfolge abgearbeitet.  Es
     werden alle Daten in aufsteigender Reihenfolge ausgegeben, die in
     den Terminzeitraum fallen.  Wurde kein besonderer Terminzeitraum
     angegeben, so wird das aktuelle Systemdatum (==heute) als
     Terminzeitraum angenommen.  Werden keinerlei Daten in der ZEILE
     vorgefunden, die in den Terminzeitraum fallen, so werden keine
     Termine ausgegeben und das Programm wird mit Fehlerkode
     abgebrochen.  *Siehe 1: Fehlerkodes.

     So bewirkt zum Beispiel der Aufruf:

          gcal -# "0*d1so#99so.7 ^%:" --here="#include <foo>" -y

     die implizite Verarbeitung der Standard-Ressourcendatei, bevor die
     weitere Ressourcendateizeile `0*d1so#99so.7 ^%:' und danach
     `#include <foo>' verarbeitet werden, und zwar so, als wren diese
     Texte ein physischer Bestandteil der Standard-Ressourcendatei.

     Jedesmal wenn ein `_' (Unterstrich) Zeichen in ZEILE vorgefunden
     wird, so wird dieses Zeichen durch ein echtes ` ' (Leerzeichen)
     Zeichen ersetzt.

     Falls das `_' (Unterstrich) Zeichen als Zeichen selbst verwendet
     werden soll, so mu dieses durch ein fhrendes `\' (Backslash)
     Zeichen hinsichtlich seiner speziellen Bedeutung entwertet werden,
     z.B. `\_'.  Wenn die Zeichen `\_' selbst als Zeichenfolge
     verwendet werden sollen, so mu das `\' (Backslash) Zeichen mit
     sich selbst geschtzt werden, z.B. `\\_'.

*Bitte beachten:*
Wenn die Kurzoption `-c' und/oder ihre Modifizierer `t|[w|m|y[+|-]'
bzw. die Kurzoption `-f' in *Grobuchstaben* angegeben werden, z.B.:

     -C
     -F foo.bar
     -CeT
     -c-aW+
     -CeaxY-
     -c-M

so gibt Gcal fr *jeden* Tag der verlangten Periode Termine aus.

Die Modifizierer einer kombinierten/komplexen/gepackten Kurzoption zur
Ausgabe von Terminen mssen entsprechend der hier vorgegebenen
Reihenfolge zusammengesetzt werden, da Gcal diese als positionale
Parameter behandelt:

    Erste Stufe: *Reprsentation-des-Textes*
          `a', `A', `B', `e|E', `k', `o', `U', `x', `z', `Z'

    Zweite Stufe: *Setzung-der-zu-bercksichtigenden-Periode*
          `d', `l', `t|T', `w|W|m|M|y|Y[+|-]', `N+|-', `Nd', `Nw',
          `*dN[WWW]', `*wN[WWW]', `@e|t|DVAR[[+|-]N]',
          `@e|t|DVAR[+|-]NWWW', `MMTT', `MMWWWN'

Wenn mit den vorstehenden Modifizierern gearbeitet werden soll, so
*mssen* diese entweder durch eine explizite `-c|C[-]' Kurzoption
angefhrt werden, z.B.:

     -c-t
     -cw-
     -CZBdekloUzaxA12+

und es darf nur *ein* zeitraumdefinierender Terminzeitraum-Modifizierer
angegeben werden (6).

Oder die Modifizierer mssen als Einzelzeichenoption, oder
zusammengefat zu einem einzelnen Kommandozeilenwort, angegeben werden,
und es mu zudem entweder die Kurzoption `-c|C[-]',
`-f|F DATEINAME[+...]' oder `-# ZEILE' (7) beim Aufruf von Gcal
angegeben werden, z.B.:

     -c- -t
     -w- -c
     -a -ABd -e -kloUxz -C12+
     -F foo.bar -dZA -l*d10
     --here="; Kommentar" -dZAa

Werden die Modifizierer als Einzelzeichenoption oder zu einem einzelnen
Kommandozeilenwort zusammengefat angegeben, und dabei einer der
`t|T|[w|W|m|M|y|Y[+|-]]' Modifizierer benutzt (8), so ist die Angabe
einer `-c|C[-]' bzw.  `-f|F DATEINAME[+...]' Kurzoption (9) nicht
notwendig, um die Terminfunktion von Gcal zu aktivieren, da die
Terminfunktion durch diese Modifizierer bzw. Aliasnamen implizit
ausgelst wird.

*Siehe Kodierschema::, wo Tabellen aufgefhrt sind, aus denen ersehen
werden kann, welche *Terminargumente* mit welchem *Datumteil* einer
Zeile der Ressourcendatei korrespondieren, d.h. bei Anwahl eines
*Terminarguments* bercksichtigt werden; da Gcal eben nicht alle
vorhandenen Eintrge in einer Ressourcendatei bercksichtigt, sondern
nur solche, die in einem bestimmten Verhltnis zum *Terminargument*
stehen, und somit die Ausgabe berflssiger Informationen verhindert
wird.

*Termintext-Modifizierer und Optionen:*

`--biorhythm-axis=ANZAHL'
     Die Breite der Biorhythmus-Textgrafik -- die durch einen
     Biorhythmus-Textgrafik `%;[DATUM]' Spezialtext erzeugt werden kann
     -- wird auf die im ANZAHL Argument angegebene Zahl von Zeichen fr
     jede Achse des Balkens gendert.  Das ANZAHL Argument mu eine
     Ganzzahl zwischen 1...100 sein, die interne Grundeinstellung
     betrgt 20 Zeichen.  Wenn das Divisionergebnis von 100 durch
     ANZAHL einen Divisionsrest ergibt, so wird ANZAHL intern auf die
     nchstkleinere Zahl reduziert, welche die Zahl 100 ohne
     Divisionsrest teilt.  Das bedeutet, da nur die Zahlen 1, 2, 4, 5,
     10, 20, 25, 50 und 100 tatschlich bercksichtigt werden, so da
     ein ANZAHL Argument von 19 intern auf 10 reduziert wird.

     Zum Beispiel:

          $ cat bio.rc
          -| 0*d1#999 %;19620921
          $ gcal -fbio.rc %19961212 -s0 -xw --biorhythm-axis=19
          -|
          -| Do, <12>Dez 1996: 0- G       P1 E        +0
          -| Fr,  13 Dez 1996: 0-  G   P   1          +0
          -| Sa,  14 Dez 1996: 0-    @   E 0          +0
          -| So,  15 Dez 1996: 0-  P  GE   0          +0
          -| Mo,  16 Dez 1996: 0- P  E  G  0          +0
          -| Di,  17 Dez 1996: 1-P  E     G0          +0
          -| Mi,  18 Dez 1996: 0- @        1          +0

     *Siehe Biorhythmus `%?[DATUM]' Spezialtexte: Biorhythmus, fr
     weitere Details.

`--moonimage-lines=ANZAHL'
     Die Hhe der Mondphasen-Textgrafik -- die durch einen
     Mondphasen-Textgrafik `%:[DATUM]' Spezialtext erzeugt werden kann
     -- wird auf die im ANZAHL Argument angegebene Zahl von Zeilen
     gendert.  Das ANZAHL Argument mu eine Ganzzahl zwischen 6...30
     sein, die interne Grundeinstellung betrgt 12 Zeilen.

     Zum Beispiel:

          $ gcal -f/dev/null -#0*d1#999_%:__%- %19950308 -x --moon=8
          -|
          -| Mi, < 8>Mar 1995:          (    @@@@@
          -|                       (           @@@@@@@@
          -|                    (               @@@@@@@@@@
          -|                   (                @@@@@@@@@@@
          -|                   (                @@@@@@@@@@@
          -|                    (               @@@@@@@@@@
          -|                     (             @@@@@@@@@@
          -|                         (        @@@@@@@ 41%+

     *Siehe Mondphase `%?[DATUM]' Spezialtexte: Mondphase, fr weitere
     Details.

`a'
`--include-resource-file-name'
     Den Namen der verwendeten Ressourcendatei im Termintext zustzlich
     mit ausgeben, z.B.:

          Mo,   1 Jan 1995: (`Ewige Feiertagsliste') Neujahr
          Mo,   1 Jan 1995: (.gcalrc) Keine weiteren Termine
          ...

`A'
`--alternative-format'
     Anstelle der Ausgabe im "Standard" Listenformat, z.B.:

          Mo,   1 Jan 1995: Neujahr
          Mo,   1 Jan 1995: Keine weiteren Termine
          ...

     benutzt Gcal das "Alternative" Listenformat, z.B.:

          Mo,   1 Jan 1995:
          Neujahr
          Keine weiteren Termine
          ...

`B'
`--bypass-shell-command'
     Shell Kommando `%![ARGUMENT]' Spezialtexte nicht ausfhren,
     sondern rein textlich ausgeben.  *Siehe Shell Kommando
     `%!'[ARGUMENT] Spezialtext: Shell Kommando, fr weitere Details.

`e'
`--include-holidays=long'
     Alle Daten aus der ewigen Feiertagsliste in die Terminliste
     einstreuen, d.h. gesetzliche Feiertage und Gedenktage.

`E'
`--include-holidays=short'
     Nur diejenigen Daten aus der ewigen Feiertagsliste in die
     Terminliste einstreuen, die gesetzliche Feiertage sind.

`g[TEXT]'
`--grouping-text[=TEXT]'
     Die Termine tageweise mittels des Separators TEXT gruppieren.
     Wenn kein TEXT angegeben ist, so wird der eingebaute TEXT (10) zum
     Gruppieren verwendet, z.B.:

          $ gcal -Cw -cg
          -|
          -| So,   6 Nov 1994: Text 1
          -| So,   6 Nov 1994: Text 2
          -|
          -| Mo,   7 Nov 1994: Text 3
          -|
          -| Di,   8 Nov 1994: Text 4
          ...
          
          
          $ gcal -Cw -g'-Ein_vom\_Benutzer-~-definierter Text-'
          -|
          -| So,   6 Nov 1994: Text 1
          -| So,   6 Nov 1994: Text 2
          -| -Ein vom_Benutzer-
          -| -definierter Text-
          -| Mo,   7 Nov 1994: Text 3
          -| -Ein vom_Benutzer-
          -| -definierter Text-
          -| Di,   8 Nov 1994: Text 4
          ...

     Jedesmal wenn ein `~' (Tilde) Zeichen in TEXT vorgefunden wird, so
     wird dieses Zeichen durch ein echtes `\n' (Newline) Zeichen
     ersetzt.

     Falls das `~' (Tilde) Zeichen als Zeichen selbst verwendet werden
     soll, so mu dieses durch ein fhrendes `\' (Backslash) Zeichen
     hinsichtlich seiner speziellen Bedeutung entwertet werden, z.B.
     `\~'.  Wenn die Zeichen `\~' selbst als Zeichenfolge verwendet
     werden sollen, so mu das `\' (Backslash) Zeichen mit sich selbst
     geschtzt werden, z.B. `\\~'.

     Jedesmal wenn ein `_' (Unterstrich) Zeichen in TEXT vorgefunden
     wird, so wird dieses Zeichen durch ein echtes ` ' (Leerzeichen)
     Zeichen ersetzt.

     Falls das `_' (Unterstrich) Zeichen als Zeichen selbst verwendet
     werden soll, so mu dieses durch ein fhrendes `\' (Backslash)
     Zeichen hinsichtlich seiner speziellen Bedeutung entwertet werden,
     z.B. `\_'.  Wenn die Zeichen `\_' selbst als Zeichenfolge
     verwendet werden sollen, so mu das `\' (Backslash) Zeichen mit
     sich selbst geschtzt werden, z.B. `\\_'.

`k'
`--include-week-number'
     Das eine jede Einzelzeile anfhrende Datum in einer Terminliste
     wird mit der ISO-8601:1988 Wochennummer versehen.

     *Bitte beachten:*
     Es werden die Methoden der ISO-8601:1988 zur Ermittlung der
     Wochennummern verwendet.  Das bedeutet, da eine Woche mit einem
     Montag beginnt, und die erste Woche des Jahres ist diejenige
     Woche, in welche der erste Donnerstag fllt, also gleich der Woche
     ist, in welcher der 4'te Januar auftritt.

`o'
`--omit-multiple-date-part'
     Vermeidet die Mehrfachausgabe von einem jede Einzelzeile
     anfhrendem Datum in der Terminliste, falls sich weitere Termine
     auf dieses Datum beziehen (11), z.B.:

          $ gcal -co
          -|
          -| So,   6 Nov 1994: Text 1
          -|                   Text 2
          ...

`U'
`--suppress-date-part'
     Unterdrckt die Ausgabe von einem jede Einzelzeile anfhrendem
     Datum in der Terminliste, z.B.:

          $ gcal -cU
          -|
          -| Text 1
          -| Text 2
          ...

`x'
`--exclude-fixed-dates-list-title'
     Die Ausgabe der berschrift in der Terminliste unterdrcken.

`z'
`--include-consecutive-number'
     Die laufende Postennummer des Termins ausgeben.

`Z'
`--zero-dates-only'
     Nur die Daten ausgeben, zu denen keine Termine vorliegen, d.h. nur
     die aus dem Datum bestehenden "leeren" Termine.

*Terminzeitraum-Modifizierer und Optionen:*

`--leap-day=february|march'
     Den "Schalttag" (12) auch in Nicht-Schaltjahren bercksichtigen.

    `--leap-day=february'
          Ein Termin, der in jedem Jahr gelten soll und der sich auf
          den Schalttag bezieht, wird in Nicht-Schaltjahren am 28'ten
          Februar ausgegeben.

    `--leap-day=march'
          Ein Termin, der in jedem Jahr gelten soll und der sich auf
          den Schalttag bezieht, wird in Nicht-Schaltjahren am 1'ten
          Mrz ausgegeben.

`d'
`--include-today'
     Wenn eine Datumliste erzeugt wird, so wird das aktuelle Datum in
     dieser Liste mit eingeschlossen.  *Siehe `--list-mode': Termin
     Optionen, wie eine Datumliste erzeugt wird.

`l'
`--list-mode'
     Erzeugen einer Datumliste anstelle eines Einzeldatum.

     *Bitte beachten:*
     In den folgenden Beispielen wird angenommen, da das aktuelle
     Systemdatum der *17'te Februar eines beliebigen Jahres* (00000217)
     ist!

`--period-of-fixed-dates=ARGUMENT'
`Nd'
`*dN'
     Alle Daten zum absoluten Tag N == `1...365|366|999' im aktuellen
     Jahr ausgeben; das Niveau ist wie bei der einfachen `-c' Option.
     Wenn fr N der Wert 999 angegeben ist, so wird der letzte Tag im
     Jahr (31'ter Dezember) angenommen.

        * Z.B. `gcal -c10d' bzw. `gcal --period-of-fixed-dates=10d'
          oder `gcal -c*d10' bzw. `gcal --period-of-fixed-dates=*d10'
          gibt die Termine aus, die am 10'ten Tag des Jahres
          stattfinden.

`lNd'
`l*dN'
     Liste von Daten, in Abhngigkeit des Wertes von N gestern oder
     morgen beginnend, und endend am N'ten absoluten Tag des aktuellen
     Jahres; das Niveau ist wie bei der `-cy' Option.

        * Z.B. `gcal -cl10d' bzw. `gcal -cl*d10' gibt eine Liste aller
          derjenigen Termine aus, die am 10'ten Tag des Jahres beginnen
          und am 16'ten Februar enden.

`N+|-'
     Alle Daten zum Tag *heute `+/-' N Tage* im aktuellen Jahr
     ausgeben; das Niveau ist wie bei der einfachen `-c' Option.

        * Z.B. `gcal -c10+' gibt die Termine aus, die 10 Tage nach dem
          17'ten Februar (heute) stattfinden.

        * Z.B. `gcal -c10-' gibt die Termine aus, die 10 Tage vor dem
          17'ten Februar (heute) stattfinden.

`lN+|-'
     Liste von Daten, gestern `-' oder morgen `+' beginnend, und endend
     am Tag *heute `+/-' N Tage* im aktuellen Jahr ausgeben; das Niveau
     ist wie bei der `-cy' Option.

        * Z.B. `gcal -cl10+' gibt eine Liste aller derjenigen Termine
          aus, die am 18'ten Februar beginnen und 10 Tage danach enden.

        * Z.B. `gcal -cl10-' gibt eine Liste aller derjenigen Termine
          aus, die 10 Tage vor dem 16'ten Februar beginnen und am
          16'ten Februar enden.

`Nw'
     Alle Daten zur Woche Nummer N == `0|1...52|53|99' des aktuellen
     Jahres ausgeben; das Niveau ist wie bei der `-cw' Option.

        * Z.B. `gcal -c0w' gibt alle diejenigen Termine aus, die falls
          das Vorjahr eine 53'te ISO-Kalenderwoche hat, in der 53'ten
          ISO-Kalenderwoche des Vorjahres liegen oder falls das Vorjahr
          keine 53'te ISO-Kalenderwoche hat, in der 1'ten
          ISO-Kalenderwoche des aktuellen Jahres liegen.

        * Z.B. `gcal -c6w' gibt alle diejenigen Termine aus, die in der
          6'ten ISO-Kalenderwoche liegen.

        * Z.B. `gcal -c52w' gibt alle diejenigen Termine aus, die in
          der 52'ten ISO-Kalenderwoche liegen.

        * Z.B. `gcal -c53w' gibt alle diejenigen Termine aus, die in
          der 53'ten ISO-Kalenderwoche liegen, falls das Jahr eine 53'te
          ISO-Kalenderwoche hat.  Wenn das Jahr keine 53'te
          ISO-Kalenderwoche hat, so werden keine Termine ausgegeben und
          das Programm wird mit Fehlerkode abgebrochen.  *Siehe 126:
          Fehlerkodes.

        * Z.B. `gcal -c99w' gibt alle diejenigen Termine aus, die in
          der letzten ISO-Kalenderwoche liegen, d.h. entweder die 52'te
          oder die 53'te ISO-Kalenderwoche.

`lNw'
     Liste von Daten, in Abhngigkeit der gegebenen Wochennummer
     N == `0|1...52|53|99' gestern oder morgen beginnend und endend am
     ersten bzw. letzten Tag der gegebenen Woche N des aktuellen Jahres
     ausgeben; das Niveau ist wie bei der `-cy' Option.

        * Z.B. `gcal -cl12w' gibt eine Liste aller derjenigen Termine
          aus, die am 18'ten Februar beginnen und bis zum Ende der
          12'ten ISO-Kalenderwoche reichen.

        * Z.B. `gcal -cl3w' gibt eine Liste aller derjenigen Termine
          aus, die am Anfang der 3'ten ISO-Kalenderwoche beginnen und
          16'ten Februar enden.

`MMTT'
     Alle Daten zum Tag TT im Monat MM des aktuellen Jahres ausgeben;
     das Niveau ist wie bei der einfachen `-c' Option.

        * Z.B. `gcal -c0225' gibt die Termine aus, die am 25'ten
          Februar stattfinden.

`lMMTT'
     Liste von Daten, in Abhngigkeit des Wertes MMTT gestern bzw.
     morgen beginnend, und endend am Tag TT im Monat MM des aktuellen
     Jahres, ausgeben; das Niveau ist wie bei der `-cy' Option.

        * Z.B. `gcal -cl0225' gibt eine Liste aller derjenigen Termine
          aus, die am 18'ten Februar beginnen und am 25'ten Februar
          enden.

        * Z.B. `gcal -cl0109' gibt eine Liste aller derjenigen Termine
          aus, die am 9'ten Januar beginnen und am 16'ten Februar enden.

`MMWWWN'
     Alle Daten zum N'ten == `1...5|9' Wochentag WWW im Monat MM des
     aktuellen Jahres ausgeben; das Niveau ist wie bei der einfachen
     `-c' Option.

        * Z.B. `gcal -c01mon3' gibt die Termine aus, die am dritten
          Montag im Januar stattfinden.

        * Z.B. `gcal -c02fr9' gibt die Termine aus, die am letzten
          Freitag im Februar stattfinden.

`lMMWWWN'
     Liste von Daten, in Abhngigkeit des Wertes in MMWWWN gestern bzw.
     morgen beginnend, und endend am N'ten == `1...5|9' Wochentag WWW
     im Monat MM des aktuellen Jahres ausgeben; das Niveau ist wie bei
     der `-cy' Option.

        * Z.B. `gcal -cl01mon3' gibt eine Liste aller derjenigen
          Termine aus, die am dritten Montag im Januar beginnen und am
          16'ten Februar enden.

        * Z.B. `gcal -cl02fr9' gibt eine Liste aller derjenigen Termine
          aus, die am 18'ten Februar beginnen und am letzten Freitag im
          Februar enden.

`*dNWWW'
     Alle Daten zum N'ten == `1...51|52|53|99' Wochentag WWW des
     aktuellen Jahres ausgeben; das Niveau ist wie bei der einfachen
     `-c' Option.

        * Z.B. `gcal -c*d16son' gibt alle diejenigen Termine aus, die
          auf den 16'ten Sonntag des Jahres fallen.

        * Z.B. `gcal -c*d52son' gibt alle diejenigen Termine aus, die
          auf den 52'ten Sonntag des Jahres fallen.  Wenn das Jahr
          keinen 52'ten Sonntag hat, so werden keine Termine ausgegeben
          und das Programm wird mit Fehlerkode abgebrochen.  *Siehe 126:
          Fehlerkodes.

        * Z.B. `gcal -c*d53son' gibt alle diejenigen Termine aus, die
          auf den 53'ten Sonntag des Jahres fallen.  Wenn das Jahr
          keinen 53'ten Sonntag hat, so werden keine Termine ausgegeben
          und das Programm wird mit Fehlerkode abgebrochen.  *Siehe 126:
          Fehlerkodes.

        * Z.B. `gcal -c*d99son' gibt alle diejenigen Termine aus, die
          auf den letzten Sonntag (13) des Jahres fallen.

`l*dNWWW'
     Liste von Daten, in Abhngigkeit des Wertes N gestern oder morgen
     beginnend, und endend am N'ten == `1...51|52|53|99' Wochentag WWW
     des aktuellen Jahres ausgeben; das Niveau ist wie bei der `-cy'
     Option.

        * Z.B. `gcal -cl*d16son' gibt eine Liste aller derjenigen
          Termine aus, die am 18'ten Februar beginnen und am 16'ten
          Sonntag des Jahres enden.

        * Z.B. `gcal -cl*d52son' gibt eine Liste aller derjenigen
          Termine aus, die am 18'ten Februar beginnen und am 52'ten
          Sonntag des Jahres enden.  Wenn das Jahr keinen 52'ten
          Sonntag hat, so werden keine Termine ausgegeben und das
          Programm wird mit Fehlerkode abgebrochen.  *Siehe 126:
          Fehlerkodes.

        * Z.B. `gcal -cl*d53son' gibt eine Liste aller derjenigen
          Termine aus, die am 18'ten Februar beginnen und am 53'ten
          Sonntag des Jahres enden.  Wenn das Jahr keinen 53'ten
          Sonntag hat, so werden keine Termine ausgegeben und das
          Programm wird mit Fehlerkode abgebrochen.  *Siehe 126:
          Fehlerkodes.

        * Z.B. `gcal -cl*d99son' gibt eine Liste aller derjenigen
          Termine aus, die am 18'ten Februar beginnen und am letzten
          Sonntag (14) des Jahres enden.

`*wN[WWW]'
     Alle Daten zum Wochentag WWW der N'ten == `0|1...52|53|99'
     ISO-Kalenderwoche des aktuellen Jahres ausgeben; das Niveau ist
     wie bei der einfachen `-c' Option.  Wenn kein Wochentag WWW
     angegeben ist, so wird Montag als Wochentag angenommen.

        * Z.B. `gcal -c*w0son' gibt alle diejenigen Termine aus, die
          falls das Jahr einen Sonntag hat, der in der 52'ten bzw.
          53'ten ISO-Kalenderwoche des Vorjahres liegt, auf diesen
          Sonntag fallen.  Wenn ein solcher Sonntag nicht existiert, so
          werden keine Termine ausgegeben und das Programm wird mit
          Fehlerkode abgebrochen.  *Siehe 126: Fehlerkodes.

        * Z.B. `gcal -c*w16son' gibt alle diejenigen Termine aus, die
          auf den Sonntag der 16'ten ISO-Kalenderwoche des Jahres
          fallen.

        * Z.B. `gcal -c*w52son' gibt alle diejenigen Termine aus, die
          auf den Sonntag der 52'ten ISO-Kalenderwoche des Jahres
          fallen.  Wenn das Jahr keinen Sonntag der 52'ten
          ISO-Kalenderwoche hat, so werden keine Termine ausgegeben und
          das Programm wird mit Fehlerkode abgebrochen.  *Siehe 126:
          Fehlerkodes.

        * Z.B. `gcal -c*w53son' gibt alle diejenigen Termine aus, die
          auf den Sonntag der 53'ten ISO-Kalenderwoche des Jahres
          fallen.  Wenn das Jahr keinen Sonntag der 53'ten
          ISO-Kalenderwoche hat, so werden keine Termine ausgegeben und
          das Programm wird mit Fehlerkode abgebrochen.  *Siehe 126:
          Fehlerkodes.

        * Z.B. `gcal -c*w99son' gibt alle diejenigen Termine aus, die
          auf den Sonntag der letzten ISO-Kalenderwoche (15) des Jahres
          fallen.

`l*wN[WWW]'
     Liste von Daten, in Abhngigkeit des Wertes N gestern oder morgen
     beginnend, und endend am Wochentag WWW der
     N'ten == `0|1...51|52|53|99' ISO-Kalenderwoche des aktuellen
     Jahres ausgeben; das Niveau ist wie bei der `-cy' Option.  Wenn
     kein Wochentag WWW angegeben ist, so wird Montag als Wochentag
     angenommen.

        * Z.B. `gcal -cl*w0son' gibt eine Liste aller derjenigen
          Termine aus, die falls das Jahr einen Sonntag hat, der in der
          52'ten bzw. 53'ten ISO-Kalenderwoche des Vorjahres liegt, an
          diesem Sonntag beginnen und am 16'ten Februar enden.  Wenn
          ein solcher Sonntag nicht existiert, so werden keine Termine
          ausgegeben und das Programm wird mit Fehlerkode abgebrochen.
          *Siehe 126: Fehlerkodes.

        * Z.B. `gcal -cl*w16son' gibt eine Liste aller derjenigen
          Termine aus, die am 18'ten Februar beginnen und am Sonntag
          der 16'ten ISO-Kalenderwoche des Jahres enden.

        * Z.B. `gcal -cl*w52son' gibt eine Liste aller derjenigen
          Termine aus, die am 18'ten Februar beginnen und am Sonntag
          der 52'ten ISO-Kalenderwoche des Jahres enden.  Wenn das Jahr
          keinen Sonntag der 52'ten ISO-Kalenderwoche hat, so werden
          keine Termine ausgegeben und das Programm wird mit Fehlerkode
          abgebrochen.  *Siehe 126: Fehlerkodes.

        * Z.B. `gcal -cl*w53son' gibt eine Liste aller derjenigen
          Termine aus, die am 18'ten Februar beginnen und am Sonntag
          der 53'ten ISO-Kalenderwoche des Jahres enden.  Wenn das Jahr
          keinen Sonntag der 53'ten ISO-Kalenderwoche hat, so werden
          keine Termine ausgegeben und das Programm wird mit Fehlerkode
          abgebrochen.  *Siehe 126: Fehlerkodes.

        * Z.B. `gcal -cl*w99son' gibt eine Liste aller derjenigen
          Termine aus, die am 18'ten Februar beginnen und am Sonntag
          der letzten ISO-Kalenderwoche (16) des Jahres enden.

`@e[[+|-]N]'
     Alle Daten zum N'ten Tag relativ zum Datum Ostersonntag des
     aktuellen Jahres ausgeben; das Niveau ist wie bei der einfachen
     `-c' Option.

        * Z.B. `gcal -c@e' gibt die Termine aus, die am Ostersonntag
          stattfinden.

        * Z.B. `gcal -c@e10' bzw. `gcal -c@e+10' gibt die Termine aus,
          die 10 Tage nach Ostersonntag stattfinden.

        * Z.B. `gcal -c@e-10' gibt die Termine aus, die 10 Tage vor
          Ostersonntag stattfinden.

`l@e[[+|-]N]'
     Liste von Daten, in Abhngigkeit des Wertes N gestern oder morgen
     beginnend, und endend am N'ten Tag relativ zum Datum Ostersonntag
     des aktuellen Jahres ausgeben; das Niveau ist wie bei der `-cy'
     Option.

        * Z.B. `gcal -cl@e' gibt eine Liste aller derjenigen Termine
          aus, die am 18'ten Februar beginnen und am Ostersonntag enden.

        * Z.B. `gcal -cl@e10' bzw. `gcal -cl@e+10' gibt eine Liste aller
          derjenigen Termine aus, die am 18'ten Februar beginnen und 10
          Tage nach Ostersonntag enden.

        * Z.B. `gcal -cl@e-10' gibt eine Liste aller derjenigen Termine
          aus, die am 18'ten Februar beginnen und 10 Tage vor
          Ostersonntag enden.

`@e[+|-]NWWW'
     Alle Daten zum N'ten Wochentag WWW relativ zum Datum Ostersonntag
     des aktuellen Jahres ausgeben; das Niveau ist wie bei der
     einfachen `-c' Option.

        * Z.B. `gcal -c@e3fr' bzw. `gcal -c@e+3fr' gibt die Termine aus,
          die am 3'ten Freitag nach Ostersonntag stattfinden.

        * Z.B. `gcal -c@e-3fr' gibt die Termine aus, die am 3'ten
          Freitag vor Ostersonntag stattfinden.

`l@e[+|-]NWWW'
     Liste von Daten, in Abhngigkeit des Wertes N gestern oder morgen
     beginnend, und endend am N'ten Wochentag WWW relativ zum Datum
     Ostersonntag des aktuellen Jahres ausgeben; das Niveau ist wie bei
     der `-cy' Option.

        * Z.B. `gcal -cl@e3fr' bzw. `gcal -cl@e+3fr' gibt eine Liste
          aller derjenigen Termine aus, die am 18'ten Februar beginnen
          und am 3'ten Freitag nach Ostersonntag enden.

        * Z.B. `gcal -cl@e-3fr' gibt eine Liste aller derjenigen
          Termine aus, die am 18'ten Februar beginnen und am 3'ten
          Freitag vor Ostersonntag enden.

`@t[[+|-]N]'
     Alle Daten zum N'ten Tag relativ zum heutigen Datum des aktuellen
     Jahres ausgeben; das Niveau ist wie bei der einfachen `-c' Option.

        * Z.B. `gcal -c@t' gibt die Termine aus, die am heutigen Datum
          stattfinden (== `gcal -c').

        * Z.B. `gcal -c@t10' bzw. `gcal -c@t+10' gibt die Termine aus,
          die 10 Tage nach dem heutigen Datum stattfinden (== `gcal
          -c10+').

        * Z.B. `gcal -c@t-10' gibt die Termine aus, die 10 Tage vor dem
          heutigen Datum stattfinden (== `gcal -c10-').

`l@t[[+|-]N]'
     Liste von Daten, in Abhngigkeit des Wertes N gestern oder morgen
     beginnend, und endend am N'ten Tag relativ zum heutigen Datum des
     aktuellen Jahres ausgeben; das Niveau ist wie bei der `-cy' Option.

        * Z.B. `gcal -cl@t' bewirkt nichts.

        * Z.B. `gcal -cl@t10' bzw. `gcal -cl@t+10' gibt eine Liste aller
          derjenigen Termine aus, die am 18'ten Februar beginnen und 10
          Tage nach dem heutigen Datum enden (== `gcal -cl10+').

        * Z.B. `gcal -cl@t-10' gibt eine Liste aller derjenigen Termine
          aus, die am 16'ten Februar beginnen und 10 Tage vor dem
          heutigen Datum enden (== `gcal -cl10-').

`@t[+|-]NWWW'
     Alle Daten zum N'ten Wochentag WWW relativ zum heutigen Datum des
     aktuellen Jahres ausgeben; das Niveau ist wie bei der einfachen
     `-c' Option.

        * Z.B. `gcal -c@t3fr' bzw. `gcal -c@t+3fr' gibt die Termine aus,
          die am 3'ten Freitag nach dem heutigen Datum stattfinden.

        * Z.B. `gcal -c@t-3fr' gibt die Termine aus, die am 3'ten
          Freitag vor dem heutigen Datum stattfinden.

`l@t[+|-]NWWW'
     Liste von Daten, in Abhngigkeit des Wertes N gestern oder morgen
     beginnend, und endend am N'ten Wochentag WWW relativ zum heutigen
     Datum des aktuellen Jahres ausgeben; das Niveau ist wie bei der
     `-cy' Option.

        * Z.B. `gcal -cl@t3fr' bzw. `gcal -cl@t+3fr' gibt eine Liste
          aller derjenigen Termine aus, die am 18'ten Februar beginnen
          und am 3'ten Freitag nach dem heutigen Datum enden.

        * Z.B. `gcal -cl@t-3fr' gibt eine Liste aller derjenigen
          Termine aus, die am 16'ten Februar beginnen und am 3'ten
          Freitag vor dem heutigen Datum enden.

`@DVAR[[+|-]N]'
     Alle Daten zum N'ten Tag relativ zum Datum der Datumvariablen des
     aktuellen Jahres ausgeben; das Niveau ist wie bei der einfachen
     `-c' Option.

        * Z.B. `gcal -v a=0422 -c@a' gibt die Termine aus, die am
          22'ten April stattfinden.

        * Z.B. `gcal -v a=0422 -c@a10' bzw. `gcal -v a=0422 -c@a+10'
          gibt die Termine aus, die 10 Tage nach dem 22'ten April
          stattfinden.

        * Z.B. `gcal -v a=0422 -c@a-10' gibt die Termine aus, die 10
          Tage vor dem 22'ten April stattfinden.

`l@DVAR[[+|-]N]'
     Liste von Daten, in Abhngigkeit des Wertes N gestern oder morgen
     beginnend, und endend am N'ten Tag relativ zum Datum der
     Datumvariablen des aktuellen Jahres ausgeben; das Niveau ist wie
     bei der `-cy' Option.

        * Z.B. `gcal -v a=0422 -cl@a' gibt eine Liste aller derjenigen
          Termine aus, die am 18'ten Februar beginnen und am 22'ten
          April enden.

        * Z.B. `gcal -v a=0422 -cl@a10' bzw. `gcal -v a=0422 -cl@a+10'
          gibt eine Liste aller derjenigen Termine aus, die am 18'ten
          Februar beginnen und 10 Tage nach dem 22'ten April enden.

        * Z.B. `gcal -v a=0422 -cl@a-10' gibt eine Liste aller
          derjenigen Termine aus, die am 18'ten Februar beginnen und 10
          Tage vor dem 22'ten April enden.

`@DVAR[+|-]NWWW'
     Alle Daten zum N'ten Wochentag WWW relativ zum Datum der
     Datumvariablen des aktuellen Jahres ausgeben; das Niveau ist wie
     bei der einfachen `-c' Option.

        * Z.B. `gcal -v a=0122 -c@a2sa' bzw. `gcal -v a=0122 -c@a+2sa'
          gibt die Termine aus, die zwei Samstage nach dem 22'ten
          Januar stattfinden.

        * Z.B. `gcal -v a=0122 -c@a-2sa' gibt die Termine aus, die zwei
          Samstage vor dem 22'ten Januar stattfinden.

`l@DVAR[+|-]NWWW'
     Liste von Daten, in Abhngigkeit des Wertes N gestern oder morgen
     beginnend, und endend am N'ten Wochentag WWW relativ zum Datum der
     Datumvariablen des aktuellen Jahres ausgeben; das Niveau ist wie
     bei der `-cy' Option.

        * Z.B. `gcal -v a=0122 -cl@a2sa' bzw. `gcal -v a=0122 -cl@a+2sa'
          gibt eine Liste aller derjenigen Termine aus, die zwei
          Samstage nach dem 22'ten Januar beginnen und am 16'ten
          Februar enden.

        * Z.B. `gcal -v a=0122 -cl@a-2sa' gibt eine Liste aller
          derjenigen Termine aus, die zwei Samstage vor dem 22'ten
          Januar beginnen und am 16'ten Februar enden.

`t|T'
`--tomorrow' Langoption
     Liste von Daten ausgeben, die sich auf den morgigen Tag beziehen.

        * Z.B. `gcal -ct' gibt alle diejenigen Termine aus, die am
          18'ten Februar (morgen) stattfinden.

        * Z.B. `gcal -cdt' gibt alle diejenigen Termine aus, die am
          17'ten Februar (heute) und am 18'ten Februar (morgen)
          stattfinden.

`w|W[+|-]'
`--week' Langoption
`--end-of-week' Langoption
`--start-of-week' Langoption
     Liste von Daten ausgeben, die sich auf die Woche beziehen.
     *Siehe `--starting-day[=ARGUMENT]': Kalender Optionen.

        * `w' oder `--week' Langoption
          Liste von Daten vom *Starttag* der aktuellen Woche bis zum
          letzten Tag der aktuellen Woche ausgeben.

             - Z.B. `gcal -cw' gibt alle diejenigen Termine aus, die in
               der gesamten Woche, in die der 17'te Februar fllt,
               stattfinden.

        * `w+' oder `--end-of-week' Langoption
          Liste von Daten vom Tag nach dem aktuellen Tag der aktuellen
          Woche bis zum letzten Tag der aktuellen Woche ausgeben.

             - Z.B. `gcal -cw+' gibt alle diejenigen Termine aus, die am
               18'ten Februar (morgen) beginnen und am letzten Tag der
               Woche enden.

             - Z.B. `gcal -cdw+' gibt alle diejenigen Termine aus, die
               am 17'ten Februar (heute) beginnen und am letzten Tag
               der Woche enden.

        * `w-' oder `start-of-week' Langoption
          Liste von Daten vom *Starttag* der aktuellen Woche bis zum Tag
          vor dem aktuellen Tag der aktuellen Woche ausgeben.

             - Z.B. `gcal -cw-' gibt alle diejenigen Termine aus, die am
               ersten Tag der Woche beginnen und am 16'ten (gestern)
               Februar enden.

             - Z.B. `gcal -cdw-' gibt alle diejenigen Termine aus, die
               am ersten Tag der Woche beginnen und am 17'ten Februar
               (heute) enden.

`m|M[+|-]'
`--month' Langoption
`--end-of-month' Langoption
`--start-of-month' Langoption
     Liste von Daten ausgeben, die sich auf den Monat beziehen.

        * `m' oder `--month' Langoption
          Liste von Daten vom ersten Tag des aktuellen Monats bis zum
          letzten Tag des aktuellen Monats ausgeben.

             - Z.B. `gcal -cm' gibt alle diejenigen Termine aus, die im
               gesamten Monat Februar stattfinden.

        * `m+' oder `--end-of-month' Langoption
          Liste von Daten vom Tag nach dem aktuellen Tag des aktuellen
          Monats bis zum letzten Tag des aktuellen Monats ausgeben.

             - Z.B. `gcal -cm+' gibt alle diejenigen Termine aus, die am
               18'ten Februar (morgen) beginnen und am letzten Tag des
               Monats Februar enden.

             - Z.B. `gcal -cdm+' gibt alle diejenigen Termine aus, die
               am 17'ten Februar (heute) beginnen und am letzten Tag
               des Monats Februar enden.

        * `m-' oder `--start-of-month' Langoption
          Liste von Daten vom ersten Tag des aktuellen Monats bis zum
          Tag vor dem aktuellen Tag des aktuellen Monats ausgeben.

             - Z.B. `gcal -cm-' gibt alle diejenigen Termine aus, die am
               ersten Tag des Monats Februar beginnen und am 16'ten
               Februar (gestern) enden.

             - Z.B. `gcal -cdm-' gibt alle diejenigen Termine aus, die
               am ersten Tag des Monats Februar beginnen und am 17'ten
               Februar (heute) enden.

`y|Y[+|-]'
`--year' Langoption
`--end-of-year' Langoption
`--start-of-year' Langoption
     Liste von Daten ausgeben, die sich auf das Jahr beziehen.

        * `y' oder `--year' Langoption
          Liste von Daten vom ersten Tag des aktuellen Jahres bis zum
          letzten Tag des aktuellen Jahres ausgeben.

             - Z.B. `gcal -cy' gibt alle diejenigen Termine aus, die im
               gesamten Jahr stattfinden.

        * `y+' oder `--end-of-year' Langoption
          Liste von Daten vom Tag nach dem aktuellen Tag des aktuellen
          Jahres bis zum letzten Tag des aktuellen Jahres ausgeben.

             - Z.B. `gcal -cy+' gibt alle diejenigen Termine aus, die am
               18'ten Februar (morgen) beginnen und am letzten Tag des
               Jahres enden.

             - Z.B. `gcal -cdy+' gibt alle diejenigen Termine aus, die
               am 17'ten Februar (heute) beginnen und am letzten Tag
               des Jahres enden.

        * `y-' oder `--start-of-year' Langoption
          Liste von Daten vom ersten Tag des aktuellen Jahres bis zum
          Tag vor dem aktuellen Tag des aktuellen Jahres ausgeben.

             - Z.B. `gcal -cy-' gibt alle diejenigen Termine aus, die am
               ersten Tag des Jahres beginnen und am 16'ten Februar
               (gestern) enden.

             - Z.B. `gcal -cdy-' gibt alle diejenigen Termine aus, die
               am ersten Tag des Jahres beginnen und am 17'ten Februar
               (heute) enden.

  ---------- Fussnoten ----------

  (1)  Gro- bzw. Kleinbuchstaben werden nicht unterschieden.  Nicht
zuweisbar bzw. inoperabel ist die Datumvariable E, welche intern fr
das Datum des Ostersonntags reserviert ist.  Ebenfalls nicht zuweisbar
bzw.  inoperabel ist die Datumvariable T, welche intern fr das heutige
Datum reserviert ist.

  (2)  Oder dem Namen einer anderen globalen Datumvariablen, aber
keiner Datumsangabe im `MMWWWN', `e|t|DVAR[+|-]N[WWW]' oder
`*d|wN[WWW]' Datumformat.

  (3)  Gro- bzw. Kleinbuchstaben werden nicht unterschieden.

  (4)  Ausgenommen Gcal's Zeilenumbruchzeichen `~' und `^', so da `\~'
und `\\^' im SUCHMUSTER Argument benutzt werden mu, falls nach Texten
gesucht werden soll, welche diese Zeichen enthalten.

  (5)  Im Englischen mit *regular expression* bezeichnet.

  (6)  Davon ausgenommen sind die `--include-today' Option bzw. der `d'
Modifizierer, die `--list-mode' Option bzw.  der `l' Modifizierer, und
die `--leap-day=february|march' Option.

  (7)  Bzw. deren entsprechende Langoptionen.

  (8)  Oder deren entsprechende Aliasnamen wie `--today',
`--tomorrow'...

  (9)  Oder deren entsprechende Langoptionen.

  (10)  `RC_GROUP_SEP' "" == nur Leerzeile.

  (11)  Nur falls die `--alternative-format' Option bzw.  der `A'
Modifizierer nicht angegeben wurde.

  (12)  Der 29'te Februar.

  (13)  Das ist entweder der 51'te, 52'te oder 53'te Sonntag.

  (14)  Das ist entweder der 51'te, 52'te oder 53'te Sonntag.

  (15)  Das ist entweder die 51'te, 52'te oder 53'te ISO-Kalenderwoche.

  (16)  Das ist entweder die 51'te, 52'te oder 53'te ISO-Kalenderwoche.

Antwortdatei
------------

Wenn ein `@DATEI' Argument in der Kommandozeile vorgefunden wird, so
wird eine "Antwortdatei" namens DATEI benutzt, d.h. Optionen und
Kommandos werden aus dieser Datei vorgeladen.  Eine Antwortdatei
`@DATEI' darf Optionen und Kommandos enthalten, aber *keine* Verweise
auf weitere Antwortdateien.  Werden solche Verweise auf weitere
Antwortdateien vorgefunden, so werden diese ignoriert.  *Siehe
`--response-file=DATEINAME': Globale Optionen, fr Hinweise, wie eine
Antwortdatei automatisch erzeugt werden kann.

Das Suchschema fr eine Antwortdatei ist gleich dem Suchschema fr
Ressourcendateien, mit der Ausnahme, da *keine* Standard-Antwortdatei
bercksichtigt wird.  *Siehe Datei-Suchmechanismus: Ressourcendatei, fr
weitere Details.  Es drfen mehrere Antwortdateien beim Aufruf von Gcal
angegeben werden.  Diese werden in genau der Reihenfolge abgearbeitet,
in der sie in der Kommandozeile angegeben sind, also streng sequentiell.

Jede Option und jedes Kommando mu auf einer einzelnen Zeile angegeben
sein, d.h. durch ein echtes `\n' (Newline) Zeichen getrennt werden.
Eine Zeile der Antwortdatei, die mit einem `;' (Semikolon) Zeichen
beginnt, ist ein Kommentar und wird von Gcal vollstndig ignoriert
(*siehe Zeile kommentieren::.).

Optionen mssen vor Kommandos definiert werden.  Wenn eine Antwortdatei
Kommandos enthlt, so werden alle weiteren Argumente, die nach `@DATEI'
in der Kommandozeile angegeben sind, ignoriert.

Zum Beispiel:

  1. Inhalt von Antwortdatei `Datei':

          Zeile    Text
          1        -j
          2        -Cw
          EOF
          
          $ gcal -i -b 3 @Datei -s 3 1994
          
          ==> gcal -i -b 3 -j -Cw -s 3 1994

  2. Inhalt von Antwortdatei `Datei':

          Zeile    Text
          1        -j
          2        -Cw
          3        mai 1992
          EOF
          
          $ gcal -i -b 3 @Datei -s 3 1994
          
          ==> gcal -i -b 3 -j -Cw mai

  3. Inhalt von Antwortdatei `Datei':

          Zeile    Text
          1        -j
          2        -Cw
          3        mai
          4        1992
          EOF
          
          $ gcal -i -b 3 @Datei -s 3 1994
          
          ==> gcal -i -b 3 -j -Cw mai 1992

Datummodifizierer
-----------------

Es ist mglich, dasjenige Datum anstelle dem aktuellen Systemdatum zu
verwenden, welches mit der `%DATUM' Option definiert wurde.  Das
bedeutet, da Termine fr *jedwedes* Jahr geprft werden knnen, und
diese so bercksichtigt werden, als ob sie Termine wren, die sich rein
auf das aktuelle Jahr beziehen.

Das Datum mu in einem dieser Formate angegeben werden:

   * `JJJJ[MM[TT|WWWN]]'

   * `JJJJ*d|wN[WWW]'

   * `JJJJ@e|t|DVAR[[+|-]N[WWW]]'

   * `MONATSNAME[TT]'

   * `WOCHENTAGSNAME[N]'

   * TT

Hierzu einige Beispiele:

     *Bitte beachten:*
     In den folgenden Beispielen wird angenommen, da das aktuelle
     Systemdatum *Mittwoch, der 17'te Februar 1993* (19930217) ist!

Das `JJJJ[MM[TT|WWWN]]' Format:
        * `gcal %1994' (== JJJJ)
          Das aktuelle Datum wird auf den 17'ten Februar 1994 gesetzt
          => 19940217.

        * `gcal %1994Mr'

        * `gcal %19943'

        * `gcal %199403' (== JJJJMM)
          Das aktuelle Datum wird auf das Datum 17'ter Mrz 1994
          gesetzt => 19940317.

        * `gcal %1994Mr3'

        * `gcal %1994033'

        * `gcal %19940303' (== JJJJMMTT)
          Das aktuelle Datum wird auf das Datum 3'ter Mrz 1994 gesetzt
          => 19940303.

        * `gcal %1994MrMit3'

        * `gcal %199403mi3' (== JJJJMMWWWN)
          Das aktuelle Datum wird auf das Datum 3'ter Mittwoch im Mrz
          1994 gesetzt (N == `1...5|9') => 19940316.

        * `gcal %0'

        * `gcal %00'

        * `gcal %000'

        * `gcal %0000' (== JJJJ)
          Das aktuelle Datum bleibt unverndert => 19930217.

        * `gcal %0000Mr'

        * `gcal %00003'

        * `gcal %000003' (== JJJJMM)
          Das aktuelle Datum wird auf das Datum 17'ter Mrz 1993
          gesetzt => 19930317.

        * `gcal %0000Mr3'

        * `gcal %0000033'

        * `gcal %00000303' (== JJJJMMTT)
          Das aktuelle Datum wird auf das Datum 3'ter Mrz 1993 gesetzt
          => 19930303.

        * `gcal %0000MrMit3'

        * `gcal %000003mi3' (== JJJJMMWWWN)
          Das aktuelle Datum wird auf das Datum 3'ter Mittwoch im Mrz
          1993 gesetzt (N == `1...5|9') => 19930317.

Das `JJJJ*d|wN[WWW]' Format:
        * `gcal %1994*d10' (== `JJJJ*dN')
          Das aktuelle Datum wird auf das Datum des 10'ten absoluten
          Tages 1994 gesetzt (N == `1...365|366|999') => 19940110.

        * `gcal %1994*d10son' (== `JJJJ*dNWWW')
          Das aktuelle Datum wird auf das Datum des 10'ten Sonntags 1994
          gesetzt (N == `1...51|52|53|99') => 19940306.

        * `gcal %0*d10' (== `JJJJ*dN')
          Das aktuelle Datum wird auf das Datum des 10'ten absoluten
          Tages 1993 gesetzt => 19930110.

        * `gcal %0*d10son' (== `JJJJ*dNWWW')
          Das aktuelle Datum wird auf das Datum des 10'ten Sonntags 1993
          gesetzt => 19930307.

        * `gcal %1994*w10' (== `JJJJ*wN')
          Das aktuelle Datum wird auf das Datum des Montags der 10'ten
          ISO-Kalenderwoche 1994 gesetzt (N == `0|1...52|53|99')
          => 19940307.

        * `gcal %1994*w10son' (== `JJJJ*wNWWW')
          Das aktuelle Datum wird auf das Datum des Sonntags der 10'ten
          ISO-Kalenderwoche 1994 gesetzt => 19940313.

        * `gcal %0*w10' (== `JJJJ*wN')
          Das aktuelle Datum wird auf das Datum des Montags der 10'ten
          ISO-Kalenderwoche 1993 gesetzt => 19930308.

        * `gcal %0*w10son' (== `JJJJ*wNWWW')
          Das aktuelle Datum wird auf das Datum des Sonntags der 10'ten
          ISO-Kalenderwoche 1993 gesetzt => 19930314.

Das `JJJJ@e|t|DVAR[[+|-]N[WWW]]' Format:
        * `gcal %1994@e' (== `JJJJ@e')
          Das aktuelle Datum wird auf das Datum des Ostersonntags 1994
          gesetzt => 19940403.

        * `gcal %1994@e10'

        * `gcal %1994@e+10' (== `JJJJ@e[+]N')
          Das aktuelle Datum wird auf das Datum 10 Tage nach
          Ostersonntag 1994 gesetzt => 19940413.

        * `gcal %1994@e-10' (== `JJJJ@e-N')
          Das aktuelle Datum wird auf das Datum 10 Tage vor
          Ostersonntag 1994 gesetzt => 19940324.

        * `gcal %0@e'

        * `gcal %00@e'

        * `gcal %000@e'

        * `gcal %0000@e' (== `JJJJ@e')
          Das aktuelle Datum wird auf das Datum des Ostersonntags 1993
          gesetzt => 19930411.

        * `gcal %0@e10'

        * `gcal %0@e+10' (== `JJJJ@e[+]N')
          Das aktuelle Datum wird auf das Datum 10 Tage nach
          Ostersonntag 1993 gesetzt => 19930421.

        * `gcal %0@e-10' (== `JJJJ@e-N')
          Das aktuelle Datum wird auf das Datum 10 Tage vor
          Ostersonntag 1993 gesetzt => 19930401.

        * `gcal %1994@e3Mi'

        * `gcal %1994@e+3Mi' (== `JJJJ@e[+]NWWW')
          Das aktuelle Datum wird auf das Datum 3'ter Mittwoch nach
          Ostersonntag 1994 gesetzt => 19940420.

        * `gcal %1994@e-3mi' (== `JJJJ@e-NWWW')
          Das aktuelle Datum wird auf das Datum 3'ter Mittwoch vor
          Ostersonntag 1994 gesetzt => 19940316.

        * `gcal %0@e3mi'

        * `gcal %0@e+3mi' (== `JJJJ@e[+]NWWW')
          Das aktuelle Datum wird auf das Datum 3'ter Mittwoch nach
          Ostersonntag 1993 gesetzt => 19930428.

        * `gcal %0@e-3mi' (== `JJJJ@e-NWWW')
          Das aktuelle Datum wird auf das Datum 3'ter Mittwoch vor
          Ostersonntag 1993 gesetzt => 19930324.

        * `gcal %1994@t' (== `JJJJ@t')
          Das aktuelle Datum wird auf das heutige Datum im Jahr 1994
          gesetzt => 19940217.

        * `gcal %1994@t10'

        * `gcal %1994@t+10' (== `JJJJ@t[+]N')
          Das aktuelle Datum wird auf das Datum 10 Tage nach dem
          heutigen Datum im Jahr 1994 gesetzt => 19940227.

        * `gcal %1994@t-10' (== `JJJJ@t-N')
          Das aktuelle Datum wird auf das Datum 10 Tage vor dem
          heutigen Datum im Jahr 1994 gesetzt => 19940207.

        * `gcal %0@t'

        * `gcal %00@t'

        * `gcal %000@t'

        * `gcal %0000@t' (== `JJJJ@t')
          Das aktuelle Datum wird auf das heutige Datum gesetzt
          => 19930217.

        * `gcal %0@t10'

        * `gcal %0@t+10' (== `JJJJ@t[+]N')
          Das aktuelle Datum wird auf das Datum 10 Tage nach dem
          heutigen Datum gesetzt => 19930227.

        * `gcal %0@t-10' (== `JJJJ@t-N')
          Das aktuelle Datum wird auf das Datum 10 Tage vor dem
          heutigen Datum gesetzt => 19930207.

        * `gcal %1994@t3Mi'

        * `gcal %1994@t+3Mi' (== `JJJJ@t[+]NWWW')
          Das aktuelle Datum wird auf das Datum 3'ter Mittwoch nach dem
          heutigen Datum im Jahr 1994 gesetzt => 19940309.

        * `gcal %1994@t-3mi' (== `JJJJ@t-NWWW')
          Das aktuelle Datum wird auf das Datum 3'ter Mittwoch vor dem
          heutigen Datum im Jahr 1994 gesetzt => 19940302.

        * `gcal %0@t3mi'

        * `gcal %0@t+3mi' (== `JJJJ@t[+]NWWW')
          Das aktuelle Datum wird auf das Datum 3'ter Mittwoch nach dem
          heutigen Datum gesetzt => 19930310.

        * `gcal %0@t-3mi' (== `JJJJ@t-NWWW')
          Das aktuelle Datum wird auf das Datum 3'ter Mittwoch vor dem
          heutigen Datum gesetzt => 19930127.

        * `gcal -v a=0303 %1994@a' (== `JJJJ@DVAR')
          Das aktuelle Datum wird auf das Datum 3'ter Mrz 1994 gesetzt
          => 19940303.

        * `gcal -v a=0303 %1994@a10'

        * `gcal -v a=0303 %1994@a+10' (== `JJJJ@DVAR[+]N')
          Das aktuelle Datum wird auf das Datum 10 Tage nach dem 3'ten
          Mrz 1994 gesetzt => 19940313.

        * `gcal -v a=0303 %1994@a-10' (== `JJJJ@DVAR-N')
          Das aktuelle Datum wird auf das Datum 10 Tage vor dem 3'ten
          Mrz 1994 gesetzt => 19940221.

        * `gcal -v a=0303 %0@a' (== `JJJJ@DVAR')
          Das aktuelle Datum wird auf das Datum 3'ter Mrz 1993 gesetzt
          => 19930303.

        * `gcal -v a=0303 %0@a10'

        * `gcal -v a=0303 %0@a+10' (== `JJJJ@DVAR[+]N')
          Das aktuelle Datum wird auf das Datum 10 Tage nach dem 3'ten
          Mrz 1993 gesetzt => 19930313.

        * `gcal -v a=0303 %0@a-10' (== `JJJJ@DVAR-N')
          Das aktuelle Datum wird auf das Datum 10 Tage vor dem 3'ten
          Mrz 1993 gesetzt => 19930221.

        * `gcal -v a=0303 %1994@a3mi'

        * `gcal -v a=0303 %1994@a+3mi' (== `JJJJ@DVAR[+]NWWW')
          Das aktuelle Datum wird auf das Datum 3'ter Mittwoch nach dem
          3'ten Mrz 1994 gesetzt => 19940323.

        * `gcal -v a=0303 %1994@a-3mi' (== `JJJJ@DVAR-NWWW')
          Das aktuelle Datum wird auf das Datum 3'ter Mittwoch vor dem
          3'ten Mrz 1994 gesetzt => 19940216.

        * `gcal -v a=0303 %0@a3mi'

        * `gcal -v a=0303 %0@a+3mi' (== `JJJJ@DVAR[+]NWWW')
          Das aktuelle Datum wird auf das Datum 3'ter Mittwoch nach dem
          3'ten Mrz 1993 gesetzt => 19930324.

        * `gcal -v a=0303 %0@a-3mi' (== `JJJJ@DVAR-NWWW')
          Das aktuelle Datum wird auf das Datum 3'ter Mittwoch vor dem
          3'ten Mrz 1993 gesetzt => 19930210.

Das `MONATSNAME[TT]' Format:
        * `gcal %April' (== MONATSNAME)
          Das aktuelle Datum wird auf das Datum 17'ter April 1993
          gesetzt => 19930417.

        * `gcal %april3'

        * `gcal %april03' (== MONATSNAME TT)
          Das aktuelle Datum wird auf das Datum 3'ter April 1993
          gesetzt => 19930403.

Das `WOCHENTAGSNAME[N]' Format:
        * `gcal %Freitag' (== WOCHENTAGSNAME)
          Das aktuelle Datum wird auf das Datum des Freitags der
          laufenden Woche im Februar 1993 gesetzt => 19930219.

        * `gcal %Freitag2'

        * `gcal %Freitag02' (== WOCHENTAGSNAME N)
          Das aktuelle Datum wird auf das Datum 2'ter Freitag im
          Februar 1993 gesetzt (N == `1...5|9') => 19930212.

Das TT Format:
        * `gcal %3'

        * `gcal %03' (== TT)
          Das aktuelle Datum wird auf das Datum 3'ter Februar 1993
          gesetzt => 19930203.

Kommandos
---------

Die Kommandos steuern die Zeitrume, die von Gcal bercksichtigt werden.
Kommandos knnen in vier Hauptklassen eingeteilt werden, nmlich
"einzelne" Kommandos, spezielle "3-Monatsmodus" Kommandos, "Listen" von
Kommandos und "Bereiche" von Kommandos.  Einzelne und spezielle
3-Monatsmodus Kommandos erzeugen nur *ein* Kalenderblatt, Listen oder
Bereiche von Kommandos erzeugen *mehr als ein* Kalenderblatt je
Programmlauf.  Wenn eine Liste von Kommandos gegeben ist, so arbeitet
Gcal jedes einzelne Kommando dieser Liste sequentiell ab, eins nach dem
anderen.  Ein Bereich von Kommandos wird von Gcal zuerst in einzelne
Kommandos expandiert, sodann arbeitet Gcal jedes einzelne Kommando,
welches nach der internen Expansion erzeugt wurde, sequentiell ab.

Um die verwendete Notation im nachstehenden Text zu verstehen,
bezeichnet MM entweder eine Zahl, einen Monatsnamen oder eines der
speziellen 3-Monatsmodus Kommandos `.', `..', `.+' und `.-'.  Es knnen
weder Listen noch Bereiche von Monaten oder Jahren erzeugt werden,
falls ein spezielles 3-Monatsmodus Kommando angegeben wurde.

Der Bereich von MM ist gltig von 1 bis 12 oder gltig von Januar bis
Dezember.  Beide Notationen drfen gemischt verwendet werden.
Monatsnamen drfen bis auf ihre ersten drei Zeichen abgekrzt werden.
JJJJ ist eine Zahl.  Der Bereich von JJJJ ist gltig von 1 bis 9999.
Ein Bereich (MM-MM JJJJ+JJJJ ...) besteht aus genau zwei Elementen.
Eine Liste (MM,...,MM JJJJ;...;JJJJ ...) mu mindestens zwei Elemente
enthalten, und darf unbegrenzt viele Elemente enthalten.

Hier ist eine Aufstellung aller benutzten Bereichs-, Listen- und
sonstigen Kommandotrennzeichen:

   * Das `-' Zeichen ist das *Bereich von Monaten* Trennzeichen.

   * Das `,' Zeichen ist das *Liste von Monaten* Trennzeichen.

   * Das `+' Zeichen ist das *Bereich von Jahren* Trennzeichen.

   * Das `;' Zeichen ist das *Liste von Jahren* Trennzeichen.

   * Das `/' Zeichen ist das *Monat des Jahres* Trennzeichen.

   * Das `:' Zeichen ist das *Fiskaljahr* Trennzeichen.

Einfache Kommandos
..................

`KEINES'
     Aktueller Monat des aktuellen Jahres, wird weiterhin als
     "Einzelmonatsmodus" bezeichnet.

`MONATSNAME'
     Angegebener Monat des aktuellen Jahres, z.B.:

          gcal mai
          gcal OKTOBER
          gcal ja

`JJJJ'
     Angegebenes Jahr, wird weiterhin als "Einzeljahresmodus"
     bezeichnet, z.B.:

          gcal 1992

     Aber es gibt eine Ausnahme von dieser generellen Regel.  Wenn die
     angegebene Jahreszahl kleiner oder gleich zwlf ist, so nimmt Gcal
     an, da ein angegebener Monat des aktuellen Jahres gewnscht ist.
     Wenn ein angegebenes Jahr kleiner oder gleich zwlf gewnscht
     wird, so sollte Gcal entweder so

          gcal 1:6

     oder so

          gcal 6+6

     aufgerufen werden, um beispielsweise das Jahr sechs nach Christus
     zu erhalten.

`MM JJJJ'
`MM/JJJJ'
     Angegebener Monat eines angegebenen Jahres, z.B.:

          gcal 9 1992
          gcal 9/1992
          gcal Nov 1777
          gcal Nov/1777

`:'
     Einzelnes Fiskaljahr (1), beginnend im *aktuellen Monat* des
     *aktuellen Jahres* und endend im Monat *aktueller Monat*-1 des
     *aktuellen Jahres*+1, wird weiterhin als "implizites Fiskaljahr"
     bezeichnet, z.B.:

          gcal :

`MM:'
     Einzelnes Fiskaljahr, beginnend im Monat MM des *aktuellen Jahres*
     und endend im Monat MM-1 des *aktuellen Jahres*+1, wird weiterhin
     als "explizites Fiskaljahr" bezeichnet, z.B.:

          gcal 6:
          gcal feb:
          gcal NOVEMBER:

`:JJJJ'
     Einzelnes Fiskaljahr, beginnend im aktuellen Monat des Jahres JJJJ
     und endend im Monat *aktueller Monat*-1 des Jahres JJJJ+1, wird
     weiterhin auch als "explizites Fiskaljahr" bezeichnet, z.B.:

          gcal :1999

`MM:JJJJ'
     Einzelnes Fiskaljahr, beginnend im Monat MM des Jahres JJJJ und
     endend im Monat MM-1 des Jahres JJJJ+1, wird weiterhin auch als
     "explizites Fiskaljahr" bezeichnet, z.B.:

          gcal 7:1999
          gcal okt:1992
          gcal Februar:1777

  ---------- Fussnoten ----------

  (1)  Abweichendes Wirtschaftsjahr.

3-Monatsmodus Kommandos
.......................

`.'
     Vorheriger, aktueller und nchster Monat des laufenden Jahres,
     z.B.:

          gcal .

`. JJJJ'
     Vorheriger, aktueller und nchster Monat des angegebenen Jahres,
     z.B.:

          gcal . 1992

`..'
     Aktuelles Quartal des laufenden Jahres, z.B.:

          gcal ..

`.. JJJJ'
     Aktuelles Quartal des angegebenen Jahres, z.B.:

          gcal .. 1992

`.+'
     Aktueller und die beiden nchsten Monate des laufenden Jahres,
     z.B.:

          gcal .+

`.+ JJJJ'
     Aktueller und die beiden nchsten Monate des angegebenen Jahres,
     z.B.:

          gcal .+ 1992

`.-'
     Aktueller und die beiden vorhergehenden Monate des laufenden
     Jahres, z.B.:

          gcal .-

`.- JJJJ'
     Aktueller und die beiden vorhergehenden Monate des angegebenen
     Jahres, z.B.:

          gcal .- 1992

Listen von Kommandos
....................

`MM,...,MM'
     Liste von angegebenen Monaten des aktuellen Jahres, z.B.:

          gcal 1,5,12
          gcal 3,1,5,3
          gcal juni,9,jan

`MM/JJJJ,...,MM/JJJJ'
     Liste von angegebenen Monaten in angegebenen Jahren, z.B.:

          gcal 1/1992,5,12/2001
          gcal juni/1991,9/1801,jan

`MM,...,MM JJJJ'
     Liste von angegebenen Monaten eines angegebenen Jahres, z.B.:

          gcal 3,7 1999
          gcal 1,dez,juli 1777

`JJJJ;...;JJJJ'
     Liste von angegebenen Jahren, z.B.:

          gcal 1992;1777;1899

`MM:JJJJ;...;MM:JJJJ'
     Liste von angegebenen Fiskaljahren, z.B.:

          gcal 7:1999;8:1992;April:3

*Andere gltige Listen:*

`MM,MM/JJJJ,...'
     Gemischte Monatsliste bestehend aus: `MM MM/JJJJ'

          gcal 6,8,3/1999,feb/3,januar

`MM:;MM:JJJJ,...'
     Gemischte Liste von Fiskaljahren von aktuellen/angegebenen Jahren
     bestehend aus: `MM: :JJJJ MM:JJJJ JJJJ'

          gcal 3:;1994;februar:1999;:1777;JAN:

`MM:;MM:;...'
     Liste von Fiskaljahren des aktuellen Jahres bestehend aus: `MM:'

          gcal 3:;august:;DEZ:

Bereiche von Kommandos
......................

`MM-MM'
     Bereich von angegebenen Monaten des aktuellen Jahres, z.B.:

          gcal 3-7
          gcal 11-8
          gcal MAI-dez
          gcal 12-aug

`MM/JJJJ-MM/JJJJ'
     Bereich von angegebenen Monaten von angegebenen Jahren, z.B.:

          gcal 3/1991-juli/1992
          gcal dez/1994-3
          gcal sep-dez/2000

`MM-MM JJJJ'
     Bereich von angegebenen Monaten eines angegebenen Jahres, z.B.:

          gcal 3-7 1999
          gcal nov-3 1777
          gcal aug-dez 1992

`MM JJJJ-JJJJ'
`MM/JJJJ-JJJJ'
     Bereich eines angegebenen Monats von angegebenen Jahren, z.B.:

          gcal AUGUST 1494-1497
          gcal 3/1993-1999
          gcal nov/3-1777

`JJJJ+JJJJ'
     Bereich von angegebenen Jahren, z.B.:

          gcal 1992+1994

`MM:JJJJ+MM:JJJJ'
     Bereich von angegebenen Fiskaljahren, z.B.:

          gcal 7:1999+8:1992
          gcal aug:1992+juli:1999

Die `GCAL' Umgebungsvariable
============================

In der Umgebungsvariable `GCAL' knnen Grundeinstellungen zu Optionen
fr Gcal gespeichert werden (*siehe GCAL: Umgebungsvariablen.).  Diese
Optionen werden bei Programmstart zuerst interpretiert, und einige von
ihnen knnen durch explizit gegebene Kommandozeilenargumente oder
Werte, die in der Antwortdatei `@DATEI' vorhanden sind, berschrieben
werden.  *Siehe Kommandozeilenargumente::, und *Siehe Antwortdatei::.

Zum Beispiel:

   * fr *sh*:

          GCAL="-i @farbe -b 3"; export GCAL

   * fr *csh*:

          setenv GCAL "-i @farbe -b 3"

   * fr *MS-DOS*:

          set GCAL=-i @farbe -b 3

Unter Vax/VMS lautet der Name der Umgebungsvariable `GCAL_OPT', um
einen Konflikt mit dem gesetzten Symbol `GCAL', welches zum Aufruf des
Programms dient, zu vermeiden.

Zum Beispiel:

   * fr *VMS*:

          define GCAL_OPT "-i @farbe -b 3"

Ewige Feiertage
***************

Die *ewige Feiertagsliste* wird nur fr Jahre nach A.D.29 erzeugt.
Sie kann auf mehrere Arten und Weisen ausgegeben werden:

Wenn Gcal ohne explizites (Fiskal) Datum mit dem *ewige Feiertagsliste*
Argument gestartet wird (*siehe `--holiday-list[=long|short]': Kalender
Optionen.), z.B.:

     gcal --holiday-list
     gcal -n
     gcal -n :

so gibt Gcal ohne einen vorangehenden Kalender alle diejenigen
Feiertage aus der ewigen Feiertagsliste aus, die sich auf das aktuelle
Jahr bzw. Fiskaljahr beziehen.

Wenn Gcal mit dem *ewige Feiertagsliste* Argument und einem Monat (plus
eines Jahres) gestartet wird, z.B.:

     gcal --holiday-list juli
     gcal -n juli
     gcal -n 7 1993
     gcal -n 7/1993

so gibt Gcal einen Monatskalender des angegebenen Monats (des Jahres)
und nachfolgend alle diejenigen Feiertage aus der ewigen Feiertagsliste
aus, die sich auf den angegebenen Monat (des angegebenen Jahres)
beziehen.

Wenn Gcal mit dem *ewige Feiertagsliste* Argument und einem einfachen
Jahr (oder einem Fiskaljahr) gestartet wird, z.B.:

     gcal --holiday-list 1993
     gcal -n 1993
     gcal -n juli:
     gcal -n :1993
     gcal -n 7:1993

so gibt Gcal einen Jahreskalender des angegebenen Jahres und nachfolgend
alle diejenigen Feiertage aus der ewigen Feiertagsliste aus, die sich
auf das angegebene Jahr bzw. Fiskaljahr beziehen.

Wenn Gcal mit dem *ewige Feiertagsliste* Argument und einem der
speziellen 3-Monatsmodus Kommandos gestartet wird (*siehe `. JJJJ':
3-Monatsmodus Kommandos.), z.B.:

     gcal --holiday-list .
     gcal -n .
     gcal -n ..
     gcal -n .+
     gcal -n .-

so gibt Gcal die bezogenen 3 Monate im festen Layout/Stil eines
Jahreskalenders aus, sowie nachfolgend alle diejenigen Feiertage aus
der ewigen Feiertagsliste aus, die sich auf diese Monate beziehen.

Wenn Gcal mit dem *ewige Feiertagsliste* Argument und einer *Liste*
oder einem *Bereich* von Kommandos gestartet wird, so werden
entsprechende Folgen von ewigen Feiertagslisten produziert.  *Siehe
`MM,...,MM': Listen von Kommandos, und *Siehe `MM-MM': Bereiche von
Kommandos, fr weitere Details.

Einige Anmerkungen:

Die folgende Tabelle fhrt alle diejenigen Zeichen auf, die zum
Markieren eines Eintrags in der ewigen Feiertagsliste verwendet werden,
d.h. direkt vor dessen Datum stehen:

*Zeichen*   *Beschreibung*                                                
`+'         Gesetzlicher Feiertag, der im gesamten Land gltig ist.       
            Wird automatisch mit Hervorhebungssequenzen bzw.              
            Markierungszeichen versehen.                                  
`#'         Gesetzlicher Feiertag, der berwiegend im gesamten Land       
            gltig ist.  Wird automatisch mit Hervorhebungssequenzen      
            bzw. Markierungszeichen versehen.                             
`*'         Gesetzlicher Feiertag, der nicht berwiegend im gesamten      
            Land gltig ist.  Wird nicht mit Hervorhebungssequenzen bzw.  
            Markierungszeichen versehen.                                  
`-'         Sonstiger Feiertag, der nur zu Erinnerungszwecken dient.      
            Wird nicht mit Hervorhebungssequenzen bzw.                    
            Markierungszeichen versehen.                                  

Mittels der `--cc-holidays=CC[+...]' Option kann die ewige
Feiertagsliste mit zustzlichen landesspezifischen Feiertagen
ausgestattet werden, die dann zusammen mit den Standardfeiertagen in
dieser Liste enthalten sind.  *Siehe `--cc-holidays=CC[+...]': Kalender
Optionen.  So bewirkt zum Beispiel:

     --cc-holidays=de+fr

die Aufnahme von deutschen und franzsischen Feiertagen in die ewige
Feiertagsliste.  Da die Aufnahme von landesspezifischen Feiertagen in
die ewige Feiertagsliste nicht an die vorgenommene
Internationalisierung von Gcal gekoppelt ist (*siehe Gesichtspunkte zur
Internationalisierung: Internationalisierung.), d.h. die
landesspezifischen Feiertage fr ein bestimmtes Territorium bzw.  Land
werden nicht automatisch bei Programmstart bercksichtigt, liegt es
somit in der Hand des Endanwenders, mit welchen landesspezifischen
Feiertagen die ewige Feiertagsliste versehen wird.  *Siehe Die `GCAL'
Umgebungsvariable: Die GCAL Umgebungsvariable, fr Informationen, wie
Gcal dazu veranlat werden kann, die ewige Feiertagsliste bei
Programmstart automatisch mit landesspezifischen Feiertagen zu versehen.

Die beliebige Auswahl der verschiedenen landesspezifischen Feiertage
kann recht sinnvoll genutzt werden, wenn beispielsweise Informationen
ber ein bestimmtes Territorium bzw. Land bentigt werden.  Angenommen
ein Geschftsmann in Deutschland beabsichtigt, im Monat November in die
USA zu reisen, und mchte wissen, welche gesetzlichen Feiertage dort
auf Werktage fallen, um seine Terminplanung daraufhin abstimmen zu
knnen.  So kann das wie folgt ermittelt werden:

     gcal -f /dev/null -q US -D r -cE nov

Termine
*******

Dieses Kapitel beschreibt, wie Gcal fr *Terminzwecke* benutzt werden
kann.  Dazu darf eine Gcal spezifische Ressourcendatei erzeugt werden,
welche Termineintrge enthlt (*siehe Ressourcendatei::.).

Jedesmal wenn Gcal im einfachen Einzelmonatsmodus ausgefhrt wird, d.h.
beim Aufruf von Gcal wurde in der Kommandozeile weder ein expliziter
Monat noch ein explizites Jahr bzw. Fiskaljahr angegeben, aber das
*Termin* Argument vorgefunden wird, z.B.:

     gcal --list-of-fixed-dates
     gcal -c

so durchsucht Gcal die Ressourcendatei nach Daten und verarbeitet genau
solche, die sich auf das aktuelle Systemdatum (==heute) beziehen.
Sodann gibt Gcal ohne einen vorangehenden Kalender alle diejenigen
Termine aus der Ressourcendatei aus, die sich auf den aktuellen Tag
(Woche/Monat/Jahr) des aktuellen Jahres beziehen.

Einige weitere Beispiele hierzu:

     gcal -ce
     gcal -cw-
     gcal -c-m
     gcal -c-y-
     gcal -jcb -c-et
     gcal -cey-
     gcal -jc -cey

Die Liste der Termine kann auf mehrere Arten und Weisen ausgegeben
werden:

Wenn Gcal mit dem *Termin* Argument und/oder einem Monat und/oder einem
expliziten Jahr bzw. Fiskaljahr gestartet wird; bzw. mit einem der
speziellen 3-Monatsmodus Kommandos, z.B.:

     gcal -c juli
     gcal -ce 7 1994
     gcal -c-y 7/1994
     gcal -c 7:1993
     gcal -c 1993
     gcal -c .
     gcal -c .+

so gibt Gcal einen (drei) Monats-/ Jahreskalender des angegebenen bzw.
aktuellen Monats-/ Jahres aus, und nachfolgend alle diejenigen Termine
aus der Ressourcendatei, die sich auf den angegebenen Zeitraum beziehen;
das Niveau ist wie bei der `-cy' Option, wenn sich der Zeitraum auf ein
Jahr bzw. Fiskaljahr bezieht oder auf eine 3-Monatsperiode, bzw.  wie
bei der `-cm' Option, wenn sich der Zeitraum auf einen Monat bezieht.

Wenn Gcal ohne explizites Datum mit dem *Termin* Argument *in
Verbindung mit* dem *ewige Feiertagsliste* Argument gestartet wird,
z.B.:

     gcal -c -n
     gcal -Cm -n
     gcal -Cl1224 -n
     gcal -cl3+ -n

so gibt Gcal ohne einen vorangehenden Kalender alle diejenigen Termine
aus der Ressourcendatei aus, die sich auf den angegebenen Zeitraum im
aktuellen Jahr beziehen, und danach alle diejenigen Feiertage aus der
ewigen Feiertagsliste aus, die sich auf das gesamte aktuelle Jahr
beziehen.  *Siehe Ewige Feiertage::, fr weitere Details zur *ewigen
Feiertagsliste*.

Anmerkung zu vorhergehenden Beispielen:

Falls das *Standard/Spezielle Kalenderformat* Argument oder das
*Starttag der Woche* Argument (1) zudem mit vorgefunden wird, z.B.:

     gcal -c -n -i
     gcal -c -i-
     gcal -n -i- :
     gcal -n -s Sonntag

so gibt Gcal einen Monats-/ Jahreskalender vor jeder anderen
angeforderten Liste aus!  *Siehe `--type=special|standard': Kalender
Optionen, und *Siehe `--starting-day[=ARGUMENT]': Kalender Optionen, fr
mehr Informationen.

Jedesmal wenn Gcal im einfachen Einzeljahresmodus ausgefhrt wird, d.h.
beim Aufruf von Gcal wurde in der Kommandozeile weder ein expliziter
Monat noch ein explizites Jahr bzw. Fiskaljahr angegeben, aber das
*Termin* Argument (evtl. mit Modifizierern) und das *Anzahl der
Monatsblcke* Argument vorgefunden wird (*siehe `--blocks=ANZAHL':
Kalender Optionen.), z.B.:

     gcal -c --blocks=3
     gcal -C-em -b 3
     gcal -c-t -b 6 -jc

so durchsucht Gcal die Ressourcendatei nach Daten und verarbeitet genau
jene, die sich auf das aktuelle Systemdatum (==heute) beziehen.  Sodann
gibt Gcal einen vorangehenden Jahreskalender und alle diejenigen
Termine aus der Ressourcendatei aus, die sich auf den aktuellen Tag
(Woche/Monat/Jahr) des aktuellen Jahres beziehen.

Es knnen aber auch Daten von vergangenen, aktuellen oder zuknftigen
Monaten/Jahren verarbeitet werden.  Das geht einerseits, indem die
`%DATUM' Option entsprechend verwendet wird (*siehe
Datummodifizierer::.), oder andererseits, indem ein Kommando bzw. eine
*Liste* oder ein *Bereich* von Kommandos verwendet wird.

Zum Beispiel:

`gcal -c -n- 1993'
     Ausgabe aller Termine in aufsteigender Reihenfolge, welche sich
     auf das gesamte Jahr 1993 beziehen, sowie der ewigen
     Feiertagsliste in absteigender Reihenfolge, welche sich auch auf
     das gesamte Jahr 1993 bezieht; das Niveau ist wie bei der `-cy'
     Option.

`gcal -c- juli:1993'
     Ausgabe aller Termine in absteigender Reihenfolge, welche sich auf
     das Fiskaljahr -- beginnend im Monat Juli 1993 und endend im Monat
     Juni 1994 -- beziehen; das Niveau ist wie bei der `-cy' Option.

`gcal -ce juli 1993'
     Ausgabe aller Termine in aufsteigender Reihenfolge, welche sich
     auf den Monat Juli 1993 beziehen, einschlielich aller ewigen
     Feiertage dieses Zeitraums, welche in diese Liste eingefgt
     werden; das Niveau ist wie bei der `-cm' Option.

`gcal -c-e -n 1993+1996'
     Ausgabe aller Termine in absteigender Reihenfolge, welche sich auf
     die gesamten Jahre 1993, 1994, 1995 und 1996 beziehen (Jahr fr
     Jahr in Folge), einschlielich aller ewigen Feiertage dieses
     Zeitraums, welche in diese Liste eingefgt werden, sowie der
     ewigen Feiertagsliste in aufsteigender Reihenfolge, welche sich
     ebenfalls auf diese Jahre bezieht; das Niveau ist wie bei der
     `-cy' Option.

`gcal -cm %19920317'
     Ausgabe aller Termine in aufsteigender Reihenfolge, welche sich
     auf den Monat Mrz 1992 beziehen.

`gcal %1994@e -n -c'
     Ausgabe aller Termine in aufsteigender Reihenfolge, welche sich
     auf Ostersonntag 1994 beziehen, sowie der ewigen Feiertagsliste in
     aufsteigender Reihenfolge, welche sich auf das gesamte Jahr 1994
     bezieht.

  ---------- Fussnoten ----------

  (1)  Ausgenommen der `--starting-day=today' bzw.  `--starting-day=0'
Option.

Ressourcendatei
===============

Dieser Abschnitt beschreibt, wie eine "Ressourcendatei", welche
Termineintrge enthlt, benutzt wird.  Der Name der
Standard-Ressourcendatei ist `$HOME/.gcalrc' (1).

Gcal benutzt einen speziellen Datei-Suchmechanismus:

  1. Das Gcal Programm erwartet die Standard-Ressourcendatei im
     Dateiverzeichnis, welches in der Umgebungsvariable `HOME'
     angegeben ist.  Falls die Umgebungsvariable `HOME' weder definiert
     noch gesetzt ist, so bergeht Gcal diesen Schritt.  *Siehe HOME:
     Umgebungsvariablen.

  2. Sollte vorherige Aktion versagt haben, so durchsucht Gcal
     diejenigen Dateiverzeichnisse nach der Standard-Ressourcendatei,
     welche in der Umgebungsvariable `GCALPATH' (*siehe GCALPATH:
     Umgebungsvariablen.) angegeben sind.  Die Umgebungsvariable
     `GCALPATH' enthlt eine durch `:' Zeichen (2) getrennte Liste von
     Dateiverzeichnissen.  Falls eine solche Umgebungsvariable weder
     definiert noch gesetzt ist, so bergeht Gcal auch diesen Schritt.

  3. Sollte vorherige Aktion versagt haben, so inspiziert Gcal das
     *Benutzer-Datenverzeichnis* (3) nach der Standard-Ressourcendatei.
     Dieses Verzeichnis ist ein Dateiverzeichnis relativ zum `HOME'
     Dateiverzeichnis.  Falls eine `GCAL_USR_DATADIR' Umgebungsvariable
     gesetzt ist, so wird Gcal den Inhalt dieser Umgebungsvariable an
     den Inhalt der `HOME' Umgebungsvariable anfgen, und zuerst diesen
     Dateiverzeichnisnamen anstelle des beim Kompilationsvorgangs
     eingebrannten Dateiverzeichnisnamens benutzen (*siehe
     GCAL_USR_DATADIR: Umgebungsvariablen.).  Falls die
     Umgebungsvariable `HOME' weder definiert noch gesetzt ist, so
     bergeht Gcal natrlicherweise auch diesen Schritt.

  4. Sollten alle bisherigen Aktionen versagt haben, so inspiziert Gcal
     das *System-Datenverzeichnis* (4) nach der
     Standard-Ressourcendatei.  Dieses Verzeichnis ist ein
     Dateiverzeichnis absolut zum *Wurzel*/*$(prefix)*
     Dateiverzeichnis.  Falls eine `GCAL_SYS_DATADIR' Umgebungsvariable
     gesetzt ist, so wird Gcal zuerst diesen Dateiverzeichnisnamen
     anstelle des beim Kompilationsvorgang eingebrannten
     Dateiverzeichnisnamens benutzen (*siehe GCAL_SYS_DATADIR:
     Umgebungsvariablen.).

Falls die Standard-Ressourcendatei nicht whrend der Schritte 1...4 des
Datei-Suchmechanismus' aufgefunden wurde, so werden keinerlei Termine
erzeugt!

Falls die `--debug=abort' Option angegeben wurde und keine
Standard-Ressourcendatei whrend der Schritte 1...4 des
Datei-Suchmechanismus' aufgefunden wurde, so wird das Gcal-Programm mit
Fehlerkode abgebrochen.  *Siehe 118: Fehlerkodes, und *Siehe
`--debug=abort': Globale Optionen, fr weitere Informationen.

Wenn ein `-f|F DATEINAME[+...]' bzw.  `--resource-file=DATEINAME'
Kommandozeilenargument vorgefunden wird, so wird eine Datei DATEINAME
anstelle der Standard-Ressourcendatei als Ressourcendatei benutzt.
*Siehe `--resource-file=DATEINAME': Termin Optionen, fr weitere
Informationen.

Anmerkung:

Ein "erweiterter Dateiname" enthlt ein oder mehrere `/' Zeichen (5)
und bezeichnet eine Datei, deren Zugriffspfad entweder vom
Wurzeldateiverzeichnis (6) aus fest vorgegeben ist, wie z.B.
`/foo/bar/file', oder vom aktuellen Dateiverzeichnis aus fest
vorgegeben ist, wie z.B.  `./bar/file' oder `../bar/file'.  Falls
DATEINAME ein erweiterter Dateiname ist:

   * Wenn DATEINAME vorgefunden wird, so wird Gcal diese Datei
     auswerten.

   * Wenn DATEINAME nicht vorgefunden wird, so wird Gcal diese Datei
     nicht auswerten.

Ein "einfacher Dateiname" enthlt keinen Verweis auf einen Zugriffspfad,
der entweder vom Wurzeldateiverzeichnis oder vom aktuellen
Dateiverzeichnis aus fest vorgegeben ist, wie z.B. `file' oder
`bar/file'.  Falls DATEINAME ein einfacher Dateiname ist:

   * Gcal wird versuchen, die Datei DATEINAME unter Zuhilfenahme des
     zuvor erklrten Datei-Suchmechanismus' aufzufinden.

  ---------- Fussnoten ----------

  (1)  Unter MS-DOS, OS/2 und einigen anderen Betriebssystemen ist der
Name der Standard-Ressourcendatei `$HOME/gcalrc' (ohne vorangehenden
`.').

  (2)  Unter MS-DOS, OS/2 und einigen anderen Betriebssystemen wird ein
anderes Zeichen verwendet, z.B. `;' unter MS-DOS und OS/2.

  (3)  Normalerweise `$HOME/share/gcal'.

  (4)  Normalerweise `/usr/local/share/gcal' oder
`$(prefix)/share/gcal'.

  (5)  Betriebssysteme wie z.B. MS-DOS oder OS/2 verwenden das `\'
Zeichen, mit dem ein Dateiverzeichnis von einem Dateinamen separiert
wird.

  (6)  Im Englischen mit *root-directory* bezeichnet.

Struktur einer Ressourcendatei
------------------------------

Eine Gcal Ressourcendatei ist zunchst einmal eine reine ASCII
Textdatei, die mit einem beliebigen Texteditor oder durch Umlenkung des
*Standardausgabe-Gertekanals* in eine Datei erzeugt werden kann, z.B.:

     $ echo '19930217 Text'>> Ressourcendatei <RET>

Jede Ressourcendatei mu eine besondere -- aber einfache --
Zeilenstruktur aufweisen, so da Gcal auch in der Lage ist, deren Inhalt
zu interpretieren.  Jeder Termineintrag, der in einer Zeile einer
Ressourcendatei vorgenommen wird, mu in zwei Teile aufgespalten werden,
nmlich einerseits in einen *Datumteil*, und andererseits in einen
optionalen *Textteil*, die durch mindestens *ein* "whitespace" (1)
Trennzeichen voneinander abgetrennt werden mssen.  Wird kein
*Textteil* angegeben, so entfllt natrlich auch die Angabe des zur
Trennung dieser beiden Teile notwendigen *whitespace* Zeichens.

Eine Zeile mu stets mit einem `\n' (Newline) Zeichen enden,
ausgenommen es ist die letzte Zeile in einer Ressourcendatei.  Die
maximale Lnge einer Zeile ist allerdings begrenzt auf `INT_MAX' (2)
Zeichen.  Bei Umlenkung des *Standardausgabe-Gertekanals* in eine
Datei wird der Zeile automatisch ein Newline Zeichen angefgt, bei
Benutzung von einem Texteditor normalerweise dann, wenn die
geschriebene Zeile mittels der <RET> Taste abgeschlossen wird.  Sollte
der verwendete Texteditor hinsichtlich der Wirkungsweise der <RET>
Taste und der Generierung des damit verbundenen Newline Zeichens nicht
wie angegeben arbeiten, so sollte der Texteditor in diese Betriebsart
versetzt werden.  Sollte das nicht mglich sein, so ist der verwendete
Texteditor fr die Erzeugung von Gcal Ressourcendateien unbrauchbar!

Die Zeilenstruktur eines Termineintrags ist:

     DATUMTEIL [ *whitespace* TEXTTEIL ] *newline*

oder konkreter, z.B.:

     JJJJ[MM[TT|WWWN]] [ *whitespace* TEXT ] *newline*

oder noch konkreter, z.B.:

     19940217 Hallo, ich bin der Text!

Neben Termineintrgen knnen noch weitere Eintrge in einer
Ressourcendatei vorgenommen werden, und zwar:

Include Anweisungen...

     #include <DATEINAME>
     #include "DATEINAME"

Datumvariablenzuweisungen-/ operationen...

     DVAR=NICHTS
     DVAR=MMTT
     DVAR=MMWWWN
     DVAR=*dN[WWW]
     DVAR=*wN[WWW]
     DVAR=DVAR[[+|-]N[WWW]]
     DVAR++
     DVAR--
     DVAR+=N[WWW]
     DVAR-=N[WWW]

Textvariablenzuweisungen...

     TVAR=[TEXT]

Textvariablenreferenzen...

     TVAR

Textvariablenreferenzen zu Anfang einer Zeile der Gcal Ressourcendatei
drfen allerdings nur dann verwendet werden, falls sichergestellt ist,
da sich nach deren vollstndiger Expansion eine gltige Zeile der Gcal
Ressourcendatei ergibt.

  ---------- Fussnoten ----------

  (1)  Das sind zum Beispiel *Tab*, *Space*, *Form-Feed* und hnliche
Zeichen.

  (2)  Normalerweise entspricht das zum Beispiel auf einer 16-Bit
Maschinenarchitektur dem Wert 32.767 == (2^15)-1; auf einer 32-Bit
Maschinenarchitektur dem Wert 2.147.483.647 == (2^31)-1 usw.

Datumteil einer Zeile
---------------------

Die Struktur von einem "Datumteil" -- welcher Gcal die Information,
gibt wann ein Termin stattfindet -- einer Zeile der Gcal Ressourcendatei
ist

*entweder*: `JJJJ[MM[TT|WWWN]]'

    `JJJJ'
          (4 Ziffern), ist das Jahr einschlielich des Jahrhunderts
          (Bereich 0000...9999).  Es sind fhrende Nullen anzugeben
          falls das Jahr kleiner 1000 ist und weitere Komponenten des
          Datumteils dem Jahr folgen.

    `MM'
          (2 Ziffern oder 3 Zeichen), ist der Monat (Bereich 00...12
          oder 99, bzw.  Jan, Feb...).  99 kodiert stets den letzten
          Monat eines Jahres (== Dezember). Es sind fhrende Nullen
          anzugeben falls der Monat kleiner 10 ist und weitere
          Komponenten des Datumteils dem Monat folgen.

    `TT'
          (2 Ziffern), ist der Tag (Bereich 00...31 oder 99).  99
          kodiert stets den letzten Tag eines Monats.  Es sind fhrende
          Nullen anzugeben falls der Tag kleiner 10 ist und weitere
          Komponenten des Datumteils dem Tag folgen.

    `WWW'
          (2...3 Zeichen), ist ein Wochentagsname im Kurzformat (Bereich
          Mon...Son).

    `N'
          (1 Ziffer), ist der N'te Wochentag WWW im Monat (Bereich
          1...5 oder 9).

             * N == 1...5
               N'ter WWW Wochentag im Monat.

             * N == 9
               Letzter WWW Wochentag im Monat.

*oder*: `JJJJ*d|wN[WWW]'

    `JJJJ'
          (4 Ziffern), ist das Jahr einschlielich des Jahrhunderts
          (Bereich 0000...9999).  Es sind fhrende Nullen anzugeben
          falls das Jahr kleiner 1000 ist und weitere Komponenten des
          Datumteils dem Jahr folgen.

    `*d'
          (2 Zeichen), ist ein Bezug auf ein gewhnliches Tagesdatum.

    `*w'
          (2 Zeichen), ist ein Bezug auf ein ISO-8601:1988 Wochendatum.

    `N'
          (1...3 Ziffern), ist der Wert in Tagen oder Wochen, an
          welchem der Termin auftritt.  99 in Verbindung mit einem
          Wochentagsnamen im Kurzformat kodiert stets den letzten
          Wochentag WWW eines Jahres.  999 in Verbindung mit `*d'
          kodiert stets den letzten Tag eines Jahres, also den 31'ten
          Dezember.  Falls das berechnete Datum nicht im Jahr auftritt,
          also auerhalb der Jahresgrenzen liegt, so wird der Termin
          unterdrckt.

    `WWW'
          (2...3 Zeichen), ist ein Wochentagsname im Kurzformat (Bereich
          Mon...Son).

*oder*: `JJJJ@e|t|DVAR[[+|-]N]'

    `JJJJ'
          (4 Ziffern), ist das Jahr einschlielich des Jahrhunderts
          (Bereich 0000...9999).  Es sind fhrende Nullen anzugeben
          falls das Jahr kleiner 1000 ist und weitere Komponenten des
          Datumteils dem Jahr folgen.

    `@e'
          (2 Zeichen), ist ein Bezug auf das Datum des Ostersonntags.

    `@t'
          (2 Zeichen), ist ein Bezug auf das heutige Datum.

    `@DVAR'
          (2 Zeichen), ist ein Bezug auf ein Datumvariable.

    `[+|-]N'
          (1...4 alphanumerische Zeichen), ist der optionale Versatz in
          Tagen, an welchem der Termin relativ zum Datum des
          Ostersonntags oder zum Datum der Datumvariablen auftritt.
          -999 kodiert stets den ersten Tag eines Jahres, also den
          1'ten Januar.  +999 oder 999 kodiert stets den letzten Tag
          eines Jahres, also den 31'ten Dezember.  Falls das berechnete
          Datum nicht im Jahr auftritt, also auerhalb der
          Jahresgrenzen liegt, so wird der Termin unterdrckt.

*oder*: `JJJJ@e|t|DVAR[+|-]NWWW'

    `JJJJ'
          (4 Ziffern), ist das Jahr einschlielich des Jahrhunderts
          (Bereich 0000...9999).  Es sind fhrende Nullen anzugeben
          falls das Jahr kleiner 1000 ist und weitere Komponenten des
          Datumteils dem Jahr folgen.

    `@e'
          (2 Zeichen), ist ein Bezug auf das Datum des Ostersonntags.

    `@t'
          (2 Zeichen), ist ein Bezug auf das heutige Datum.

    `@DVAR'
          (2 Zeichen), ist ein Bezug auf ein Datumvariable.

    `[+|-]NWWW'
          (3...7 alphanumerische Zeichen), ist der optionale Versatz in
          Wochentagen, an welchem der Termin relativ zum Datum des
          Ostersonntags oder zum Datum der Datumvariablen auftritt.
          -99 kodiert stets den ersten Wochentag WWW eines Jahres.  +99
          oder 99 kodiert stets den letzten Wochentag WWW eines Jahres.
          Falls das berechnete Datum nicht im Jahr auftritt, also
          auerhalb der Jahresgrenzen liegt, so wird der Termin
          unterdrckt.

*Bitte beachten:*

   * Falls JJJJ nicht als festes Jahr, sondern als 0000 angegeben ist:
     Es wird angenommen, da der Monat und Tag jhrliche Ereignisse
     sind, und der *Textteil* wird fr jedes Jahr ausgegeben.

   * Falls MM nicht als fester Monat, sondern als 00 oder garnicht
     angegeben ist:
     Es wird angenommen, da der Tag ein monatliches Ereignis im
     angegebenen Jahr ist, und der *Textteil* wird fr jeden Monat
     ausgegeben.

   * Falls TT nicht als fester Tag, sondern als 00 oder garnicht
     angegeben ist:
     Es wird angenommen, da der Tag ein tgliches Ereignis im
     angegebenen Monat und Jahr ist, und der *Textteil* wird fr jeden
     Tag ausgegeben.

   * Falls ein Wochentagsname WWW im 2...3-Buchstaben Kurzformat
     angegeben ist, z.B.: `Mon, Die...'
     Es wird angenommen, da der gegebene Wochentagsname ein
     wchentliches Ereignis im angegebenen Monat und Jahr ist, und der
     *Textteil* wird fr jede Woche ausgegeben.

Weitere Datumteil-Attribute
---------------------------

Der Datumteil, welcher einen Termineintrag in einer Gcal
Ressourcendateizeile anfhrt, darf mit weiteren Attributen ausgestattet
werden.  Weitere Attribute sind entweder die Angabe einer Liste von
Tagen oder eines Bereichs von Tagen, in welchem der Termin stattfinden
soll.  Weitere Attribute sind auch Faktoren, welche eine
Wiederholungsdauer oder einen Auftretenszeitpunkt eines Termins
bestimmen.

Grundstzlich drfen alle folgendermaen strukturierten Datumteile in
einer Gcal Ressourcendateizeile mit weiteren Attributen versehen werden:

   * `JJJJMM...'

   * `JJJJ*d|w...'

   * `JJJJ@e|t|DVAR...'

*Vorsicht:*
Falls der Datumteil mit weiteren Attributen ausgestattet ist und das
Jahr, in dem der Termin stattfindet, unbestimmt ist, d.h. das Jahr JJJJ
ist auf Null gesetzt, so werden solche Datumteile *nur* innerhalb
einfacher Jahresgrenzen korrekt berechnet, also nicht in denjenigen
Terminen, welche ausgegeben werden, nachdem das laufende Jahr
gewechselt hat, z.B. in *Fiskaljahren*.

Listen von Tagen
................

Eine Liste von Tagen wird durch ein `,' Trennzeichen kenntlich gemacht;
diese mu mindestens zwei Elemente enthalten, und darf unbegrenzt viele
Elemente enthalten.  Ein einzelnes Element der Liste darf nicht auf den
Wert Null gesetzt werden und somit unkonkret sein, was in diesem
Zusammenhang auch keinen Sinn machen wrde.

Eine Liste von Tagen wird dazu benutzt, um wiederkehrende Termine zu
definieren und dabei nur eine Zeile in der Ressourcendatei zu belegen,
anstelle diese wiederkehrenden Termine einzeln in mehreren Zeilen in
der Ressourcendatei festzulegen.  Angenommen ein Termin tritt stets am
1'ten und am 15'ten Tag in jedem beliebigen Monat des Jahres 1996 auf,
z.B.  `Steuer-Voranmeldungen', so kann einerseits fr den 1'ten im Monat
ein Termineintrag in der Ressourcendatei vorgenommen werden und auch
fr den 15'ten im Monat, was in diesem Fall zwei Eintrge in der
Ressourcendatei zu einem solchen Termin ergbe.

Andererseits kann mittels einer Liste von Tagen dieser Aufwand aber nun
verringert werden hin zu nur einem Eintrag in der Ressourcendatei,
welcher gleichermaen fr den 1'ten und fr den 15'ten Tag eines
beliebigen Monat gilt, nmlich

     19960001,15 Steuer-Voranmeldungen

Erlaubt ist die Benutzung der Listen von Tagen im Datumteil wie folgt:

   * `JJJJMMTT|WWW|WWWN,[MM]TT|[MM]WWW|[MM]WWWN ...'

   * `JJJJ*d|wN|NWWW,N|NWWW ...'

   * `JJJJ@e|t|DVAR,|[+|-]N[WWW],[+|-]N[WWW] ...'

Einige Beispiele hierzu:

`000001fr3,12,99,mon,apr14,993,julfre3,08fr'
     In jedem Jahr im Monat Januar: am 3'ten Freitag, am 12'ten, am
     letzten Tag des Monats sowie an jedem Montag.  Und in jedem Jahr:
     am 14'ten April, am 3'ten Dezember, am 3'ten Freitag im Juli sowie
     an jedem Freitag im August.

`199600mon,fr,12'
     Im Jahr 1996 in jedem Monat: jeden Montag, jeden Freitag sowie an
     jedem 12'ten.

`0*d1,1fr,999,17mo'
     In jedem Jahr: am ersten Tag des Jahres, am 1'ten Freitag des
     Jahres, am letzten Tag des Jahres sowie am 17'ten Montag des
     Jahres.

`1996*w1fr,1,17mo,99fr'
     Im Jahr 1996: am Freitag der 1'ten ISO-Kalenderwoche, am Montag
     der ersten ISO-Kalenderwoche, am Montag der 17'ten
     ISO-Kalenderwoche sowie am Freitag der letzten ISO-Kalenderwoche.

`0@a,+1,-3,5,+4fr,2fr,-10sa'
     In jedem Jahr: am Datum der Datumvariablen A, einen Tag nach dem
     Datum von A, drei Tage vor dem Datum von A, fnf Tage nach dem
     Datum von A, vier Freitage nach dem Datum von A, zwei Freitage
     nach dem Datum von A sowie zehn Samstage vor dem Datum von A.

`1996@e+1,-3,5,+4fr,2fr,-10sa'
     Im Jahr 1996: einen Tag nach Ostersonntag, drei Tage vor
     Ostersonntag, fnf Tage nach Ostersonntag, vier Freitage nach
     Ostersonntag, zwei Freitage nach Ostersonntag sowie zehn Samstage
     vor Ostersonntag.

`1996@t+1,-3,5,+4fr,2fr,-10sa'
     Im Jahr 1996: einen Tag nach dem heutigen Datum, drei Tage vor dem
     heutigen Datum, fnf Tage nach dem heutigen Datum, vier Freitage
     nach dem heutigen Datum, zwei Freitage nach dem heutigen Datum
     sowie zehn Samstage vor dem heutigen Datum.

Bereiche von Tagen
..................

Ein Bereich von Tagen wird durch ein `#' Trennzeichen kenntlich gemacht
und besteht aus genau zwei Elementen, nmlich aus Starttag und Endetag.
Der Starttag wie auch der Endetag des Bereichs darf nicht auf den Wert
Null gesetzt werden und somit unkonkret sein, was in diesem
Zusammenhang auch keinen Sinn machen wrde.

Ein Bereich von Tagen wird ebenso wie eine Liste von Tagen dazu benutzt,
um wiederkehrende Termine zu definieren und dabei nur eine Zeile in der
Ressourcendatei zu belegen, anstelle diese wiederkehrenden Termine
einzeln in mehreren Zeilen in der Ressourcendatei festzulegen.
Angenommen ein Termin tritt stets whrend des 1'ten und des 15'ten
Tages (einschlielich) in jedem beliebigen Monat des Jahres 1996 auf,
z.B. `Innendienst', so kann einerseits fr den 1'ten im Monat ein
Termineintrag in der Ressourcendatei vorgenommen werden, fr den 2'ten
im Monat ebenso, bis hin zum 15'ten im Monat, was in diesem Fall 15
Eintrge in der Ressourcendatei zu einem solchen Termin ergbe (1).

Andererseits kann mittels eines Bereichs von Tagen dieser Aufwand aber
nun verringert werden hin zu nur einem Eintrag in der Ressourcendatei,
welcher gleichermaen fr den 1'ten bis hin zum 15'ten Tag eines
beliebigen Monat gilt, nmlich

     19960001#15 Innendienst

Erlaubt ist die Benutzung der Bereiche von Tagen im Datumteil wie folgt:

   * `JJJJMMWWW#WWW'

   * `JJJJMMTT|WWWN#[MM]TT|[MM]WWWN'

   * `JJJJ*d|wN[WWW]#N[WWW]'

   * `JJJJ@e|t|DVAR[[+|-]N[WWW]]#[+|-]N[WWW]'

Aus der vorstehenden Aufstellung kann ersehen werden, da als Start-
und Endetag nur Datumformate gleichen Typs links und rechts des `#'
Trennzeichens verwendet werden knnen.  Es ist somit nicht explizit
mglich, da ein Bereich von Tagen mit verschiedenartigen Typen von
Datumformaten definiert werden kann, also Termineintrge wie z.B.:

     1996@e+3fr#1012 Im Jahr 1996: An jedem Tag, der in den\
                     Zeitraum vom Datum 3'ter Freitag nach Ostersonntag\
                     bis zum 12'ten Oktober fllt.

knnen so nicht vereinbart werden.  Hier bietet sich aber Abhilfe an,
indem ein inklusive Datum Zeitraum `%i[DATUM][#[DATUM]]' Spezialtext
zur Festlegung des Endetags des Bereichs benutzt wird (2), und die
Termine der Einfachheit halber bis zum letzten Tag des Jahres
produziert werden, z.B.:

     1996@e+3fr#+999 Im Jahr 1996: An jedem Tag, der in den\
                     Zeitraum vom Datum 3'ter Freitag nach Ostersonntag\
                     bis zum 12'ten Oktober fllt.%i0#19961012

*Siehe Inklusive Datum Zeitraum `%i[DATUM][#[DATUM]]' Spezialtext:
Inklusive Datum Zeitraum, fr weitere Details.

Einige Beispiele hierzu:

`199600mon#fr'
     Im Jahr 1996 in jedem Monat: an jedem Tag, der in der Tagesfolge
     `mo, di, mi, do, fr' auftritt.

`000000fr#mon'
     In jedem Jahr in jedem Monat: an jedem Tag, der in der Tagesfolge
     `fr, sa, so, mo' auftritt.

`000001fr3#12'
     In jedem Jahr im Monat Januar: an jedem Tag, der in den Zeitraum
     vom 3'ten Freitag des Monats bis zum 12'ten des Monats fllt.

`00000112#fr3'
     In jedem Jahr im Monat Januar: an jedem Tag, der in den Zeitraum
     vom 12'ten des Monats bis zum 3'ten Freitag des Monats fllt.

`00000112#augfre3'
     In jedem Jahr: an jedem Tag, der in den Zeitraum vom 12'ten Januar
     bis zum 3'ten Freitag des Monats August fllt.

`0000sep13#99fr9'
     In jedem Jahr: an jedem Tag, der in den Zeitraum vom 13'ten
     September bis zum letzten Freitag des Monats Dezember fllt.

`0*d1#1fr'
     In jedem Jahr: an jedem Tag, der in den Zeitraum vom 1'ten Tag des
     Jahres bis zum 1'ten Freitag des Jahres fllt.

`0*d99fr#333'
     In jedem Jahr: an jedem Tag, der in den Zeitraum vom letzten
     Freitag des Jahres bis zum 333'ten Tag des Jahres fllt.

`1996*w1fr#17mo'
     Im Jahr 1996: an jedem Tag, der in den Zeitraum vom Freitag der
     1'ten ISO-Kalenderwoche bis zum Montag der 17'ten
     ISO-Kalenderwoche fllt.

`0@a#+4fr'
     In jedem Jahr: an jedem Tag, der in den Zeitraum vom Datum der
     Datumvariablen A bis zum 4'ten Freitag nach dem Datum der
     Datumvariablen A fllt.

`1996@e-3#+9fr'
     Im Jahr 1996: an jedem Tag, der in den Zeitraum vom Datum drei
     Tage vor Ostersonntag bis zum 9'ten Freitag nach dem Datum des
     Ostersonntag fllt.

`1996@t-3#+99fr'
     Im Jahr 1996: an jedem Tag, der in den Zeitraum vom Datum drei
     Tage vor dem heutigen Datum bis zum letzten Freitag des Jahres
     fllt.

  ---------- Fussnoten ----------

  (1)  Einmal abgesehen von der Mglichkeit, da in einem solchen Fall
auch eine Liste von Tagen verwendet werden kann.

  (2)  Implizite Lsung.

Wiederholungsfaktor von Tagen
.............................

Ein Wiederholungsfaktor von Tagen (`:N') wird durch ein `:' Zeichen
kenntlich gemacht und mu dem Tagesfeld, welches einen konkreten Wert
in einem Datumteil einer Gcal Ressourcendatei haben mu und nicht auf
den Wert Null gesetzt sein darf, folgen bzw. einem Auftretensfaktor von
Tagen entweder vorangehen oder folgen.  Mit Ausnahme von Bereichen von
Tagen oder Terminen, die nur an einem bestimmten Wochentag auftreten
wie z.B.  `199600mon Immer Montags 1996', darf ein solcher
Wiederholungsfaktor in allen sonst mglichen Angaben von Datumteilen
einer Gcal Ressourcendatei auftreten.

Dieser Faktor darf den Wert 1...999 annehmen.  Werte, die grer sind
als die tatschliche Differenz zwischen dem Datum des ersten Auftretens
des Termins und dem letzten Tag des Jahres, werden stets auf diese
tatschliche Differenz reduziert.  So bedeutet dann jeder Wert grer
365 (1) stets einen Wiederholungsfaktor bis hin zum letzten Tag des
Jahres.

Ein Wiederholungsfaktor von Tagen wird dazu benutzt, um wiederkehrende
Termine zu definieren und dabei nur eine Zeile in der Ressourcendatei
zu belegen, anstelle diese wiederkehrenden Termine einzeln in mehreren
Zeilen in der Ressourcendatei festzulegen.  Angenommen ein Termin tritt
stets am 15'ten Tag in jedem beliebigen Monat des Jahres 1996 auf und
erstreckt sich ber einen Zeitraum von insgesamt vier Tagen
(einschlielich des 15'ten selbst), z.B. `Mitarbeiterschulung', so kann
einerseits fr den 15'ten im Monat ein Termineintrag in der
Ressourcendatei vorgenommen werden und auch fr die dem 15'ten im Monat
folgenden drei Tage, was in diesem Fall vier Eintrge in der
Ressourcendatei zu einem solchen Termin ergbe (2).

Andererseits kann mittels eines Wiederholungsfaktors von Tagen dieser
Aufwand aber nun verringert werden hin zu nur einem Eintrag in der
Ressourcendatei, welcher gleichermaen fr den 15'ten und die dem
15'ten folgenden drei Tage eines beliebigen Monat gilt, nmlich

     19960015:4 Mitarbeiterschulung

Erlaubt ist die Benutzung der Wiederholungsfaktoren von Tagen im
Datumteil wie folgt:

   * `JJJJMMTT:N|WWWN:N'

   * `JJJJ*d|wN:N|NWWW:N'

   * `JJJJ@e|t|DVAR[[+|-]N[WWW]]:N'

   * `JJJJMMTT:N|WWWN:N,[MM]TT:N|[MM]WWWN:N ...'

   * `JJJJ*d|wN:N|NWWW:N,N:N|NWWW:N ...'

   * `JJJJ@e|t|DVAR:N,|[+|-]N[WWW]:N,[+|-]N[WWW]:N ...'

Einige Beispiele hierzu:

`000001fr3:11'
     In jedem Jahr im Monat Januar: an jedem Tag, der in den Zeitraum
     vom 3'ten Freitag des Monats und den darauffolgenden zehn Tagen
     fllt.

`00000112:3'
     In jedem Jahr im Monat Januar: an jedem Tag, der in den Zeitraum
     vom 12'ten des Monats und den darauffolgenden zwei Tagen fllt.

`00000112:3,fr3:5'
     In jedem Jahr im Monat Januar: an jedem Tag, der in den Zeitraum
     vom 12'ten des Monats und den darauffolgenden zwei Tagen fllt,
     sowie auch in den Zeitraum vom 3'ten Freitag des Monats und den
     darauffolgenden vier Tagen fllt.

`0*d1:1'
     In jedem Jahr: an jedem Tag, der in den Zeitraum vom 1'ten Tag des
     Jahres und keinem darauffolgenden Tag fllt.

`0*d1:2'
     In jedem Jahr: an jedem Tag, der in den Zeitraum vom 1'ten Tag des
     Jahres und dem darauffolgenden Tag fllt.

`0*d99fr:333'
     In jedem Jahr: an jedem Tag, der in den Zeitraum vom letzten
     Freitag des Jahres und den darauffolgenden 332 Tagen fllt.
     Allerdings werden in Fllen wie diesen, wo ein solcher Termin die
     Jahresgrenze berschreiten wrde, nur Termine bis zum letzten Tag
     des Jahres produziert.

`1996*w1fr:17'
     Im Jahr 1996: an jedem Tag, der in den Zeitraum vom Freitag der
     1'ten ISO Kalenderwoche und den darauffolgenden 16 Tagen fllt.

`0@a:4'
     In jedem Jahr: an jedem Tag, der in den Zeitraum vom Datum der
     Datumvariablen A und den darauffolgenden drei Tagen fllt.

`1996@e-3:9'
     Im Jahr 1996: an jedem Tag, der in den Zeitraum vom Datum drei
     Tage vor Ostersonntag und den darauffolgenden acht Tagen fllt.

`1996@t-3:9'
     Im Jahr 1996: an jedem Tag, der in den Zeitraum vom Datum drei
     Tage vor dem heutigen Datum und den darauffolgenden acht Tagen
     fllt.

  ---------- Fussnoten ----------

  (1)  Oder 366 in Schaltjahren.

  (2)  Einmal abgesehen von der Mglichkeit, da in einem solchen Fall
auch eine Liste oder ein Bereich von Tagen verwendet werden kann.

Auftretensfaktor von Tagen
..........................

Ein Auftretensfaktor von Tagen (`.N') wird durch ein `.' Zeichen
kenntlich gemacht und mu dem Tagesfeld, welches einen konkreten Wert
in einem Datumteil einer Gcal Ressourcendatei haben mu und nicht auf
den Wert Null gesetzt sein darf, folgen bzw. einem Wiederholungsfaktor
von Tagen entweder vorangehen oder folgen.  Mit Ausnahme von Terminen,
die nur an einem bestimmten Wochentag auftreten und als solche nicht
als ein Bereich von Tagen angegeben sind, wie z.B. `199600mon Immer
Montags 1996', darf ein solcher Wiederholungsfaktor in allen sonst
mglichen Angaben von Datumteilen einer Gcal Ressourcendatei auftreten.
Bei Listen von Tagen darf dieser Faktor in jedem einzelnen Element
angegeben werden, bei Bereichen von Tagen darf dieser Faktor *nur* dem
Endetag folgen.  Allerdings macht die Verwendung dieses
Auftretensfaktors nur dann Sinn, wenn er entweder in einem Bereich von
Tagen, oder aber zusammen mit einem Wiederholungsfaktor angegeben wird.

Dieser Faktor darf den Wert 1...999 annehmen.  Wenn der Faktor Werte
annimmt, die grer sind als die tatschliche Differenz zwischen dem
Datum des Auftretens des Termins und dem letzten Tag des Jahres bzw. dem
Ende des Zeitraum, fr welchen die Termine entweder produziert oder
bercksichtigt werden sollen, so wird ein solcher Termin ignoriert.

Ein Auftretensfaktor von Tagen wird dazu benutzt, um einem bestimmten
Versatz in wiederkehrenden Terminen zu definieren.  Angenommen ein
Termin tritt stets am 15'ten Tag in jedem beliebigen Monat des Jahres
1996 auf und erstreckt sich ber einen Zeitraum von insgesamt sieben
Tagen (einschlielich des 15'ten selbst), soll aber nur jeden dritten
Tag (d.h. jeweils zwei Tage sind zu berspringen) innerhalb dieser
Periode bercksichtigt werden, z.B.  `Seminar', so kann einerseits fr
den 15'ten im Monat ein Termineintrag in der Ressourcendatei
vorgenommen werden, fr den 18'ten und auch fr den 21'ten im Monat,
was in diesem Fall drei Eintrge in der Ressourcendatei zu einem
solchen Termin ergbe (1).

Andererseits kann mittels eines Auftretensfaktors von Tagen dieser
Aufwand aber nun verringert werden hin zu nur einem Eintrag in der
Ressourcendatei, welcher gleichermaen fr den 15'ten, den 18'ten und
den 21'ten eines beliebigen Monat gilt, beispielsweise unter Verwendung
eines Wiederholungsfaktors

     19960015:7.3 Seminar

oder auch unter Verwendung eines Bereichs von Tagen

     19960015#21.3 Seminar

Erlaubt ist die Benutzung der Auftretensfaktoren von Tagen im Datumteil
wie folgt:

   * `JJJJMMTT:N.N|TT.N:N'

   * `JJJJMMWWWN:N.N|WWWN.N:N'

   * `JJJJ*d|wN:N.N|N.N:N'

   * `JJJJ*d|wNWWW:N.N|NWWW.N:N'

   * `JJJJ@e|t|DVAR[[+|-]N[WWW]]:N.N'

   * `JJJJ@e|t|DVAR[[+|-]N[WWW]].N:N'

   * `JJJJMMTT:N.N|WWWN:N.N,[MM]TT:N.N|[MM]WWWN:N.N ...'

   * `JJJJMMTT.N:N|WWWN.N:N,[MM]TT:N.N|[MM]WWWN.N:N ...'

   * `JJJJ*d|wN:N.N|NWWW:N.N,N:N.N|NWWW:N.N ...'

   * `JJJJ*d|wN.N:N|NWWW.N:N,N.N:N|NWWW.N:N ...'

   * `JJJJ@e|t|DVAR:N.N,|[+|-]N[WWW]:N.N,[+|-]N[WWW]:N.N ...'

   * `JJJJ@e|t|DVAR.N:N,|[+|.]N[WWW].N:N,[+|.]N[WWW].N:N ...'

   * `JJJJMMWWW#WWW.N'

   * `JJJJMMTT|WWWN#[MM]TT|[MM]WWWN.N'

   * `JJJJ*d|wN[WWW]#N[WWW].N'

   * `JJJJ@e|t|DVAR[[+|-]N[WWW]]#[+|-]N[WWW].N'

Einige Beispiele hierzu:

`000001fr3:11.3'
     In jedem Jahr im Monat Januar: an jedem Tag, der in den Zeitraum
     vom 3'ten Freitag und den darauffolgenden zehn Tagen fllt, aber
     nur jeden dritten Tag in diesem Zeitraum (berspringe jeweils zwei
     Tage).

`00000112:3.2'
     In jedem Jahr im Monat Januar: an jedem Tag, der in den Zeitraum
     vom 12'ten des Monats und den darauffolgenden zwei Tagen fllt,
     aber nur jeden zweiten Tag in diesem Zeitraum (berspringe jeweils
     einen Tag).

`00000112:3.2,fr3:5.3'
     In jedem Jahr im Monat Januar: an jedem Tag, der in den Zeitraum
     vom 12'ten des Monats und den darauffolgenden zwei Tagen fllt,
     aber nur jeden zweiten Tag (berspringe jeweils einen Tag) sowie
     auch am 3'ten Freitag im Januar jeden Jahres und den
     darauffolgenden vier Tagen, aber nur jeden dritten Tag
     (berspringe jeweils zwei Tage).

`0*d1:10.1'
     In jedem Jahr: an jedem Tag, der in den Zeitraum vom 1'ten Tag des
     Jahres und den darauffolgenden neun Tagen fllt, und das fr jeden
     dieser Tage (berspringe jeweils null Tage) in diesem Zeitraum.

`0*d1:2.5'
     In jedem Jahr: an jedem Tag, der in den Zeitraum vom 1'ten Tag des
     Jahres und dem darauffolgenden Tag fllt, aber nur jeden fnften
     Tag (berspringe jeweils vier Tage) in diesem Zeitraum.  In einem
     solchen Fall werden die dem Starttag (1'ter Tag des Jahres)
     folgenden Tage (in diesem Beispiel nur einer) nicht respektiert,
     da der nchste Tag, der sich unter Bercksichtigung des
     Auftretensfaktors ergibt, denjenigen Tag, welcher sich mit dem
     Wiederholungsfaktor als Endetag der Periode errechnet,
     berschreitet.

`0*d99fr:333.61'
     In jedem Jahr: an jedem Tag, der in den Zeitraum vom letzten
     Freitag des Jahres und den darauffolgenden 332 Tagen fllt, aber
     nur jeden 61'ten Tag (berspringe jeweils 60 Tage) in diesem
     Zeitraum.  Allerdings werden in Fllen wie diesen, wo ein solcher
     Termin die Jahresgrenze berschreiten wrde, nur Termine bis zum
     letzten Tag des Jahres produziert.  Da nun aber mit einem Versatz
     von 60 Tage gearbeitet werden soll, wird keiner der dem Starttag
     (letzter Freitag des Jahres) folgenden Tage (in diesem Beispiel
     332) respektiert, da der nchste Tag, der sich unter
     Bercksichtigung des Auftretensfaktors ergibt, denjenigen Tag,
     welcher sich mit dem Wiederholungsfaktor als Endetag der Periode
     errechnet (hier wre es der letzte Tag des Jahres), berschreitet.

`1996*w1fr:17.8'
     Im Jahr 1996: an jedem Tag, der in den Zeitraum vom Freitag der
     1'ten ISO-Kalenderwoche und den darauffolgenden 16 Tagen fllt,
     aber nur jeden achten Tag in diesem Zeitraum (berspringe jeweils
     sieben Tage).

`0@a:4.3'
     In jedem Jahr: an jedem Tag, der in den Zeitraum vom Datum der
     Datumvariablen A und den darauffolgenden drei Tagen fllt, aber
     nur jeden dritten Tag in diesem Zeitraum (berspringe jeweils zwei
     Tage).

`1996@e-3:9.4'
     Im Jahr 1996: an jedem Tag, der in den Zeitraum vom Datum drei
     Tage vor Ostersonntag und den darauffolgenden acht Tagen fllt,
     aber nur jeden vierten Tag in diesem Zeitraum (berspringe jeweils
     drei Tage).

`1996@e3#-20so.15'
     Im Jahr 1996: an jedem Tag, der in den Zeitraum vom Datum drei
     Tage nach Ostersonntag bis zum 20'ten Sonntag vor Ostersonntag
     fllt, aber nur jeden 15'ten Tag in diesem Zeitraum (berspringe
     jeweils 14 Tage).

`1996@t3#-20so.15'
     Im Jahr 1996: an jedem Tag, der in den Zeitraum vom Datum drei
     Tage nach dem heutigen Datum bis zum 20'ten Sonntag vor dem
     heutigen Datum fllt, aber nur jeden 15'ten Tag in diesem Zeitraum
     (berspringe jeweils 14 Tage).

  ---------- Fussnoten ----------

  (1)  Einmal abgesehen von der Mglichkeit, da in einem solchen Fall
auch eine Liste von Tagen verwendet werden kann.

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

Der "Textteil" einer Zeile der Ressourcendatei darf jeden beliebigen
Text enthalten, den Sie mgen.  Allerdings haben einige Zeichen eine
Sonderbedeutung (`%', `$', `~', `^' und `\'), und mssen gegebenenfalls
geschtzt werden, falls mit diesen Zeichen besondere
Zeichenkombinationen gebildet werden (1), die nur rein textlich
verwendet werden sollen.  Falls der Textteil nicht von Gcal selbst
erzeugte Zeichen zur Druckaufbereitung oder Hervorhebung enthlt, oder
Zeichen, denen in der Tabelle des verwendeten Zeichensatzes ein Wert
grer 127 (dezimal) zugeordnet ist (2), so werden auch diese Zeichen
von Gcal ausgegeben, allerdings *uninterpretiert*!  Deswegen knnen bei
der Ausgabe solcher Zeichen unter Umstnden Probleme mit der verwendeten
Bildschirmtreiber-Software und/oder dem externen Paginiererprogramm
auftreten, ebenso wie beim Versand solcher Zeichen mittels
elektronischer Post.

Sogenannte `NUL' Zeichen (3) drfen auch im Textteil enthalten sein,
diese bewirken aber, da der gesamte Text, der dem ersten Auftreten von
einem `NUL' Zeichen folgt, unterdrckt wird.  Da es meiner Meinung nach
keinen erkennbaren Sinn macht, auch diese Zeichen als solche
uninterpretiert auszugeben, dienen diese also nur zum Kommentieren;
sonst wrden `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 unterdrckt
wird, z.B.:

Die Zeile:
     000000Mo Jeden Montag

und die Zeilen:
     000000Mo \
     Jeden \
     Montag

bewirken die gleiche Ausgabe und sind insofern identisch.

Ferner knnen *lange* Textteile 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 wrde.

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 linksbnding formatiert
dargestellt -- das heit mit einer bestimmten Anzahl von Leerzeichen
aufgefllt.

Falls das `~' (Tilde) Zeichen als Zeichen selbst verwendet werden soll,
so mu es durch ein fhrendes `\' (Backslash) Zeichen hinsichtlich
seiner speziellen Bedeutung entwertet werden, z.B. `\~'.  Wenn die
Zeichen `\~' selbst als Zeichenfolge verwendet werden sollen, so mu
das `\' (Backslash) Zeichen mit sich selbst geschtzt werden, z.B.
`\\~'.

Jedesmal wenn ein `^' (Caret) Zeichen im Textteil vorgefunden wird, so
wird auch dieses Zeichen durch ein echtes `\n' (Newline) Zeichen
ersetzt, und der so umgebrochene Text bei der Ausgabe in Spalte 1
dargestellt -- das heit nicht mit Leerzeichen aufgefllt.  Die
Schutzregeln des `^' Zeichens entsprechen denen des `~' Zeichens.

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 Ich hoffe ich bin auch 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 auch lang genug
     -| hier, ein Zeilenumbruch
     -|                   und noch einer
     -| und nun zum letzten Mal...
     -| 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 mglich, den Textteil mit
fhrenden *whitespace* Zeichen zu versehen, weil diese intern
bersprungen werden und somit nicht zur Ausgabe gelangen.  Falls nun
aber doch *whitespace* Zeichen den Textteil anfhren sollen, so mu das
*erste* dieser *whitespace* Zeichen durch ein fhrendes `\' (Backslash)
Zeichen hinsichtlich seiner speziellen Bedeutung entwertet 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 lnger 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 gengen, 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

  ---------- Fussnoten ----------

  (1)  Wie zum Beispiel `%i', `$a'...

  (2)  Diese Zeichen sind eventuell nicht druckbar.

  (3)  Das ist das Zeichen, welchem in der Tabelle des verwendeten
Zeichensatzes der Wert Null zugeordnet ist.

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

Eine Zeile (1) der Ressourcendatei, die mit einem `;' (Semikolon)
Zeichen beginnt, ist ein Kommentar und wird von Gcal vollstndig
ignoriert!  Fhrende *whitespace* Zeichen drfen dem Kommentarzeichen
vorangehen.  *Siehe Textteil einer Zeile::, wo erklrt wird, wie ein
`NUL' Zeichen zur Kommentierung in einem Textteil benutzt werden kann.

Die nun folgende Darstellung der `kommentar.rc' Ressourcendatei, die
ihrerseits *nur* aus Kommentaren besteht, sollte gengen, um den
vorstehenden Sachverhalt zu verdeutlichen:

     $ cat kommentar.rc
     ;00001031 ^\
                             ........^\
                              ;::;;::,^\
                              ;::;;::;,^\
                             ;;:::;;:;;,^\
               .vnmnv\%vnnv\%,.;;;:::;;:;;,  .,vnmnv\%vnmn,^\
            vnmmmn\%vnmmnv\%vnmmnv\%;;;;;;\%nmmmnv\%vnmnv\%vmmnv^\
          vnmmnv\%vmmmmnv\%vnmmmmmnv\%;:\%nmmmmmmnv\%vnmn\%vnmmmnv^\
         vnmmnv\%vnmmmnv\%vnmmmmmmmmnv\%nmmmmmmmmnv\%vnmmn\%vnmmmnv^\
        vnmmnv\%vnmmmnv\%vnmmmmmmmmnv\%vmmmmmmmmmmnv\%vnmmv\%vnmmmnv^\
       vnmmnv\%vnmmmnv\%vnmm;mmmmmmnv\%vmmmmmmmm;mmnv\%vnmnv\%vnmmmnv,^\
      vnmmnv\%vnmmmnv\%vnmm;' mmmmmnv\%vmmmmmmm;' mmnv\%vnmnv\%vnmmmnv,^\
      vnmmnv\%vnmmmnv\%vn;;    mmmmnv\%vmmmmmm;;    nv\%vnmmnv\%vnmmmnv^\
     vnmmnv\%vnmmmmnv\%v;;      mmmnv\%vmmmmm;;      v\%vnmmmnv\%vnmmmnv^\
     vnmmnv\%vnmmmmnv\%vnmmmmmmmmm;;      mmmmmmmmmnv\%vnmmmmnv\%vnmmmnv^\
     vnmmnv\%vnmmmmnv\%vnmmmmmmmmmm;;    mmmmmmmmmmnv\%vnmmmmnv\%vnmmmnv^\
     vnmmnv\%vnmmmmnv\%vnmmmmmmmmmmnv;,mmmmmmmmmmmmnv\%vn;mmmnv\%vnmmmnv^\
     vnmmnv\%vnmmm. nv\%vnmmmmmmmmmnv\%;mmmmmmmmmmmnv\%vn; mmmnv\%vnmmmnv^\
     `vnmmnv\%vnmm,  v\%vnmmmmmmmmmmnv\%nmmmmmmmmmmnv\%v;  mmnv\%vnnmmnv'^\
      vnmmnv\%vnmm;,   \%vnmmmmmmmmmnv\%nmmmmmmmmmnv\%;'   mmv\%vnmmmmnv^\
       vnmmnv\%vnmm;;,   nmmm;'             mmmm;;'    mnv\%vnmmmmnv'^\
       `vnmmnv\%vnmmm;;,.         mmnvv;,            mmnv\%vnmmmmnv'^\
        `vnmmnv\%vnmmmmnv\%vnmmmmmmmmnvvnmmmmmmnv\%vnmmmmv\%vnmmmmnv'^\
          `vnmvn\%vmmmmmnv\%vnmmmmmmmnvvnmmmmmnv\%vnmmmmn\%vnmmmnv'^\
              `vn\%nmmmmmn\%:\%vnmnmmmmn\%vnmmmnv\%:\%vnmnv\%nmnv'
     
     ; Ein Zeilenkommentar
           ; Ebenfalls ein Zeilenkommentar
     ;     Ein                              \
           formatierter und mehrzeiliger    \
           Kommentar

  ---------- Fussnoten ----------

  (1)  Physisch wie auch logisch.

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

Es drfen `#include' Anweisungen in einer Ressourcendatei eingefgt
werden, welche da Aufsuchen und Vorladen weiterer Ressourcendateien
bewirken (1).  Eine `#include' Anweisung veranlat 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 (2).

Mindestens ein *whitespace* Zeichen ist notwendig zwischen `#include'
und dem ARGUMENT.  Dem ARGUMENT drfen 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 einzufgen.
Falls das nicht gelingt, so versucht Gcal mittels der Schritte 1...4
des bereits zuvor erklrten Datei-Suchmechanismus' diese Datei
einzufgen (*siehe 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 erklrten Datei-Suchmechanismus' einzufgen.  Allerdings
ist es nicht gestattet, Dateien, deren Zugriffspfad vom
Wurzeldateiverzeichnis aus fest vorgegeben ist, mittels einer solchen
`#include' Anweisung einzufgen, wie z.B. `#include </file>' oder
`#include </foo/bar/file>'.  Ebenfalls nicht gestattet bei dieser Art
von `#include' Anweisungen ist die Angabe eines einfachen oder
erweiterten Dateinamens, der mit einer Laufwerksangabe versehen ist,
auch wenn ein Betriebssystem wie MS-DOS oder OS/2 eine solche
Laufwerksangabe grundstzlich erlauben wrde, da der mit fhrendem
Benutzer- bzw. System-Datenverzeichnisnamen ausgestattete,
resultierende, erweiterte Dateiname nicht mehr den geltenden
Dateinamenskonventionen entsprechen wrde.

Eingefgte Dateien drfen ihrerseits wiederum weitere Dateien einfgen.
Allerdings ist die Schachtelungstiefe eingefgter Dateien einerseits
durch die Gre des zur Verfgung stehenden Hauptspeichers begrenzt, und
andererseits durch den Wert, der vom Betriebssystem bzw. Kompilierer als
Obergrenze von gleichzeitig geffneten Dateien vorgegeben ist.
Rekursive Einfgungen (3) oder zyklische Einfgungen (4) sind nicht
erlaubt, da solche Rckwrtsbezge eine programminterne Endlosschleife
erzeugen wrden!  Gcal erkennt solche Situationen und beendet sich
sofort mit einem fatalen Fehler.  *Siehe 119: Fehlerkodes, fr weitere
Informationen.

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

  ---------- Fussnoten ----------

  (1)  Ein Mechanismus hnlich demjenigen, den der C Preprocessor
benutzt.

  (2)  Also ein Dateiname, der entweder mit `""' oder `<>' umfat ist.

  (3)  Die eingefgte Datei versucht sich selbst erneut einzufgen.

  (4)  Die eingefgte Datei wird von einer anderen Datei, die an einer
tieferen Stelle in einer solchen Kette auftritt, erneut eingefgt.

`%?'... Spezialtexte
--------------------

Der Textteil einer Zeile der Ressourcendatei darf 81 verschiedene
Spezialtexte enthalten, welche in jeder beliebigen (1) Anzahl und
Reihenfolge auftreten drfen.  Diese Texte beginnen alle mit dem `%'
(Prozent) Zeichen, welches seinerseits durch ein fhrendes `\'
(Backslash) Zeichen hinsichtlich seiner speziellen Bedeutung entwertet
werden kann, falls das `%' (Prozent) Zeichen selbst im Textteil
verwendet werden soll, z.B. `\%'.  Dem `%' Zeichen folgt sodann ein
Kennzeichen, welches die Art des Spezialtextes definiert.  Falls das
Kennzeichen ein Buchstabe ist, so wird zwischen Gro- bzw.
Kleinschreibung *unterschieden*.

Der Sinn dieser Spezialtexte besteht hauptschlich darin, entweder die
Ausgabe von Terminen in bestimmten Fllen zu unterdrcken, oder aber
diese mit besonderen Texten auszustatten bzw. externe Kommandos
auszufhren.  *Siehe `%?'... Spezialtexte: Spezialtexte (lang), fr eine
vollstndige Darstellung aller verwendbaren Spezialtexte, und *Siehe
Zusammenfassung aller `%?'... Spezialtexte: Spezialtexte (kurz), fr
deren entsprechende Kurzdarstellung.

So wird zum Beispiel die Ressourcendatei `spezial.rc'

     ; Ich bin wahrhaftig sehr speziell :)
     ;
     0 1. Heute ist %o , %u  %M  %Y !
     0 2. Es ist der %#  Tag des Jahres.
     0 3. Die aktuelle Wochennummer ist: %k .
     0 4. Gegenwaertig ist es %t12 Uhr.

wie folgt ausgegeben (wenn das heutige Datum der 4'te Oktober 1996 ist):

     $ gcal --resource-file=spezial.rc -H no -ox
     -|
     -| Fr,   4 Okt 1996: 1. Heute ist Freitag, 04'ter Oktober 1996!
     -|                   2. Es ist der 278'ter Tag des Jahres.
     -|                   3. Die aktuelle Wochennummer ist: 40.
     -|                   4. Gegenwaertig ist es 01.25am Uhr.

  ---------- Fussnoten ----------

  (1)  Vernnftigen!

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

Gcal respektiert *globale* und/oder *lokale* Datumvariablen, welche
entweder im Datumteil einer Zeile der Gcal Ressourcendatei oder als
Bestandteil eines Spezialtexts im Textteil einer Zeile der
Ressourcendatei verwendet werden drfen.

*Siehe `--date-variable=ARGUMENT': Termin Optionen, fr weitere Details
zu globalen Datumvariablen.

Das bedeutet, da bis zu *24* benutzerdefinierte Datumvariablen gesetzt
und whrend der Programmausfhrung referenziert werden knnen.  Der
Name einer Datumvariablen DVAR besteht aus einem einzelnen Buchstaben
(1), und wird in einer Definition von dem Zuweisungsoperator `='
gefolgt, sowie den Zahlenwerten fr Monat MM (oder einem Monatsnamen im
3-Buchstaben Kurzformat, z.B. `Jan', `Feb', ...) und Tag TT, welche
diese Variable aufzunehmen hat (2), 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 knnen,
wenn diese bereits definiert worden sind, da eine Ressourcendatei von
Gcal Zeile fr Zeile abgearbeitet wird.

Nur an lokale Datumvariablen knnen dynamische Daten zugewiesen werden,
die im `MMWWWN', `DVAR[+|-]N[WWW]' oder `*d|wN[WWW]' Format angegeben
sind, 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 Mrz 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 fllt,
zugewiesen.

*Achtung:*
Diese Art der Zuweisung an Datumvariablen wird *nur* innerhalb
einfacher Jahresgrenzen korrekt berechnet, also nicht in denjenigen
Terminen, 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 eingefgt wird.  Das
bedeutet hinsichtlich der eingefgten Datei, da alle lokalen Variablen
der aufrufenden Datei sichtbar sind.  Die eingefgte Datei selbst darf
eigene lokale Variablen definieren, welche dann die bereits an anderer
Stelle definierten lokalen Variablen berdecken, und welche bei
Weiterverarbeitung der aufrufenden Datei nicht exportiert werden.  Alle
anderen Definitionen von Datumvariablen (3) sind stets global.  Falls
eine Zeile einer Ressourcendatei eine Referenz auf eine Datumvariable
enthlt, 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 Informationstext auf dem
*Standardfehler-Gertekanal* fr jede undefinierte Datumvariable
ausgegeben (*siehe `--debug=internal': Globale Optionen.).  Falls die
`--debug=abort' Option angegeben wurde und eine Referenz einer
undefinierten Datumvariable auftrat, so wird das Gcal-Programm mit
Fehlerkode abgebrochen.  *Siehe 113: Fehlerkodes, und *Siehe
`--debug=abort': Globale Optionen, fr weitere Informationen.

Eine lokale Datumvariable kann aber auch gelscht werden, was bedeutet,
da diese Datumvariable keinen lokalen Gltigkeitsbereich mehr aufweist
und somit undefiniert ist.  So ist es dann mglich, da in einer
Folgezeile, in der diese Datumvariable referenziert wird, ein
mglicherweise global gesetzter Wert dieser Datumvariable verwendet
werden kann.  Das nachfolgende Beispiel der Ressourcendatei `dvar.rc'
verdeutlicht diesen Sachverhalt:

     ; dvar.rc
     ;
     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 eingefgten Datei -- an weitere
Ressourcendateien exportiert wird, anstelle der Benutzung deren
globalen Wertes, falls diese Datumvariable nicht lokal in dieser
weiteren Ressourcendatei definiert ist.  *Siehe Include Anweisungen::,
fr weitere Details.

Aber seien Sie vorsichtig, die Benutzung dieser Option knnte
unerwartete Ergebnisse erzeugen, da die Reihenfolge der Abarbeitung der
Ressourcendateien eine wichtige Gre hinsichtlich der Wirkung der
`--export-date-variables' Option ist, so da es nicht empfohlen werden
kann, diese Option zu benutzen.  Sie, der Benutzer, mssen sehr genau
wissen, was Sie mit dieser Option bezwecken wollen; *Sie seien nun
ausdrcklich gewarnt!*

Einige grundlegende Operationen knnen auf Datumvariablen ausgefhrt
werden.  Diese sind:

*Operation*    *Beschreibung*                                             
`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 Gltigkeitsbereich der Operationen, welche auf einer lokalen
Datumvariablen durchgefhrt werden, erstreckt sich auf die
Ressourcendatei oder die eingefgte Datei, in welcher die lokale
Datumvariable definiert wurde.

Falls Operationen auf eine globale Datumvariable in einer
Ressourcendatei oder in derjenigen Datei, die in diese eingefgt wird,
durchgefhrt werden, so sind diese Operationen nur in dieser
entsprechenden Datei gltig (4), nicht aber 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 abschlieend, da jede Zuweisung oder Operation auf
eine Datumvariable in einer separaten Zeile der Ressourcendatei
erfolgen mu.

  ---------- Fussnoten ----------

  (1)  Gro- bzw. Kleinbuchstaben werden nicht unterschieden.  Nicht
zuweisbar bzw. inoperabel ist die Datumvariable E, welche intern fr
das Datum des Ostersonntags reserviert ist.  Ebenfalls nicht zuweisbar
bzw. inoperabel ist die Datumvariable T, welche intern fr das heutige
Datum reserviert ist.

  (2)  Oder dem Namen einer anderen Datumvariablen.

  (3)  In der Kommandozeile, Umgebungsvariable `GCAL' oder Antwortdatei.

  (4)  Diese werden nur lokal ausgefhrt.

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

Gcal respektiert *globale* und/oder *lokale* Textvariablen, welche
berall in einer Zeile der Gcal Ressourcendatei verwendet werden drfen.

*Siehe `--text-variable=ARGUMENT': Termin Optionen, fr weitere Details
zu globalen Textvariablen.

Das bedeutet, da bis zu *26* benutzerdefinierte Textvariablen gesetzt
und whrend der Programmausfhrung referenziert werden knnen.  Der
Name einer Textvariablen "tvar" besteht aus einem `$' Prfix und einem
einzelnen Buchstaben (1), und wird in einer Definition von dem
Zuweisungsoperator `=' gefolgt, sowie 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 knnen, wenn diese bereits definiert worden sind, da eine
Ressourcendatei von Gcal Zeile fr Zeile abgearbeitet wird.
Textvariablenreferenzen werden von Gcal stets solange rekursiv
expandiert, bis alle Sub-Referenzen auf andere Textvariablen aufgelst
sind.

Falls das `$' Zeichen im Text als Zeichen selbst verwendet werden soll,
so mu dieses durch ein fhrendes `\' (Backslash) Zeichen hinsichtlich
seiner speziellen Bedeutung entwertet werden, z.B. `\$'.  Wenn die
Zeichen `\$' im Text selbst als Zeichenfolge verwendet werden sollen,
so mu das `\' (Backslash) Zeichen mit sich selbst geschtzt 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 knnen vollstndige (oder auch teilweise) Datumteile
(*siehe Datumteil einer Zeile::.), sowie Spezialtexte (*siehe `%?'...
Spezialtexte: Spezialtexte.) 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 eingefgt wird.  Das
bedeutet hinsichtlich der eingefgten Datei, da alle lokalen Variablen
der aufrufenden Datei sichtbar sind.  Die eingefgte Datei selbst darf
eigene lokale Variablen definieren, welche dann die bereits an anderer
Stelle definierten lokalen Variablen berdecken, und welche bei
Weiterverarbeitung der aufrufenden Datei nicht exportiert werden.  Alle
anderen Definitionen von Textvariablen (2) sind stets global.  Falls
eine Zeile einer Ressourcendatei eine Referenz auf eine Textvariable
enthlt, 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
unverndert 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 eingefgten Datei -- an weitere
Ressourcendateien exportiert wird, anstelle der Benutzung deren
globalen Wertes, falls diese Textvariable nicht lokal in dieser
weiteren Ressourcendatei definiert ist.  *Siehe Include Anweisungen::,
fr weitere Details.

Aber seien Sie vorsichtig, die Benutzung dieser Option knnte
unerwartete Ergebnisse erzeugen, da die Reihenfolge der Abarbeitung der
Ressourcendateien eine wichtige Gre hinsichtlich der Wirkung der
`--export-text-variables' Option ist, so da es nicht empfohlen werden
kann, diese Option zu benutzen.  Sie, der Benutzer, mssen sehr genau
wissen was Sie mit dieser Option bezwecken wollen; *Sie seien nun
ausdrcklich gewarnt!*

Der Gltigkeitsbereich der Definitionen, welche auf eine lokale
Textvariable durchgefhrt werden, erstreckt sich auf die Ressourcendatei
oder die eingefgte Datei, in welcher die lokale Textvariable definiert
wurde.

Falls Redefinitionen einer globalen Textvariable in einer
Ressourcendatei oder in derjenigen Datei, die in diese eingefgt wird,
durchgefhrt werden, so sind diese Redefinitionen nur in dieser
entsprechenden Datei gltig (3), nicht aber 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 abschlieend, da jede Zuweisung an eine Textvariable
in einer separaten Zeile der Ressourcendatei erfolgen mu.

  ---------- Fussnoten ----------

  (1)  Gro- bzw. Kleinbuchstaben werden nicht unterschieden.

  (2)  In der Kommandozeile, Umgebungsvariable `GCAL' oder Antwortdatei.

  (3)  Diese werden nur lokal ausgefhrt.

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

Um einen konkreten Eindruck von den Einsatzmglichkeiten aller die
Termine betreffenden Eigenschaften von Gcal zu erhalten, folgen nun
einige Beispiele problembezogener Ressourcendateien.

Zunchst ein ganz allgemeines Beispiel:

     ; Das ist ein allgemeines Beispiel einer Ressourcendatei.
     ;
     19940715 Uhrzeit: %t --> Zahnarzttermin um 10:00 Uhr
     00000921 Mein %b1962 Geburtstag%i1962#2062
     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%i#1979
     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
     ;   Terminzeitraum-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
     ; oder
     0@a-1mit Buss- und Bettag

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

     $a=Freitag der 13'te%i0000
     $b=#0000
     $c=fr2
     $d=fr3
     00000113 $a01$c$b01$c
     00000113 $a01$d$b01$d
     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

Fr 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 krzere Version der Ressourcendatei `demo3.rc' mit dem
Dateinamen `demo4.rc', mit der ebenfalls alle Freitage bestimmt werden
knnen, die auf den 13'ten Tag eines Monats fallen, und zwar unter
Ausnutzung der Tatsache, da ein Freitag als 13'ter Tag des Monats nur
dann auftreten kann, wenn der erste Tag des Monats ein Sonntag ist:

     $a=Freitag der 13'te ist am %n+12%i0000
     $b=#0000
     $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

Fr 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

Natrlich kann vorstehender Aufwand zur Ermittlung aller Freitage, die
auf den 13'ten eines Monats fallen, auch textlich recht drastisch
reduziert werden, indem einfach nur

     0*d1fre#99fre.7 Freitag der 13'te%i00000013#00000013

in der Ressourcendatei `demo3.rc' benutzt wird, beziehungsweise

     0*d1son#99son.7 Freitag der 13'te ist am %n+12%i00000001#00000001

in der `demo4.rc' Ressourcendatei benutzt wird.

Allerdings mu hier klar gesagt werden, da vorstehende *Einzeiler*
zwar den Kodieraufwand in einer Ressourcendatei erheblich reduzieren --
von 28 bzw. 15 Zeilen auf jeweils 1 Zeile --, aber der Prfaufwand
dieser *Einzeiler* allerdings zum Teil erheblich hher ist, was sich
dann an einer lngeren Programmlaufzeit bemerkbar macht.  Beide
*Einzeiler* verursachen intern circa 52 Produktionen bzw. effektive
Termineintrge ihrer selbst je Jahr, welches von Gcal abgeprft wird,
wobei die `demo3.rc' und `demo4.rc' Ressourcendateien nur zu 24 bzw.
12 effektiven Termineintrgen auslaufen.

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

     $a=%VWerktag
     $c=%i#0000$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 krzere Version der Ressourcendatei
`demo5.rc':

     $a=%VWerktag
     $c=%i#0000$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 Einfgung einer beliebigen Ressourcendateien gedacht ist:

     #include "$f"

Dann ist das Ergebnis fr den Monat August 1996 wie folgt:

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

So kann auch hier vorstehender Aufwand zur Ermittlung aller Werktage
eines beliebigen Monats textlich recht drastisch reduziert werden,
indem einfach nur

     00000001#0099 %V%rWerktag

in der Ressourcendatei `demo5.rc' benutzt wird.

Und abschlieend eine Ressourcendatei mit dem Namen `swzeit.rc', die
Termine fr den Zeitraum zwei Tage vor bis zwei Tage nach Umstellung
auf Sommerzeit/Winterzeit (ab 1980) fr die Bundesrepublik Deutschland
bewirkt:

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

Entstehungsgeschichte des Gregorianischen Kalenders
***************************************************

Der heutzutage benutzte Kalender wurde -- basierend auf Verfahren, die
von den Babyloniern und gyptern entwickelt wurden -- zuerst von den
Rmern in zahlreichen ungenauen Variationen formuliert, die alle zum
Ziel hatten, den Mond- und Sonnenlauf in Einklang zu bringen.  So kam
es, da in der Zeit des Julius Csar der Monat Januar in den Herbst
fiel.  Auf Csars Befehl hin wurde von Sosigenes eine Kalenderreform
durchgefhrt.  Dieser addierte 90 Tage zu dem Jahr 46 vor Christus, um
den bis dahin aufgelaufenen jahreszeitlichen Versatz zu korrigieren.
Zudem modifizierte er die Monatslngen hnlich der Form, wie wir sie
heute noch benutzen.  Weiterhin wurde das Schaltjahr von ihm
eingefhrt, indem alle vier Jahre ein weiterer Tag im Monat Februar
hinzuaddiert wurde.  Die Schaltjahrregelung sah zunchst so aus, da
alle vier Jahre nach dem 23'ten Tag im Februar ein Schalttag eingelegt
wurde, der 24'te Februar wurde zu einem "Doppeltag", fand also zweimal
statt.  Die Benutzung eines Schaltjahres war eine echte Verbesserung
der Kalenderrechnung, aber noch nicht in vollem Umfang exakt.

In den folgenden Jahren wurde die Schaltregel aber falsch angewendet,
und so korrigierte Kaiser Augustus im Jahre 8 vor Christus die Fehler.
Dabei kam es zu einem kuriosen Nachspiel.  Da Augustus mit groer
Eifersucht auf alles reagierte, was zuvor Julius Csar getan bzw.
angestrengt hatte, ertrug er auch nicht dessen Ehrung im Kalender, den
heutigen Monat *Juli*.  Er benannte kurzerhand einen anderen Monat nach
sich selbst, und so entstand der Monatsname *August*.  Weiterhin
duldete Augustus nicht, da sein Geburtsmonat August im Sinne der
regelmigen Abfolge von Monaten mit 30 und 31 Tagen krzer war als der
Monat Csars.  Konsequenterweise bekam der August ebenfalls 31 Tage.
Dafr mute der Februar noch weiter, auf 28 bzw. 29 Tage, schrumpfen,
so da nun der 29'te Februar zum Schalttag wurde.

Dieser Kalender ist als der "Julianische Kalender" in die
Geschichtsschreibung eingegangen und hat ein reines Sonnenjahr zur
Grundlage.  Die Soll-Lnge eines Sonnenjahres (bzw. sogenannten
tropischen Jahres) betrgt 365 Tage, 5 Stunden, 48 Minuten und 46
Sekunden.  Ein 366-Tage Jahr, welches alle vier Jahre stattfindet,
setzt nun aber die Durchschnittslnge von einem Julianischen Jahr auf
365 Tage und 6 Stunden, also auf 365,25 Tage.  Das bedeutet somit, da
sich alle vier Jahre ein Fehler von 44 Minuten und 56 Sekunden in diese
Kalenderrechnung einschleicht.  Die Jahre werden aufgrund dieser
Zhlweise etwas zu lang, und zwar um gut 11 Minuten.

So kam es, da der Frhlingsanfang im 16'ten Jahrhundert auf den 11'ten
Mrz fiel -- anstatt auf den 21'ten Mrz --, und zwar durch einen bis
dahin akkumulierten Fehler von zehn Tagen.  Auch das Osterfest rckte
stets mehr und mehr vom gewohnten Frhlingstermin ab und mute immer
frher gefeiert werden.  Papst Gregor XIII ordnete eine weitere
Kalenderreform an, um diesen Fehler zu kompensieren.  So wurde der
Frhlingsanfang auf den 21'ten Mrz festgelegt und Donnerstag, der 4'te
Oktober, wurde gefolgt von Freitag, dem 15'ten Oktober, indem einfach
zehn Tage im Kalender bersprungen wurden.  Zudem wurde alle 400 Jahre
ein Schaltjahrhundert eingefhrt und weiterhin bestimmt, da die
Jahrhundertwenden keine Schaltjahre mehr sind, mit der Ausnahme, da
Jahrhundertwenden, die durch 400 ganzzahlig teilbar sind, dennoch
Schaltjahre bleiben sollten.  Diese Regelung verminderte den Fehler in
der Kalenderrechnung um weitere 72 Stunden (3 Tage) alle 400 Jahre.  Der
aktuelle berschu betrgt akkumuliert 74 Stunden, 53 Minuten und 20
Sekunden.  Der Fehler von 2 Stunden, 53 Minuten und 20 Sekunden pro
Zeitraum von 400 Jahren beluft sich auf einen Tag in 3323 Jahren.
Damit hat das Gregorianische Jahr eine Durchschnittslnge von 365,2425
Tagen.

Dieser "Gregorianische Kalender" setzte sich aber nur sehr langsam
durch.  Katholisch regierte Lnder bernahmen den Gregorianischen
Kalender sofort oder innerhalb weniger Jahre.  Die meisten
protestantisch regierten Lnder auf dem europischen Kontinent
bernahmen den neuen Gregorianischen Kalender um 1700.  England und die
amerikanischen Kolonien wechselten zu dem Kalender im Jahre 1752 durch
Parlamentsbeschlu.  Orthodox christianisierte Lnder bernahmen den
Gregorianischen Kalender spter.  Ruland war das letzte europische
Land, da diesen Kalender bernahm, und zwar nach der Kommunistischen
Revolution, welche am 25'ten Oktober 1917 (Gregorianisch) stattfand.
Daraus resultierte, da die UDSSR den Tag der Oktoberrevolution nach
dem alten Julianischen Kalender am 7'ten November feierte.

Als bisher letzter Staat stellte die Volksrepublik China im Jahre 1949
seine Zeitrechnung auf den Gregorianischen Kalender um.  Heute ist die
weltweit einheitliche Zeitrechnung schon bereits wieder Geschichte
geworden.  So ist der Iran im Jahre 1979 nach Absetzung des
Schah-Regierung wieder zum traditionellen mohammedanischen Mondkalender
zurckgekehrt.  Es gibt auch einige Bemhungen, unseren gegenwrtig
gltigen Gregorianischen Kalender zu verbessern.  Die Nachteile
bestehen darin, da ein bestimmter Kalendertag nicht immer auf den
gleichen Wochentag fllt.  Zudem sind die Monate ungleich lang und die
an das Osterfest gebundenen Feiertage verschieben sich innerhalb des
Kalenders von Jahr zu Jahr.  Ein recht ausgereifter Vorschlag wurde von
den Vereinten Nationen vorgetragen.  Seine internationale Einfhrung
scheiterte jedoch am Widerstand einiger Lnder, aber auch der Kirchen.

Gcal Hilfsprogramme
*******************

Drei kleine Hilfsprogramme sind im Gcal 2.40 Paket enthalten.  Das
`tcal' Programm startet das Gcal Programm mit dem Datum des morgigen
Tages.  Das `txt2gcal' Programm erzeugt eine wortgetreue Gcal
Ressourcendatei aus einer Textdatei, und im Gegensatz dazu erstellt das
`gcal2txt' Programm eine wortgetreue Textdatei aus einer Gcal
Ressourcendatei.

Aufruf von `tcal'
=================

`tcal' ist ein Programm, welches `gcal' mit dem Datum des morgigen
Tages aufruft (1).  Seine Argumente sind wie folgt:

     tcal [--help | --version] | [--shift=[+|-]ZAHL] [ARGUMENT...]

Alle gegebenen ARGUMENTE werden unverndert an das Gcal Programm
bergeben.  Soll das Gcal Programm mit einem anderen Datum als dem Datum
des morgigen Tages aufgerufen werden, so kann dieses gewnschte Datum
mittels der `--shift=[+|-]ZAHL' Option vorgewhlt werden, wobei
`[+|-]ZAHL' die Distanz an Tagen ist, die das gewnschte Datum vom
aktuellen Systemdatum (==heute) entfernt ist (funktioniert nur fr
Gregorianische Jahre).  Die `--shift' Option mu vor allen anderen
ARGUMENTEN, die an das Gcal Programm bergeben werden, angegeben sein.

Falls eine `GCALPROG' Umgebungsvariable (*siehe GCALPROG:
Umgebungsvariablen.) definiert und mit dem Dateinamen des ausfhrbaren
Gcal Programms gesetzt ist, so benutzt `tcal' diesen Dateinamen, um
Gcal aufzurufen.  Andernfalls benutzt `tcal' den beim
Kompilationsvorgang eingebrannten Dateinamen `gcal', um das Gcal
Progamm aufzurufen.  Ein Programmendestatus 0 bedeutet, da die
Verarbeitung erfolgreich war, ein anderer Endestatus verweist auf einen
Fehler whrend der Verarbeitung.

Das Programm akzeptiert die folgenden Optionen:

`--help'
     Ausgabe eines Hilfetextes, der alle verfgbaren Optionen aufzeigt;
     sodann erfolgreiche Beendigung des Programms.

`--version'
     Ausgabe der Versionsnummer; sodann erfolgreiche Beendigung des
     Programms.

`--shift=[+|-]ZAHL'
     Legt den um `[+|-]ZAHL' vorgegebenen Versatz an Tagen bezogen auf
     das aktuelle Datum fest.

  ---------- Fussnoten ----------

  (1)  Das entspricht der `--shift=1' Option.

Aufruf von `txt2gcal'
=====================

`txt2gcal' ist ein Programm, welches aus einer Textdatei eine
wortgetreue Gcal Ressourcendatei erzeugt.  Seine Argumente sind wie
folgt:

     txt2gcal [--help | --version] | [TEXTDATEI | -] [DATUMTEIL]

Wird keine TEXTDATEI oder aber `-' als Argument angegeben, so liest und
verarbeitet das Programm alle Eingaben, die vom
*Standardeingabe-Gertekanal* kommen.  Wird kein DATUMTEIL als Argument
angegeben, so wird von `txt2gcal' eine `0' fr den Datumteil erzeugt.
Alle Ergebnisse werden stets auf dem *Standardausgabe-Gertekanal*
ausgegeben.  Ein Programmendestatus 0 bedeutet, da die Verarbeitung
erfolgreich war, ein anderer Endestatus verweist auf einen Fehler
whrend der Verarbeitung.

Das Programm akzeptiert die folgenden Optionen:

`--help'
     Ausgabe eines Hilfetextes, der alle verfgbaren Optionen aufzeigt;
     sodann erfolgreiche Beendigung des Programms.

`--version'
     Ausgabe der Versionsnummer; sodann erfolgreiche Beendigung des
     Programms.

Nun zu einem Beispiel, welches den Einsatz von `txt2gcal' nher
erlutern soll.  Angenommen es existiert eine Textdatei mit dem Namen
`demo' und folgendem Inhalt:

             Hallo Freunde,
     
     Ich bin der Demo-Text, der lustige Zeichen und Zeichensequenzen
     enthaelt wie ~~ \~ % %% $a $1 %%%\
     %\ %s %%foo %bar \%baz \\~ \~\ und so weiter...
     Ich bin gespannt darauf, wie ich von `txt2gcal' umgesetzt werde.

und `txt2gcal' verarbeitet diese Datei, wobei die Ausgabe in die Datei
`demo.rc' umgelenkt wird:

     $ txt2gcal demo 0*d1#999 > demo.rc
     => 0*d1#999 \        Hallo Freunde,~\
     => ~\
     => Ich bin der Demo-Text, der lustige Zeichen und Zeichensequenzen~\
     => enthaelt wie \~\~ \\~ % %% \$a $1 %%%\ ~\
     => %\ \%s %\%foo \%bar \\%baz \\\~ \\~\ und so weiter...~\
     => Ich bin gespannt darauf, wie ich von `txt2gcal' umgesetzt werde.

dann hat `txt2gcal' nun die neue Gcal Ressourcendatei `demo.rc' aus der
Textdatei `demo' erzeugt.

Abschlieend erfolgt die Betrachtung, wie Gcal diese neue
Ressourcendatei interpretiert:

     $ gcal %19960101 -H no -Ax -f ./demo.rc
     -|
     -| Mo,   1 Jan 1996:
     -|         Hallo Freunde,
     -|
     -| Ich bin der Demo-Text, der lustige Zeichen und Zeichensequenzen
     -| enthaelt wie ~~ \~ % %% $a $1 %%%\
     -| %\ %s %%foo %bar \%baz \\~ \~\ und so weiter...
     -| Ich bin gespannt darauf, wie ich von `txt2gcal' umgesetzt werde.

Aufruf von `gcal2txt'
=====================

`gcal2txt' ist ein Programm, welches aus einer Gcal Ressourcendatei
eine wortgetreue Textdatei erzeugt.  Seine Argumente sind wie folgt:

     gcal2txt [--help | --version] | [RESSOURCENDATEI | -]

Wird keine RESSOURCENDATEI oder aber `-' als Argument angegeben, so
liest und verarbeitet das Programm alle Eingaben, die vom
*Standardeingabe-Gertekanal* kommen.  Alle Ergebnisse werden stets auf
dem *Standardausgabe-Gertekanal* ausgegeben.  Ein Programmendestatus 0
bedeutet, da die Verarbeitung erfolgreich war, ein anderer Endestatus
verweist auf einen Fehler whrend der Verarbeitung.

Sinn und Zweck von `gcal2txt' ist, all das, was von `txt2gcal' in die
Ausgabe eingebracht wurde, wieder rckgngig zu machen!

Das Programm akzeptiert die folgenden Optionen:

`--help'
     Ausgabe eines Hilfetextes, der alle verfgbaren Optionen aufzeigt;
     sodann erfolgreiche Beendigung des Programms.

`--version'
     Ausgabe der Versionsnummer; sodann erfolgreiche Beendigung des
     Programms.

Und nun ebenfalls zu einem Beispiel, welches den Einsatz von `gcal2txt'
nher erlutern soll.  Dazu wird die Ressourcendatei mit dem Namen
`demo.rc' benutzt, welche im vorherigen Abschnitt mittels `txt2gcal'
aus einer Textdatei erzeugt wurde (*siehe Aufruf von `txt2gcal': Aufruf
von txt2gcal.), und die ja wie folgt aussieht:

     $ cat demo.rc
     -| 0*d1#999 \        Hallo Freunde,~\
     -| ~\
     -| Ich bin der Demo-Text, der lustige Zeichen und Zeichensequenzen~\
     -| enthaelt wie \~\~ \\~ % %% \$a $1 %%%\ ~\
     -| %\ \%s %\%foo \%bar \\%baz \\\~ \\~\ und so weiter...~\
     -| Ich bin gespannt darauf, wie ich von `txt2gcal' umgesetzt werde.

Nun zur Betrachtung, wie diese Ressourcendatei von `gcal2txt'
verarbeitet wird:

     $ gcal2txt demo.rc
     -|         Hallo Freunde,
     -|
     -| Ich bin der Demo-Text, der lustige Zeichen und Zeichensequenzen
     -| enthaelt wie ~~ \~ % %% $a $1 %%%\
     -| %\ %s %%foo %bar \%baz \\~ \~\ und so weiter...
     -| Ich bin gespannt darauf, wie ich von `txt2gcal' umgesetzt werde.

Gesichtspunkte zur Internationalisierung
****************************************

Gcal besitzt ab Version 2.00 die Fhigkeit, Meldungstexte nicht mehr nur
allein in englischer Landessprache auszugeben, sondern auch in
beliebigen anderen Landessprachen, da Bestandteile des GNU `gettext'
Pakets in die Software integriert worden sind.  *Siehe Introduction:
(gettext)Top, fr weitere Details.

Gcal ist intern so eingestellt, da es die englische Landessprache zur
Ausgabe aller Meldungstexte verwendet, sofern keine andere Landessprache
verwendet werden soll.  Werden Meldungstexte in einer anderen
Landessprache gewnscht, so werden diese von Gcal aus einem sogenannten
*message catalog* zur Laufzeit eingelesen.  Die folgenden
Landessprachen werden von Gcal 2.40 untersttzt:

*Landessprache*          *Sprachkode*                                     
Englisch                 `en'                                             
Deutsch                  `de'                                             
Franzsisch              `fr'                                             
Niederlndisch           `nl'                                             
Schwedisch               `sv'                                             

Um eine andere Landessprache anstelle der englischen Landessprache
vorzuwhlen, so braucht nur in einer der Umgebungsvariablen (1):

1.  `LANGUAGE'                                                            
2.  `LC_ALL'                                                              
3.  `LC_MESSAGES'                                                         
4.  `LANG'                                                                

ein entsprechender Sprachkode eintragen zu werden.

Endanwender benutzen normalerweise nur die `LANG' Umgebungsvariable um
Gcal mitzuteilen, welche Landessprache zur Laufzeit verwendet werden
soll.  Angenommen Benutzer mchten Gcal mit Meldungstexten in deutscher
Landessprache betreiben, so knnen diese die shell dazu veranlassen,
die Umgebungsvariable `LANG' mit dem Inhalt `de' zu besetzen, und zwar
durch `setenv LANG de' (bei Benutzung der `csh' shell) oder durch
`export LANG; LANG=de' (bei Benutzung der `sh' shell).
Selbstverstndlich kann dieser Befehl auch in der `.login' bzw.
`.profile' Datei beim Endanwender enthalten sein.  *Siehe The User's
View: (gettext)Users, fr weitere Details.

Wie zuvor dargestellt reicht bereits der simple Eintrag von `de' in der
Umgebungsvariablen `LANG' aus, um die Ausgabe deutscher Meldungstexte zu
veranlassen.  `de' ist der aus zwei Buchstaben bestehende Sprachkode fr
Deutsch, der in der ISO-639:1988 definiert ist, und im weiteren Verlauf
als "einfache Sprachkode-Information" bezeichnet wird.  Andere
Sprachkodes knnen dieser ISO-Norm entnommen werden (2).

Da Gcal als Kalenderprogramm auch den Eigenheiten der verwendeten
Landessprache hinsichtlich der Anordnung von Tag, Monat und Jahr (und
weiterem) in einem dargestellten Datum, dem Zeitraum der
Gregorianischen Reform und der Darstellungsweise von Kalenderblttern,
nachkommen mu, sind diese Kriterien ebenfalls an den Sprachkode
gebunden (3).

So bewirkt ein `en' Sprachkode folgende interne Grundeinstellungen
vorgenannter Kriterien:

   * US amerikanisches Datumformat

   * Gregorianische Reformation war 1752

   * Starttag der Woche ist Sonntag

   * Kalenderblattdarstellung

             September 1994
          So Mo Di Mi Do Fr Sa
                       1  2  3
           4  5  6  7  8  9 10
          11 12 13 14 15 16 17
          18 19 20 21 22 23 24
          25 26 27 28 29 30

Und ein `de' Sprachkode (4) bewirkt folgende interne Grundeinstellungen:

   * Deutsches Datumformat

   * Gregorianische Reformation war 1582

   * Starttag der Woche ist Montag

   * Kalenderblattdarstellung

          September 1994
          
          Montag           5 12 19 26
          Dienstag         6 13 20 27
          Mittwoch         7 14 21 28
          Donnerstag    1  8 15 22 29
          Freitag       2  9 16 23 30
          Samstag       3 10 17 24
          Sonntag       4 11 18 25

Alle diese internen Grundeinstellungen sind durch die Angabe der
Optionen `--date-format', `--gregorian-reform', `--starting-day' und
`--type' vernderbar.

Falls kein Sprachkode vorgefunden wird, so nimmt Gcal die interne
Grundeinstellung des `en' Sprachkodes an (5).

Falls ein Sprachkode angegeben ist, fr den kein *message catalog*
installiert wurde, so nimmt Gcal die internen Grundeinstellungen des
`de' Sprachkodes an, gibt aber die Meldungstexte in der englischen
Landessprache aus.  Dieses Verhalten erscheint mir im Augenblick als
die zweckmigste Lsung in einem solchen Fall.  Da die englische
Landessprache weltweit strker verbreitet ist als die deutsche oder
andere Landessprachen, macht es in einem solchen Fall durchaus Sinn,
die Meldungstexte in der englischen Landessprache auszugeben.
Allerdings sind die sonstigen Kriterien, die an die englische
Landessprache gebunden sind, so speziell fr Benutzer anderer
Landessprachen, da es aber durchaus Sinn macht, diese Kriterien an die
internen Grundeinstellungen des `de' Sprachkodes anzulehnen, da in den
meisten europischen Lndern (die ich hier zum Mastab mache) im
wesentlichen die internen Grundeinstellungen des `de' Sprachkodes
verwendet werden.

Nun werden sich britische Endanwender sicherlich fragen, ob auch ihr
Datumformat als interne Grundeinstellung benutzt werden kann (6).  Die
Antwort lautet schlicht und ergreifend `ja', allerdings mu dieser
Benutzerkreis anstelle einer einfachen Sprachkode-Information eine
"erweiterte Sprachkode-Information" in der Umgebungsvariable `LANG'
angeben.

Die bliche Schablone einer erweiterten Sprachkode-Information ist wie
folgt aufgebaut:

   * Nach XPG Syntax (X/Open Portability Guide):

          LANDESSPRACHE[_TERRITORIUM][.ZEICHENSATZ][@MODIFIZIERER]

   * Nach CEN Syntax (Comit Europn de Normalisation):

          LANDESSPRACHE[_TERRITORIUM][+PUBLIKUM][+SPEZIAL][,SPONSOR][_BERARBEITUNG]

Beide Syntaxen enthalten die Bestandteile LANDESSPRACHE und
TERRITORIUM, welche von Gcal zur Auswahl der Landessprache und der
sonstigen Kriterien verwendet werden.  Der Bestandteil LANDESSPRACHE
entspricht der einfachen Sprachkode-Information, und der Bestandteil
TERRITORIUM ist ein aus zwei Buchstaben bestehender Territoriumskode,
wie er in der ISO-3166 definiert ist, z.B. `GB' fr Grobritannien oder
`US' fr die USA.  Fr weitere Einzelheiten hierzu sei auf die
einschlgige Fachliteratur verwiesen.  Brititsche Endanwender brauchen
nur die shell dazu veranlassen, die Umgebungsvariable `LANG' mit dem
Inhalt `en_GB' zu besetzen, sodann knnen diese das britische
Datumformat als interne Grundeinstellung benutzen.

  ---------- Fussnoten ----------

  (1)  Hier in absteigender Prioritt ihrer Bercksichtigung
aufgestellt.

  (2)  Wie zum Beispiel `fr' fr Franzsisch, `es' fr Spanisch...

  (3)  Genaugenommen an eine erweiterte Sprachkode-Information.

  (4)  Oder andere Sprachkodes, fr welche in Zukunft ein *message
catalog* erstellt und mit ausgeliefert wird.

  (5)  Besser gesagt der erweiterten Sprachkode-Information `en_US'.

  (6)  Alle anderen internen Grundeinstellungen der einfachen `en'
Sprachkode-Information entsprechen ja sonst bereits ihren Kriterien.

Metasymbole
***********

Folgende *metasprachliche* Konventionen werden bei der Darstellung von
Optionen, Kommandos, Argumenten und Schablonen innerhalb dieses
Dokuments verwendet:

`N'
     Nichtoptionales Argument, N mu eine zulssige Zahl sein.

`e|t|DVAR'
     Nichtoptionales Argument, welches ein einzelnes alphabetisches
     Zeichen sein mu.

`$TVAR'
     Nichtoptionales Argument, welches ein einzelnes alphabetisches
     Zeichen sein mu, das von einem `$' Zeichen angefhrt wird.

`[TEXT]'
     Optionales Argument, TEXT ist eine zulssige
     Zeichenkettenkonstante.

`[AB]'
     Optionale Argumente, deren Anzahl und Anordnung beliebig ist, z.B.:

          NICHTS, A, B, AB, BA ...

`{AB}'
     Nichtoptionale Argumente, deren Anordnung beliebig ist und von
     denen mindestens eins bis hin zu einer beliebigen Anzahl angegeben
     werden kann, z.B.:

          A, B, AB, BA ...

`[A|B]'
     Optionale Argumente, entweder A oder B, aber nicht beide.

`A|B'
     Nichtoptionale Argumente, entweder A oder B, aber nicht beide.

`[A[B]]'
     Optionale Argumentliste, entweder A oder AB, aber nicht B.

`[A|B[C]]'
     Optionale Argumentliste, entweder A oder B oder AC oder BC, aber
     nicht C.

`[A|BC]'
     Optionale Argumentliste, entweder AC oder BC, aber nicht A oder B
     oder C.

`[A]|[B]'
     Optionale Argumentlisten, entweder Liste A oder Liste B, aber
     nicht beide.

`[...]'
     Zustzliche Argumente drfen angegeben werden und sind optional.

Regulre Ausdrcke
******************

Dieser Anhang ist aus den `gawk-3.0.0' und `regex-0.12' Handbchern
abgeleitet.

Ein "regulrer Ausdruck", oder "regexp", ist ein Weg zur Beschreibung
einer Klasse von Zeichenketten, oder "strings".  Der einfachste
regulre Ausdruck ist eine Folge von Buchstaben, Zahlen, oder beidem.
Solch ein regexp pat auf jedwede Zeichenkette, die eine solche Folge
enthlt.  Deswegen stimmt der regexp `foo' mit jeder Zeichenkette
berein, die `foo' enthlt.  Andere Arten von regulren Ausdrcken
erlauben eine weitaus kompliziertere Angabe von string-Klassen.

Gcal benutzt genau eine der folgenden regulr-Ausdruck
Programmbibliotheken bzw. Methoden, welche zur Konfigurationszeit, oder
genaugenommen, Kompilationszeit der Software ausgewhlt wird; und die
hier in absteigender Prioritt hinsichtlich ihrer Auswahl angegeben
sind:

*Nr.**Funktion*                                             *Symbol*       
1.   GNU `re_compile_pattern()' und `regex.h'               `GNU-REGEX'    
2.   POSIX `regcomp()' und `regex.h'                        `POSIX-REGEX'  
3.   BSD `re_comp()'                                        `BSD-REGEX'    
4.   System V `regcmp()'                                    `SysV-REGEX'   
5.   Henry Spencer V8 `regcomp()' und `regexp.h'            `V8-REGEX'     
6.   Mustererkennung wird untersttzt, aber ohne            `NO-REGEX'     
     Metazeichen                                                           

Benutzen Sie `gcal --version' um festzustellen, welche Art von
regulr-Ausdruck Programmbibliothek bzw. Methode in Ihr Gcal Programm
eingebrannt ist!

Benutzung von regulren Ausdrcken
==================================

Ein regulrer Ausdruck kann als Suchmuster benutzt werden, wenn bei
Aufruf von Gcal die `--filter-text=SUCHMUSTER' Option angegeben wird.

*Siehe `--filter-text=SUCHMUSTER': Termin Optionen, fr weitere Details.

Der regulre Ausdruck wird mit dem gesamten, vollstndig expandierten
Text jedes *gltigen* Termins verglichen, und der Termin wird nur dann
ausgegeben, falls das Suchmuster mit dem Text (1) bereinstimmt.

  ---------- Fussnoten ----------

  (1)  Fr einen erfolgreichen Vergleich wird normalerweise nur eine
bereinstimmung mit einem Teil des Textes bentigt.

Regulr-Ausdruck Operatoren
===========================

Regulre Ausdrcke knnen mit den folgenden Zeichen kombiniert werden,
welche als "regulr-Ausdruck Operatoren" oder "Metazeichen" bezeichnet
werden, um die Leistungsfhigkeit und Vielseitigkeit von regulren
Ausdrcken zu erhhen.

Hier ist eine Tabelle dieser Metazeichen.  Alle Zeichen, die nicht in
dieser Tabelle aufgefhrt sind, stehen fr sich selbst.

`\'
     Wird benutzt um die Spezialbedeutung eines Zeichens whrend des
     Vergleichs zu unterdrcken.  Zum Beispiel:

          \$

     pat auf das Zeichen `$'.

`^'
     Pat auf den Anfang einer Zeichenkette.  Zum Beispiel:

          ^@chapter

     pat auf `@chapter' zu Anfang einer Zeichenkette, und kann dazu
     benutzt werden, um Kapitelanfnge in Texinfo Quellentextdateien zu
     identifizieren.  Das `^' Zeichen wird als ein "Anker" bezeichnet,
     da es das Suchmuster dergestalt verankert, da es nur zu
     bereinstimmungen kommen kann, die zu Anfang einer Zeichenkette
     auftreten.

`$'
     hnlich wie `^', pat aber nur auf das Ende einer Zeichenkette.
     Zum Beispiel:

          p$

     pat auf einen string, der mit `p' endet.  Das `$' Metazeichen ist
     auch ein Anker.

`.'
     Der Punkt pat auf jedes Einzelzeichen.  Zum Beispiel:

          .P

     fhrt zu bereinstimmungen jedes Einzelzeichens, welches von einem
     `P' in einer Zeichenkette gefolgt wird.  Mittels Verkettung kann
     beispielsweise ein regulrer Ausdruck wie `U.A' erzeugt werden,
     welcher auf jede 3-Zeichen Folge pat, die mit `U' beginnt und mit
     einem `A' endet.

`[...]'
     Wird als "Zeichenliste" bezeichnet.  Diese pat auf jedes
     *Einzelzeichen*, welches in den eckigen Klammern angegeben wird.
     Zum Beispiel:

          [MVX]

     pat auf jedes einzelne `M', `V' oder `X' Zeichen in einem string.

     Bereiche von Zeichen werden unter Benutzung eines Bindestrichs
     zwischen den Start- und Endezeichen vereinbart, und das ganze wird
     von eckigen Klammern umschlossen.  Zum Beispiel:

          [0-9]

     pat auf jede Ziffer.  Mehrfache Bereiche sind erlaubt.  Zum
     Beispiel ist die Liste `[A-Za-z0-9]' ein blicher Weg, um den
     Gedanken "aller alphanumerischen Zeichen" auszudrcken.

     Um eines der `\', `[', `]', `-' oder `^' Zeichen in eine
     Zeichenliste einzufgen, ist es notwendig, diese mit einem
     anfhrenden `\' Zeichen auszustatten.  Zum Beispiel:

          [d\]]

     pat entweder auf `d' oder `]'.

     "Zeichenklassen" sind ein neues Merkmal, die im POSIX Standard
     eingefhrt sind.  Eine Zeichenklasse ist eine spezielle
     Bezeichnung, um Zeichenlisten, die mit speziellen Eigenschaften
     ausgestattet sind, zu beschreiben, wohingegen sich aber die
     aktuellen Zeichen selbst von Land zu Land und/oder Zeichensatz zu
     Zeichensatz verndern.  Zum Beispiel unterscheidet sich der
     Begriff, was unter einem alphabetischen Zeichen zu verstehen ist,
     in den USA und in Frankreich.

     Eine Zeichenklasse ist in einem regexp nur *innerhalb* der Klammern
     einer Zeichenliste gltig.  Zeichenklassen bestehen aus `[:' --
     einem Schlsselwort, da die Klasse bezeichnet -- und `:]'.  Es
     folgen nun die Zeichenklassen, welche durch den POSIX Standard
     definiert werden:

    `[:alnum:]'
          Alphanumerische Zeichen.

    `[:alpha:]'
          Alphabetische Zeichen.

    `[:blank:]'
          Leerzeichen und Tabulatorzeichen.

    `[:cntrl:]'
          Steuerzeichen.

    `[:digit:]'
          Numerische Zeichen.

    `[:graph:]'
          Zeichen, die druckbar und zugleich sichtbar sind (1).

    `[:lower:]'
          Kleinbuchstaben.

    `[:print:]'
          Druckbare Zeichen (2).

    `[:punct:]'
          Interpunktionszeichen (3).

    `[:space:]'
          Leerzeichen (4).

    `[:upper:]'
          Grobuchstaben.

    `[:xdigit:]'
          Hexadezimalziffern.

     Zum Beispiel mute vor Einfhrung des POSIX Standards
     `[A-Za-z0-9]' geschrieben werden, um eine bereinstimmung mit
     allen alphanumerischen Zeichen zu erhalten.  Falls der verwendete
     Zeichensatz nun aber andere alphabetische Zeichen enthlt, so wrde
     vorstehendes Suchmuster keine bereinstimmung mit diesen erbringen.
     Mit den POSIX Zeichenklassen kann nun aber `[[:alnum]]' geschrieben
     werden, mit dem Resultat, da *alle* alphabetischen und numerischen
     Zeichen des verwendeten Zeichensatzes bereinstimmungen erbringen
     wrden.

     Zwei zustzliche Spezialfolgen knnen in Zeichenlisten auftreten.
     Diese lassen sich auf nicht-ASCII Zeichenstze anwenden, welche
     einzelne Symbole haben knnen (auch "vergleichende Elemente" (5)
     genannt), die mit mehr als einem Zeichen dargestellt werden,
     ebensogut wie zahlreiche Zeichen, die gleichwertig fr Vergleichs-
     oder Sortierungszwecke benutzt werden knnen.  (Zum Beispiel sind
     im Franzsischen das einfache `e' und ein *grave* akzentuiertes
     `' identisch.)

    Vergleichende Symbole
          Ein "vergleichendes Symbol" (6) ist ein Multi-Zeichen
          vergleichendes Element, das mit `[.' und `.]' umschlossen
          wird.  Wenn beispielsweise `ch' ein vergleichendes Element
          ist, so ist `[[.ch.]]' ein regexp, der auf dieses
          vergleichende Element pat, wohingegen `[ch]' ein regexp ist,
          der entweder auf `c' oder auf `h' pat.

    Gleichwertigkeitsklassen in regexps
          Eine "Gleichwertigkeitsklasse" (7) ist eine Liste von
          gleichwertigen Zeichen, die mit `[=' und `=]' umschlossen
          sind.  Deswegen ist `[[=e=]]' ein regexp, der entweder auf
          `e' oder `' pat.

     Diese Besonderheiten sind ein sehr wertvolles Hilfsmittel in nicht
     englischsprachig ausgerichteten Umgebungen.

     *Vorsicht:*

     Die Bibliotheksfunktionen, die von `gcal' fr die regulr-Ausdruck
     Vergleiche benutzt werden, erkennen derzeit nur POSIX
     Zeichenklassen (mglicherweise); sie erkennen weder vergleichende
     Elemente noch Gleichwertigkeitsklassen.

`[^ ...]'
     Bezeichnet eine "negierte Zeichenliste" bzw. "komplementre
     Zeichenliste".  Das erste Zeichen nach der `[' Klammer *mu* das
     `^' Zeichen sein.  Diese Zeichenliste pat auf jedes Zeichen, das
     *nicht* innerhalb der eckigen Klammern aufgefhrt ist.  Zum
     Beispiel:

          [^0-9]

     pat auf jedes Zeichen, das keine Ziffer ist.

`|'
     Das ist der "Auswahl-Operator", und dieser wird benutzt, um
     Alternativen zu vereinbaren.  Zum Beispiel:

          ^P|[0-9]

     pat auf jeden string, der entweder mit `^P' oder mit `[0-9]'
     bereinstimmt.  Das bedeutet, da bereinstimmungen mit jeder
     Zeichenkette bestehen, die mit `P' beginnt oder eine Ziffer
     enthlt.

     Die Alternative gilt fr den grtmglichen regulr-Ausdruck auf
     der jeweiligen Seite.  Mit anderen Worten, `|' hat den geringsten
     Vorrang aller regulr-Ausdruck Operatoren.

`(...)'
     Runde Klammern werden in regulren Ausdrcken genauso zum
     Gruppieren verwendet, wie in der Arithmetik.  Diese knnen benutzt
     werden, um regulre Ausdrcke zu verketten, die den `|'
     Auswahl-Operator enthalten.
     Zum Beispiel pat `@(samp|code)\{[^}]+\}' beiderseits auf
     `@code{foo}' und auf `@samp{bar}'.  (Das sind Texinfo
     Steueranweisungen zur Textformatierung.)

`*'
     Dieses Symbol bedeutet, da der vorangehende regulre Ausdruck so
     oft wiederholt wird, wie es notwendig ist, um eine bereinstimmung
     zu finden.  Zum Beispiel:

          ph*

     verwendet das `*' Symbol zum vorangehenden `h', und prft auf
     bereinstimmungen, die sich aus einem `p', welches von einer
     beliebigen Anzahl von `h''s gefolgt wird, ergeben.  `ph*' pat
     auch auf ein einzelnes `p', falls keine `h''s vorhanden sind.

     Das `*' Metazeichen wiederholt den *geringstmglichen*
     vorangehenden Ausdruck.  (Benutzen Sie die runden Klammern, falls
     ein grerer Ausdruck wiederholt werden soll.)  Es werden so viele
     Wiederholungen wie mglich gefunden.  Zum Beispiel:

          gcal --filter-text='\(c[ad][ad]*r x\)' -f beispiel.rc -y

     gibt jeden Termin aus `beispiel.rc' aus, der einen Termintext der
     Form `(car x)', `(cdr x)', `(cadr x)', usw. enthlt.  Beachten Sie
     das Entwerten der runden Klammern durch Voranstellen eines `\'
     Zeichens an diese.

`+'
     Dieses Symbol ist hnlich wie `*', nur mu der vorangehende
     Ausdruck letztlich einmal gepat haben.  Das bedeutet, da:

          ul+m

     zwar auf `ulm' und `ullm' passen wrde, aber nicht auf `um',
     wohingegen `ul*m' auf alle drei vorstehenden Zeichenketten passen
     wrde.  Hier ist eine einfachere Art, wie das letzte `*' Beispiel
     geschrieben werden kann:

          gcal --filter-text='\(c[ad]+r x\)' -f beispiel.rc -y

`?'
     Dieses Symbol ist hnlich wie `*', aber der vorangehende Ausdruck
     kann entweder einmal gepat haben, oder nicht in Gnze.  Zum
     Beispiel:

          fe?d

     pat nur auf `fed' und `fd', und nichts anderes.

`{N}'
`{N,}'
`{N,M}'
     Eine oder zwei Zahlen innerhalb geschweifter Klammern bezeichnen
     einen "Intervall-Ausdruck", der im POSIX Standard verfgbar ist.
     Falls eine Zahl in den Klammern vorhanden ist, so wird der
     vorangehende regexp N-fach wiederholt.  Wenn zwei Zahlen --
     separiert durch ein Komma -- in den Klammern vorhanden sind, so
     wird der vorangehende regexp N bis M-fach wiederholt.  Nun, falls
     eine Zahl -- gefolgt von einem Komma -- in den Klammern vorhanden
     ist, dann wird der vorangehende regexp letztlich N-fach wiederholt.

    `ul{3}m'
          pat auf `ulllm', aber nicht auf `ulm' oder `ullllm'.

    `ul{3,5}m'
          pat nur auf `ulllm' oder `ullllm' oder `ulllllm'.

    `ul{2,}m'
          pat auf `ullm' oder `ulllm' und so weiter.

GNU Software, die mit regulren Ausdrcken umgeht, untersttzt
zustzlich weitere regulr-Ausdruck Operatoren.  Diese Operatoren sind
hier beschrieben.

Die meisten der zustzlichen Operatoren sind geschaffen worden, damit
bereinstimmungen in Wrtern festgestellt werden knnen.  Fr unsere
Zwecke ist ein "Wort" eine Folge von einem oder mehreren Buchstaben,
Zahlen oder Unterstrichzeichen (`_').

`\w'
     Dieser Operator pat auf jedes Zeichen, welches ein Wort
     konstituiert, d.h. jeder Buchstabe, Zahl oder Unterstrich.  Denken
     Sie es sich als eine Abkrzung fr `[A-Za-z0-9_]' oder
     `[[:alnum:]_]'.

`\W'
     Dieser Operator pat auf jedes Zeichen, welches kein Wort
     konstituiert.  Denken Sie es sich als eine Abkrzung fr
     `[^A-Za-z0-9_]' oder `[^[:alnum:]_]'.

`\<'
     Dieser Operator pat auf jeden leeren string zu Anfang eines
     Wortes.  Beispielsweise pat `\<kennen' auf `kennen', aber nicht
     auf `erkennen'.

`\>'
     Dieser Operator pat auf jede leere Zeichenkette zu Ende eines
     Wortes.  Zum Beispiel pat `er\>' auf `er', aber nicht auf
     `erkennen'.

`\b'
     Dieser Operator pat auf einen leeren string, der entweder zu
     Anfang oder zu Ende eines Wortes auftritt.  Zum Beispiel pat
     `\bFalle?\b' entweder auf das einzelne Wort `Fall' oder auf das
     einzelne Wort `Falle'.

`\B'
     Dieser Operator pat auf eine leere Zeichenkette, die innerhalb
     eines Wortes auftritt.  Mit anderen Worten, `\B' pat auf einen
     leeren string, der zwischen zwei Zeichen auftritt, die ein Wort
     konstituieren.  Beispielsweise pat `\Brechnet\B' auf
     `berechnete', aber es pat nicht auf `so rechnet man'.  `\B' ist
     im Grunde genommen das genaue Gegenteil von `\b'.

Es gibt noch zwei weitere Operatoren, die auf einen Puffer anwendbar
sind.  Im Emacs ist ein "Puffer" natrlich ein Emacs Puffer.  In anderen
Programmen betrachten die regulr-Ausdruck Bibliotheksfunktionen, die
von `gcal' benutzt werden, die gesamte Zeichenkette, welche auf
bereinstimmungen hin untersucht werden soll, als den Puffer (8).

Fr `gcal' erbringen diese Operatoren keine neuen Fhigkeiten, da die
`^' und `$' Operatoren benutzt werden knnen, um bereinstimmungen zu
Anfang und zu Ende von Zeichenketten festzustellen.  Sie sind nur
zwecks Kompatibilitt zu anderer GNU Software bereitgestellt.

`\`'
     Dieser Operator pat auf eine leere Zeichenkette zu Anfang eines
     Puffers.

`\''
     Dieser Operator pat auf eine leere Zeichenkette zu Ende eines
     Puffers.

Die `*', `+' und `?' Operatoren und die geschweiften Klammern `{' und
`}' haben den hchsten Vorrang in regulren Ausdrcken, gefolgt von der
Verkettung, und abschlieend dem `|' Operator.  Wie in der Arithmetik
blich, so kann auch hier mittels Klammerung (runde Klammern) die
Gruppierung der Operatoren verndert werden.

Die Gro-/ Kleinschreibung ist normalerweise von Bedeutung in regulren
Ausdrcken, und zwar beiderseits beim Aufspren von gewhnlichen Zeichen
(d.h. Nicht-Metazeichen), und innerhalb Zeichenklassen.  Deswegen pat
ein `w' in einem regulren Ausdruck nur auf einen `w' Kleinbuchstaben,
und nicht etwa auf einen `W' Grobuchstaben.

Der einfachste Weg, um ein Gro-/ Kleinschreibungsunabhngiges Zeichen
aufzuspren, ist die Benutzung einer Zeichenliste: `[Ww]'.  Wie auch
immer, so kann es doch sehr lstig sein, falls soetwas des fteren
gebraucht wird; und unglcklicherweise kann der regulre Ausdruck
dadurch schwer lesbar werden.

  ---------- Fussnoten ----------

  (1)  Ein Leerzeichen ist zwar druckbar, aber nicht sichtbar, whrend
ein `a' Zeichen beides ist.

  (2)  Zeichen, die nicht Steuerzeichen sind.

  (3)  Zeichen, die weder Buchstabe, Zahl, Steuerzeichen noch
Leerzeichen sind.

  (4)  Solche wie das Leerzeichen, Tabulatorzeichen und
Seitenvorschubzeichen, um ein paar zu nennen.

  (5)  Im Englischen mit *collating elements* bezeichnet.

  (6)  Im Englischen mit *collating symbol* bezeichnet.

  (7)  Im Englischen mit *equivalence class* bezeichnet.

  (8)  Das ist der *Textteil* einer Gcal Ressourcendateizeile.

Zusammenfassung aller regulren Ausdrcke
*****************************************

Regulre Ausdrcke basieren auf den POSIX ERAs (Erweiterte Regulre
Ausdrcke).  Regexps werden aus Zeichen zusammengesetzt.  Hier ist eine
Kurzliste aller dieser Zeichen:

`C'
     pat auf das Zeichen C (in der Annahme, das C keines der
     nachfolgend aufgefhrten Zeichen ist).

`\C'
     pat auf das textliche Zeichen C.

`.'
     pat auf jedes Zeichen.

`^'
     pat auf den Anfang einer Zeichenkette.

`$'
     pat auf das Ende einer Zeichenkette.

`[ABC...]'
     pat auf jedes der Zeichen ABC... (Zeichenliste).

`[[:KLASSE:]]'
     pat auf jedes Zeichen in der Zeichenklasse KLASSE.  Erlaubte
     Klassen sind `alnum', `alpha', `blank', `cntrl', `digit', `graph',
     `lower', `print', `punct', `space', `upper' und `xdigit'.

`[[.SYMBOL.]]'
     pat auf das Multi-Zeichen vergleichende Element SYMBOL.  `gcal'
     untersttzt gegenwrtig keine vergleichenden Elemente.

`[[=ZEICHEN=]]'
     pat auf jedes der gleichwertigen Zeichen in ZEICHEN.  `gcal'
     untersttzt gegenwrtig keine Gleichwertigkeitsklassen.

`[^ABC...]'
     pat auf jedes Zeichen, ausgenommen ABC... (negierte bzw.
     komplementre Zeichenliste).

`R1|R2'
     pat entweder auf R1 oder auf R2 (Alternative).

`R1R2'
     pat auf R1, und dann auf R2 (Verkettung).

`R+'
     pat auf ein R oder auf mehrere R's.

`R*'
     pat auf kein R oder auf mehrere R's.

`R?'
     pat auf kein R oder auf genau ein R.

`(R)'
     pat auf R (Gruppierung).

`R{N}'
`R{N,}'
`R{N,M}'
     pat auf letztlich N, N bis hin zu jeder Anzahl, oder N bis M
     Vorkommen von R (Intervall-Ausdrcke).

`\b'
     pat auf eine leere Zeichenkette entweder zu Anfang oder zu Ende
     eines Wortes.

`\B'
     pat auf die leere Zeichenkette innerhalb eines Wortes.

`\<'
     pat auf die leere Zeichenkette zu Anfang eines Wortes.

`\>'
     pat auf die leere Zeichenkette zu Ende eines Wortes.

`\w'
     pat auf jedes Zeichen, welches ein Wort konstituiert
     (Alphanumerische Zeichen und der Unterstrich).

`\W'
     pat auf jedes Zeichen, welches kein Wort konstituiert.

`\`'
     pat auf die leere Zeichenkette zu Anfang eines Puffers (1).

`\''
     pat auf die leere Zeichenkette zu Ende eines Puffers.

  ---------- Fussnoten ----------

  (1)  Identisch mit dem *Textteil* einer Ressourcendateizeile von
`gcal'.

Beschreibung aller `%?'... Spezialtexte
***************************************

Die im Textteil einer Zeile der Gcal Ressourcendatei verwendbaren
`%?'... Spezialtexte knnen grob in drei Kategorien eingeteilt werden.
So gibt es Spezialtexte, welche die Ausgabe von Terminen in bestimmten
Fllen unterdrcken.  Andere werden durch besondere Texte ersetzt, und
noch andere veranlassen die shell dazu, externe Kommandos auszufhren.
*Siehe `%?'... Spezialtexte: Spezialtexte, fr eine allgemeine
Beschreibung der Spezialtexte, die im Textteil einer Zeile von Gcal
Ressourcendateien auftreten drfen.

Bei einigen dieser Spezialtexte darf noch optional ein einfaches oder
besonderes Datumargument (im weiteren mit DATUM bezeichnet) oder ein
sonstiges Argument (im weiteren mit ARGUMENT bezeichnet) angegeben
werden.  Wenn ein Spezialtext direkt von einem DATUM Argument gefolgt
wird, so mu DATUM einem der nachstehenden Datumformate entsprechen:

   * `JJJJ[MM[TT|WWWN]]'

   * `JJJJ*d|wN[WWW]'

   * `JJJJ@e|t|DVAR[[+|-]N[WWW]]'

Spezialtexte, die ein DATUM Argument annehmen drfen, *mssen* stets
von einem *whitespace* Zeichen gefolgt werden, welches seinerseits in
der Ausgabe entfernt wird, und zwar unabhngig davon, ob DATUM
angegeben wurde oder nicht!

*Siehe Zusammenfassung aller `%?'... Spezialtexte: Spezialtexte (kurz),
fr eine Kurzdarstellung aller verwendbaren Spezialtexte.

`%?'... Spezialtexte um Datum auszuschlieen
============================================

`%?'... Spezialtexte zum Ausschlieen von Zeitpunkten oder Zeitrumen
sind sehr ntzlich, wenn sie zusammen mit Datumbereichen verwendet
werden (*siehe Bereiche von Tagen::.).  Wird der Termintext ausgegeben,
so wird stets der gesamte Spezialtext in der Ausgabe unterdrckt.

Ausschlieen mit Datumargument `%?[DATUM]' Spezialtexte
-------------------------------------------------------

Zunchst einmal kann ein "inklusive Datum" Zeitraum `%?[DATUM]'
Spezialtext angegeben werden, mit der Wirkung, da nur die Termine, die
in diesem Zeitraum liegen, ausgegeben werden.  Und die Angabe eines
"exklusive Datum" Zeitraums `%?[DATUM]' Spezialtexts bewirkt, da alle
Termine, die in diesem Zeitraum liegen, nicht ausgegeben werden.

Geschickt kombiniert, bieten sich diese Spezialtexte als wirksame Filter
an, mit deren Hilfe sich spezielle Zeitrume sehr flexibel definieren
lassen knnen, zum Beispiel:

     0*d1#999 Jeder Tag des Jahres: Von Januar...August ausgenommen April\
              %i00001#00008 %e00004#00004
     ;
     0*d1#999 Jeder Tag des Jahres: Von 1991...1993 und ab 1996\
              ausgenommen Februar 1992 und aller September\
              %i1991#1993 %i1996# %e19922#19922 %e00009#00009

Inklusive Datum Zeitraum `%i[DATUM][#[DATUM]]' Spezialtext
..........................................................

`%i[DATUM][#[DATUM]]' bezeichnet einen inklusive Datum Zeitraum, d.h.
alle Daten, die in dem gegebenen Zeitraum liegen, sind gltig und
werden ausgegeben.  Das bedeutet natrlich, da alle Termine, die nicht
in diesem Zeitraum liegen, ungltig sind und somit auch nicht
ausgegeben werden.

Das erste angegebene Datum bestimmt das "Startdatum" eines Termins,
d.h. das erste Datum, an dem dieser Termin auftreten darf.  Fr das
Startdatum gelten folgende Regeln hinsichtlich bestimmter
Auslassungswerte, verdeutlicht am `JJJJ[MM[TT|WWWN]]' Datumformat:

   * 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, bei 99 der Dezember.

   * 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, bei 99 der letzte Tag des Monats MM.

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

Das zweite angegebene Datum bestimmt das "Endedatum" eines Termins,
d.h. das letzte Datum, an dem dieser Termin auftreten darf.  Fr das
Endedatum gelten folgende Regeln hinsichtlich bestimmter
Auslassungswerte, ebenfalls verdeutlicht am `JJJJ[MM[TT|WWWN]]'
Datumformat:

   * 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, bei 99 der Dezember.

   * 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, bei 99 der letzte Tag des Monats MM.

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

Fr die anderen erlaubten Datumformate gelten die vorstehenden Regeln
sinngem!

Wenn das Startdatum, welches im `%i...' Spezialtext kodiert ist, grer
dem Endedatum ist, so wird der `%i...' Spezialtext ignoriert.

Ist weder Startdatum noch Endedatum angegeben, also nur `%i', so gilt
der implizite Zeitraum 1'ter Januar 1...31'ter Dezember 9999
(00010101...99991231).

Ist nur das Startdatum angegeben, also entweder `%iDATUM' oder
`%iDATUM#', so gilt das implizite Endedatum 31'ter Dezember 9999
(99991231).

Ist nur das Endedatum angegeben, also `%i#DATUM', so gilt das implizite
Startdatum 1'ter Januar 1 (00010101).

Zum Beispiel:

     0d*1#999 Jeder Tag des Jahres: nur April und Juli\
              %i00004#00004 %i00007#00007
     ;
     0*d1#999 Jeder Tag des Jahres: von Januar...Oktober\
              %i#000010
     ;
     0*d1#999 Jeder Tag des Jahres: ab August 1990\
              %i19908
     ;
     0*d1#999 Jeder Tag des Jahres: von August...Dezember\
              %i00008
     ;
     0*d1#999 Jeder Tag des Jahres: nur heute%i0@t#0@t

Exklusive Datum Zeitraum `%e[DATUM][#[DATUM]]' Spezialtext
..........................................................

`%e[DATUM][#[DATUM]]' bezeichnet einen exklusive Datum Zeitraum, d.h.
alle Daten, die in dem gegebenen Zeitraum liegen, sind ungltig und
werden nicht ausgegeben.  Das bedeutet natrlich, da alle Termine, die
nicht in diesem Zeitraum liegen, gltig sind und somit auch ausgegeben
werden.

Das erste angegebene Datum bestimmt das Startdatum eines Termins, d.h.
das erste Datum, an dem dieser Termin auftreten darf.  Fr das
Startdatum gelten folgende Regeln hinsichtlich bestimmter
Auslassungswerte, verdeutlicht am `JJJJ[MM[TT|WWWN]]' Datumformat:

   * 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, bei 99 der Dezember.

   * 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, bei 99 der letzte Tag des Monats MM.

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

Das zweite angegebene Datum bestimmt das Endedatum eines Termins, d.h.
das letzte Datum, an dem dieser Termin auftreten darf.  Fr das
Endedatum gelten folgende Regeln hinsichtlich bestimmter
Auslassungswerte, ebenfalls verdeutlicht am `JJJJ[MM[TT|WWWN]]'
Datumformat:

   * 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, bei 99 der Dezember.

   * 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, bei 99 der letzte Tag des Monats MM.

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

Fr die anderen erlaubten Datumformate gelten die vorstehenden Regeln
sinngem!

Wenn das Startdatum, welches im `%e...' Spezialtext kodiert ist, grer
dem Endedatum ist, so wird der `%e...' Spezialtext ignoriert.

Ist weder Startdatum noch Endedatum angegeben, also nur `%e', so gilt
der implizite Zeitraum 1'ter Januar 1...31'ter Dezember 9999
(00010101...99991231).

Ist nur das Startdatum angegeben, also entweder `%eDATUM' oder
`%eDATUM#', so gilt das implizite Endedatum 31'ter Dezember 9999
(99991231).

Ist nur das Endedatum angegeben, also `%e#DATUM', so gilt das implizite
Startdatum 1'ter Januar 1 (00010101).

Zum Beispiel:

     0d*1#999 Jeder Tag des Jahres: ausgenommen April und Juli\
             %e00004#00004 %e00007#00007
     ;
     0*d1#999 Jeder Tag des Jahres: ausgenommen Januar...Oktober\
              %e#000010
     ;
     0*d1#999 Jeder Tag des Jahres: bis Juli 1990\
              %e19908
     ;
     0*d1#999 Jeder Tag des Jahres: ausgenommen August...Dezember\
              %e00008
     ;
     0*d1#999 Jeder Tag des Jahres: ausgenommen heute%e0@t#0@t

Ausschlieen ohne Argument `%?' Spezialtexte
--------------------------------------------

Zunchst einmal kann ein "inklusive Tag" Zeitraum `%?' Spezialtext
angegeben werden, mit der Wirkung, da nur die Termine, die in diesem
Zeitraum liegen, ausgegeben werden.  Und die Angabe eines "exklusive
Tag" Zeitraums `%?' Spezialtexts bewirkt, da alle die Termine, die
nicht in diesem Zeitraum liegen, ausgegeben werden.

Geschickt kombiniert, bieten auch diese Spezialtexte wirksame Filter,
mit deren Hilfe sehr spezielle Zeitrume definiert werden knnen, zum
Beispiel:

     0*d1#999 Jeder Tag des Jahres: Von Montags...Freitags\
              ausgenommen Mittwochs und aller gesetzlichen Feiertage\
              %r%F%V
     ;
     00001001#9999 Jeder Tag im letzten Quartal des Jahres: Alle Feiertage\
                   die nicht auf einen Sonntag fallen%x %P

Inklusive Tag Zeitraum `%?' Spezialtexte
........................................

Folgende inklusive Tag Zeitrume `%?' Spezialtexte werden
bercksichtigt, wobei in diesem Zusammenhang mit *inklusive* der
Zeitraum gemeint ist, welcher nicht ausgeschlossen wird:

`%v'
     Bewirkt den Ausschlu eines Termins, falls dieser nicht als
     gesetzlicher Feiertag in der *ewigen Feiertagsliste* aufgefhrt
     ist.

`%x'
     Bewirkt den Ausschlu eines Termins, falls dieser weder als
     gesetzlicher Feiertag noch als Gedenktag in der *ewigen
     Feiertagsliste* aufgefhrt ist.

`%a'
     Bewirkt den Ausschlu eines Termins, falls dieser nicht auf einen
     Montag fllt.

`%c'
     Bewirkt den Ausschlu eines Termins, falls dieser nicht auf einen
     Dienstag fllt.

`%f'
     Bewirkt den Ausschlu eines Termins, falls dieser nicht auf einen
     Mittwoch fllt.

`%g'
     Bewirkt den Ausschlu eines Termins, falls dieser nicht auf einen
     Donnerstag fllt.

`%h'
     Bewirkt den Ausschlu eines Termins, falls dieser nicht auf einen
     Freitag fllt.

`%l'
     Bewirkt den Ausschlu eines Termins, falls dieser nicht auf einen
     Samstag fllt.

`%p'
     Bewirkt den Ausschlu eines Termins, falls dieser nicht auf einen
     Sonntag fllt.

`%q'
     Bewirkt den Ausschlu eines Termins, falls dieser nicht auf einen
     Montag...Donnerstag fllt.

`%r'
     Bewirkt den Ausschlu eines Termins, falls dieser nicht auf einen
     Montag...Freitag fllt.

Exklusive Tag Zeitraum `%?' Spezialtexte
........................................

Folgende exklusive Tag Zeitrume `%?' Spezialtexte werden
bercksichtigt, wobei in diesem Zusammenhang mit *exklusive* der
Zeitraum gemeint ist, welcher ausgeschlossen wird:

`%V'
     Bewirkt den Ausschlu eines Termins, falls dieser auf einen Tag
     fllt, der als gesetzlicher Feiertag in der *ewigen
     Feiertagsliste* aufgefhrt ist.

`%X'
     Bewirkt den Ausschlu eines Termins, falls dieser auf einen Tag
     fllt, der entweder als gesetzlicher Feiertag oder als Gedenktag
     in der *ewigen Feiertagsliste* aufgefhrt ist.

`%A'
     Bewirkt den Ausschlu eines Termins, falls dieser auf einen Montag
     fllt.

`%C'
     Bewirkt den Ausschlu eines Termins, falls dieser auf einen
     Dienstag fllt.

`%F'
     Bewirkt den Ausschlu eines Termins, falls dieser auf einen
     Mittwoch fllt.

`%G'
     Bewirkt den Ausschlu eines Termins, falls dieser auf einen
     Donnerstag fllt.

`%H'
     Bewirkt den Ausschlu eines Termins, falls dieser auf einen Freitag
     fllt.

`%L'
     Bewirkt den Ausschlu eines Termins, falls dieser auf einen Samstag
     fllt.

`%P'
     Bewirkt den Ausschlu eines Termins, falls dieser auf einen Sonntag
     fllt.

`%Q'
     Bewirkt den Ausschlu eines Termins, falls dieser auf einen
     Montag...Donnerstag fllt.

`%R'
     Bewirkt den Ausschlu eines Termins, falls dieser auf einen
     Montag...Freitag fllt.

`%?'... Spezialtexte zum Textersatz
===================================

`%?'... Spezialtexte, die zur Programmlaufzeit durch besonderen Text
ersetzt werden, bewirken das Einstreuen von Daten in den Termintext,
deren Ausprgung im wesentlichen von den Kommandozeilenargumenten
abhngen, welche bei Programmausfhrung angegeben worden sind.  Wird
der Termintext ausgegeben, so wird stets der gesamte Spezialtext in der
Ausgabe entsprechend ersetzt.

Geschickt kombiniert, bieten sich auch diese Spezialtexte als wirksame
Mechanismen an, mit deren Hilfe sich spezielle Texte sehr flexibel
erzeugen lassen knnen, zum Beispiel:

     0*d1#999 Jeder Tag des Jahres: Heute ist %o, der %n (%+)

Ersetzen mit Datumargument `%?[DATUM]' Spezialtexte
---------------------------------------------------

Neben verschiedenen Darstellungen von einem Wochentagsnamen kann auch
dessen Wochentagsnummer erzeugt werden.  Ebenso kann der laufende Tag
des Jahres, die Tagesnummer, die Wochennummer, der Monatsname, die
Monatsnummer, die Jahresnummer, die Mondphase und der Biorhythmus
produziert werden, sowie einige ntzliche Differenzwerte.

Fr das DATUM, da diese `%?[DATUM]' Spezialtexte annehmen drfen,
gelten folgende Regeln hinsichtlich bestimmter Auslassungswerte,
verdeutlicht am `JJJJ[MM[TT|WWWN]]' Datumformat (1):

   * Falls JJJJ... nicht angegeben ist (==*kein* Datum kodiert), so
     wird das 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, bei 99 der Dezember.

   * Falls TT|WWW nicht angegeben oder auf den Wert 00 gesetzt ist, so
     wird der laufende Tag als Tag angenommen, bei 99 der letzte Tag
     des Monats MM.

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

  ---------- Fussnoten ----------

  (1)  Fr die anderen erlaubten Datumformate gelten die nachfolgenden
Regeln sinngem.

Wochentagsname `%?[DATUM]' Spezialtexte
.......................................

Folgende Wochentagsname `%?[DATUM]' Spezialtexte werden bercksichtigt:

`%o[DATUM]'
     Wird in einen vollstndigen *Wochentagsnamen* fr den laufenden Tag
     umgesetzt, z.B.:

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

`%O[DATUM]'
     Wird in einen 3-Buchstaben *Wochentagsnamen* fr den laufenden Tag
     umgesetzt, z.B.:

          Der Text `Heute ist %O0@t+1 , der %n+1' wird umgesetzt in
          ==> `Heute ist Die, der 11-Jun-1996', falls das aktuelle
          Systemdatum der 10'te Juni 1996 ist.

`%K[DATUM]'
     Wird in einen 2-Buchstaben *Wochentagsnamen* fr den laufenden Tag
     umgesetzt, z.B.:

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

Wochentag `%?[DATUM]' Spezialtexte
..................................

Folgende Wochentagsnummer `%?[DATUM]' Spezialtexte werden
bercksichtigt:

`%S[DATUM]'
     Wird in eine *Wochentagsnummer* fr den laufenden Tag umgesetzt,
     die nach der `Montag==1...Sonntag==7' Zhlweise ermittelt wird,
     z.B.:

          Der Text `Heute ist Wochentag %S , der %n' wird umgesetzt in
          ==> `Heute ist Wochentag 1, der 10-Jun-1996', falls das
          aktuelle Systemdatum der 10'te Juni 1996 ist.

`%I[DATUM]'
     Wird in eine *Wochentagsnummer* mit nachfolgendem
     Ordnungszahlanhang fr den laufenden Tag umgesetzt, die nach der
     `Montag==1...Sonntag==7' Zhlweise ermittelt wird, z.B.:

          Der Text `Heute ist Wochentag %I0@t+1 , der %n+1' wird
          umgesetzt in
          ==> `Heute ist Wochentag 2'ter, der 11-Jun-1996', falls das
          aktuelle Systemdatum der 10'te Juni 1996 ist.

`%E[DATUM]'
     Wird in eine *Wochentagsnummer* fr den laufenden Tag umgesetzt,
     die nach der `Montag==0...Sonntag==6' Zhlweise ermittelt wird,
     z.B.:

          Der Text `Heute ist Wochentag %E , der %n' wird umgesetzt in
          ==> `Heute ist Wochentag 0, der 10-Jun-1996', falls das
          aktuelle Systemdatum der 10'te Juni 1996 ist.

`%J[DATUM]'
     Wird in eine *Wochentagsnummer* mit nachfolgendem
     Ordnungszahlanhang fr den laufenden Tag umgesetzt, die nach der
     `Montag==0...Sonntag==6' Zhlweise ermittelt wird, z.B.:

          Der Text `Heute ist Wochentag %J , der %n' wird umgesetzt in
          ==> `Heute ist Wochentag 0'ter, der 10-Jun-1996', falls das
          aktuelle Systemdatum der 10'te Juni 1996 ist.

`%([DATUM]'
     Wird in eine *Wochentagsnummer* fr den laufenden Tag umgesetzt,
     die nach der `Sonntag==1...Samstag==7' Zhlweise ermittelt wird,
     z.B.:

          Der Text `Heute ist Wochentag %( , der %n' wird umgesetzt in
          ==> `Heute ist Wochentag 2, der 10-Jun-1996', falls das
          aktuelle Systemdatum der 10'te Juni 1996 ist.

`%<[DATUM]'
     Wird in eine *Wochentagsnummer* mit nachfolgendem
     Ordnungszahlanhang fr den laufenden Tag umgesetzt, die nach der
     `Sonntag==1...Samstag==7' Zhlweise ermittelt wird, z.B.:

          Der Text `Heute ist Wochentag %< , der %n' wird umgesetzt in
          ==> `Heute ist Wochentag 2'ter, der 10-Jun-1996', falls das
          aktuelle Systemdatum der 10'te Juni 1996 ist.

`%)[DATUM]'
     Wird in eine *Wochentagsnummer* fr den laufenden Tag umgesetzt,
     die nach der `Sonntag==0...Samstag==6' Zhlweise ermittelt wird,
     z.B.:

          Der Text `Heute ist Wochentag %) , der %n' wird umgesetzt in
          ==> `Heute ist Wochentag 1, der 10-Jun-1996', falls das
          aktuelle Systemdatum der 10'te Juni 1996 ist.

`%>[DATUM]'
     Wird in eine *Wochentagsnummer* mit nachfolgendem
     Ordnungszahlanhang fr den laufenden Tag umgesetzt, die nach der
     `Sonntag==0...Samstag==6' Zhlweise ermittelt wird, z.B.:

          Der Text `Heute ist Wochentag %> , der %n' wird umgesetzt in
          ==> `Heute ist Wochentag 1'ter, der 10-Jun-1996', falls das
          aktuelle Systemdatum der 10'te Juni 1996 ist.

`%[[DATUM]'
     Wird in eine *Wochentagsnummer* fr den laufenden Tag umgesetzt,
     die nach der `STARTTAG DER WOCHE==1...ENDETAG DER WOCHE==7'
     Zhlweise ermittelt wird (*siehe `--starting-day=ARGUMENT':
     Kalender Optionen.), z.B.:

          Der Text `Heute ist Wochentag %[ , der %n' wird umgesetzt in
          ==> `Heute ist Wochentag 4, der 10-Jun-1996', falls das
          aktuelle Systemdatum der 10'te Juni 1996 und der Starttag der
          Woche ein Freitag (==5) ist.

`%{[DATUM]'
     Wird in eine *Wochentagsnummer* mit nachfolgendem
     Ordnungszahlanhang fr den laufenden Tag umgesetzt, die nach der
     `STARTTAG DER WOCHE==1...ENDETAG DER WOCHE==7' Zhlweise ermittelt
     wird
     (*siehe `--starting-day=ARGUMENT': Kalender Optionen.), z.B.:

          Der Text `Heute ist Wochentag %{ , der %n' wird umgesetzt in
          ==> `Heute ist Wochentag 4'ter, der 10-Jun-1996', falls das
          aktuelle Systemdatum der 10'te Juni 1996 und der Starttag der
          Woche ein Freitag (==5) ist.

`%][DATUM]'
     Wird in eine *Wochentagsnummer* fr den laufenden Tag umgesetzt,
     die nach der `STARTTAG DER WOCHE==0...ENDETAG DER WOCHE==6'
     Zhlweise ermittelt wird (*siehe `--starting-day=ARGUMENT':
     Kalender Optionen.), z.B.:

          Der Text `Heute ist Wochentag %] , der %n' wird umgesetzt in
          ==> `Heute ist Wochentag 3, der 10-Jun-1996', falls das
          aktuelle Systemdatum der 10'te Juni 1996 und der Starttag der
          Woche ein Freitag (==5) ist.

`%}[DATUM]'
     Wird in eine *Wochentagsnummer* mit nachfolgendem
     Ordnungszahlanhang fr den laufenden Tag umgesetzt, die nach der
     `STARTTAG DER WOCHE==0...ENDETAG DER WOCHE==6' Zhlweise ermittelt
     wird
     (*siehe `--starting-day=ARGUMENT': Kalender Optionen.), z.B.:

          Der Text `Heute ist Wochentag %} , der %n' wird umgesetzt in
          ==> `Heute ist Wochentag 3'ter, der 10-Jun-1996', falls das
          aktuelle Systemdatum der 10'te Juni 1996 und der Starttag der
          Woche ein Freitag (==5) ist.

Tageszahl `%?[DATUM]' Spezialtexte
..................................

Folgende Tageszahl `%?[DATUM]' Spezialtexte werden bercksichtigt:

`%+[DATUM]'
     Wird in eine *Tageszahl* fr den laufenden Tag im Jahr umgesetzt,
     z.B.:

          Der Text `Tag %+  des Jahres, der %n' wird umgesetzt in
          ==> `Tag 53 des Jahres, der 22-Feb-1996', falls das aktuelle
          Systemdatum der 22'te Februar 1996 ist.

`%*[DATUM]'
     Wird in eine dreiziffrige *Tageszahl* mit fhrenden Nullen fr den
     laufenden Tag im Jahr umgesetzt, z.B.:

          Der Text `Tag %*0@t-1  des Jahres, der %n-1' wird umgesetzt in
          ==> `Tag 052 des Jahres, der 21-Feb-1996', falls das aktuelle
          Systemdatum der 22'te Februar 1996 ist.

`%&[DATUM]'
     Wird in eine *Tageszahl* mit nachfolgendem Ordnungszahlanhang fr
     den laufenden Tag im Jahr umgesetzt, z.B.:

          Der Text `Tag %&  des Jahres, der %n' wird umgesetzt in
          ==> `Tag 53'ter des Jahres, der 22-Feb-1996', falls das
          aktuelle Systemdatum der 22'te Februar 1996 ist.

`%#[DATUM]'
     Wird in eine dreiziffrige *Tageszahl* mit fhrenden Nullen und
     nachfolgendem Ordnungszahlanhang fr den laufenden Tag im Jahr
     umgesetzt, z.B.:

          Der Text `Tag %#  des Jahres, der %n' wird umgesetzt in
          ==> `Tag 053'ter des Jahres, der 22-Feb-1996', falls das
          aktuelle Systemdatum der 22'te Februar 1996 ist.

Tag `%?[DATUM]' Spezialtexte
............................

Folgende Tag `%?[DATUM]' Spezialtexte werden bercksichtigt:

`%D[DATUM]'
     Wird in eine *Tageszahl* fr den laufenden Tag im Monat umgesetzt,
     z.B.:

          Der Text `Tag %D , %n' wird umgesetzt in
          ==> `Tag 2, 02-Feb-1996', falls das aktuelle Systemdatum der
          2'te Februar 1996 ist.

`%N[DATUM]'
     Wird in eine zweiziffrige *Tageszahl* mit fhrender Null fr den
     laufenden Tag im Monat umgesetzt, z.B.:

          Der Text `Tag %N0@t-1 , %n-1' wird umgesetzt in
          ==> `Tag 01, 01-Feb-1996', falls das aktuelle Systemdatum der
          2'te Februar 1996 ist.

`%s[DATUM]'
     Wird in eine *Tageszahl* mit nachfolgendem Ordnungszahlanhang fr
     den laufenden Tag im Monat umgesetzt, z.B.:

          Der Text `Tag %s , %n' wird umgesetzt in
          ==> `Tag 2'ter, 02-Feb-1996', falls das aktuelle Systemdatum
          der 2'te Februar 1996 ist.

`%u[DATUM]'
     Wird in eine zweiziffrige *Tageszahl* mit fhrender Null und
     nachfolgendem Ordnungszahlanhang fr den laufenden Tag im Monat
     umgesetzt, z.B.:

          Der Text `Tag %u , %n' wird umgesetzt in
          ==> `Tag 02'ter, 02-Feb-1996', falls das aktuelle Systemdatum
          der 2'te Februar 1996 ist.

Woche `%?[DATUM]' Spezialtext
.............................

Folgender Woche `%?[DATUM]' Spezialtext wird bercksichtigt:

`%k[DATUM]'
     Wird in eine *ISO-Wochennummer* fr die laufende Woche im Jahr
     umgesetzt, z.B.:

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

Monatsname `%?[DATUM]' Spezialtexte
...................................

Folgende Monatsname `%?[DATUM]' Spezialtexte werden bercksichtigt:

`%M[DATUM]'
     Wird in einen vollstndigen *Monatsnamen* fr den laufenden Monat
     im Jahr umgesetzt, z.B.:

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

`%T[DATUM]'
     Wird in einen 3-Buchstaben *Monatsnamen* fr den laufenden Monat
     im Jahr umgesetzt, z.B.:

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

Monat `%?[DATUM]' Spezialtexte
..............................

Folgende Monat `%?[DATUM]' Spezialtexte werden bercksichtigt:

`%U[DATUM]'
     Wird in eine *Monatszahl* fr den laufenden Monat im Jahr
     umgesetzt, z.B.:

          Der Text `Monat %U , %n' wird umgesetzt in
          ==> `Monat 2, 22-Feb-1996', falls das aktuelle Systemdatum
          der 22'te Februar 1996 ist.

`%W[DATUM]'
     Wird in eine zweiziffrige *Monatszahl* mit fhrender Null fr den
     laufenden Monat im Jahr umgesetzt, z.B.:

          Der Text `Monat %W000001 , %n' wird umgesetzt in
          ==> `Monat 01, 22-Feb-1996', falls das aktuelle Systemdatum
          der 22'te Februar 1996 ist.

`%z[DATUM]'
     Wird in eine *Monatszahl* mit nachfolgendem Ordnungszahlanhang fr
     den laufenden Monat im Jahr umgesetzt, z.B.:

          Der Text `Monat %z , %n' wird umgesetzt in
          ==> `Monat 2'ter, 22-Feb-1996', falls das aktuelle
          Systemdatum der 22'te Februar 1996 ist.

`%Z[DATUM]'
     Wird in eine zweiziffrige *Monatszahl* mit fhrender Null und
     nachfolgendem Ordnungszahlanhang fr den laufenden Monat im Jahr
     umgesetzt, z.B.:

          Der Text `Monat %Z , %n' wird umgesetzt in
          ==> `Monat 02'ter, 22-Feb-1996', falls das aktuelle
          Systemdatum der 22'te Februar 1996 ist.

Jahr `%?[DATUM]' Spezialtexte
.............................

Folgende Jahr `%?[DATUM]' Spezialtexte werden bercksichtigt:

`%Y[DATUM]'
     Wird in eine *Jahreszahl* fr das laufende Jahr umgesetzt, z.B.:

          Der Text `Jahr %Y , %n' wird umgesetzt in
          ==> `Jahr 933, 22-Feb-0933', falls das aktuelle Systemdatum
          der 22'te Februar 933 ist.

`%=[DATUM]'
     Wird in eine vierziffrige *Jahreszahl* mit fhrenden Nullen fr das
     laufende Jahr umgesetzt, z.B.:

          Der Text `Jahr %=0015 , %n' wird umgesetzt in
          ==> `Jahr 0015, 22-Feb-0933', falls das aktuelle Systemdatum
          der 22'te Februar 933 ist.

Mondphase `%?[DATUM]' Spezialtexte
..................................

Gcal benutzt eine sehr einfache Rechenvorschrift um die Mondphase zu
ermitteln, welche ihrerseits nur Nherungswerte liefert.  Die Mondphase
wird stets um 0 Uhr Weltzeit berechnet.  Folgende Mondphase `%?[DATUM]'
Spezialtexte werden bercksichtigt:

`%-[DATUM]'
     Wird in einen *Mondphasentext* fr den laufenden Tag im Jahr
     umgesetzt, z.B.:

          Der Text `Mondphase %- , %n' wird umgesetzt in
          ==> `Mondphase 94%+, 22-Dez-1996', falls das aktuelle
          Systemdatum der 22'te Dezember 1996 ist.

     Der konstruierte Mondphasentext besteht aus einem Prozentwert, der
     ber den beleuchteten Bruchteil der Mondscheibe informiert, und
     ein nachfolgendes Zeichen, das etwas ber den Status des Mondes
     aussagt.  Ein nachfolgendes `+' Zeichen bezeichnet einen
     zunehmenden Mond, ein `-' Zeichen einen abnehmenden Mond, ein `@'
     Zeichen steht fr eine Vollmondphase, und ein `!' Zeichen fr eine
     Neumondphase.

`%_[DATUM]'
     Wird in einen dreiziffrigen *Mondphasentext* mit fhrenden Nullen
     fr den laufenden Tag im Jahr umgesetzt, z.B.:

          Der Text `Mondphase %_0@t+1 , %n+1' wird umgesetzt in
          ==> `Mondphase 098%+, 23-Dez-1996', falls das aktuelle
          Systemdatum der 22'te Dezember 1996 ist.

     Der konstruierte Mondphasentext besteht aus einem Prozentwert, der
     ber den beleuchteten Bruchteil der Mondscheibe informiert, und
     ein nachfolgendes Zeichen, das etwas ber den Status des Mondes
     aussagt.  Ein nachfolgendes `+' Zeichen bezeichnet einen
     zunehmenden Mond, ein `-' Zeichen einen abnehmenden Mond, ein `@'
     Zeichen steht fr eine Vollmondphase, und ein `!' Zeichen fr eine
     Neumondphase.

`%:[DATUM]'
     Wird in eine *Mondphasen-Textgrafik* fr den laufenden Tag im Jahr
     umgesetzt, z.B.:

          Der Text `Datum %n %:  --- Mondphase %_ ~Text' wird umgesetzt
          in
          ==> `Datum 08-Mar-1995 '
          ==> `           (       @@@@@@'
          ==> `      (              @@@@@@@@@'
          ==> `    (                @@@@@@@@@@@'
          ==> `  (                   @@@@@@@@@@@@'
          ==> ` (                    @@@@@@@@@@@@@'
          ==> `(                      @@@@@@@@@@@@@'
          ==> `(                      @@@@@@@@@@@@@'
          ==> ` (                    @@@@@@@@@@@@@'
          ==> `  (                   @@@@@@@@@@@@'
          ==> `   (                  @@@@@@@@@@@'
          ==> `      (             @@@@@@@@@'
          ==> `           (        @@@@@@@ --- Mondphase 041%+'
          ==> `Text', falls das aktuelle Systemdatum der 8'te Mrz 1995
          ist.

     *Siehe `--moonimage-lines=ANZAHL': Termin Optionen, wo erklrt
     wird, wie die Gre einer Mondphasen-Textgrafik gendert werden
     kann.

Biorhythmus `%?[DATUM]' Spezialtexte
....................................

Gcal besitzt die Fhigkeit, fr jedes angegebene Geburtsdatum einen
"Biorhythmus" zu erzeugen.  Der erzeugte Text zeigt die drei
Standard-Biorhythmuszyklen, und zwar den 28 Tage whrenden emotionalen
Zyklus, den 33 Tage whrenden geistigen Zyklus, und den 23 Tage
whrenden physischen Zyklus.  Der emotionale Zyklus wird vom
Empfindungsvermgen, der geistigen Gesundheit, der Gemtsverfassung und
der Kreativitt beherrscht.  Der geistige Zyklus spiegelt Intelligenz,
Gedchtnis, geistige Wachheit und analytisches Denkvermgen wider.  Der
physische Zyklus stellt die Krperkraft, Ausdauer,  Leistungs- und
Widerstandsfhigkeit dar.  Alle Zyklen beginnen im Nullpunkt am
Geburtsdatum und schwingen wie Sinuskurven zwischen ihren positiven und
negativen Maximalwerten.  Die Zeitrume oberhalb des Nullpunktes zeigen
die Tage voller Lebenskraft und Leistungsfhigkeit an, whrend die
Zeitrume unterhalb des Nullpunktes die Tage verringerter
Leistungsfhigkeit darstellen.  Der Biorhythmus wurde nur zu
Unterhaltungszwecken eingebaut!  Die Interpretation der
Biorhythmustexte liegt in den Hnden des Benutzers.

Gcal zhlt "kritische" Tage, "positive" ebenso wie "negative" Tage.
Kritische Tage sind solche Tage, an denen eine oder mehrere der
biologischen Zyklen den Nullpunkt berqueren.  Zu einem solchen
Zeitpunkt, so wird gesagt, soll sich der Organismus in einem Stadium
des Umbruchs befinden, und es scheint angebracht zu sein, Vorsicht
walten zu laen.  Positive Tage sind solche Tage, an denen eine oder
mehrere der biologischen Zyklen einen positiven Maximalwert haben.  Zu
einem solchen Zeitpunkt, so wird gesagt, soll sich der Organismus in
einem gesteigerten Stadium befinden.  Negative Tage sind solche Tage,
an denen eine oder mehrere der biologischen Zyklen einen negativen
Maximalwert haben.  Zu einem solchen Zeitpunkt, so wird gesagt, soll
sich der Organismus in einem verminderten Stadium befinden.

Folgende Biorhythmus `%?[DATUM]' Spezialtexte werden bercksichtigt:

`%,[DATUM]'
     Wird in einen *Biorhythmustext* fr den laufenden Tag im Jahr
     umgesetzt, z.B.:

          Der Text `%,19620921' wird umgesetzt in
          ==> `1! 0+ 0- , Emo=+022%- Gei=-091%+ Phy=-014%-', falls das
          aktuelle Systemdatum der 12'te Dezember 1996 ist.

     Das vorangehende Beispiel zeigt den berechneten Biorhythmus als
     eine Folge von Werten fr eine Person an, die am 21'ten September
     1962 geboren ist.  Der konstruierte Text besteht aus zwei Teilen,
     und zwar einerseits aus einem Tripel von Gesamtwerten, welches den
     kritischen, positiven und negativen Tag bezeichnet.  Und aus einem
     weiteren Tripel von Werten, welches den emotionalen, geistigen und
     physischen Zyklus bezeichnet.

     Im ersten Tripel von Gesamtwerten bezeichnet ein nachgestelltes `!'
     Zeichen einen kritischen Tag, ein `+' einen positiven Tag, und ein
     `-' Anhang markiert einen negativen Tag.

     Im zweiten Tripel von Werten besteht jeder einzelne
     Zyklus-Prozentwert aus einem anfhrenden positiven oder negativen
     Vorzeichen, welches etwas ber die Distanz dieses Wertes zum
     Nullpunkt aussagt, und einem nachgestellten Zeichen, das etwas
     ber den Status jedes einzelnen Zyklus' aussagt.  Ein
     nachfolgendes `+' Zeichen markiert eine zunehmende Phase, ein `-'
     Anhang bezeichnet eine abnehmende Phase, und ein `@' Kennzeichen
     den Maximalwert einer Phase.

`%;[DATUM]'
     Wird in eine *Biorhythmus-Textgrafik* fr den laufenden Tag im
     Jahr umgesetzt, z.B.:

          Der Text `%;19620921' wird umgesetzt in
          ==> `0-  G               P 1   E                +0', falls
          das aktuelle Systemdatum der 12'te Dezember 1996 ist.

     Das vorhergehende Beispiel zeigt den berechneten Biorhythmus als
     eine Zeile einer Textgrafik fr eine Person an, die am 21'ten
     September 1962 geboren ist.  Die konstruierte Zeile ist ein Balken
     mit einer negativen und positiven Achse von einstellbarer Lnge
     (*siehe `--biorhythm-axis=ANZAHL': Termin Optionen.), dessen linke
     Grenze durch den Gesamtwert der negativen Tage dargestellt wird
     (die `0-' in diesem Fall), und dessen rechte Grenze durch den
     Gesamtwert der positiven Tage reprsentiert wird (die `+0' in
     diesem Fall).  Der Nullpunkt der Koordinaten wird durch den
     Gesamtwert der kritischen Tage dargestellt, welcher in diesem Fall
     die `1' ist.  Der emotionale, geistige und der physische
     Phasenwert wird entsprechend skaliert auf dem Balken abgetragen,
     und zwar dargestellt durch den Anfangsbuchstaben des jeweiligen
     Zyklus' (`E', `G' und `P').  Zusammenfallende Phasenwerte werden
     durch ein `@' Zeichen markiert.

Differenzwert `%?[DATUM]' Spezialtexte
......................................

Folgende Differenzwert `%?[DATUM]' Spezialtexte werden bercksichtigt:

`%yDATUM'
     Wird in einen *Jahresdifferenzwert* umgesetzt, z.B.:

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

`%b[DATUM]'
     Wird in einen *Alterswert* umgesetzt, z.B.:

          Der Text `Mein %b1962  Geburtstag%i1952#2062' 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 grer Null ergibt.  Zudem wird der Termin in
     diesem vorangehenen Beispiel nur whrend der Jahre 1952 bis 2062
     (einschlielich) ausgegeben.

`%B[DATUM]'
     Wird in einen *Alterswert* mit nachfolgendem Ordnungszahlanhang
     umgesetzt, z.B.:

          Der Text `Mein %B1962  Geburtstag%i1952#2062' wird umgesetzt
          in
          ==> `Mein 32'ter Geburtstag', falls das aktuelle Jahr 1994
          ist.

     Der Alterswert wird nur dann ausgegeben, wenn sich bei dessen
     Berechnung ein Wert grer Null ergibt.  Zudem wird der Termin in
     diesem vorangehenen Beispiel nur whrend der Jahre 1952 bis 2062
     (einschlielich) ausgegeben.

Ersetzen mit anderem Argument `%?[ARGUMENT]' Spezialtexte
---------------------------------------------------------

Neben verschiedenen Darstellungen der aktuellen Systemuhrzeit kann auch
ein fester Datumtext erzeugt werden.  Zudem kann eine Tageszahl
produziert werden, deren Basisdatum ausgehend vom Julianischen Datum
beliebig verlagert werden kann.

Fr das ARGUMENT, da diese `%?[ARGUMENT]' Spezialtexte annehmen
drfen, gelten keine besonderen Regeln hinsichtlich bestimmter
Auslassungswerte.

Aktuelle Uhrzeit `%t[ARGUMENT]' Spezialtext
...........................................

`%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.

Wenn nur `%t' angegeben ist, so wird der Systemuhrzeitwert implizit im
*24-Stunden* Format ausgegeben (==`%t24').  Um im *12-Stunden* Format
auszugeben, mu die Zahl 12 direkt hinter `%t' angegeben werden, z.B.
`%t12'.

Textliches Datum `%n[ARGUMENT]' Spezialtext
...........................................

`%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* im `TT-MMM-JJJJ' Format
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 (*siehe `MM
     JJJJ': Einfache Kommandos.).

Julianische Tageszahl `%j[ARGUMENT]' Spezialtext
................................................

`%j[[-]N]' bezeichnet die laufende bzw. abgefragte *Julianische
Tageszahl* relativ zum aktuellen Systemdatum (==heute).  Diese
Tageszahl bezieht sich auf das Datum 1'ter Januar 4713 vor Christus,
welches fr astronomische Berechnungen als der Tag Null einer
durchlaufenden Tageszhlung 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 gegenrtig 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 mchte, der soll die sich aus dem Spezialtext
ergebende Julianische Tageszahl stets um den Faktor eins vermindern,
z.B. `%j-1'.

Zum 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
tatschlichen Julianischen Tageszahl stets subtrahiert (1), so da im
Text mit beliebigen Bezugsgren 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.

  ---------- Fussnoten ----------

  (1)  Ein negatives Vorzeichen kann der besseren Lesbarkeit wegen
angegeben werden.

Ersetzen ohne Argument `%?' Spezialtexte
----------------------------------------

Neben weiteren ntzlichen Differenzwerten kann der Termintext auch mit
verschiedenen Hervorhebungen ausgestattet werden.

Differenzwert `%?' Spezialtexte
...............................

Folgende andere Differenzwert `%?' Spezialtexte werden bercksichtigt:

`%d'
     Bezeichnet den laufenden bzw. abgefragten *Tag* relativ zum
     aktuellen Systemdatum (==heute), 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.

`%w'
     Bezeichnet die laufende bzw. abgefragte *Woche* relativ zum
     aktuellen Systemdatum (==heute).

`%m'
     Bezeichnet den laufenden bzw. abgefragten *Monat* relativ zum
     aktuellen Systemdatum (==heute).

`%y'
     Bezeichnet das laufende bzw. abgefragte *Jahr* relativ zum
     aktuellen Systemdatum (==heute).

Hervorhebung `%?' Spezialtexte
..............................

Folgende Hervorhebung `%?' Spezialtexte werden bercksichtigt:

`%1'
     `%1' wird ersetzt durch die Start-Hervorhebungssequenz bzw.  das
     Start-Markierungszeichen, welches zur Hervorhebung des aktuellen
     Tages benutzt wird (*siehe `--highlighting=TEXT': Globale
     Optionen.).  Damit wird erreicht, da der diesem Spezialtext
     nachfolgende Text der Zeile in gleicher Weise ausgegeben wird, wie
     der hervorgehobene bzw. markierte aktuelle Tag.  `%1' wird in
     Verbindung mit dem `%2' Spezialtext benutzt, welcher die mit `%1'
     eingeschaltete Hervorhebung wieder ausschaltet bzw. ein
     Ende-Markierungszeichen produziert.  Sollte einem `%1' Text kein
     `%2' Text auf der Zeile nachfolgen, so fgt 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.

`%2'
     `%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 Spezialtexts eine mglicherweise aktive
     Hervorhebung, entsprechend der des aktuellen Tages, wieder
     abgeschaltet bzw. ein Ende-Markierungszeichen produziert wird.
     `%2' wird in Verbindung mit dem `%1' Spezialtext benutzt.  Sollte
     vor einem `%2' Text kein `%1' Text auf der Zeile vorgefunden
     werden, so hat der `%2' Text keinerlei Wirkung.

`%3'
     `%3' wird ersetzt durch die Start-Hervorhebungssequenz bzw.  das
     Start-Markierungszeichen, welches zur Hervorhebung eines
     Feiertages benutzt wird (*siehe `--highlighting=TEXT': Globale
     Optionen.).  Damit wird erreicht, da der diesem Spezialtext
     nachfolgende Text der Zeile in gleicher Weise ausgegeben wird, wie
     ein hervorgehobener bzw. markierter Feiertag.  `%3' wird in
     Verbindung mit dem `%4' Spezialtext benutzt, welcher die mit `%3'
     eingeschaltete Hervorhebung wieder ausschaltet bzw.  ein
     Ende-Markierungszeichen produziert.  Sollte einem `%3' Text kein
     `%4' Text auf der Zeile nachfolgen, so fgt 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.

`%4'
     `%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 Spezialtexts eine mglicherweise aktive
     Hervorhebung, entsprechend der eines Feiertages, wieder
     abgeschaltet bzw. ein Ende-Markierungszeichen produziert wird.
     `%4' wird in Verbindung mit dem `%3' Spezialtext benutzt.  Sollte
     vor einem `%4' Text kein `%3' Text auf der Zeile vorgefunden
     werden, so hat der `%4' Text keinerlei Wirkung.

`%5'
     `%5' wird ersetzt durch die Start-Hervorhebungssequenz bzw. das
     Start-Markierungszeichen, welches zur Hervorhebung des aktuellen
     Tages benutzt wird, falls ein Termin auf das heutige Datum fllt
     (*siehe `--highlighting=TEXT': Globale Optionen.).  Damit wird
     erreicht, da der diesem Spezialtext nachfolgende Text der Zeile
     in gleicher Weise ausgegeben wird, wie der hervorgehobene bzw.
     markierte aktuelle Tag.  `%5' wird in Verbindung mit dem `%6'
     Spezialtext benutzt, welcher die mit `%5' eingeschaltete
     Hervorhebung wieder ausschaltet bzw. ein Ende-Markierungszeichen
     produziert.  Sollte einem `%5' Text kein `%6' Text auf der Zeile
     nachfolgen, so fgt Gcal automatisch einen solchen `%6' Text am
     Zeilenende ein.

`%6'
     `%6' wird ersetzt durch die Ende-Hervorhebungssequenz bzw. das
     Ende-Markierungszeichen, welches zur Hervorhebung des aktuellen
     Tages benutzt wird, falls ein Termin auf das heutige Datum fllt.
     Damit wird erreicht, da ab der Stelle des Auftretens dieses
     Spezialtexts eine mglicherweise aktive Hervorhebung, entsprechend
     der des aktuellen Tages, wieder abgeschaltet bzw. ein
     Ende-Markierungszeichen produziert wird.  `%6' wird in Verbindung
     mit dem `%5' Spezialtext benutzt.  Sollte vor einem `%6' Text kein
     `%5' Text auf der Zeile vorgefunden werden, so hat der `%6' Text
     keinerlei Wirkung.

`%7'
     `%7' wird ersetzt durch die Start-Hervorhebungssequenz bzw. das
     Start-Markierungszeichen, welches zur Hervorhebung eines Feiertages
     benutzt wird, falls ein Termin auf einen gesetzlichen Feiertag
     fllt (*siehe `--highlighting=TEXT': Globale Optionen.).  Damit
     wird erreicht, da der diesem Spezialtext nachfolgende Text der
     Zeile in gleicher Weise ausgegeben wird, wie ein hervorgehobener
     bzw. markierter Feiertag.  `%7' wird in Verbindung mit dem `%8'
     Spezialtext benutzt, welcher die mit `%7' eingeschaltete
     Hervorhebung wieder ausschaltet bzw.  ein Ende-Markierungszeichen
     produziert.  Sollte einem `%7' Text kein `%8' Text auf der Zeile
     nachfolgen, so fgt Gcal automatisch einen solchen `%8' Text am
     Zeilenende ein.

`%8'
     `%8' wird ersetzt durch die Ende-Hervorhebungssequenz bzw. das
     Ende-Markierungszeichen, welches zur Hervorhebung eines Feiertages
     benutzt wird, falls ein Termin auf einen gesetzlichen Feiertag
     fllt.  Damit wird erreicht, da ab der Stelle des Auftretens
     dieses Spezialtexts eine mglicherweise aktive Hervorhebung,
     entsprechend der eines Feiertages, wieder abgeschaltet bzw. ein
     Ende-Markierungszeichen produziert wird.  `%8' wird in Verbindung
     mit dem `%7' Spezialtext benutzt.  Sollte vor einem `%8' Text kein
     `%7' Text auf der Zeile vorgefunden werden, so hat der `%8' Text
     keinerlei Wirkung.

`%9'
     `%9' wird ersetzt durch die Start-Hervorhebungssequenz bzw. das
     Start-Markierungszeichen, welches zur Hervorhebung des aktuellen
     Tages benutzt wird, falls ein Termin auf das heutige Datum fllt;
     sonst wird `%9' durch die Start-Hervorhebungssequenz bzw. das
     Start-Markierungszeichen ersetzt, welches zur Hervorhebung eines
     Feiertages benutzt wird, falls ein Termin auf einen gesetzlichen
     Feiertag fllt (*siehe `--highlighting=TEXT': Globale Optionen.).
     Damit wird erreicht, da der diesem Spezialtext nachfolgende Text
     der Zeile in gleicher Weise ausgegeben wird, wie ein
     hervorgehobener bzw. markierter aktueller Tag oder Feiertag.  `%9'
     wird in Verbindung mit dem `%0' Spezialtext benutzt, welcher die
     mit `%9' eingeschaltete Hervorhebung wieder ausschaltet bzw. ein
     Ende-Markierungszeichen produziert.  Sollte einem `%9' Text kein
     `%0' Text auf der Zeile nachfolgen, so fgt Gcal automatisch einen
     solchen `%0' Text am Zeilenende ein.

`%0'
     `%0' wird ersetzt durch die Ende-Hervorhebungssequenz bzw. das
     Ende-Markierungszeichen, welches zur Hervorhebung des aktuellen
     Tages benutzt wird, falls ein Termin auf das heutige Datum fllt;
     sonst wird `%0' durch die Ende-Hervorhebungssequenz bzw. das
     Ende-Markierungszeichen ersetzt, welches zur Hervorhebung eines
     Feiertages benutzt wird, falls ein Termin auf einen gesetzlichen
     Feiertag fllt.  Damit wird erreicht, da ab der Stelle des
     Auftretens dieses Spezialtexts eine mglicherweise aktive
     Hervorhebung, entsprechend der des aktuellen Tages oder eines
     Feiertages, wieder abgeschaltet bzw. ein Ende-Markierungszeichen
     produziert wird.  `%0' wird in Verbindung mit dem `%9' Spezialtext
     benutzt.  Sollte vor einem `%0' Text kein `%9' Text auf der Zeile
     vorgefunden werden, so hat der `%0' Text keinerlei Wirkung.

Shell Kommando `%![ARGUMENT]' Spezialtext
=========================================

Das ARGUMENT, das `%!' bis zum Ende der Zeile folgt, wird der shell als
Kommando zur weiteren Verarbeitung bergeben.  Zuvor werden allerdings
noch alle `%?'... Spezialtexte zum Textersatz, die im ARGUMENT
auftreten, von Gcal interpretiert.  *Siehe `%?'... Spezialtexte zum
Textersatz: Ersetzen.  Falls Text vor dem `%!' Spezialtext angegeben
ist, so wird dieser von Gcal wie blich verarbeitet.  Wenn die einfache
`--debug' bzw. `--debug=internal' Option bei Programmstart angegeben
wurde, so wird ein Text auf dem *Standardfehler-Gertekanal* ausgegeben,
der mit Informationen zum ausgefhrten Kommando und dessen *exit*-Kode
ausgestattet ist (*siehe `--debug=internal': Globale Optionen.).

Falls die `--debug=abort' Option angegeben wurde und sich ein
*exit*-Kode ungleich Null bei der Ausfhrung des Kommandos ergab, so
wird das Gcal-Programm mit Fehlerkode abgebrochen.  *Siehe 2:
Fehlerkodes, sowie *Siehe `--debug=abort': Globale Optionen, fr weitere
Informationen.

Wenn die `--bypass-shell-command' Option benutzt wird, so werden alle
`%![ARGUMENT]' Spezialtexte rein textlich ausgegeben und nicht von der
shell ausgefhrt.  *Siehe `--bypass-shell-command': Termin Optionen, fr
weitere Details.

Zusammenfassung aller `%?'... Spezialtexte
******************************************

Hier ist eine Kurzliste aller `%?'... Spezialtexte, die im Textteil
einer Zeile von Gcal Ressourcendateien benutzt werden knnen:

`%i[DATUM][#[DATUM]]'
     Ausschlu aller nicht inklusive Datum Zeitrume

`%e[DATUM][#[DATUM]]'
     Ausschlu aller exklusive Datum Zeitrume

`%?' Inklusive Tag Zeitraum
    `%v'
          Ausschlu aller nicht gesetzlichen Feiertage

    `%x'
          Ausschlu aller Nicht-Feiertage

    `%a'
          Ausschlu aller Nicht-Montage

    `%c'
          Ausschlu aller Nicht-Dienstage

    `%f'
          Ausschlu aller Nicht-Mittwoche

    `%g'
          Ausschlu aller Nicht-Donnerstage

    `%h'
          Ausschlu aller Nicht-Freitage

    `%l'
          Ausschlu aller Nicht-Samstage

    `%p'
          Ausschlu aller Nicht-Sonntage

    `%q'
          Ausschlu aller Nicht-Montage...Donnerstage

    `%r'
          Ausschlu aller Nicht-Montage...Freitage

`%?' Exklusive Tag Zeitraum
    `%V'
          Ausschlu aller gesetzlichen Feiertage

    `%X'
          Ausschlu aller Feiertage

    `%A'
          Ausschlu aller Montage

    `%C'
          Ausschlu aller Dienstage

    `%F'
          Ausschlu aller Mittwoche

    `%G'
          Ausschlu aller Donnerstage

    `%H'
          Ausschlu aller Freitage

    `%L'
          Ausschlu aller Samstage

    `%P'
          Ausschlu aller Sonntage

    `%Q'
          Ausschlu aller Montage...Donnerstage

    `%R'
          Ausschlu aller Montage...Freitage

`%?[DATUM]' Wochentagsname
    `%o[DATUM]'
          Vollstndiger Wochentagsname

    `%O[DATUM]'
          3-Buchstaben Wochentagsname

    `%K[DATUM]'
          2-Buchstaben Wochentagsname

`%?[DATUM]' Wochentag
    `%S[DATUM]'
          Wochentagsnummer, Mon==1...Son==7

    `%I[DATUM]'
          Wochentagsnummer, Mon==1...Son==7, Ordnungszahlanhang

    `%E[DATUM]'
          Wochentagsnummer, Mon==0...Son==6

    `%J[DATUM]'
          Wochentagsnummer, Mon==0...Son==6, Ordnungszahlanhang

    `%([DATUM]'
          Wochentagsnummer, Son==1...Sam==7

    `%<[DATUM]'
          Wochentagsnummer, Son==1...Sam==7, Ordnungszahlanhang

    `%)[DATUM]'
          Wochentagsnummer, Son==0...Sam==6, Ordnungszahlanhang

    `%>[DATUM]'
          Wochentagsnummer, Son==0...Sam==6, Ordnungszahlanhang

    `%[[DATUM]'
          Wochentagsnummer, STARTTAG DER WOCHE==1

    `%{[DATUM]'
          Wochentagsnummer, STARTTAG DER WOCHE==1, Ordnungszahlanhang

    `%][DATUM]'
          Wochentagsnummer, STARTTAG DER WOCHE==0

    `%}[DATUM]'
          Wochentagsnummer, STARTTAG DER WOCHE==0, Ordnungszahlanhang

`%?[DATUM]' Tageszahl
    `%+[DATUM]'
          Tageszahl

    `%*[DATUM]'
          Tageszahl, zweiziffrig mit fhrender Null

    `%&[DATUM]'
          Tageszahl, Ordnungszahlanhang

    `%#[DATUM]'
          Tageszahl, zweiziffrig mit fhrender Null, Ordnungszahlanhang

`%?[DATUM]' Tag
    `%D[DATUM]'
          Tag

    `%N[DATUM]'
          Tag, zweiziffrig mit fhrender Null

    `%s[DATUM]'
          Tag, Ordnungszahlanhang

    `%u[DATUM]'
          Tag, zweiziffrig mit fhrender Null, Ordnungszahlanhang

`%k[DATUM]'
     ISO-Wochennummer

`%?[DATUM]' Monatsname
    `%M[DATUM]'
          Vollstndiger Monatsname

    `%T[DATUM]'
          3-Buchstaben Monatsname

`%?[DATUM]' Monat
    `%U[DATUM]'
          Monat

    `%W[DATUM]'
          Monat, zweiziffrig mit fhrender Null

    `%z[DATUM]'
          Monat, Ordnungszahlanhang

    `%Z[DATUM]'
          Monat, zweiziffrig mit fhrender Null, Ordnungszahlanhang

`%?[DATUM]' Jahr
    `%Y[DATUM]'
          Jahr

    `%=[DATUM]'
          Jahr, vierziffrig mit fhrenden Nullen

`%?[DATUM]' Mondphase
    `%-[DATUM]'
          Mondphasentext

    `%_[DATUM]'
          Mondphasentext, dreiziffrig mit fhrenden Nullen

    `%:[DATUM]'
          Mondphasen-Textgrafik

`%?[DATUM]' Biorhythmus
    `%,[DATUM]'
          Biorhythmustext (Folge von Werten)

    `%;[DATUM]'
          Biorhythmus-Textgrafik (Balken)

`%?[DATUM]' Differenzwert
    `%yDATUM'
          Relative Jahreszahl

    `%b[DATUM]'
          Geburtstag (Alterswert)

    `%B[DATUM]'
          Geburtstag (Alterswert), Ordnungszahlanhang

`%t[12|24]'
     Aktuelle Uhrzeit

`%n[[+|-]N]'
     Textliches Datum im `TT-MMM-JJJJ' Format

`%j[[-]N]'
     Julianische Tageszahl

`%?' Differenzwert
    `%d'
          Relative Tageszahl

    `%w'
          Relative Wochenzahl

    `%m'
          Relative Monatszahl

    `%y'
          Relative Jahreszahl

`%?' Hervorhebung
    `%1'
          Start-Hervorhebung 1

    `%2'
          Ende-Hervorhebung 1

    `%3'
          Start-Hervorhebung 2

    `%4'
          Ende-Hervorhebung 2

    `%5'
          Start-Hervorhebung 1, falls ein Termin auf das heutige Datum
          fllt

    `%6'
          Ende-Hervorhebung 1, falls ein Termin auf das heutige Datum
          fllt

    `%7'
          Start-Hervorhebung 2, falls ein Termin auf einen gesetzlichen
          Feiertag fllt

    `%8'
          Ende-Hervorhebung 2, falls ein Termin auf einen gesetzlichen
          Feiertag fllt

    `%9'
          Start-Hervorhebung 1, falls ein Termin auf das heutige Datum
          fllt, sonst Start-Hervorhebung 2, falls ein Termin auf einen
          gesetzlichen Feiertag fllt

    `%0'
          Ende-Hervorhebung 1, falls ein Termin auf das heutige Datum
          fllt, sonst Ende-Hervorhebung 2, falls ein Termin auf einen
          gesetzlichen Feiertag fllt

`%![ARGUMENT]'
     Shell fhrt ARGUMENT als Kommando aus

Kodierschema
************

Es folgt nun die tabellarische Aufstellung des Kodierschemas, welches
fr den *Datumteil* (JJJJ...) einer Zeile der Ressourcendatei verwendet
werden kann, und der Modifizierer, welche die Kurzoption `-c|C[]'
annehmen darf, bzw. die Argumente, welche die Langoption
`--period-of-fixed-dates=ARGUMENT' annehmen darf.  Aus diesen Tabellen
kann ersehen werden, welche *Terminargumente* mit welchem *Datumteil*
einer Zeile der Ressourcendatei korrespondieren, d.h. bei Anwahl eines
*Terminarguments* bercksichtigt werden; da Gcal eben nicht alle
vorhandenen Eintrge in einer Ressourcendatei bercksichtigt, sondern
nur solche, die in einem bestimmten Verhltnis zum *Terminargument*
stehen, und somit die Ausgabe berflssiger Informationen verhindert
wird.

Im *Datumteil* `JJJJ...':

JJJJ
     steht fr jede Jahreszahl (0001...9999).

MM
     steht fr jede Monatszahl (01...12 oder 99) bzw. jeden Monatsnamen
     im 3-Buchstaben Kurzformat (Jan, Feb...).

TT
     steht fr jede Tageszahl (1...28, 29, 30, 31 oder 99).

WWW
     steht fr jeden Wochentagsnamen im 2...3-Buchstaben Kurzformat
     (Mon...Son).

?
     steht fr jeden Einzelbuchstaben des Alphabets (Gro- bzw.
     Kleinbuchstaben werden nicht unterschieden).

N
     steht fr jede positive Ganzzahl (eine oder mehrere Ziffern).

Kodierschema Tabelle 1
======================

In dieser Tabelle werden alle mglichen Kodierungen von einem Datum im
*Datumteil* einer Ressourcendatei mit allen dazu mglichen Kodierungen
der Modifizierer der Kurzoption `-c|C[]' gegenbergestellt.

*Bitte beachten:*
Die `-c', `-ct', `-cNd', `-c*d|wN[WWW]', `-c@?[[+|-]N[WWW]]', `-cMMTT'
und `-cMMWWWN' Optionen bercksichtigen *alle* Kodiervariationen des
*Datumteils*!

*Datumteil*               *Kurzoption `-c|C[]'*                           
`00000000'                `-cN+|-'                                        
`000000TT'                `-cNw|+|-', `-cw[+|-]', `-cm[+|-]'              
`0000MM00'                `-cN+|-'                                        
`0000MMTT'                `-cNw|+|-', `-cw[+|-]', `-cm[+|-]', `-cy[+|-]', 
                          `-clNd|w|+|-', `-cl*d|wN[WWW]',                 
                          `-cl@?[[+|-]N[WWW]]', `-clMMTT', `-clMMWWWN'    
`JJJJ0000'                `-cN+|-'                                        
`JJJJ00TT'                `-cNw|+|-', `-cw[+|-]', `-cm[+|-]'              
`JJJJMM00'                `-cN+|-'                                        
`JJJJMMTT'                `-cNw|+|-', `-cw[+|-]', `-cm[+|-]', `-cy[+|-]', 
                          `-clNd|w|+|-', `-cl*d|wN[WWW]',                 
                          `-cl@?[[+|-]N[WWW]]', `-clMMTT', `-clMMWWWN'    
`000000WWWN'              `-cNw|+|-', `-cw[+|-]', `-cm[+|-]'              
`0000MMWWWN'              `-cNw|+|-', `-cw[+|-]', `-cm[+|-]', `-cy[+|-]', 
                          `-clNd|w|+|-', `-cl*d|wN[WWW]',                 
                          `-cl@?[[+|-]N[WWW]]', `-clMMTT', `-clMMWWWN'    
`JJJJ00WWWN'              `-cNw|+|-', `-cw[+|-]', `-cm[+|-]'              
`JJJJMMWWWN'              `-cNw|+|-', `-cw[+|-]', `-cm[+|-]', `-cy[+|-]', 
                          `-clNd|w|+|-', `-cl*d|wN[WWW]',                 
                          `-cl@?[[+|-]N[WWW]]', `-clMMTT', `-clMMWWWN'    
`0000*dN[WWW]'            `-cNw|+|-', `-cw[+|-]', `-cm[+|-]', `-cy[+|-]', 
                          `-clNd|w|+|-', `-cl*d|wN[WWW]',                 
                          `-cl@?[[+|-]N[WWW]]', `-clMMTT', `-clMMWWWN'    
`JJJJ*dN[WWW]'            `-cNw|+|-', `-cw[+|-]', `-cm[+|-]', `-cy[+|-]', 
                          `-clNd|w|+|-', `-cl*d|wN[WWW]',                 
                          `-cl@?[[+|-]N[WWW]]', `-clMMTT', `-clMMWWWN'    
`0000*wN[WWW]'            `-cNw|+|-', `-cw[+|-]', `-cm[+|-]', `-cy[+|-]', 
                          `-clNd|w|+|-', `-cl*d|wN[WWW]',                 
                          `-cl@?[[+|-]N[WWW]]', `-clMMTT', `-clMMWWWN'    
`JJJJ*wN[WWW]'            `-cNw|+|-', `-cw[+|-]', `-cm[+|-]', `-cy[+|-]', 
                          `-clNd|w|+|-', `-cl*d|wN[WWW]',                 
                          `-cl@?[[+|-]N[WWW]]', `-clMMTT', `-clMMWWWN'    
`0000@?[+|-]N[WWW]'       `-cNw|+|-', `-cw[+|-]', `-cm[+|-]', `-cy[+|-]', 
                          `-clNd|w|+|-', `-cl*d|wN[WWW]',                 
                          `-cl@?[[+|-]N[WWW]]', `-clMMTT', `-clMMWWWN'    
`JJJJ@?[+|-]N[WWW]'       `-cNw|+|-', `-cw[+|-]', `-cm[+|-]', `-cy[+|-]', 
                          `-clNd|w|+|-', `-cl*d|wN[WWW]',                 
                          `-cl@?[[+|-]N[WWW]]', `-clMMTT', `-clMMWWWN'    

Kodierschema Tabelle 2
======================

In dieser Tabelle werden alle mglichen Kodierungen der Modifizierer der
Kurzoption `-c|C[]' mit allen dazu mglichen Kodierungen von einem
Datum im *Datumteil* einer Ressourcendatei gegenbergestellt.

*Kurzoption `-c|C[]'*     *Datumteil*                                     
`-c'                                                                      
`-ct'                                                                     
`-cNd|+|-'                                                                
`-cMMTT'                                                                  
`-cMMWWWN'                                                                
`-c*d|wN[WWW]'                                                            
`-c@?[[+|-]N[WWW]]'       `00000000', `0000MM00', `JJJJ0000', `JJJJMM00', 
                          `000000TT', `0000MMTT', `JJJJ00TT', `JJJJMMTT', 
                          `000000WWWN', `0000MMWWWN', `JJJJ00WWWN',       
                          `JJJJMMWWWN', `0000*dN', `0000*dNWWW',          
                          `JJJJ*dN', `JJJJ*dNWWW', `0000*wN',             
                          `0000*wNWWW', `JJJJ*wN', `JJJJ*wNWWW',          
                          `0000@?[+|-]N', `0000@?[+|-]NWWW',              
                          `JJJJ@?[+|-]N', `JJJJ@?[+|-]NWWW'               
`-cNw'                                                                    
`-cw[+|-]'                `000000TT', `0000MMTT', `JJJJ00TT', `JJJJMMTT', 
                          `000000WWWN', `0000MMWWWN', `JJJJ00WWWN',       
                          `JJJJMMWWWN', `0000*dN', `0000*dNWWW',          
                          `JJJJ*dN', `JJJJ*dNWWW', `0000*wN',             
                          `0000*wNWWW', `JJJJ*wN', `JJJJ*wNWWW',          
                          `0000@?[+|-]N', `0000@?[+|-]NWWW',              
                          `JJJJ@?[+|-]N', `JJJJ@?[+|-]NWWW'               
`-cm[+|-]'                `000000TT', `0000MMTT', `JJJJ00TT', `JJJJMMTT', 
                          `000000WWWN', `0000MMWWWN', `JJJJ00WWWN',       
                          `JJJJMMWWWN', `0000*dN', `0000*dNWWW',          
                          `JJJJ*dN', `JJJJ*dNWWW', `0000*wN',             
                          `0000*wNWWW', `JJJJ*wN', `JJJJ*wNWWW',          
                          `0000@?[+|-]N', `0000@?[+|-]NWWW',              
                          `JJJJ@?[+|-]N', `JJJJ@?[+|-]NWWW'               
`-cy[+|-]'                                                                
`-clNd|w|+|-'                                                             
`-clMMTT'                                                                 
`-clMMWWWN'                                                               
`-cl*d|wN[WWW]'                                                           
`-cl@?[[+|-]N[WWW]]'      `0000MMTT', `JJJJMMTT', `0000MMWWWN',           
                          `JJJJMMWWWN', `0000*dN', `0000*dNWWW',          
                          `JJJJ*dN', `JJJJ*dNWWW', `0000*wN',             
                          `0000*wNWWW', `JJJJ*wN', `JJJJ*wNWWW',          
                          `0000@?[+|-]N', `0000@?[+|-]NWWW',              
                          `JJJJ@?[+|-]N', `JJJJ@?[+|-]NWWW'               

Umgebungsvariablen
******************

Hier ist eine Liste aller Umgebungsvariablen, die von Gcal benutzt
werden:

`COLUMNS'
`CO'
     Setzt die Anzahl der Spalten des Bildschirms.  Hat Vorrang vor der
     Anzahl der Spalten, welche die `TERM' Umgebungsvariable oder das
     System selbst definiert.

`GCAL'
     Argumente, die an Gcal automatisch bergeben werden.

`GCALANSI'
     Wenn definiert oder gesetzt, so werden ANSI
     Escape-Hervorhebungssequenzen als Grundeinstellung benutzt bzw.
     ergnzt, falls keine anderen Hervorhebungssequenzen mittels
     Kommandozeilenoption definiert werden oder in der Termcap
     Bibliotheksdatei aufgefunden werden.

`GCAL_DATE_FORMAT'
     Enthlt den Datumformattext, der die Anordnung von einem
     auszugebenden Datum bestimmt.  Hat Vorrang vor dem
     Grundeinstellungs-Datumformattext.

`GCALPATH'
     Durch (`:') Doppelpunkt separierte Liste von Dateiverzeichnissen,
     welche durchsucht werden, um die `.gcalrc' Datei zu finden.  Hat
     Vorrang vor `GCAL_USR_DATADIR' und `GCAL_SYS_DATADIR'.

`GCALPROG'
     Enthlt den Dateinamen des ausfhrbaren Gcal Programms, welcher vom
     Programm `tcal' benutzt wird, um Gcal aufzurufen.  Hat Vorrang vor
     dem beim Kompilationsvorgang in `tcal' eingebrannten Dateinamen
     `gcal'.

`GCAL_USR_DATADIR'
     Name eines Dateiverzeichnisses relativ zum `HOME' Dateiverzeichnis,
     in welchem der Benutzer seine persnlichen bzw. *privaten*
     Ressourcendateien (Termindateien) speichert.  Hat Vorrang vor
     `GCAL_SYS_DATADIR'.

`GCAL_SYS_DATADIR'
     Name eines Dateiverzeichnisses absolut zum *Wurzel*/*$(prefix)*
     Dateiverzeichnis, in welchem der Systemadministrator allgemeine
     bzw.  *ffentliche* Ressourcendateien (Termindateien) speichert.

`HOME'
     Name des Heimatverzeichnisses des Benutzers.  Dieses wird benutzt,
     um die `.gcalrc' Datei zu finden.  Hat Vorrang vor `GCALPATH',
     `GCAL_USR_DATADIR' und `GCAL_SYS_DATADIR'.

`LANGUAGE'
     Die Landessprache und sonstige kulturspezifische Konventionen, die
     Gcal zur Laufzeit verwenden soll.  Hat Vorrang vor `LC_ALL',
     `LC_MESSAGES' und `LANG'.

`LC_ALL'
     Die Landessprache und sonstige kulturspezifische Konventionen, die
     Gcal zur Laufzeit verwenden soll.  Hat Vorrang vor `LC_MESSAGES'
     und `LANG'.

`LC_MESSAGES'
     Die Landessprache und sonstige kulturspezifische Konventionen, die
     Gcal zur Laufzeit verwenden soll.  Hat Vorrang vor `LANG'.

`LANG'
     Die Landessprache und sonstige kulturspezifische Konventionen, die
     Gcal zur Laufzeit verwenden soll.

`LINES'
`LI'
     Setzt die Anzahl der Zeilen des Bildschirms.  Hat Vorrang vor der
     Anzahl der Zeilen, welche die `TERM' Umgebungsvariable oder das
     System selbst definiert.

`MAILPROG'
     Der Name des Mailprogramms, das verwendet wird, wenn Postversand
     gewnscht wird.  *Siehe `--mail=ADRESSE': Globale Optionen, fr
     weitere Details.

`PAGER'
     Der Name des externen Paginiererprogramms, das verwendet wird, wenn
     Paginierung gewnscht wird.  *Siehe `--pager': Globale Optionen,
     fr weitere Details.

`PATH'
     Durch (`:') Doppelpunkt separierte Liste von Dateiverzeichnissen,
     welche durchsucht werden, um das "externe" Paginiererprogramm zu
     finden.  *Siehe `--pager': Globale Optionen, fr weitere Details.

`TERM'
     Der Terminaltyp, auf dem Gcal zum Ablauf kommt.

`TZ'
     Die Zeitzoneninformation, mit dem der Datumtext in versandten
     eMails, erzeugten Anwortdateien und erzeugten shell script Dateien
     versehen wird.

Fehlerkodes
***********

Gcal erzeugt folgende *exit*-Kodes:

`127'
     Hilfeseite, Softwarelizenz bzw. Versionsnummer angefordert
     (einstellbar).

`126'
     Unzulssige Option bei Programmaufruf.

`125'
     Jahr auerhalb zulssigen Bereichs bei Ermittlung des
     Ostersonntags.

`124'
     Virtueller Speicher erschpft.

`123'
     Unzulssiger Datumeintrag in Ressourcen- bzw. Includedatei.

`122'
     Ungltiger Monatseintrag in Ressourcen- bzw. Includedatei.

`121'
     Ungltiger Tageseintrag in Ressourcen- bzw. Includedatei.

`120'
     Migebildete *#include* Anweisung in Ressourcen- bzw. Includedatei.

`119'
     Unzulssige rekursive/zyklische *#include* Anweisung in Ressourcen-
     bzw. Includedatei.

`118'
     Ressourcen- bzw. Includedatei nicht gefunden.

`117'
     Ungltiges N'ter Wochentagsfeld (nur 1...5 oder 9 erlaubt).

`116'
     Fehlendes *whitespace* Trennzeichen zwischen *Datumteil* und
     *Textteil*.

`115'
     Antwortdatei bzw. shell script kann nicht geschrieben werden.

`114'
     Illegale Datumvariablen-Operation.

`113'
     Datumvariable undefiniert.

`112'
     Zuweisung von ungltigem Datumwert an Datumvariable.

`111'
     Versenden der Ausgabe an eMail Adresse hat versagt.

`110'
     Interner Fehler, C Funktion pipe(), fork(), execlp() oder unlink()
     hat versagt.

`109'
     Fehler beim Lesen der Ressourcen-, Include- bzw. Antwortdatei
     aufgetreten.

`108'
     Illegales Zeichen in Antwortdatei vorgefunden.

`107'
     Interner Fehler, ungltiger Wert fr die Gre einer internen
     Tabelle aufgetreten.

`106'
     Ungltiger Datumformattext angegeben.

`105'
     Illegale Textvariablen-Definition.

`104'
     Ungltiges regulr-Ausdruck Suchmuster angegeben.

`3'
     Programmabbruch durch Signal.

`2'
     *Exit*-Kode ungleich Null bei Kommandoausfhrung aufgetreten.

`1'
     Keine Ausgabe von Terminen obwohl Option `-c|C[]',
     `-f|F DATEINAME[+...]' oder `-# ZEILE' aktiviert.

`0'
     Fehlerfreier Programmlauf.

Index von Kommandozeilenargumenten
**********************************

Hier ist eine alphabetische Liste der Kommandozeilenargumente, die von
Gcal verarbeitet werden:

(entfernt)


Index von Umgebungsvariablen
****************************

Hier ist eine alphabetische Liste der Umgebungsvariablen, die von Gcal
bercksichtigt werden:

(entfernt)


Stichwortverzeichnis
********************

(entfernt)


