Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

PAM-Dateien

Eine Datei mit relativer Organisation und FCBTYPE=PAM kann - ebenso wie eine ISAM-Datei - von mehreren Benutzern simultan aktualisiert werden, wenn das ADD-FILE-LINK-Kommando SHARED-UPDATE=YES enthält und die Datei mit OPEN I-O eröffnet ist.

Um Datenkonsistenz bei simultaner Aktualisierung zu ermöglichen, benutzt das COBOL2000-Laufzeitsystem den Sperr- und Entsperrmechanismus der DVS-Zugriffsmethode UPAM. Die Zugriffskoordinierung erfolgt hier (anders als bei ISAM) dateispezifisch. Dies hat u.a. zur Folge, dass Anweisungen für eine Datei keine Auswirkungen auf eine andere Datei haben.

Die Sperrung betrifft - wie bei ISAM - nicht einen einzelnen Datensatz, sondern den gesamten Datenblock, in dem sich der Datensatz befindet (siehe Abschnitt „Indizierte Dateiorganisation").

Wie für ISAM-Dateien gibt es auch für PAM-Dateien (nur mit SHARED-UPDATE=YES, OPEN I-O) für alle Formate der READ- bzw. START-Anweisung die Erweiterung WITH NO LOCK.

Regeln für die Simultanaktualisierung

  1. Das Lesen und Positionieren ohne bzw. mit WITH NO LOCK-Zusatz erfolgt wie bei ISAM-Dateien.

  2. Aktualisierung von Datensätzen

    Soll durch eine REWRITE- bzw. DELETE-Anweisung ein Datensatz aktualisiert werden, muss der betroffene Datensatz (wie bei ISAM-Dateien) unmittelbar zuvor durch eine READ-Anweisung (ohne WITH NO LOCK-Zusatz) gelesen werden. Zwischen beiden Anweisungen darf für dieselbe Datei keine weitere Anweisung ausgeführt werden. Anweisungen für andere PAM-Dateien sind jedoch - anders als bei ISAM-Dateien zulässig (auf Grund der dateispezifischen Zugriffskoordinierung).

  3. Wartezeiten bei einer Sperre

    Die maximale Wartezeit auf die Freigabe eines gesperrten Blocks beträgt 999 Sekunden. Nach Ablauf dieser Zeit wird, falls vorhanden, die
    USE AFTER STANDARD ERROR-Prozedur angesprungen oder das Programm mit der Fehlermeldung COB9151 beendet (FILE STATUS 93 und DVS-Fehlerschlüssel D9B0 oder D9B1).

  4. Freigabe eines gesperrten Datensatzes

    Die Entsperrung eines gesperrten Datenblocks kann mit denselben Anweisungen bewirkt werden wie bei ISAM-Dateien, jedoch müssen sich alle Anweisungen auf dieselbe Datei beziehen.
    Im Unterschied zu ISAM-Dateien bewirkt also eine Anweisung für eine PAM-Datei keine Entsperrung von Datenblöcken einer anderen PAM-Datei.

Hinweise

  1. Soll in einem Programm eine PAM-Datei (mit SHARED-UPDATE=YES, OPEN I-O) verarbeitet werden, sollte für diese Datei eine USE AFTER STANDARD ERROR-Prozedur vereinbart werden (siehe „Indizierte Dateien“).

  2. Anders als bei ISAM-Dateien (mit SHARED-UPDATE=YES, OPEN I-O) kann bei simultaner Verarbeitung mehrerer Dateien (alle mit SHARED-UPDATE=YES, OPEN I-O), von denen mindestens eine Datei eine PAM-Datei ist, für jeden Benutzer je ein Datensatz in beliebig vielen Dateien gleichzeitig gesperrt (!) werden (innerhalb einer Datei immer nur ein Satz). Dadurch kann es zu so genannten „Deadlock“-Situationen kommen (siehe Beispiel 9-14).

  3. Wie bei ISAM-Dateien sollte auch bei PAM-Dateien die Sperre auf Datensätzen (Datenblöcken!) so schnell wie möglich aufgehoben werden, um die damit verbundenen Wartezeiten für andere Benutzer möglichst kurz zu halten.

Beispiel 9-14

„Deadlock“

Benutzer A:

READ datei1 (satz n)
.
.
READ datei2 (satz m)

(Block in datei1 nicht entsperrt)

Benutzer B:

READ datei2 (satz m)
.
.
READ datei1 (satz n)

(Block in datei2 nicht entsperrt)

Beide Benutzer warten auf Freigabe des jeweiligen Blocks („Deadlock“).

Die maximale Wartezeit auf die Freigabe eines gesperrten Blocks beträgt 999 Sekunden. Nach Ablauf dieser Zeit wird, falls vorhanden, die USE AFTER STANDARD ERROR-Prozedur angesprungen oder das Programm mit der Fehlermeldung COB9151 beendet (FILE STATUS 93 und DVS-Fehlerschlüssel D9B0 oder D9B1).