Sowohl in den API-Beschreibungen in diesem Dokument, als auch in den eigentlichen API-Spezifikationen, wird an einigen Stellen spezifiziert, dass eine Zugriffsmethode besondere Festlegungen treffen kann.
Diese Festlegungen werden in der folgenden Tabelle für die in dieser Version unterstützen Zugriffsmethoden des DMS vorgenommen.
Spezifika | Zugriffsmethode SAM | Zugriffsmethode ISAM | Zugriffsmethode UPAM |
Name, wie er an den JRIO-Schnittstellen zu verwenden ist | „SAM“ | „ISAM“ | „UPAM“ |
Zulässige Satzformate | Satzformat mit variabler und fester Satzlänge | Satzformat mit variabler und fester Satzlänge | Satzformat mit fester Satzlänge |
Maximale Satzlänge (in Abhängigkeit vom Satzformat (fest, variabel), logischem Blockformat (NO, KEY, DATA) und Blocksize (1 | fest, KEY BS * 2048 fest, NO, DATA BS * 2048 - 16 variabel, KEY: BS * 2048 -4 variabel, NO, DATA BS * 2048 - 20 | fest: BS * 2048 variabel: BS * 2048 - 4 Bei voller Ausnutzung entstehen ggf. Über-laufblöcke | fest, NO, KEY BS * 2048 fest, DATA BS * 2048 (die ersten 12 Bytes enthalten Metadaten!) |
Zulässige Werte für setRecordLength() der Klassen AccessParameter... | 0 bis 32768 (0 bedeutet: variabel, nur durch Blocksize beschränkt) | 0 bis 32768 (0 bedeutet: variabel, nur durch Blocksize beschränkt) | 0 bis 32768 (0 bedeutet: Pubsetstandard) Werte != n*2048 (n=0,,16) sind nicht erlaubt |
Zulässige Werte für die Methoden setBlocksize, setPrimarySpaceAllocation, setSecondarySpaceAllocation, setPrimaryKeyPosition, setSecondaryKeyPosition der Klassen AccessParameter... | Siehe API-Dokumentation des Interface AccessParameter SAM | Siehe API-Dokumentation des Interface AccessParameter ISAM | Siehe API-Dokumentation des Interface AccessParameterUPAM |
Methode markSupported() Für Markieren und Repositionieren beim sequentiellen Lesen der Klasse FileInputRecordStream | immer false | immer false | immer false |
Gepufferte Ausgabe in den Ausgabestrom schreiben mit der Methode flush() der Klasse FileOutputRecordStream | der Schreib-Puffer wird geleert | der Schreib-Puffer wird geleert | keine Funktion |
Zulässige Werte beim Erzeugen von sekundären Schlüsseln mit der Methode createSecondaryKey() der Klasse KeyedAccessRecordFile | nicht unterstützt | Ja max. 30 Sekundärschlüssel, mit max. je 127 Byte Länge. keyPos <= 32495 | nicht unterstützt |
Name von sekundären Schlüsseln (Methode createSecondaryKey() der Klasse KeyedAccessRecordFile) | nicht unterstützt | 8-stellig, nach DMS-Regeln, Kleinbuchstaben werden ggf. in Großbuchstaben umgesetzt. | nicht unterstützt |
Setzen der Dateiposition mit der Methode setCurrentRecordNumber() der Klasse RandomAccessRecordFile hinter den letzten Satz (Wert von get-RecordCount()) - bzw. Schreiben an einer solchen Position | ja - ggf. werden Leersätze (bei variablem Satzformat) oder Sätze undefinierten Inhalts (bei festem Satzformat) eingefügt | nein | ja - ggf. werden Sätze undefinierten Inhalts eingefügt |
Überschreiben von Sätzen mit der Methode write() | gleiche Satzlänge für Sätze variabler Länge | ohne Einschränkung möglich | |
Überschreiben von Sätzen mit der Methode writeBack() | - | der Primärschlüssel darf nicht verändert werden | - |
Reihenfolge beim sequentiellen Lesen mit der Klasse KeyedAccessRecordFile | - | Schreib- oder Löschoperationen verändern die Dateiposition und sollen daher nicht zwischen sequentiellen Leseoperationen verwendet werden. Für die Reihenfolge bei sequentiellen Leseoperationen bzgl. unterschiedlicher Schlüssel gilt das ISAM-Verhalten (siehe „Einführung in das DVS“ [8]) | - |
Shared-Update-Verarbeitung: | nicht möglich | Möglich als: FileInputStream, FileOutputStream KeyedAccessRecordFile | Nur für PAM-Dateien als FileInputStream oder als RandomAccessRecordFile möglich |
Shared-Update-Verarbeitung: | - | INPUT, INOUT oder OUTIN erlaubt, FileOutputStream nur zum Erweitern einer Datei, OUTIN nur für die erste öffnende Anwendung | INPUT oder INOUT erlaubt |
Shared-Update-Verarbeitung: | - | Bei NK-ISAM erfolgt die Sperre auf Schlüsselebene (Primärschlüssel), bei K-ISAM auf Blockebene | Die Sperre erfolgt auf Blockebene |
Shared-Update-Verarbei-tung: | - | Sperren gelten für die gesamte Anwendung (nicht nur für eine Datei) | Vergrößern oder Verkleinern einer Datei ist nicht möglich |
Tabelle 5: Zugriffsmethoden-spezifische Festlegung