diff options
Diffstat (limited to 'doc/eudas/eudas.ref.6')
-rw-r--r-- | doc/eudas/eudas.ref.6 | 399 |
1 files changed, 0 insertions, 399 deletions
diff --git a/doc/eudas/eudas.ref.6 b/doc/eudas/eudas.ref.6 deleted file mode 100644 index 7c8ada6..0000000 --- a/doc/eudas/eudas.ref.6 +++ /dev/null @@ -1,399 +0,0 @@ -#limit (11.0)##pagelength (16.5)##block# -#start (2.0,0.0)# -#page (61)# -#headodd# -#center#EUDAS#right#% - -#end# -#headeven# -%#center#EUDAS - -#end# -#center#1 - -6 Struktur von EUDAS-Dateien - - - -EUDAS-Dateien können unabhängig von EUDAS über den Daten -typ EUDAT manipuliert werden. Die zur Verfügung stehenden Zu -griffsoperationen sind in diesem Kapitel beschrieben. - Der Datentyp EUDAT ist analog zum Datentyp FILE. Jede -EUDAT-Variable kann an eine EUDAS-Datei angekoppelt werden. -Dadurch lassen sich beliebig viele EUDAS-Dateien gleichzeitig be -arbeiten. Wie der Abschnitt 6.6 zeigt, sind so auch ganz andere -Anwendungen realisierbar. - Die wesentlichen EUDAS-Funktionen (Ansehen, Suchen, Druk -ken) können jedoch nicht direkt auf EUDAT-Variablen angewendet -werden, sondern greifen auf die virtuelle Datei zu, die im nächsten -Kapitel beschreiben wird. - - -6.1 Der Datentyp SATZ - -Der Datentyp SATZ stellt einen einzelnen EUDAS-Satz dar, der -intern als TEXT realisiert ist. Ein SATZ besteht aus bis zu 256 -Feldern, die jeweils einen TEXT enthalten können. Nach dem Initi -alisieren sind alle Felder mit "" vorbelegt. Die Felder können über -Nummern von 1 bis 256 angesprochen werden. - Damit kann man sich einen SATZ als dynamisches ROW n TEXT -vorstellen, das bis zu 256 Elemente haben kann. Anders als ein -entsprechendes ROW belegt ein leerer SATZ praktisch keinen Spei -cherplatz. - Folgende Zugriffsprozeduren stehen zur Verfügung: - -TYPE SATZ - -OP := (SATZ VAR, SATZ CONST) - -PROC satz initialisieren (SATZ VAR) - Jeder SATZ muß vor Benutzung initialisiert werden. - -INT PROC felderzahl (SATZ CONST) - Liefert die Nummer des höchsten belegten Feldes. - -PROC feld lesen (SATZ CONST, INT CONST feldnr, - TEXT VAR inhalt) - Liest den Inhalt des Feldes 'feldnr' in 'inhalt'. - - FEHLER: - - #on("i")#n ist keine Feldnummer#off("i")# - 'n' liegt außerhalb des Bereiches 1..256. - -PROC feld bearbeiten (SATZ CONST, INT CONST feldnr, - PROC (TEXT CONST, INT CONST, INT CONST) bearbeite) - Ruft 'bearbeite' auf, wobei 'bearbeite' ein Text und zwei Posi - tionen in diesem Text übergeben werden. Die Positionen geben - das erste und das letzte Zeichen des durch 'feldnr' ausgewähl - ten Feldes an. Ist der Anfang größer als das Ende, so ist das - Feld leer. - - FEHLER: - - #on("i")#n ist keine Feldnummer#off("i")# - 'n' liegt außerhalb des Bereiches 1..256. - -PROC feld aendern (SATZ VAR, INT CONST feldnr, - TEXT CONST inhalt) - Schreibt 'inhalt' in das Feld mit der Nummer 'feldnr' - - FEHLER: - - #on("i")#n ist keine Feldnummer#off("i")# - 'n' liegt außerhalb des Bereiches 1..256. - -INT PROC feldindex (SATZ CONST, TEXT CONST muster) - Falls eines der Felder 'muster' enthält, wird die Nummer dieses - Feldes geliefert, sonst 0. - - -6.2 Der Datentyp EUDAT - -Der Datentyp EUDAT muß ähnlich wie ein FILE an einen benann -ten oder unbenannten Datenraum angekoppelt werden. Der Daten -raum hat anschließend den Typ 3243. Weitere Zugriffe auf eine -EUDAT-Variable sind erst nach erfolgtem Ankoppeln zulässig. An -derenfalls können undefinierte Fehler entstehen. - -TYPE EUDAT - -PROC oeffne (EUDAT VAR, TEXT CONST dateiname) - Koppelt die EUDAT-Variable an die EUDAS-Datei mit dem - Namen 'dateiname' an. Die Datei wird eingerichtet, falls sie - noch nicht existiert. - - FEHLER: - - #on("i")#Datei ist keine EUDAS-Datei#off("i")# - Die angegebene Datei hat nicht den Typ 3243. - -PROC oeffne (EUDAT VAR, DATASPACE CONST ds) - Koppelt die EUDAT-Variable an den Datenraum 'ds'. - - FEHLER: - - #on("i")#Datei ist keine EUDAS-Datei#off("i")# - Der Datenraum wurde bereits verwendet und hat nicht den Typ - 3243. - -Eine EUDAS-Datei ist in Felder und Sätze unterteilt. Die Felder -werden beim Zugriff über Nummern angesprochen. Jedem Feld ist -jedoch zur Identifikation ein TEXT als Feldname zugeordnet. Die -Feldnamen werden als SATZ gespeichert, wobei jedes Feld seinen -zugeordneten Namen enthält. - -INT PROC felderzahl (EUDAT CONST) - Liefert Anzahl der benannten Felder. Ist zu Anfang 0. - -PROC feldnamen aendern (EUDAT VAR, - SATZ CONST neue namen) - Setzt die Feldnamen einer Datei. Ist 'felderzahl (neue namen)' - größer als die Felderzahl der Datei, so wird die Felderzahl der - Datei entsprechend heraufgesetzt. - -PROC feldnamen lesen (EUDAT CONST, SATZ VAR namen) - Liefert alle Feldnamen in einer SATZ-Variablen. - -Eine EUDAS-Datei enthält drei zusätzliche Notiztexte. Zwei davon -sind bereits reserviert, und zwar: -#free (0.2)# - 1: Prüfbedingungen - 2: Datum der letzten Änderung - -Der dritte kann für freie Notizen verwendet werden. - -PROC notizen lesen (EUDAT CONST, INT CONST notiz nr, - TEXT VAR notizen) - Schreibt die Notizen der EUDAS-Datei in 'notizen' ('notiz nr' = - 1,2,3). - -PROC notizen aendern (EUDAT VAR, INT CONST notiz nr, - TEXT CONST notizen) - Ändert die Notizen. Alte Notizen werden dabei überschrieben - ('notiz nr' = 1,2,3). - - -6.3 Satzposition - -Eine EUDAS-Datei läßt sich sequentiell vorwärts und rückwärts -bearbeiten. Dazu gibt es eine aktuelle Satzposition. Ein bestimmter -Satz kann auch direkt angesprungen werden. Die Prozeduren, die -nach dem Inhalt des ersten Feldes suchen, arbeiten besonders -schnell, da die entsprechenden Sätze über eine Hashmethode gefun -den werden. - -INT PROC satznr (EUDAT CONST) - Liefert aktuelle Satzposition. - -INT PROC saetze (EUDAT CONST) - Liefert Anzahl der Sätze. - -BOOL PROC dateiende (EUDAT CONST) - Liefert TRUE, wenn 'satznr' groesser als 'saetze' ist. Die letzte - erreichbare Satzposition liegt um eins hinter dem letzten Satz - (um auch am Ende anfügen zu können). - -PROC auf satz (EUDAT VAR, INT CONST satznr) - Positioniert auf den gewünschten Satz. Bei nicht existierenden - Sätzen wird auf den ersten bzw. hinter den letzten Satz ge - sprungen. - -PROC weiter (EUDAT VAR) - Geht einen Satz weiter, jedoch nicht über das Dateiende hinaus. - -PROC zurueck (EUDAT VAR) - Geht einen Satz zurück, falls der erste Satz noch nicht erreicht - ist. - -PROC auf satz (EUDAT VAR, TEXT CONST muster) - Positioniert auf den ersten Satz, der als erstes Feld 'muster' - enthält, anderenfalls hinter den letzten Satz. - -PROC weiter (EUDAT VAR, TEXT CONST muster) - Geht weiter, bis das erste Feld 'muster' enthält, bzw. bis hinter - den letzten Satz. - -PROC zurueck (EUDAT VAR, TEXT CONST muster) - Geht zurück, bis das erste Feld 'muster' enthält, bzw. auf den - ersten Satz der EUDAS-Datei. - - -6.4 Satzzugriffe - -Der aktuelle Satz ist ein SATZ-Objekt. Auf die Felder des aktuellen -Satzes kann direkt zugegriffen werden. - -PROC feld lesen (EUDAT CONST, INT CONST feldnr, - TEXT VAR inhalt) - Wirkt wie 'feld lesen' auf den aktuellen Satz. - -PROC feld aendern (EUDAT VAR, INT CONST feldnr, - TEXT CONST inhalt) - Wirkt wie 'feld aendern' auf den aktuellen Satz. - -PROC feld bearbeiten (EUDAT CONST, INT CONST feldnr, - PROC (TEXT CONST, INT CONST, INT CONST) bearbeite) - Wirkt wie 'feld bearbeiten' auf den aktuellen Satz. - -Der aktuelle Satz kann auch als Ganzes bearbeitet werden. - -PROC satz lesen (EUDAT CONST, SATZ VAR satz) - Liefert den aktuellen Satz. - -PROC satz aendern (EUDAT VAR, SATZ CONST satz) - Ersetzt den aktuellen Satz durch 'satz'. - -PROC satz einfuegen (EUDAT VAR, SATZ CONST satz) - Fügt 'satz' vor dem aktuellen Satz ein. - - FEHLER: - - #on("i")#EUDAS-Datei voll#off("i")# - Eine EUDAS-Datei faßt mindestens 5000 Sätze. - -PROC satz loeschen (EUDAT VAR) - Löscht den aktuellen Satz. - - -6.5 Sortieren und Reorganisieren - -Zum Sortieren können für die einzelnen Felder Typen angegeben -werden, damit auch Zahlen und Daten richtig sortiert werden kön -nen. Außerdem kann die Feldreihenfolge angegeben werden, nach -der sortiert werden soll. - -PROC feldinfo (EUDAT VAR, INT CONST feldnr, info) - Setzt den Feldtyp des Feldes 'feldnr'. Es bedeuten - -1 : normaler Text (Standard) - 0 : Text nach DIN. Ziffern und Sonderzeichen werden igno - riert. Groß-und Kleinbuchstaben gelten gleich. Umlaute - werden beachtet. - 1 : Zahl (beim Vergleich werden alle Zeichen außer Zif - fern ignoriert). - 2 : Datum. Es werden Daten der Form "tt.mm.jj" vergli - chen. - -INT PROC feldinfo (EUDAT CONST, INT CONST feldnr) - Der Feldtyp des angegebenen Feldes wird geliefert. Zu Anfang - ist -1 voreingestellt. - -INT PROC unsortierte saetze (EUDAT CONST) - Liefert die Anzahl von Sätzen, die seit dem letzten Sortiervor - gang geändert wurden. Bei einer neuen Datei, die noch nie - sortiert wurde, wird immer 0 geliefert. - -PROC dezimalkomma (TEXT CONST komma) - Stellt das Dezimalkomma ein, das beim Vergleich von Zahlen - gelten soll. - - FEHLER: - - #on("i")#Nicht erlaubtes Dezimalkomma#off("i")# - Nur Texte der Länge 1 sind zugelassen. - -TEXT PROC dezimalkomma - Liefert das eingestellte Dezimalkomma ("," ist voreingestellt). - -PROC sortiere (EUDAT VAR, TEXT CONST reihenfolge) - Sortiert die Datei in der von 'reihenfolge' angegebenen Reihen - folge. Dabei enthält 'reihenfolge' an der Stelle 2*i+1 den Code - der Feldnummer, die als i-te in der Sortierung berücksichtigt - werden soll. Das Zeichen an der Stelle 2*i gibt an, ob das Feld - mit der davorstehenden Feldnummer aufsteigend ('+') oder - absteigend ('-') sortiert werden soll. - -PROC sortiere (EUDAT VAR) - Sortiert die Datei in der zuletzt eingestellten Reihenfolge. - Wurde noch keine Reihenfolge angegeben, wird die Datei in der - Feldreihenfolge sortiert. - -TEXT PROC sortierreihenfolge (EUDAT CONST) - Liefert die zuletzt eingestellte Reihenfolge. Wurde noch nicht - sortiert, so wird "" geliefert. - -Nach umfangreichen Änderungen an einer EUDAS-Datei ist eine -Reorganisation sinnvoll, um "Textleichen" zu beseitigen. - -PROC reorganisiere (TEXT CONST dateiname) - Die EUDAS-Datei mit dem Namen 'dateiname' wird reorgani - siert. - - -6.6 EUDAS-Dateien als Assoziativspeicher - -In diesem Abschnitt soll ein Beispiel erläutert werden, in dem -EUDAS-Dateien unabhängig von EUDAS für einen ganz anderen -Zweck benutzt werden. Das folgende kurze Paket soll ein Abkür -zungsverzeichnis realisieren, das auf einer EUDAS-Datei basiert. - - - PACKET abkuerzungsverzeichnis - DEFINES - verzeichnis laden, - abkuerzung einfuegen, - abkuerzung aendern, - abkuerzung loeschen, - langform : - - EUDAT VAR verz; - SATZ VAR satz; - TEXT VAR inhalt; - - PROC verzeichnis laden (TEXT CONST dateiname) : - - oeffne (verz, dateiname) - - END PROC verzeichnis laden; - - PROC abkuerzung einfuegen (TEXT CONST abk, lang) : - - auf satz (verz, abk); - IF NOT dateiende (verz) THEN - errorstop ("Abkürzung existiert bereits") - ELSE - satz initialisieren (satz); - feld aendern (satz, 1, abk); - feld aendern (satz, 2, lang); - satz einfuegen (satz) - END IF - - END PROC abkuerzung einfuegen; - - PROC abkuerzung aendern (TEXT CONST abk, lang) : - - auf satz (verz, abk); - IF dateiende (verz) THEN - errorstop ("Abkürzung existiert nicht") - ELSE - feld aendern (verz, 2, lang) - END IF - - END PROC abkuerzung aendern; - - PROC abkuerzung loeschen (TEXT CONST abk) : - - auf satz (verz, abk); - IF NOT dateiende (verz) THEN - satz loeschen (verz) - END IF - - END PROC abkuerzung loeschen; - - TEXT PROC langform (TEXT CONST abk) : - - auf satz (verz, abk); - IF dateiende (verz) THEN - inhalt := ""; - errorstop ("Abkürzung nicht vorhanden") - ELSE - feld lesen (verz, 2, inhalt) - END IF; - inhalt - - END PROC langform; - - END PACKET abkuerzungsverzeichnis; - - -Die Prozedur 'verzeichnis laden' koppelt die interne EUDAT-Vari -able 'verz' an eine benannte EUDAS-Datei, die eventuell vorher mit -EUDAS erstellt wurde. In diesem Beispiel sind die Feldnamen egal; -falls die übergebene EUDAS-Datei noch nicht existiert, wird sie mit -0 Feldern eingerichtet, was aber nur für eine spätere Anzeige mit -EUDAS störend wäre. - Grundlage für das Aufsuchen einer bestimmten Abkürzung bil -det immer die Prozedur 'auf satz', die nach dem Inhalt des ersten -Feldes optimiert sucht. Falls die Abkürzung nicht gefunden wurde, -wird auf das Dateiende positioniert, daher wird jeweils 'dateiende' -abgefragt. - Beim Einfügen eines neuen Satzes muß eine komplette Satz -variable angegeben werden, die bereits mit den Inhalten gefüllt ist. -Beim späteren Ändern kann jedoch direkt auf ein Feld zugegriffen -werden, ohne die Satzvariable explizit rauszuholen. - Die Abfrage einer bestimmten Abkürzung bereitet dann keine -Schwierigkeiten mehr. - Für die Verwendung von EUDAS-Dateien in diesem Beispiel -spricht zum einen die einfache Programmierung, zum anderen aber -auch die Möglichkeit, das erstellte Verzeichnis mit den Hilfsmitteln - |