From 04e68443040c7abad84d66477e98f93bed701760 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 4 Feb 2019 13:09:03 +0100 Subject: Initial import --- app/eudas/4.3/doc/eudas.ref.6 | 399 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 399 insertions(+) create mode 100644 app/eudas/4.3/doc/eudas.ref.6 (limited to 'app/eudas/4.3/doc/eudas.ref.6') diff --git a/app/eudas/4.3/doc/eudas.ref.6 b/app/eudas/4.3/doc/eudas.ref.6 new file mode 100644 index 0000000..7c8ada6 --- /dev/null +++ b/app/eudas/4.3/doc/eudas.ref.6 @@ -0,0 +1,399 @@ +#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 + -- cgit v1.2.3