diff options
Diffstat (limited to 'doc/eudas/eudas.hdb.11')
-rw-r--r-- | doc/eudas/eudas.hdb.11 | 674 |
1 files changed, 0 insertions, 674 deletions
diff --git a/doc/eudas/eudas.hdb.11 b/doc/eudas/eudas.hdb.11 deleted file mode 100644 index 6a59847..0000000 --- a/doc/eudas/eudas.hdb.11 +++ /dev/null @@ -1,674 +0,0 @@ -#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). - |