Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Beispiel 5: Vermeidung von Kollisionen mit Warten

&pagelevel(4)&pagelevel

Sie möchten möglichst viel nach vorne verlagern. Irgendwann wird die Datenbank aber abgeschaltet. Dann soll sich die UDS-Online-Utility sofort beenden. Der Realm hat 10000 Seiten. Bei Hinweisen auf Kollisionen soll die UDS-Online-Utility 10 Sekunden warten, weil zu erwarten ist, dass die parallel laufenden Anwendungen bald in anderen Bereichen aktiv werden. Die aufgetretenen Sperrkonflikte werden als Kriterium herangezogen. In der Variablen FREED wird nach Prozedurablauf ausgegeben, wieviele Seiten insgesamt freigegeben wurden. Dabei wird die Variable FREED erst nach einem erfolgreichen FINISH versorgt, damit evtl. asynchrone Abbrüche von Verlagerungstransaktionen den Wert nicht verfälschen.

//SET-ONLINE-UTILITY-PARAMETERS -
// DBH=*INDEPENDENT, -
// CONFIGURATION-NAME=SESSION5
//SET-RELOCATE-PARAMETERS -
// SUBSCHEMA-NAME=SUB5, -
// REALM-NAME=AREA5, -
// PAGES-PER-DML=2
//DECLARE-VARIABLE -
// VARIABLE-NAME=FREED, -
// TYPE=*INTEGER, -
// INITIAL-VALUE=0
//DECLARE-PROCEDURE -
// PROCEDURE-NAME=TA5, -
// CODE = ’READY UPDATE;RELOCATE;-
// EXIT COND=STATUSCODE EQ 010;-
// ADD FREED,RELOC-FREED-PAGES;-
// FINISH;-
// WAIT 10,COND=RELOC-LOCKED-PAGES GT 0’
//REPEAT-PROCEDURE -
// PROCEDURE-NAME=TA5 -
// CYCLE-LIMIT=10000
//SHOW-VARIABLE RELOC-ORIGIN
//SHOW-VARIABLE FREED