#limit (11.0)##pagelength (16.5)##block# #start (2.0,0.0)# #page (31)# #headodd# #center#EUDAS#right#% #end# #headeven# %#center#EUDAS #end# #center#1 3 Das virtuelle Dateimodell 3.1 Dateistruktur Eine EUDAS-Datei hat folgende Bestandteile: - 0 bis 5000 #on("i")#Sätze#off("i")#, von 1 an durchnumeriert. Jeder Satz enthält für jedes Feld einen variabel langen Text als Inhalt, der standard­ mäßig leer ist. - 1 bis 256 #on("i")#Felder#off("i")#, die die Sätze aufteilen. Jedes Feld besitzt einen #on("i")#Feldnamen#off("i")# als Text und einen von vier #on("i")#Feldtypen#off("i")# (TEXT, ZAHL, DATUM oder DIN). Der Feldname dient zur Identifizierung des Feldes, der Feldtyp spezifiziert die Art der Behandlung beim Ver­ gleichen von Feldern. - Drei Zusatztexte. Der erste nimmt die #on("i")#Prüfbedingungen#off("i")# auf, der zweite speichert das Datum der letzten Veränderung und der dritte kann allgemeine #on("i")#Notizen#off("i")# aufnehmen. - Einen #on("i")#Satzzeiger#off("i")#, der einen bestimmten Satz als aktuellen Satz auszeichnet. Der Satzzeiger kann durch Positionierungsoperatio­ nen verändert werden. - Eine #on("i")#Sortierreihenfolge#off("i")#, die angibt, in welcher Feldreihenfolge die Datei zuletzt sortiert worden ist. Dazu für jeden Satz eine Anga­ be, ob er entsprechend dieser Reihenfolge an der richtigen Posi­ tion steht. - Eine interne Datenstruktur, die beschleunigten Zugriff auf eine Satz nach dem Inhalt des ersten Feldes ermöglicht. Diese Struktur steht ganz unter Kontrolle von EUDAS und kann nicht von außen manipuliert werden. 3.2 Öffnen #on("b")#Virtuelle Datei#off("b")# Die meisten EUDAS-Funktionen arbeiten nicht direkt auf einer EUDAS-Datei, sondern auf der sogenannten #on("i")#vir­ tuellen Datei#off("i")#, die aus mehreren realen Dateien bestehen kann. Die virtuelle Datei erscheint nach außen hin wie eine einzelne EUDAS-Datei. Die Operationen auf der virtuellen Datei werden je­ weils auf die einzelnen Bestandteile abgebildet. Damit eine EUDAS-Datei Bestandteil der virtuellen Datei wird, muß sie geöffnet werden. Dieses Öffnen kann auf dreierlei Art und Weise geschehen. Das Öffnen der ersten Datei stellt eine neue virtuelle Datei her. Die Feldnamen und Feldeigenschaften der ersten Datei werden in der virtuellen Datei übernommen. Dies ist der Normalfall, in dem sich die virtuelle Datei noch nicht von der zugrundeliegenden Datei unterscheidet. Bei diesem ersten Öffnen muß angegeben werden, ob die vir­ tuelle Datei verändert werden soll oder nicht. Falls die virtuelle Datei verändert werden soll, wird eine Arbeitskopie aller geöffneten Dateien angelegt. Die Ursprungsdateien können erst am Ende der Arbeit mit den geänderten Kopien überschrieben werden. #on("b")#Weitere Dateien#off("b")# Weitere Dateien können gekettet oder gekoppelt werden. Gekettete Dateien werden logisch an die zuerst geöffnete Datei angehängt. Ihre Dateistruktur wird ignoriert, sollte aber mit der ersten Datei übereinstimmen. Die Folge aneinander geketteter EUDAS-Dateien wird als #on("i")#Hauptdatei#off("i")# bezeichnet. In der Hauptdatei werden die Sätze von 1 an durchnumeriert; die Aufeinanderfolge der Sätze wird durch die Anordnung der Sätze in den einzelnen Dateien und die Reihenfolge bestimmt, in der die Dateien gekettet wurden. Die gekoppelten Dateien werden der Hauptdatei untergeordnet. Die in ihnen enthaltenen Informationen werden nur angezeigt, wenn sie mit einem Satzinhalt der Hauptdatei korrespondieren. Der Mechanismus dieser Satzkopplung wird im nächsten Abschnitt beschrieben. #free (8.0)# #center#Abb. 3-1 Schematischer Aufbau der virtuellen Datei 3.3 Koppeln Die Sätze der gekoppelten Dateien werden in Relation zu den Sätzen in der Hauptdatei gesetzt. Zu jedem Satz in der Hauptdatei kann eine Anzahl von Sätzen aus jeder Koppeldatei gehören. Diese Sätze müssen in den Inhalten der sogenannten #on("i")#Koppelfelder#off("i")# über­ einstimmen. Welche Felder Koppelfelder sind, richtet sich nach den Feld­ namen. Die ersten Felder der Koppeldatei, die auch in der Haupt­ datei vorhanden sind, werden als Koppelfelder betrachtet. Die Kop­ pelfelder müssen also bei der Koppeldatei am Anfang stehen - in der Hauptdatei kann jedes beliebige Feld ein Koppelfeld sein. Wenn eine Datei zur virtuellen Datei gekoppelt wird, werden alle Felder, die nicht Koppelfelder sind, in die virtuelle Datei auf­ genommen. Die Koppelfelder brauchen nicht noch mal wiederholt zu werden, da ihr Inhalt ja immer identisch ist. Zu beachten ist, daß bei diesem Verfahren auch Namenskonflik­ te entstehen können, wenn nach den Koppelfeldern später wieder ein Feldname vorkommt, der auch in der Hauptdatei vorhanden ist. In den Fällen, in denen Felder durch ihren Namen angesprochen werden, ist dann das zweite Feld gleichen Namens nicht verfügbar. #free (7.0)# #center#Abb. 3-2 Schema des Koppelvorgangs #on("b")#Kombinationen#off("b")# Beim Vorwärtsgehen in der virtuellen Datei werden zu jedem Satz der Hauptdatei nacheinander alle möglichen Kombina­ tionen der zugehörigen Koppelsätze angezeigt, denn es können mehrere passende Koppelsätze vorhanden sein. Die Satznummer bleibt dabei gleich; die einzelnen Kombinationen werden von 1 an durchgezählt. Beim Rückwärtsgehen wird aus technischen Gründen immer nur die erste Kombination angezeigt. Existiert zu einem Satz kein passender Koppelsatz, so bleiben die entsprechenden Felder leer. Die Koppelsätze müssen in der ganzen Koppeldatei gesucht werden, daher ist bei großen Koppel­ dateien die Suchzeit zu berücksichtigen. 3.4 Änderungen In der virtuellen Datei kann auch geändert werden. Dabei ist jedoch Vorsicht angebracht. Es muß festgelegt sein, wie Änderungen der einzelnen Felder auf die beteiligten Dateien abgebildet werden. Falls die virtuelle Datei keine Koppeldateien enthält, werden Änderungen am aktuellen Satz an der zugehörigen Datei durchge­ führt. Das Löschen eines Satzes wird auch direkt in der Datei durchgeführt. Ein neuer Satz wird immer in der Datei eingefügt, zu der der aktuelle Satz gehört - am Ende der ersten Datei kann also kein Satz eingefügt werden, wenn noch weitere Dateien folgen. Enthält die virtuelle Datei Koppeldateien, werden die Änderun­ gen in der Hauptdatei wie oben beschrieben durchgeführt. Änderun­ gen, die Felder in den Koppeldateien betreffen, werden nach folgen­ der Entscheidungstabelle behandelt: 1 2 3 4 5 --------------- Koppelfelder verändert N J J N N Übrige Felder verändert N - - J J Übrige Felder leer - J N - N Vorher Koppelsatz vorhanden - - - J N --------------- Neuen Satz einfügen x x Koppelsatz ändern x Kopplung aktualisieren x Fall 1: Es wurden keine Veränderungen an den Feldern des Kop­ pelsatzes vorgenommen, daher ist auch keine Aktion not­ wendig. Fall 2: Eines der Koppelfelder wurde verändert. Die Änderung wird in der Hauptdatei durchgeführt. Die übrigen Felder des Koppelsatzes sind jedoch als leer angegeben. In diesem Fall wird der Koppelsatz nicht verändert, sondern nur eine neue Korrespondenz gesucht. Fall 3: Eines der Koppelfelder wurde verändert, gleichzeitig ent­ halten aber auch die anderen Felder Informationen. In diesem Fall wird ein neuer Satz in der Koppeldatei ange­ fügt, der die neuen Inhalte enthält. So wird vermieden, daß an anderer Stelle plötzlich kein passender Koppelsatz mehr vorhanden ist. Fall 4: Nur Felder der Koppeldatei, die nicht Koppelfelder sind, wurden verändert, außerdem existierte ein korrespondie­ render Satz in der Koppeldatei. In diesem Fall werden die Informationen im Koppelsatz abgeändert. Fall 5: Wie 4, nur war vorher noch kein Koppelsatz vorhanden (Felder waren leer). In diesem Fall muß ein neuer Satz in die Koppeldatei eingefügt werden. Einfügungen in die Koppeldatei geschehen immer am Dateiende. #on("b")#Einfügen/Löschen#off("b")# Beim Löschen eines Satzes der virtuellen Datei durch Tragen bleiben die Koppeldateien unverändert. Nach dem Einfügen eines neuen Satzes wird nur dann ein Satz in einer Kop­ peldatei eingefügt, wenn dieser Satz nicht nur Koppelfelder enthal­ ten würde. Falls beim Einfügen nur die Koppelfelder angegeben werden, wird ein korrespondierender Satz in der Koppeldatei ge­ sucht. Vergleichen Sie hierzu die Regeln beim Ändern. 3.5 Sichern Falls Änderungen der virtuellen Datei erlaubt sind, arbeitet EUDAS immer auf Sicherheitskopien der beteiligten Dateien. Eine Datei, die wirklich verändert wurde, muß vor dem Aufbau einer neuen virtuel­ len Datei gesichert oder explizit gelöscht werden. Für jede einzelne Datei kann festgelegt werden, ob sie gesi­ chert werden soll oder nicht. Als Hilfe wird dazu für jede Datei angegeben, ob sie tatsächlich verändert wurde oder nicht. Die Arbeitskopie kann beim Sichern die alte Version überschreiben oder unter einem neuen Namen gesichert werden. Am Ende des Sicherns können die Arbeitskopien gelöscht wer­ den. Anderenfalls werden die Dateien so betrachtet, als ob sie di­ rekt nach dem Sichern wieder geöffnet worden wären und stehen weiterhin zur Verfügung. Falls alle Dateien entweder gesichert oder nicht verändert sind, werden beim nächsten Öffnen einer neuen virtuellen Datei die vorherigen Arbeitskopien gelöscht. 3.6 Umschalten auf Koppeldatei Falls eine Datei gekoppelt ist, kann man die virtuelle Datei auf diese Koppeldatei umschalten. Dadurch verhält sich die virtuelle Datei so, als ob nur diese Koppeldatei geöffnet wäre. Die Einstel­ lungen der Hauptdatei wie Markierungen und Suchbedingung bleiben jedoch erhalten und stehen beim Zurückschalten wieder zur Verfü­ gung. Die Satzposition der Koppeldatei beim letzten Umschalten wird ebenfalls gespeichert und wird beim nächsten Umschalten wieder eingenommen, unabhängig von der tatsächlichen Satzposition der Koppeldatei zu diesem Zeitpunkt. Für die Koppeldatei können eigene Markierungen vergeben werden, die auch nach dem Umschalten gespeichert bleiben. Auch ein Suchmuster kann für die Koppeldatei eingestellt werden, dies geht jedoch beim Zurückschalten wieder verloren. Die eingestellte Feldauswahl für die Bildschirmanzeige geht leider bei jedem Um­ schalten verloren. Das Umschalten kann entweder im Menü 'Einzelsatz' oder beim Einfügen und Ändern durch ESC 'K' bewirkt werden, ebenso das Zurückschalten nur im Menü 'Einzelsatz'. Beim Umschalten aus Ein­ fügen oder Ändern erfolgt beim Zurückschalten eine Rückkehr in diesen Zustand. Dabei können nach Anfrage die Koppelfelder des aktuellen Satzes der Koppeldatei in die Hauptdatei übernommen und damit eine bestimmte Kopplung bewirkt werden. 3.7 Mehrbenutzerbetrieb Durch Einstellen einer Managertask für den Mehrbenutzerbetrieb können auch Dateien dieser Managertask beim Öffnen direkt ver­ wendet werden. Die Datei wird automatisch aus der Managertask kopiert und geöffnet. Falls die Datei geändert werden soll, wird eine Sperre in der Managertask gesetzt, die verhindert, daß auch ein anderer Benutzer diese Datei zum Ändern öffnet. Beim Sichern erfolgt dann ein Rück­ schreiben der Arbeitskopie. Die Sperre wird jedoch erst dann zu­ rückgesetzt, wenn alle Arbeitskopien gelöscht werden, da erst dann keine Möglichkeit des Rückschreibens mehr besteht. Alle Dateien der Managertask werden bei der Dateiauswahl zum Öffnen mit angeboten. Falls eine Datei in beiden Tasks existiert, wird die Datei in der Managertask genommen, die Datei der eigenen Task jedoch erst nach Anfrage überschrieben. Damit die Sperre funktionieren kann, muß EUDAS in der Mana­ gertask zur Verfügung stehen und die Task muß #on("i")#nach#off("i")# dem Insertie­ ren von EUDAS als 'global manager' definiert werden (nicht 'free global manager' verwenden).