Makrotyp: | R bei PARMOD=24 |
Der RETRY-Makroaufruf wird benötigt in Routinen, die bei einem PGLOCK-Ereignis aktiviert werden (EXLST-Ausgang PGLOCK). Das Ereignis PGLOCK tritt nur dann ein, wenn ein ISAM-Aktionsmakroaufruf für einen Satz oder einen Datenblock ausgeführt werden soll, der bereits durch einen anderen Auftrag gesperrt ist. Mit RETRY wird der „erfolglose“ Makroaufruf wiederholt, wobei im Programm definiert werden kann, ob auf das Aufheben der Sperre gewartet werden soll.
Der RETRY-Makro darf nur in PGLOCK-Routinen aufgerufen werden. Wird er an anderer Stelle verwendet, geht die Steuerung an den EXLST-Ausgang USERERR.
Beim Ansprung des PGLOCK-Ausgangs enthält Register 1 die FCB-Adresse; bei der Ausführung des RETRY-Makroaufrufs muss Register 1 wieder diese FCB-Adresse enthalten.
Geht nach erfolgreichem RETRY-Aufruf die Steuerung zurück an den Aufrufer, haben die Register die gleichen Inhalte wie nach einem sofort erfolgreichen Aktionsmakroaufruf.
Ist der RETRY-Aufruf nicht erfolgreich und geht die Steuerung an die FAIL-Routine, haben die Register den gleichen Inhalt wie vor dem RETRY-Aufruf (eine Ausnahme bilden die Register 0, 1, 14 und 15).
Bei NK-ISAM sind die Zeiger vor Ansprung der PGLOCK-Routine so positioniert wie vor dem Makroaufruf (siehe Tabelle „Regeln für ISAM-Zeiger").
Bei K-ISAM ist zu berücksichtigen: wird der PGLOCK-Ausgang des EXLST-Makroaufrufs angesprungen, sind die internen Zeiger nur dann richtig positioniert, wenn der verursachende Makroaufruf ein PUTX oder ELIM (ohne KEY) ist. Die ISAM-Makroaufrufe GET, GETR und GETFL haben den Zeiger bereits verändert, bevor sie nach PGLOCK verzweigen. Der Makroaufruf RETRY führt die Rückpositionierung durch und kann den verursachenden Makroaufruf wieder anstoßen, der den PGLOCK-Ausgang angesprungen hat.
Gehört der Satz, auf den zuletzt erfolgreich zugegriffen wurde, bevor der PGLOCK-Ausgang genommen wurde, zu einer Folge von Sätzen gleicher Schlüssel, wird beim Zurückpositionieren die Datei auf den ersten Satz dieser Folge positioniert.
Wird ACTION=POS angegeben und ist die Positionierung erfolgreich, wird die Steuerung an den Auftrag zurückgegeben, und zwar an den Befehl, der dem RETRY-Makroaufruf folgt.
Format
Operation | Operanden |
|
|
Operandenbeschreibung
FAIL = adraus
Adresse, an die die Steuerung übergeben werden soll, falls RETRY nicht durchgeführt werden kann oder die Wartezeit für einen Block länger als 30 Minuten ist.
ACTION
gibt an, welche Aktion der RETRY-Makroaufruf ausführen soll.
= RETRY
der Makroaufruf soll wiederholt werden; der Operand COUNT gibt an, wie oft der Makroaufruf wiederholt werden soll, bevor die Steuerung an die FAIL-Adresse geht.
= WAIT
Der Makroaufruf wird wiederholt; ist die Sperre auch dann noch nicht aufgehoben, wird der Auftrag in eine Warteschlange eingereiht. Nach maximal 30 Minuten Wartezeit geht die Steuerung an die FAIL-Routine.
= POS
für K-ISAM: es soll nur der Zeiger in der Datei zurückpositioniert werden. Bei NK-ISAM wird dieser Wert nur aus Kompatibilitätsgründen unterstützt.
COUNT = zahl
gibt an, wie oft der Makroaufruf wiederholt werden soll, bevor die Steuerung an die FAIL-Routine geht; 0 < zahl <= 255
Voreinstellung: COUNT = 1
PARMOD
Gibt den Generierungsmodus an.
Voreinstellung: | der durch den Assembler oder den GPARMOD-Makroaufruf im Programm eingestellte Wert |
= 24
Es wird ein Objekt erzeugt, das nur im 16-MB-Adressraum ablauffähig ist
(nur 24-Bit-Adressierung).
= 31
Es wird ein Objekt erzeugt, das im 2-GB-Adressraum ablauffähig ist
(24-Bit- oder 31-Bit-Adressierung).