summaryrefslogtreecommitdiff
path: root/doc/eudas/eudas.ref.5
diff options
context:
space:
mode:
Diffstat (limited to 'doc/eudas/eudas.ref.5')
-rw-r--r--doc/eudas/eudas.ref.5432
1 files changed, 0 insertions, 432 deletions
diff --git a/doc/eudas/eudas.ref.5 b/doc/eudas/eudas.ref.5
deleted file mode 100644
index 02971ea..0000000
--- a/doc/eudas/eudas.ref.5
+++ /dev/null
@@ -1,432 +0,0 @@
-#limit (11.0)##pagelength (16.5)##block#
-#start (2.0,0.0)#
-#page (49)#
-#headodd#
-#center#EUDAS#right#%
-
-#end#
-#headeven#
-%#center#EUDAS
-
-#end#
-#center#1
-
-5 Drucken und Druckmuster
-
-
-
-5.1 Druckmustersyntax
-
-Ein Druckmuster ist eine Beschreibung für die Form, in der die In­
-halte einer EUDAS-Datei ausgedruckt werden sollen. Der syntakti­
-sche Aufbau des Druckmusters ist zeilenorientiert und gehorcht
-folgender Syntax:
-
- Druckmuster :
- [ Initialisierungsteil ]
- [ Vorspann ]
- [ Wiederholungsteil ]
- [ Nachspann ]
-
- Initialisierungsteil :
- ( Kommandozeile #char (""124"")# Textzeile )*
- ( GRUPPE-Anweisung #char(""124"")# Textzeile )*
-
- Vorspann :
- VORSPANN-Anweisung Abschnitt
-
- Wiederholungsteil :
- WIEDERHOLUNG-Anweisung Abschnitt
-
- Nachspann :
- NACHSPANN-Anweisung Abschnitt
-
- Abschnitt :
- Musterteil
- [ ABKUERZUNGEN-Anweisung Abkürzungsteil ]
-
- Musterteil :
- ( Musterzeile #char(""124"")# Kommandozeile #char(""124"")#
- MODUS-Anweisung #char (""124"")# MEHR-Anweisung )*
-
-Zur Notation: [] bedeutet optional, ()* beliebig häufige Wiederho­
-lung, #char(""124"")# Alternative und keine Angabe einfache Aneinanderreihung.
-Die verschiedenen Zeilentypen werden weiter unten beschrieben.
- Zusätzlich gilt die Bedingung, daß von Vorspann, Wiederho­
-lungsteil und Nachspann mindestens einer vorhanden sein muß.
-
-#on("b")#Zeilentypen#off("b")# Im Druckmuster gibt es 6 verschiedene
-Zeilentypen:
-
-#on("i")#Kommandozeilen#off("i")#
- Eine Kommandozeile beginnt mit '%%' in der ersten und zweiten
- Spalte. Der Inhalt der Zeile ab Spalte 3 wird dem ELAN-Compi­
- ler übergeben. Die Bedeutung dieser Zeilen ergibt sich aus dem
- in 5.4 beschriebenen Übersetzungsmechanismus.
-
-#on("i")#Anweisungen#off("i")#
- Anweisungen beginnen mit '%' in der ersten Spalte und dienen
- zur Steuerung des Druckgenerators. Der Name der Anweisung
- muß in Großbuchstaben und ohne Leerzeichen geschrieben
- werden. Davor dürfen sich noch Leerzeichen befinden. An­
- schließend können noch Parameter folgen, die nur durch Leer­
- zeichen getrennt aneinander gereiht werden. Die Syntax einer
- Anweisung ähnelt der eines Operators in ELAN.
-
-#on("i")#Textzeilen#off("i")#
- Textzeilen sind die nicht anderweitig markierten Zeilen im
- Initialisierungsteil. Sie werden unverändert an den Anfang
- jeder Druckdatei gestellt.
-
-#on("i")#Musterzeilen#off("i")#
- Musterzeilen sind nicht besonders gekennzeichnete Zeilen im
- Musterteil. Sie enthalten Feldmuster und werden nach dem
- Einsetzen von Inhalten in die Ausgabedatei übernommen. Die
- Interpretation der Musterzeilen wird in Abschnitt 5.3 beschrie­
- ben.
-
-#on("i")#Abkürzungszeilen#off("i")#
- Abkürzungszeilen markieren den Beginn einer Abkürzung im
- Abkürzungsteil eines Abschnittes. Sie werden durch '&' in der
- ersten Spalte gekennzeichnet. Darauf folgt ohne Zwischenraum
- der Name einer Abkürzung (ohne Leerzeichen) und danach
- durch Leerzeichen getrennt ein Semikolon. Der Name der Ab­
- kürzung wird bei der Übersetzung durch einen Refinementnamen
- ersetzt und die Zeile dem ELAN-Compiler übergeben. Der Rest
- der Zeile kann also den Beginn eines werteliefernden Refine­
- ments enthalten.
-
-#on("i")#Programmzeilen#off("i")#
- Programmzeilen sind die nicht durch '&' markierten Zeilen im
- Abkürzungsteil. Sie werden unverändert an den ELAN-Compiler
- übergeben. Der erlaubte Inhalt richtet sich nach dem Überset­
- zungsmechanismus (5.4).
-
-
-5.2 Der Druckvorgang
-
-Der Druckvorgang besteht im wesentlichen darin, daß für alle zu
-bearbeitenden Sätze der Wiederholungsteil einmal interpretiert wird
-und das Ergebnis in eine Ausgabedatei geschrieben wird, die dann
-gedruckt werden kann. Wenn mindestens ein Satz markiert ist, wer­
-den alle markierten Sätze der virtuellen Datei bearbeitet, ansonsten
-alle durch die Suchbedingung erfaßten.
-
-#on("b")#Gruppen#off("b")# Eine #on("i")#Gruppe#off("i")# ist eine Folge von Sätzen, die in einem be­
-stimmten Merkmal übereinstimmen. Durch eine GRUPPE-Anweisung
-der Form
-
-
- % GRUPPE n Ausdruck
-
-
-werden aufeinanderfolgende Sätze mit gleichem Wert des angegebe­
-nen Ausdrucks gruppiert. Über die Nummer 'n' kann festgestellt
-werden, ob sich das angegebene Merkmal verändert hat. Dies ge­
-schieht mit der Prozedur
-
-
- BOOL PROC gruppenwechsel (INT CONST gruppennr)
-
-
-Immer wenn zwischen zwei Sätzen ein Gruppenwechsel stattfindet,
-wird beim vorigen Satz der Nachspann und beim folgenden Satz der
-Vorspann einmal interpretiert. Dies führt dazu, daß entsprechende
-Vorspann- bzw. Nachspannzeilen gedruckt werden.
- Vor dem ersten und nach dem letzten zu bearbeitenden Satz
-wechseln alle Gruppen, d.h. dort wird immer ein Vorspann bzw.
-Nachspann erzeugt.
- Ist ein zu interpretierender Abschnitt nicht vorhanden, so wird
-an dieser Stelle keine Ausgabe erzeugt. Die Textzeilen des Initali­
-sierungsteils werden auf jeden Fall bei Beginn des Druckvorganges
-in die Ausgabedatei geschrieben. Falls die Ausgabedatei voll ist,
-wird eine neue Datei angefangen und die Zeilen des Initialisie­
-rungsteils erneut an den Anfang gestellt.
-
-
- Satz- Gruppen- Ausgabe
- nummer merkmal
-#free (0.1)#
- Initialisierungsteil
- -------------------------------------------------
- 1 x Vorspann
- WDH-Teil
- 2 x WDH-Teil
- Nachspann
- -------------------------------------------------
- 3 y Vorspann
- WDH-Teil
- 4 y WDH-Teil
- 5 y WDH-Teil
- Nachspann
- -------------------------------------------------
- ENDE
-
-#center#Abb. 5-1 Ablauf des Druckvorganges mit Gruppen
-
-
-#on("b")#Spaltendruck#off("b")# Normalerweise werden die Ausgaben der
-einzelnen
-Abschnitte hintereinander in der Ausgabedatei plaziert. Durch An­
-gabe einer Nummer als Parameter in der WIEDERHOLUNG-Anweisung
-können auch soviel Spalten wie angegeben nebeneinander gedruckt
-werden. Die Spaltenbreite wird dabei durch das Dateilimit (Komman­
-do 'limit' im Editor) festgelegt. Alternativ kann die Spaltenbreite
-auch als zweiter Parameter durch Leerzeichen getrennt angegeben
-werden.
- Vorspann und Nachspann werden jedoch auf jeden Fall wieder
-in eine eigene Zeile geschrieben, der Spaltendruck also unterbro­
-chen.
-
-
-5.3 Interpretation von Musterzeilen
-
-Musterzeilen können Feldmuster enthalten, die bei der Interpreta­
-tion durch entsprechende Inhalte ersetzt werden, ehe die Muster­
-zeile in die Ausgabedatei übernommen wird. Der Beginn eines Feld­
-musters wird durch ein Musterzeichen ('&' oder '%') markiert. Wo
-und wie der Inhalt eingesetzt wird, kann durch folgende Variationen
-angegeben werden:
-
-
- Typ ! Beispiel ! Position ! Länge ! bündig
- ----+-----------+------------------------------
- 1 ! &Name ! fest ! variabel ! links
- 2 ! %Name ! variabel ! variabel ! links
- 3 ! &Name&&& ! fest ! fest ! links
- 4 ! %Name%%% ! variabel ! fest ! links
- 5 ! &&&Name& ! fest ! fest ! rechts
- 6 ! %%%Name% ! variabel ! fest ! rechts
-
-
-Der in dem Feldmuster angegebene Name muß Name einer Abkür­
-zung in irgendeinem Abkürzungsteil oder eines Feldes sein. Der
-Name darf kein Leerzeichen oder Musterzeichen enthalten. Falls dies
-doch der Fall ist, muß der Name in spitze Klammern eingeschlossen
-werden.
- Bei fester Länge wird bei zu kurzem Inhalt mit Leerzeichen
-aufgefüllt, bei zu langem Inhalt abgeschnitten. Bei linksbündigem
-Einsetzen geschieht dies an der rechten, sonst an der linken Seite.
- Feldmuster variabler Länge können je nach Inhalt dazu führen,
-daß der folgende Teil der Musterzeile verschoben wird. Für diesen
-Einsetzprozeß gelten die folgenden Regeln:
-
-#on("b")#Position#off("b")# Feldmuster fester Position (mit '&' beginnend)
-werden
-immer in der Position eingesetzt, in der sie stehen. Feldmuster
-variabler Position (mit '%' beginnen) können nach rechts verschoben
-werden, wenn vorherige Inhalte länger als ihre Muster sind, und
-nach links, wenn Modus 1 oder 3 eingestellt ist und vorherige In­
-halte kürzer sind.
-
-#on("b")#Länge#off("b")# Feldmuster variabler Länge erhalten auf jeden Fall
-den
-Platz, der durch die Länge des Feldmusters reserviert ist. Sind die
-Inhalte kürzer, kann der gewonnene Platz als Reserve für andere
-Feldmuster verwendet werden; sind die Inhalte länger, so wird der
-Inhalt so weit eingesetzt, wie noch Reserve vorhanden ist und der
-Rest abgeschnitten.
- Muß in ein Feldmuster variabler Länge ein leerer Inhalt einge­
-setzt werden, so werden beim Drucken auch die auf das Feldmuster
-folgenden Leerzeichen unterdrückt, falls vor dem Feldmuster noch
-ein Leerzeichen steht oder das Feldmuster in Spalte 1 beginnt.
- Feldmuster fester Länge werden immer in ihrer reservierten
-Länge eingesetzt. Sie werden im folgenden behandelt wie Feldmuster
-variabler Länge, deren Inhalt so lang ist wie das Feldmuster.
-
-#on("b")#Verteilung#off("b")# Die Verteilung der verschiebbaren Feldmuster
-auf der
-Zeile geschieht jeweils in dem Abschnitt zwischen zwei Feldmustern
-fester Position bzw. Zeilenanfang oder Zeilenende. Für jeden Ab­
-schnitt wird festgestellt, wieviel Stellen die Inhalte insgesamt mehr
-oder weniger als ihre Muster benötigen.
- Der Längenausgleich geschieht zwischen dem letzten Feldmuster
-und dem Ende des Abschnitts. Dort wird ein Pufferplatz bestimmt,
-der bei Überlänge bis auf ein Leerzeichen verkleinert werden kann
-und an dem bei Unterlänge zusätzliche Leerzeichen eingefügt wer­
-den.
- Außer am Pufferplatz wird an keinem Mustertext des Abschnitts
-etwas geändert. Zwischentexte zwischen den Feldmustern werden
-unverändert übertragen und mit den umgebenden Feldmustern ver­
-schoben.
- Als Pufferplatz wird die erste Lücke hinter dem letzten Feld­
-muster eines Abschnittes verwendet, die mehr als ein Leerzeichen
-enthält. Ist keine solche Lücke vorhanden, wird das Ende des Ab­
-schnitts verwendet, falls dort ein Leerzeichen steht, und sonst das
-Ende des letzten Feldmusters.
- Die durch den Pufferplatz und kürzere Inhalte gewonnene Re­
-serve wird von links an die Feldmuster mit Überlänge verteilt, bis
-die Reserve verbraucht ist.
-
-#on("b")#Zeilende#off("b")# Das Zeilenende wird als ein Quasi-Feldmuster mit
-fester
-Position aufgefaßt, das am Limit der Druckmusterdatei steht. Es
-sind also keine Einsetzungen möglich, die über das Limit der Datei
-hinausgehen. Als Pufferplatz wird hier jedoch die erste Blanklücke
-vom Zeilenende her verwendet, damit Mustertexte am Zeilenende
-gegebenenfalls stehenbleiben. Ist keine solche Lücke vorhanden, so
-wird das Zeilenende als Pufferplatz verwendet.
- Obwohl nicht als Pufferplatz ausgewiesen, kann der Raum zwi­
-schen Zeilenende und Dateilimit als Reserve verwendet werden.
-
-#on("b")#Modi#off("b")# Der Einsetzmechanismus kann durch die MODUS-Anweisung
-mit einem Parameter verändert werden. Folgende Modi stehen zur
-Verfügung:
-
-
- Modus ! Effekt
- ------+----------------------------------------
- 1 ! Normalmodus.
- ! '%'-Feldmuster werden auch
- ! nach links geschoben.
- ! Keine Zeilenwiederholung.
- ------+----------------------------------------
- 2 ! Tabellenmodus.
- ! '%'-Feldmuster werden nicht
- ! nach links geschoben.
- ! Keine Zeilenwiederholung.
- ------+----------------------------------------
- 3 ! Normalmodus mit Zeilenwiederholung.
- ! '%'-Feldmuster werden auch
- ! nach links geschoben.
- ! Zeilenwiederholung ohne Zwischentexte.
- ------+----------------------------------------
- 4 ! Tabellenmodus mit Zeilenwiederholung.
- ! '%'-Feldmuster werden nicht
- ! nach links geschoben.
- ! Zeilenwiederholung mit Zwischentexten.
- ------+----------------------------------------
-
-
-Bei Zeilenwiederholung werden Inhalte in einer folgenden Zeile
-fortgesetzt, falls sie in der ersten Zeile nicht untergebracht werden
-konnten. Dazu wird die Musterzeile mit den Restinhalten erneut
-interpretiert. Je nach Modus werden auch die Zwischentexte noch
-wiederholt. Der Restinhalt umfaßt immer noch das ganze letzte Wort,
-das nicht mehr auf die vorige Zeile paßte. Es findet also ein Um­
-bruch statt. Die Positionen, die in der vorigen Zeile vom Anfang des
-Wortes eingenommen würden, werden durch Leerzeichen ersetzt.
- Durch die MEHR-Anweisung mit einem Parameter kann die Zahl
-der Zeilenwiederholungen für die nächste Musterzeile festgesetzt
-werden. Dies hat jedoch nur eine Auswirkung, falls Zeilenwieder­
-holung zugelassen ist. Stehen zur Interpretation keine Restinhalte
-mehr zur Verfügung, wird mit leeren Inhalten weitergearbeitet. Kann
-ein Inhalt bei der vorgegebenen Anzahl von Zeilen nicht ganz dar­
-gestellt werden, wird der Rest nicht ausgegeben.
-
-
-5.4 Anschluß zum ELAN-Compiler
-
-Falls in einem Druckmuster Abkürzungen, Kommandozeilen oder
-Gruppendefinitionen vorkommen, wird das Druckmuster in ein
-ELAN-Programm umgewandelt, das dann vom ELAN-Compiler über­
-setzt wird.
- Alle Zeilen eines Abkürzungsteils werden direkt in das Pro­
-gramm übernommen, wobei der Name einer Abkürzung durch einen
-beliebig gewählten Refinementnamen ersetzt wird ('abk' + eine lau­
-fende Nummer). Alle Abkürzungen und Refinements werden als glo­
-bale Refinements definiert, also außerhalb von Prozeduren. Dadurch
-wird erreicht, daß sie an jeder Stelle verwendet werden können.
- Damit eine Abkürzung richtig als Refinement übersetzt wird,
-muß sie ein TEXT-Objekt als Wert liefern. Die anderen Refinements
-sind beliebig, da sie nur in selbstdefinierten Anweisungen verwen­
-det werden. Die Refinements der Abkürzungen werden in einer Zu­
-weisung an eine TEXT-Variable verwendet, damit der Druckgenera­
-tor auf den entsprechenden Wert zugreifen kann.
- Jeder Abschnitt wird dagegen als eine Prozedur übersetzt. Eine
-Folge von Musterzeilen wird in eine Anweisung übersetzt, diese
-Musterzeilen einzusetzen und zu drucken. Eine '%%'-Anweisung wird
-einfach unverändert dazwischengeschrieben. Die Prozedur für den
-Wiederholungsteil wird einmal für jeden ausgewählten Satz aufgeru­
-fen, die Vorspann- und die Nachspann-Prozedur einmal bei jedem
-Gruppenwechsel.
- Anweisungen im Initialisierungsteil werden an den Anfang des
-Programms als globale Definitionen gestellt.
-
-#on("b")#Fehler#off("b")# Findet sich in dem erzeugten ELAN-Programm ein
-Fehler,
-der durch den Druckgenerator nicht erkannt werden konnte (z.B.
-eine Abkürzung liefert keinen Wert), so muß der ELAN-Compiler
-diesen Fehler erkennen. Anschließend zeigt er das erzeugte Pro­
-gramm zusammen mit seinen Fehlermeldungen im Paralleleditor. Sie
-müssen nun die Fehlermeldung lokalisieren und anhand der eben
-gegebenen Hinweise in das ursprüngliche Druckmuster zurücküber­
-setzen, damit Sie dort den Fehler korrigieren können.
-
-
-5.5 Fehlermeldungen
-
-Folgende Fehlermeldungen können bei der Übersetzung eines Druck­
-musters auftreten:
-
-#on("i")#keine schliessende Klammer in Feldmuster#off("i")#
- Wenn der Name in einem Feldmuster in spitze Klammern einge­
- schlossen werden soll, muß noch in der gleichen Zeile eine
- schließende Klammer vorhanden sein.
-
-#on("i")#kein Kommando in Kommandozeile#off("i")#
- Eine Zeile, die mit '%' beginnt, enthält keinen weiteren Text.
-
-#on("i")#unbekanntes Kommando#off("i")#
- Das erste Wort in einer Kommandozeile ist kein bekanntes Kom­
- mando.
-
-#on("i")#kein % WIEDERHOLUNG gefunden#off("i")#
- Das Druckmuster enthält keine Anweisung, die den Beginn eines
- Abschnittes markiert. Es muß aber mindestens ein Abschnitt
- vorhanden sein.
-
-#on("i")#nur GRUPPE-Anweisung erlaubt#off("i")#
- Im Initialisierungsteil ist nur die GRUPPE-Anweisung erlaubt.
-
-#on("i")#keine ELAN-Anweisung im Initialisierungsteil nach Gruppen­
-definition#off("i")#
- Sobald im Initialisierungsteil eine GRUPPE-Anweisung aufgetreten
- ist, ist keine Kommandozeile mehr möglich.
-
-#on("i")#illegale Gruppennummer#off("i")#
- In einer GRUPPE-Anweisung wurde eine zu große Nummer angege­
- ben. Gruppen sollten von 1 an durchnumeriert werden.
-
-#on("i")#diese Gruppe wurde schon definiert#off("i")#
- Eine Gruppennummer wurde mehrfach verwendet.
-
-#on("i")#diese Abkürzung ist nicht definiert#off("i")#
- Ein Name in einem Feldmuster tritt nicht als Feld-oder Abkür­
- zungsname auf. Eventuell enthält er ein Leerzeichen!
-
-#on("i")#dieser Abschnitt wurde schon einmal definiert#off("i")#
- Kein Abschnitt kann mehrmals angegeben werden.
-
-#on("i")#falscher Modus#off("i")#
- In einer MODUS-Anweisung wurde ein nicht definierter Modus als
- Parameter angegeben.
-
-#on("i")#diese Anweisung darf im Musterteil nicht vorkommen#off("i")#
-
-#on("i")#im Abkürzungsteil darf keine Anweisung auftreten#off("i")#
-
-#on("i")#in dieser Zeile stehen zu viele Feldmuster#off("i")#
- Es können maximal 24 Feldmuster in einer Zeile stehen. Abhilfe:
- mehrere Feldmuster durch eine Abkürzung zusammenfassen.
-
-#on("i")#das Druckmuster enthält zu viele Feldmuster#off("i")#
- Die Gesamtanzahl der Feldmuster ist begrenzt. Abhilfe: mehrere
- Feldmuster durch eine Abkürzung zusammenfassen.
-
-#on("i")#nach dem "&" soll direkt der Name einer Abkürzung folgen#off("i")#
- In einer Abkürzungszeile stehen Leerzeichen hinter dem '&'.
-
-#on("i")#kein Doppelpunkt nach Abkürzung#off("i")#
- Nach dem Abkürzungsnamen in einer Abkürzungszeile muß durch
- ein Leerzeichen getrennt ein Doppelpunkt folgen.
-
-#on("i")#Abkürzung mehrfach definiert#off("i")#
- Die Abkürzung wurde unter dem gleichen Namen schon einmal,
- vielleicht in einem anderen Abschnitt, definiert.
-
-#on("i")#das Druckmuster enthält zu viele Abkürzungen#off("i")#
- Abhilfe: mehrere Abkürzungen zu einem Ausdruck zusammenfas­
- sen.
-
-