Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

ISAM-Dateien

&pagelevel(4)&pagelevel

Beim Zugriff auf eine existierende ISAM-Datei wird die Spezifikation eines Druckvorschubsteuerzeichens im Katalog ignoriert. Ebenso wird bei ISAM-Dateien mit variabler Satzlänge die explizite Angabe einer Satzlänge im Katalog ignoriert.

Beim Schreiben in eine neue ISAM-Datei wird diese normalerweise mit den folgenden Standard-Attributen angelegt:

  • variable Satzlänge ohne Satzlängenangabe,

  • Schlüssel-Position 5,

  • Schlüssellänge 16 bei Dateien mit dem Zeichensatz UTF16 oder Schlüssellänge 8 bei Dateien mit anderem Zeichensatz und

  • Blockgröße 2 für Dateien auf NK4-Platten oder Blockgröße 1 sonst. Falls zum Zeitpunkt des Öffnens der Datei der längste Satz, der in die Datei geschrieben werden soll, nicht in diese Blockgröße passt, wird eine höhere Blockgröße (maximal 16) verwendet.

Beim Schreiben sind standardmäßig keine Mehrfachschlüssel erlaubt.
Sollen die Attribute neuer Dateien von diesem Standard abweichen, müssen die Dateiattribute und ein Dateikettungsname vor dem Schreiben in der Task File Table abgelegt sein und das Schreiben muss mit diesem Dateikettungsnamen erfolgen.
Es werden allerdings nur die im Abschnitt „Dateikettungsnamen“ beschriebenen Attribute ausgewertet.

Im Normalfall werden vom EDT zu bearbeitende Dateien (ganz oder teilweise) in Arbeitsdateien eingelesen. Daneben gibt es auch die Möglichkeit, ISAM-Dateien direkt auf der Platte zu bearbeiten (reale Bearbeitung). Das ist nur in Arbeitsdatei 0 möglich.

Der Dateiname in den EDT-Anweisungen muss den Anforderungen des BS2000 Datenverwaltungssytems genügen. Der EDT prüft, ob ein Dateiname gültig ist.

Sätze, die nur aus dem ISAM-Schlüssel bestehen, können vom EDT bearbeitet werden.

Bei der Bearbeitung von ISAM-Dateien kann der ISAM-Schlüssel beim Einlesen als Zeilennummer übernommen werden, in den Datenbereich der Arbeitsdatei (als Zeileninhalt) eingelesen werden oder ganz ignoriert werden.

Beim Schreiben kann der ISAM-Schlüssel aus der Zeilennummer gebildet oder aus dem Datenbereich übernommen werden.
Wenn der ISAM-Schlüssel erhalten bleiben soll, muss er also vorher als Zeilennummer oder in den Datenbereich übernommen werden und darf nicht durch EDT-Anweisungen geändert werden.

Wird der ISAM-Schlüssel beim Einlesen als Zeilennummer übernommen, muss er numerisch sein (jedes der 8 Zeichen des Schlüssels ist aus dem Bereich 0..9) und der Schlüssel 00000000 darf nicht vorkommen.

Hat die Datei eine kürzere Schlüssellänge als 8 (bzw. 16 bei UTF16-Dateien) und wird die Zeilennummer aus dem ISAM-Schlüssel gebildet, dann wird diese von links mit Nullen aufgefüllt. Beispielsweise wird bei einer KEY-LENGTH-Angabe von 4 der ISAM-Schlüssel 1234 als Zeilennummer 0000.1234 übernommen.

Hat die Datei eine kürzere Schlüssellänge als 8 (bzw. 16 bei UTF16-Dateien) und wird der ISAM-Schlüssel aus der Zeilennummer gebildet, so wird diese von links her verkürzt. Beispielsweise wird bei einer KEY-LENGTH-Angabe von 4 die Zeilennummer 1234.5678 als ISAM-Schlüssel 5678 geschrieben. Die Eindeutigkeit eines ISAM-Schlüssels ist damit unter Umständen nicht mehr gewährleistet. Sind für das Schreiben in die Datei Mehrfachschlüssel erlaubt, werden Arbeitsdateisätze, für die der gleiche ISAM-Schlüssel erzeugt wurde, in die Datei geschrieben. Andernfalls wird das Schreiben abgebrochen und die Meldung EDT4208 (DVS-Fehlercode OAAF) ausgegeben.

Die Bearbeitung von ISAM-Dateien mit Nicht-Standard-Schlüsselposition ( !=5 bei variabler Satzlänge oder !=1 bei fester Satzlänge), mit einer Schlüssellänge, die größer ist, als im Standard definiert, mit nichtnumerischen Schlüsseln oder mit mehrfach auftretenden Schlüsselwerten kann ausschließlich dadurch erfolgen, dass der ISAM-Schlüssel in den Datenbereich übernommen wird.

Liegt der ISAM-Schlüssel im Datenbereich und wird er im EDT verändert, werden Zeilen vertauscht oder Sätze eingefügt, so muss der Benutzer sicherstellen, dass die Reihenfolge der Arbeitsdateisätze der Reihenfolge der ISAM-Schlüssel entspricht, da sonst das Schreiben mit der Meldung EDT4208 (DVS-Fehlercode 0AAB) abgewiesen wird.

Aus ISAM-Dateien mit mehrfach auftretenden Schlüsselwerten (duplicate keys) können alle Sätze eingelesen werden, wenn der Schlüssel nicht als Zeilennummer übernommen wird. Wird der ISAM-Schlüssel als Zeilennummer übernommen, so wird nur der jeweils letzte Satz mit dem gleichen Schlüssel eingelesen.
Für eine Bearbeitung solcher Dateien sollte daher der Schlüssel mit in den Datensatz übernommen werden. Beim Schreiben von Dateien mit Mehrfachschlüsseln muss das Attribut DUPLICATE-KEY=YES in der Task File Table abgelegt sein.
Die Bearbeitung von ISAM-Dateien mit Zeichensatz UTF16 und fester ungerader Satzlänge oder ungerader Schlüssellänge ist nicht möglich.

Die Definition von Sekundärschlüsseln einer ISAM-Datei in einem Sekundärindex bleibt erhalten, wenn die Datei mit den Anweisungen @OPEN und @CLOSE bearbeitet wird und die Schlüsselfelder im Datenbereich nicht inkonsistent geändert werden.

Nach einer inkonsistenten Änderung wird die Meldung EDT5246 ausgegeben und der Sekundärindex wird gelöscht. Der Sekundärindex wird ebenfalls gelöscht, wenn die Datei mit der Anweisung @SAVE oder @WRITE (Format 2) ganz überschrieben wird (nicht bei UPDATE).