Dateiverarbeitung
Hinweise
1. Soll in einem Programm eine ISAM-Datei (SHARED-UPDATE=YES und OPEN I-O) be-
arbeitet werden, sollte für diese Datei eine USE AFTER STANDARD ERROR-Prozedur
vorgesehen werden. In dieser Prozedur können die simultanverarbeitungsspezifischen
FILE STATUS-Werte 93 (Datensatz von einem simultanen Benutzer gerade gesperrt)
und 94 (REWRITE- oder DELETE-Anweisung ohne vorherige READ-Anweisung) ab-
gefragt und angemessen verarbeitet werden.
2. Es sollte immer berücksichtigt werden, dass auf Grund des Block-Sperrmechanismus
von ISAM beim Sperren eines Datensatzes auch zugleich alle Datensätze desselben
Blocks für alle simultanen Benutzer gesperrt werden.
3. Für einen Benutzer kann höchstens ein Datenblock gesperrt, d.h., vor Aktualisierung
durch andere Benutzer geschützt sein. Dies gilt auch dann, wenn er mehrere ISAM-Da-
teien (alle SHARED-UPDATE=YES) im Modus OPEN I-O eröffnet hat.
4. Eine „Deadlock"-Situation (gegenseitiges Sperren von Datenblöcken durch verschiede-
ne Benutzer) ist ausgeschlossen, da für jeden Benutzer nur ein einziger Block aller
ISAM-Dateien (alle SHARED-UPDATE=YES) gesperrt sein kann. Dies gilt jedoch nicht,
wenn gleichzeitig auf eine PAM-Datei mit
SHARED-UPDATE=YES im I-O-Modus zugegriffen wird!
5. Falls zwischen einer READ- und einer REWRITE- bzw. DELETE-Anweisung für einen
Datensatz ein Zugriff auf einen anderen Datenblock derselben oder einer anderen
ISAM-Datei erfolgt, der gleichzeitig eine Entsperrung des zuvor gesperrten Daten-
blocks zur Folge hat, muss der Datensatz vor Ausführung der REWRITE- bzw.
DELETE-Anweisung noch einmal gelesen werden. Da der betroffene Datenblock in der
Zwischenzeit für andere Benutzer entsperrt war, könnte der Inhalt des Datensatzes ver-
ändert worden sein (siehe Beispiel 9-12a).
Erfolgt der Zugriff auf den anderen Datenblock bzw. die andere Datei ohne Sperrme-
chanismus, könnten die dadurch bereitgestellten Daten während der Verarbeitung be-
reits wieder durch simultane Benutzer verändert worden sein, ehe die REWRITE- bzw.
DELETE-Anweisung ausgeführt worden ist (siehe Beispiel 9-12b).
6. Um zu vermeiden, dass ein Benutzer möglicherweise mit nicht mehr aktuellen Daten
arbeitet, sollte der WITH NO LOCK-Zusatz nur dann verwendet werden, wenn dies un-
bedingt erforderlich ist.
7. Ein gesperrter Datensatz (Datenblock) führt bei simultanen Benutzern, die auf densel-
ben Datensatz oder einen anderen desselben Blocks zugreifen wollen, zu Wartezeiten.
Um diese so kurz wie möglich zu halten, sollte die Sperre sobald wie möglich wieder
aufgehoben werden. Wird die Sperre nicht rechtzeitig aufgehoben, läuft die Wartezeit
ab, und das Programm verzweigt in die vorgesehene USE-Prozedur, sofern vorhanden
(siehe Beispiel 9-13) oder wird abgebrochen (mit Meldung COB9151, FILE STATUS 93
und DVS-Fehlerschlüssel DAAA).
U41113-J-Z125-6
Simultanverarbeitung (SHARED-UPDATE)
265