summaryrefslogtreecommitdiff
path: root/app/eudas/4.3/doc/eudas.hdb.11
diff options
context:
space:
mode:
Diffstat (limited to 'app/eudas/4.3/doc/eudas.hdb.11')
-rw-r--r--app/eudas/4.3/doc/eudas.hdb.11674
1 files changed, 674 insertions, 0 deletions
diff --git a/app/eudas/4.3/doc/eudas.hdb.11 b/app/eudas/4.3/doc/eudas.hdb.11
new file mode 100644
index 0000000..6a59847
--- /dev/null
+++ b/app/eudas/4.3/doc/eudas.hdb.11
@@ -0,0 +1,674 @@
+#limit (11.0)##pagelength (16.5)##block#
+#start (2.0,0.0)#
+#page (109)#
+#headodd#
+#center#EUDAS#right#%
+
+#end#
+#headeven#
+%#center#EUDAS
+
+#end#
+#center#1
+
+11 Funktionen zur Bearbeitung
+
+
+
+11.1 Sortieren
+
+Wenn Sie die Sätze in Ihrer EUDAS-Datei in einer bestimmten Rei­
+henfolge haben wollen (dies wird in vielen Fällen zum Drucken
+verlangt), müssen Sie die Datei sortieren. Sie können EUDAS ange­
+ben, in welcher Reihenfolge die Sortierung erfolgen soll. Um die
+aktuelle Datei zu sortieren, rufen Sie die Funktion
+#free (0.2)#
+
+ Akt. Datei
+ S Sortieren
+
+#free (0.2)#
+auf. Falls die Datei noch nie sortiert wurde, wird Ihnen auf jeden
+Fall die Sortierreihenfolge zum Auswählen angeboten. Anderenfalls
+werden Sie gefragt, ob Sie die vorherige Sortierreihenfolge ändern
+wollen.
+ Das Sortieren wird als Veränderung betrachtet und nur auf der
+Arbeitskopie durchgeführt!
+
+#on("b")#Sortierreihenfolge#off("b")# Die Sortierreihenfolge gibt an, welche
+Felder in
+welcher Reihenfolge beim Vergleichen zweier Sätze benutzt werden
+sollen. Zuerst wird das an erster Stelle angegebene Feld verglichen.
+Sind die Inhalte hier unterschiedlich, wird die Einordnung der Sätze
+nach diesem Feld bestimmt.
+ Sind die Inhalte in diesem Feld aber gleich, so wird nach dem
+nächsten Feld verglichen. Ist kein weiteres Feld in der Sortierrei­
+henfolge angegeben, wird der Vergleich an dieser Stelle mit einem
+zufälligen Ergebnis abgebrochen, das heißt, es kann nicht vorher­
+gesagt werden, welcher der beiden Sätze zuerst kommt.
+ Die Sortierreihenfolge können Sie in einer Menüauswahl einge­
+ben. Kreuzen Sie die Felder an, die Sie vergleichen wollen und ach­
+ten Sie auf die richtige Reihenfolge. Die eingegebene Reihenfolge
+wird in der Datei gespeichert, um beim nächsten Sortiervorgang
+wiederverwendet zu werden.
+ Nachdem Sie alle bei der Sortierung zu berücksichtigenden
+angekreuzt haben, werden Sie für jedes dieser Felder gefragt, ob
+nach dem Feld aufsteigend oder absteigend sortiert werden soll.
+
+#on("b")#Ablauf#off("b")# Der Ablauf des Sortierens wird durch Ausgabe von
+Satz­
+nummern dargestellt. Bis zur ausgegebenen Satznummer sind alle
+Sätze richtig sortiert. Bei Bedarf kann der Vorgang durch SV und
+dann 'halt' abgebrochen werden. Die Datei bleibt dabei auf jeden
+Fall intakt.
+
+#on("b")#Optimierung#off("b")# Die gespeicherte Sortierreihenfolge wird auch
+noch zu
+einer weiteren Optimierung benutzt. Wenn eine Datei sortiert war
+und nur wenige Änderungen stattgefunden haben, brauchen beim
+nächsten Sortiervorgang nur die wenigen veränderten Sätze einzeln
+einsortiert zu werden. Das funktioniert natürlich nur unter der
+Voraussetzung, daß die gleiche Sortierreihenfolge gewählt wird. Das
+Sortieren braucht in diesem Fall erheblich weniger Zeit.
+
+#on("b")#Probleme#off("b")# Normalerweise werden die einzelnen Felder nach
+dem
+EUMEL-Zeichencode verglichen. Das bedeutet, daß sich die Reihen­
+folge der Zeichen nach dem EUMEL-Zeichencode richtet. Ein Zeichen
+mit einem höheren Code wird also vor einem Zeichen mit einem
+niedrigeren Code einsortiert.
+ In manchen Fällen ergeben sich mit diesem Vergleichsverfahren
+aber auch Schwierigkeiten. Wenn in einem Feld Zahlen oder DM-
+Beträge stehen, führt die Methode zu falschen Ergebnissen. Die '10'
+wird zum Beispiel vor der '2' einsortiert. Warum? Texte werden
+immer linksbündig geschrieben und verglichen. Bei Zahlen richtet
+sich die Wertigkeit jedoch nach dem Abstand vom Komma.
+ Da bei Texten zuerst das erste Zeichen verglichen wird, ent­
+steht hier durch Vergleich von '1' und '2' der Eindruck, die '10'
+käme vor der '2'. Korrigieren könnte man dies, indem man ein Leer­
+zeichen vor die '2' schreibt. Wenn also die (nicht geschriebenen)
+Dezimalkommata direkt untereinanderstehen, werden Zahlen richtig
+verglichen.
+
+#on("b")#Typ ZAHL#off("b")# EUDAS hat jedoch eine bequemere Art, dieses
+Problem zu
+behandeln. Ein Feld, das Zahlen enthalten soll, bekommt einen spe­
+ziellen Typ ZAHL zugewiesen, der zu einer richtigen Sortierung
+führt.
+ Bei Feldern vom Typ ZAHL ignoriert EUDAS bei Vergleichen alle
+nichtnumerischen Zeichen und vergleicht den Wert der Zahl. So
+können Sie zum Beispiel in einem Satz '2,50 DM' und im anderen
+Satz '10 DM' eintragen - EUDAS kann jetzt die richtige Reihenfolge
+feststellen.
+ Übrigens: falls Sie numerische Werte lieber mit einem Dezi­
+malpunkt statt einem Dezimalkomma schreiben, können Sie EUDAS
+das mit dem ELAN-Kommando
+
+
+ dezimalkomma (".")
+
+
+mitteilen. Wenn Sie ein solches Kommando eingeben wollen, können
+Sie im EUDAS-Menü ESC ESC drücken. In der Statuszeile erscheint
+dann die Aufforderung:
+
+
+ Gib Kommando:
+
+
+Hier können Sie wie im Editor oder im EUMEL-Monitor ein beliebiges
+Kommando eingeben und ausführen.
+ Die Normaleinstellung für das Dezimalkomma erreichen Sie
+wieder durch das Kommando
+
+
+ dezimalkomma (",")
+
+
+
+#on("b")#Typ ändern#off("b")# Die Feldtypen sind eine permanente Eigenschaft
+einer
+EUDAS-Datei. Beim Einrichten einer neuen Datei wird zunächst der
+Standardtyp für alle Felder genommen. Sie erhalten jedoch Gelegen­
+heit, abweichende Feldtypen zu vergeben, wenn Sie die Frage
+
+___________________________________________________________________________________________
+
+ Feldnamen oder Feldtypen ändern (j/n) ?
+___________________________________________________________________________________________
+
+
+bejahen.
+ Auch nachträglich können Sie die Feldtypen noch ändern. Dies
+geschieht mit der Funktion
+#free (0.2)#
+
+ F Feldstrukt.
+
+#free (0.2)#
+im Menü 'Öffnen'. Zunächst werden Sie gefragt, ob Sie noch weitere
+Feldnamen anfügen wollen. So könnten Sie die Datei um weitere
+Felder ergänzen, die bei allen Sätzen zunächst leer sind. Die neuen
+Felder müssen Sie wie beim Einrichten der Datei untereinander im
+Editor schreiben.
+ Als zweites erscheint dann die gleiche Frage wie oben. Wenn
+Sie diese bejahen, wird Ihnen eine Auswahl der zu ändernden Fel­
+der mit Feldnamen und den zugehörigen Feldtypen angeboten. Kreu­
+zen Sie hier die Felder an, deren Feldtypen Sie ändern möchten.
+ Da Sie mit dieser Funktion sowohl Feldnamen als auch Feld­
+typen verändern können, wird Ihnen für jedes Feld zunächst der
+Name zum Ändern angeboten. Sie können den Namen korrigieren oder
+überschreiben. Die Namensänderung hat jedoch keine Auswirkung
+auf den Feldinhalt!
+ Wenn Sie den Namen nicht ändern wollen, drücken Sie einfach
+RETURN. Anschließend können Sie für das Feld den neuen Feldtyp
+angeben. Tippen Sie einen der vier Feldtypen als Text ein und
+drücken Sie RETURN. Anschließend hat das Feld einen neuen Typ.
+Die verschiedenen möglichen Typen werden jetzt genau erklärt.
+
+#on("b")#Feldtypen#off("b")# TEXT ist der Standardtyp, der die Feldinhalte
+nach
+EUMEL-Zeichencode vergleicht. Den Typ ZAHL hatten wir schon
+weiter oben kennengelernt. Daneben gibt es noch den Typ DATUM.
+ Dieser Typ vergleicht Daten der Form 'tt.mm.jj'. Soll ein sol­
+ches Datum richtig einsortiert werden, müßte es anderenfalls in der
+Reihenfolge umgedreht werden (also 'jj.mm.tt'). Dies ist aber nicht
+nötig, wenn das Feld den Typ DATUM bekommt. Beachten Sie, daß
+alle Inhalte, die nicht die beschriebene Form haben, als gleich be­
+trachtet werden.
+ Der letzte Typ ist DIN. Dabei werden Texte nach DIN 5007 ver­
+glichen. Das bedeutet, daß Groß- und Kleinbuchstaben als gleich
+angesehen werden, daß alle nichtalphabetischen Zeichen ignoriert
+werden und die Umlaute ihren richtigen Platz bekommen (Umlaute
+werden in normalen Texten hinter allen anderen Zeichen einsor­
+tiert). Da hierfür ein relativ großer Zeitaufwand notwendig ist,
+sollte dieser Typ nur dann gewählt werden, wenn er erforderlich ist.
+Den schnellsten Vergleich ermöglicht der Typ TEXT.
+
+#on("b")#Hinweis#off("b")# Beachten Sie, daß mit der Vergabe von Feldtypen
+keine
+Überprüfung der Eingabe verbunden ist. Insbesondere beim Datum
+wird nicht geprüft, ob die Form 'tt.mm.jj' eingehalten wurde. Wollen
+Sie solche Überprüfungen vornehmen, lesen Sie bitte Abschnitt 11.3.
+
+
+11.2 Kopieren
+
+In diesem Abschnitt sollen Sie erfahren, wie Sie eine EUDAS-Datei
+#on("i")#kopieren#off("i")# können. Diese Funktion kann nicht nur ein inhaltsgleiches
+Duplikat einer EUDAS-Datei herstellen (dies könnten Sie einfacher
+durch eine logische Kopie bewerkstelligen, s. 16.1), sondern auch
+komplizierte Umstrukturierungen vornehmen.
+
+#on("b")#Kopiermuster#off("b")# Der Schlüssel zu dieser Leistungsfähigkeit
+ist das
+#on("i")#Kopiermuster#off("i")#. Wie beim Druckmuster legen Sie dadurch die genauen
+Auswirkungen der Funktion fest.
+ Für jedes Feld in der Zieldatei, in die kopiert werden soll,
+enthält das Kopiermuster die Angabe, woraus der Inhalt dieses
+Feldes entstehen soll. Durch Auswahl und Reihenfolge dieser Anga­
+ben bestimmen Sie die Struktur der Zieldatei.
+ Im einfachsten Fall sieht die Kopieranweisung für ein Feld wie
+folgt aus:
+
+
+ "Feldname" K f ("Feldname");
+
+
+Das 'K' dient zur Festlegung der Kopierfunktion. Auf der linken
+Seite steht in Anführungsstrichen der Name des Zielfeldes. Der
+Ausdruck auf der rechten Seite gibt den zukünftigen Inhalt des
+Feldes an. Der Ausdruck im obigen Beispiel steht einfach für den
+Inhalt des Feldes 'Feldname' in der aktuellen Datei. Das Semikolon
+am Ende dient zur Abgrenzung, da der ganze Ausdruck auch mehrere
+Zeilen lang sein darf.
+ In der oben genannten Form würde das Feld 'Feldname' iden­
+tisch in die Zieldatei kopiert. Weitere Möglichkeiten besprechen wir
+später.
+
+#on("b")#Feldreihenfolge#off("b")# Zunächst wollen wir uns damit befassen,
+wie Sie
+die Feldreihenfolge in der Zieldatei beeinflussen können. Dies ge­
+schieht einfach dadurch, daß Sie die Kopieranweisungen in der ge­
+wünschten Reihenfolge aufschreiben. Damit können wir bereits ein
+erstes komplettes Beispiel betrachten:
+
+
+ "Name" K f ("Name");
+ "Vorname" K f ("Vorname");
+ "PLZ" K f ("PLZ");
+ "Ort" K f ("Ort");
+ "Strasse" K f ("Strasse");
+ "m/w" K f ("m/w");
+
+
+Dieses Kopiermuster würde die bereits beschriebene Adressendatei
+identisch kopieren, da alle Felder in der gleichen Reihenfolge vor­
+kommen.
+ Wenn Sie jedoch die Feldreihenfolge ändern wollen (um zum
+Beispiel ein anderes Feld als erstes zu optimieren), brauchen Sie
+bloß die Reihenfolge im Kopiermuster zu verändern:
+
+
+ "Ort" K f ("Ort");
+ "Name" K f ("Name");
+ "Vorname" K f ("Vorname");
+ "PLZ" K f ("PLZ");
+ "Strasse" K f ("Strasse");
+ "m/w" K f ("m/w");
+
+
+Im Gegensatz zur Auswahl der Feldreihenfolge für die Anzeige än­
+dern Sie so die Feldreihenfolge für die Zieldatei permanent.
+
+#on("b")#Felder anfügen#off("b")# Die beiden angegebenen Kopiermuster haben
+jedoch
+nur dann die beschriebene Wirkung, wenn die Zieldatei noch nicht
+existert. Bei einer existierenden Datei kann die Feldreihenfolge
+nicht mehr geändert werden; daher hat die Reihenfolge der Kopier­
+anweisungen dann keine Wirkung.
+ Sie können jedoch zu einer existierenden Zieldatei noch Felder
+hinzufügen. EUDAS verwendet nämlich folgende einfache Vorschrift:
+
+#limit (12.0)#
+ Wenn als Zielfeld in einer Kopieranweisung ein Feld
+ genannt wird, das in der Zieldatei noch nicht vorkommt,
+ wird es als weiteres Feld der Zieldatei hinzugefügt.
+#limit (13.5)#
+
+Diese Strategie hat im Fall der nicht existierenden Datei zur Folge,
+daß alle Felder neu sind und in der Reihenfolge ihres Auftretens
+eingerichtet werden. Existiert die Datei schon, werden zusätzliche
+Felder am Ende angefügt.
+ Beachten Sie, daß zusätzliche Felder für eine existierende
+Datei nur in den neu hinzukopierten Sätzen gefüllt sind. In den
+alten Sätzen bleiben alle neuen Felder einfach leer.
+
+#on("b")#Satzauswahl#off("b")# An dieser Stelle sollte erwähnt werden, daß
+wie bei
+allen Funktionen, die die gesamte Datei betreffen, nur die durch die
+Suchbedingung ausgewählten Sätze kopiert werden. Ist mindestens
+ein Satz markiert, werden nur die markierten Sätze kopiert und die
+Suchbedingung ignoriert.
+
+#on("b")#Teildatei#off("b")# Jetzt können Sie auch die zweite wichtige
+Aufgabe des
+Kopierens verstehen. Sie können aus einer Datei einen Teil der
+Sätze und einen Teil der Felder #on("i")#herausziehen#off("i")#. Danach haben Sie
+unter Umständen eine wesentlich kleinere Datei, die sich auch
+schneller bearbeiten läßt. Gerade wenn Sie nicht den allerneuesten
+64-Bit-Supercomputer haben, können Sie so viel Zeit sparen, wenn
+Sie wiederholt nur mit einem Teil der Datei arbeiten müssen.
+ Die Auswahl der Sätze für einen solchen Zweck erfolgt über ein
+Suchmuster; im Kopiermuster geben Sie dann nur die gewünschten
+Felder an.
+
+#on("b")#Aufruf#off("b")# An dieser Stelle wollen wir jetzt endlich
+behandeln, wie
+Sie die Kopierfunktion aufrufen. Dazu gibt es die Auswahl
+#free (0.2)#
+
+ Satzauswahl
+ K Kopieren
+
+#free (0.2)#
+im Menü "Gesamtdatei". Als erstes werden Sie nach dem Namen der
+Zieldatei gefragt. Existiert die Zieldatei schon und war sie vorher
+sortiert, werden Sie gefragt, ob Sie die Datei zum Schluß wieder
+sortieren wollen. Wie immer beim Sortieren werden auch hier gege­
+benenfalls nur die neu hinzugekommenen Sätze einsortiert.
+ Als nächstes müssen Sie den Namen des Kopiermusters angeben.
+Da das Kopiermuster eine normale Textdatei ist, können Sie sich
+einen beliebigen Namen ausdenken, unter dem das Muster dann
+gespeichert wird.
+ Wollen Sie das Kopiermuster nicht aufbewahren, sondern nur
+einmal verwenden, brauchen Sie keinen Namen anzugeben. Drücken
+Sie einfach RETURN und für die Dauer des Kopierens wird das
+Kopiermuster als unbenannte Datei eingerichtet.
+ Nachdem Sie den Namen des Kopiermusters eingegeben haben,
+gelangen Sie in den Editor, wo Sie das Muster ändern können. Damit
+Sie beim ersten Mal nicht so viel tippen müssen, bietet EUDAS Ihnen
+bei einer neuen Musterdatei ein #on("i")#Standard-Kopiermuster#off("i")# zum Ändern
+an. Das Aussehen des Standard-Kopiermusters richtet sich danach,
+ob die Zieldatei schon existiert oder nicht.
+ Existiert die Zieldatei noch nicht, so werden im Standard-
+Kopiermuster alle Felder der Ausgangsdatei in ihrer originalen Rei­
+henfolge angegeben. Wenn Sie dieses Muster nicht noch ändern, wird
+die aktuelle Datei identisch kopiert.
+ Sie können jedoch die Feldreihenfolge verändern oder Felder
+weglassen, indem Sie einfach die entsprechenden Zeilen vertauschen
+oder löschen. Für Umbenennungen überschreiben Sie einfach den
+Namen auf der linken Seite der Kopieranweisung. So können Sie das
+Kopiermuster mit geringstem Aufwand erstellen.
+ Existiert die Zieldatei jedoch schon, werden Ihnen im Kopier­
+muster alle Felder der Zieldatei angeboten. Bei Feldern, die in der
+aktuellen Datei nicht vorkommen, erscheint folgende Anweisung:
+
+
+ "Anrede" K "";
+
+
+Obwohl die Anweisung in diesem Fall keine Wirkung hat (wenn man
+sie wegließe, würde das Feld ebenfalls leer bleiben), ist sie dennoch
+aufgeführt, damit Sie auf der rechten Seite einen entsprechenden
+Ausdruck einsetzen können.
+ Bei den angebotenen Anweisungen hat eine Änderung der Rei­
+henfolge oder eines Feldnamens keinen Sinn, da diese Felder ja alle
+bereits existieren. Jedoch können Sie die Ausdrücke auf der rechten
+Seite variieren und neue Anweisungen (Felder) hinzufügen.
+
+#on("b")#Ablauf#off("b")# Wenn Sie die Eingabe des Kopiermusters mit ESC 'q'
+verlas­
+sen, wird das Kopiermuster übersetzt. Dabei können Fehlermeldun­
+gen auftreten. Sie können dann die Fehler korrigieren, wobei Sie die
+Fehlermeldungen gleichzeitig auf dem Bildschirm sehen können. War
+das Kopiermuster korrekt, werden alle ausgewählten (bzw. markier­
+ten) Sätze der aktuellen Datei in die Zieldatei kopiert und diese
+anschließend gegebenenfalls noch sortiert.
+ Die kopierten Sätze werden jeweils am Ende der Zieldatei ange­
+fügt. War die Zieldatei vorher schon sortiert, können Sie angeben,
+daß die neuen Sätze zum Schluß noch einsortiert werden. Anderen­
+falls können Sie die Datei anschließend mit der Funktion 'Sortieren'
+sortieren.
+
+#on("b")#ELAN-Ausdrücke#off("b")# Wenn Sie schon einmal programmiert haben,
+wird
+Ihnen vielleicht aufgefallen sein, daß ein Kopiermuster einem
+ELAN-Programm verdächtig ähnlich sieht. Diese Vermutung trügt Sie
+nicht. Dies läßt den Schluß zu, daß Sie noch mehr ELAN hier an­
+bringen können.
+ Haben Sie noch nie programmiert, sollten Sie jetzt nicht in
+Panik geraten, denn das Wichtigste dieses Abschnitts haben Sie
+bereits gelernt. Vielleicht sind Ihnen die folgenden Beispiele bereits
+ganz nützlich. Um alle Möglichkeiten auszunutzen, sollten Sie sich
+aber irgendwann (später!) mit den Kapiteln 14 und 15 befassen, in
+denen Sie Genaueres erfahren.
+ Zunächst sei festgestellt, daß der rechte Teil einer Kopieran­
+weisung ein beliebiger ELAN-Ausdruck sein kann, der einen TEXT
+liefert. Den wichtigsten Ausdruck kennen Sie bereits:
+
+
+ f ("Feldname")
+
+
+liefert den Inhalt des Feldes 'Feldname' des aktuellen Satzes der
+aktuellen Datei. Gibt es das Feld nicht, erscheint eine Fehlermel­
+dung bei der Ausführung.
+ Sie können jedoch auch einen konstanten Text angeben, der
+dann für alle Sätze gleich ist. Dazu schließen Sie den Text einfach
+in Anführungsstriche ein. Die folgende Kopieranweisung dient dazu,
+ein neues Feld einzurichten, das aber vorläufig noch leer bleiben
+soll:
+
+
+ "Feldname" K "";
+
+
+Ebenso können Sie mehrere Felder zu einem neuen verbinden, zum
+Beispiel:
+
+
+ "Wohnort" K f ("PLZ") + " " + f ("Ort");
+
+
+Das Pluszeichen kennzeichnet die Aneinanderreihung von zwei Tex­
+ten. Denken Sie auch immer an das Semikolon am Ende. In gleicher
+Weise können Sie viele andere Textfunktionen verwenden, die in
+Kapitel 14 beschrieben sind.
+ Prinzipiell können Sie auch Bedingungen mit IF abfragen, wie
+zum Beispiel in der folgenden Übersetzung:
+
+
+ IF f ("m/w") = "w" THEN
+ "Anrede" K "Frau"
+ ELSE
+ "Anrede" K "Herr"
+ END IF;
+
+
+Auf diese Weise können Sie Kodierungen verschiedenster Art auto­
+matisch umsetzen. Sie müssen hierbei jedoch unbedingt darauf ach­
+ten, daß innerhalb der IF-Konstruktion immer eine Kopieranweisung
+ausgeführt wird. Falls nämlich kein Fall zutrifft und für ein Feld
+keine Kopieranweisung ausgeführt wird, wird das Feld bei einer
+neuen Datei auch nicht richtig eingerichtet.
+
+
+11.3 Tragen
+
+In Kapitel 6 hatten Sie gesehen, wie man einzelne Sätze aus der
+aktuellen Datei in eine andere trägt, und auch, wie man sie wieder
+zurückholen kann. Diese Funktion diente im wesentlichen dazu,
+nicht mehr benötigte Sätze zu entfernen.
+ Sie haben aber auch die Möglichkeit, eine ganze Reihe von
+Sätzen in einem Arbeitsgang zu tragen, nämlich alle durch das
+Suchmuster ausgewählten beziehungsweise alle markierten Sätze.
+Diese Funktion dient ebenfalls dazu, Sätze zu entfernen, beispiels­
+weise alle Sätze, die vor einem gewissen Stichtag liegen. Als wei­
+tere Anwendung können Sie beim Tragen aber auch Bedingungen
+überprüfen.
+ Diese #on("i")#Prüfbedingungen#off("i")# sollen sicherstellen, daß die Daten in
+einer Datei ganz bestimmten Richtlinien entsprechen. Zum Beispiel
+kann geprüft werden, ob ein eingegebenen Datum stimmen kann, ob
+ein Satz doppelt aufgenommen wurde oder ob eine Artikelnummer die
+richtige Anzahl von Stellen hat.
+ Die Prüfbedingungen werden einer Datei fest zugeordnet. Sie
+können mit der Funktion
+#free (0.2)#
+
+ P Prüfbed.
+
+#free (0.2)#
+im Menü 'Öffnen' eingegeben oder geändert werden. Die Prüfbedin­
+gungen werden als Text im Editor geschrieben.
+
+#on("b")#Ablauf#off("b")# Das ganze Verfahren läuft nun so ab: Sie fügen neue
+Sätze
+immer erst in eine Zwischendatei ein, die die gleiche Struktur wie
+die eigentliche Datei hat. Wenn Sie alle Sätze fertig eingegeben
+haben, tragen Sie diese Datei komplett in die gewünschte Datei.
+Dabei werden die Prüfbedingungen getestet.
+ Erfüllt ein Satz die Bedingungen, wird er anstandslos getragen.
+Trifft eine Bedingung aber nicht zu, bleibt der Satz in der Zwi­
+schendatei und eine entsprechende Meldung wird ausgegeben. Die
+Meldungen werden gespeichert, um Sie später nochmal abrufen zu
+können.
+ Sie müssen jetzt in der Zwischendatei die notwendigen Ände­
+rungen durchführen, damit die Prüfbedingungen erfüllt werden. Beim
+Aufruf der Funktion
+#free (0.2)#
+
+ A Ändern
+
+#free (0.2)#
+können Sie mit Hilfe der Tastenkombination ESC 'P' (großes P) die
+Datei mit den Fehlermeldungen in einem kleinen Teilfenster editie­
+ren. Anhand dieser Hinweise können Sie dann den Satz korrigieren.
+Die Meldungen bleiben bis zum nächsten Öffnen oder Tragen erhal­
+ten.
+ Nach der Korrektur können Sie den gleichen Vorgang erneut
+aufrufen - es sind ja nur noch die zuerst fehlerhaften Sätze in der
+Zwischendatei. Bei Bedarf können Sie diesen Vorgang wiederholen,
+bis alle Sätze korrekt übernommen worden sind.
+
+#on("b")#Aufruf#off("b")# Das Tragen wird aufgerufen durch die Funktion
+#free (0.2)#
+
+ Satzauswahl
+ T Tragen
+
+#free (0.2)#
+Nach Eingabe des Zieldateinamens müssen Sie noch angeben, ob Sie
+die Prüfbedingungen testen wollen.
+
+#on("b")#Prüfbedingungen#off("b")# Zu diskutieren bleibt noch die Form der
+Prüfbe­
+dingungen. Diese stellen ein kleines ELAN-Programm dar, in dem
+einige spezielle Prozeduren zum Prüfen enthalten sind. Wenn Sie
+nicht ELAN programmieren können, sollte Sie diese Bemerkung nicht
+erschrecken: die Prüfbedingungen sind einfach genug.
+ Sie schreiben also die Prüfbedingungen jeweils untereinander.
+Eine mögliche Bedingung ist
+
+
+ wertemenge ("Feldname", "Wert1,Wert2,Wert3,Wert4");
+
+
+Diese Bedingung gibt an, daß das Feld einen der angegebenen Werte
+haben muß. Die Werte werden untereinander durch Komma getrennt.
+Es gibt jedoch keine Möglichkeit, Werte mit Komma darzustellen, da
+das Komma immer als Trennung wirkt. Leerzeichen dürfen in den
+Werten vorkommen, sie müssen dann aber auch genau so im Feld
+stehen.
+ Wir könnten zum Beispiel eine Bedingung für unser Feld 'm/w'
+wie folgt formulieren
+
+
+ wertemenge ("m/w", "m,w");
+
+
+EUDAS würde sich dann beschweren, wenn das Feld leer wäre (ir­
+gendein Geschlecht muß die Person ja wohl haben). Wenn das Feld
+auch leer sein darf, geben Sie einfach zwei Kommata hintereinander
+oder ein Komma am Anfang an:
+
+
+ wertemenge ("m/w", ",m,w");
+
+
+Eine andere Möglichkeit der Prüfbedingung besteht darin, eine
+Maske für ein Feld zu definieren. Diese Maske gibt an, daß an be­
+stimmten Stellen des Feldes nur bestimmte Zeichen stehen dürfen.
+So könnte man zum Beispiel folgende Maske für ein Datumsfeld
+angeben:
+
+
+ feldmaske ("Datum", "99.99.99");
+
+
+Die Neunen haben hier eine spezielle Bedeutung und und stehen für
+eine beliebige Ziffer. Es gibt noch einige weitere Zeichen, die eine
+reservierte Bedeutung haben, nämlich:
+
+
+ '9' für jede Ziffer (wie schon erwähnt)
+ 'X' für jedes Zeichen
+ 'A' für jeden Großbuchstaben
+ 'a' für jeden Kleinbuchstaben
+ '*' für eine Folge beliebiger Zeichen
+
+
+Alle anderen Zeichen im Muster stehen für sich selbst. Eine Sonder­
+stellung besitzt der Stern; er sollte sparsam verwendet werden, da
+seine Benutzung etwas aufwendiger ist. Der Stern kann auch für
+eine leere Zeichenfolge stehen. Als weiteres Beispiel könnte man
+definieren
+
+
+ feldmaske ("Name", "A*");
+
+
+damit immer ein Name angegeben ist, der noch dazu mit einem Groß­
+buchstaben beginnt.
+ Für Bedingungen, die sich nicht mit diesen beiden Prozeduren
+formulieren lassen, gibt es noch
+
+
+ pruefe ("Feldname", Bedingung);
+
+
+Diese Prozedur erhält einen logischen (booleschen) Wert als Parame­
+ter, der einen Vergleich darstellt. Ist dieser Parameter falsch
+(FALSE), wird eine entsprechende Fehlermeldung protokolliert. So
+könnte man folgende Bedingung angeben:
+
+
+ pruefe ("Alter", wert ("Alter") > 18.0);
+
+
+Diese Bedingung würde sicherstellen, daß alle Personen in der Datei
+volljährig sind ('wert' ist eine von EUDAS definierte Funktion, die
+den Inhalt eines Feldes als REAL-Zahl liefert - denken Sie auch
+daran, daß der ELAN-Compiler Zahlen mit Dezimalpunkt geschrieben
+haben möchte).
+ Da die Prüfbedingungen ein ELAN-Programm sind, können Sie
+natürlich sämtliche ELAN-Anweisungen verwenden.
+ Weiterhin haben Sie die Möglichkeit, Doppeleinträge zu verhin­
+dern. Dazu geben Sie mit Hilfe der Prozedur
+
+
+ eindeutige felder (n);
+
+
+wieviele Felder vom ersten an eindeutig sein sollen. Ein zu tragen­
+der Satz, der mit irgendeinem anderen Satz in diesen Feldern über­
+einstimmt, wird als fehlerhaft zurückgewiesen. In unserer Adressen­
+datei könnte man
+
+
+ eindeutige felder (2);
+
+
+angeben. Damit würde ein neuer Satz mit bereits vorhandenem Na­
+men und Vornamen abgelehnt.
+
+#on("b")#Limit#off("b")# Aus technischen Gründen können die Prüfbedingungen
+einer
+Datei nur 2000 Zeichen umfassen. Wollen Sie aufwendigere Bedin­
+gungen konstruieren, sollten Sie sich diese als Prozedur definieren
+und insertieren. In den Prüfbedingungen müssen Sie dann nur diese
+Prozedur aufrufen.
+
+
+11.4 Automatische Änderungen
+
+Mit EUDAS können Sie die geöffnete Datei nicht nur satzweise von
+Hand ändern, sondern auch automatisch die ganze Datei. Dazu müs­
+sen Sie dem Rechner eine Vorschrift geben, nach der er handeln
+kann. Ein solches #on("i")#Änderungsmuster#off("i")# stellt im Prinzip schon ein klei­
+nes Programm dar. Der Änderungsvorgang wird durch die Auswahl
+#free (0.2)#
+
+ V Verändern
+
+#free (0.2)#
+aufgerufen. Dabei wird der Name des Änderungsmusters erfragt. Dies
+ist eine normale Textdatei. Existiert das Muster noch nicht, können
+Sie den Inhalt an dieser Stelle im Editor angeben. Anschließend
+werden alle ausgewählten Sätze nach der Vorschrift bearbeitet.
+Dabei wird jeweils die aktuelle Satznummer ausgegeben.
+
+#on("b")#Änderungsmuster#off("b")# Da auch ein Kopiermuster ein Programm ist,
+ist
+es nicht erstaunlich, daß Änderungsmuster ganz ähnlich aussehen.
+Eine typische Zeile sieht etwa so aus:
+
+
+ "Feldname" V "neuer Inhalt";
+
+
+Diese Zeile bedeutet: Ersetze den Inhalt des Feldes 'Feldname'
+durch den Text 'neuer Inhalt'. Anstelle des neuen Textes kann
+wieder ein beliebiger ELAN-Ausdruck stehen. Ein Beispiel, in dem
+ein Feld einen Stern angehängt bekommt, sieht dann so aus:
+
+
+ "Feldname" V f ("Feldname") + "*";
+
+
+Beachten Sie, daß Sie den Ausdruck auf der rechten Seite eventuell
+in Klammern setzen müssen (obwohl der Operator 'V' die niedrigste
+Priorität hat). Wenn Sie sich nicht sicher sind, können Sie den Aus­
+druck immer in Klammern einschließen.
+ Ebenso wie im Kopiermuster können Sie hier beliebige ELAN-
+Ausdrücke verwenden. Auch IF-Abfragen und ähnliche Konstruktio­
+nen sind möglich, im Gegensatz zum Kopiermuster sogar ohne Be­
+schränkungen.
+ Im Vergleich zu einem separat geschriebenen ELAN-Programm
+hat das Änderungsmuster den Vorteil, daß Sie nur die eigentlichen
+Veränderungsanweisungen kodieren müssen. Die wiederholte Anwen­
+dung auf die ausgewählten Sätze erledigt EUDAS automatisch. Wol­
+len Sie eine solche Änderungsanweisung fest insertieren, so brau­
+chen Sie das Muster nur in eine Prozedur zu verpacken und EUDAS
+zu übergeben (Näheres s. Referenzhandbuch).
+