Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

LKDEQ - Lock-Anforderung freigeben

&pagelevel(3)&pagelevel

Allgemeines

Anwendungsgebiet:

Distributed-Lock-Manager (DLM); siehe "Distributed-Lock-Manager (DLM)"

Makrotyp:

S-Typ, MF-Format 3: C-/D-/L-/M-/E-Form;

siehe "S-Typ-Makroaufrufe"


Makrobeschreibung

Der Makro LKDEQ gibt eine Lock-Anforderung aus der Warteschlange eines existierenden Locks frei. Wird die letzte (einzige) Lock-Anforderung freigegeben, wird der Lock selbst gelöscht. Der Makro LKDEQ kann synchron oder asynchron aufgerufen werden. Der Lock wird über seine Lock-Kurzkennung (LOCKID) identifiziert, die vom LKENQ-Makro zurückgeliefert wird. Diese Lock-Kurzkennung (LOCKID) muss beim Aufruf des Makros LKDEQ mitangegeben werden.
Der Benutzer kann angeben, dass während der Freigabe eines Locks im PW- oder EX-Modus, der Lock-Value-Block verändert wird (LVBCTL=*MOVE).

Makroaufrufformat und Operandenbeschreibung

LKDEQ

MF=C / D / L / M / E

,ASYNCTL=*SYNCH / *ASYNCH / <var: enum-of _asyncctl_s:1>

,DEQEVTT=*SYNCH / *TUCONTI / *TUEVENT / <var: enum-of _evttype_s:1>

,DEQID=0 / <var: int:4>

,LOCKID=0 / <var: int:4>

,LSBADR=<var: pointer>

,LVBCTL=*IGNORE / *MOVE / <var: enum-of _lvbctl_s:l>

,STATUS=*UNCHANGE / *RESET / *INVALIDATE / <var: enum-of _status_s:1>

,USERPAR=0 / <var: int:4>

,PARAM=<var: pointer> / (reg: pointer>)

,PREFIX=N / p

,MACID=LDD / mac

In der nachfolgenden Operandenbeschreibung sind die Operanden alphabetisch geordnet.

ASYNCTL=
Steuerung einer asynchronen Lock-Anforderung. Kann die Lock-Anforderung sofort aus der Warteschlange freigegeben werden, kann ein Contingency-Prozess oder ein Ereignis-Signal unterdrückt werden.

*SYNCH
Kann die Lock-Anforderung sofort freigegeben werden, wird ein Contingency-Prozess oder ein Ereignis-Signal unterdrückt.

*ASYNCH
Auch wenn die Lock-Anforderung sofort freigegeben werden kann, wird ein Contingency-Prozess oder ein Ereignis-Signal erstellt.

<var: enum-of _asyncctl_s:1>
Name des Feldes mit der asynchronen Lock-Anforderung zum Ausführungszeitpunkt.

DEQEVTT=
Beschreibt in welcher Art Freigabe-Informationen zurückgeliefert werden sollen. Es gibt drei Methoden zur Steuerung. Die angegebene Kurzkennung (Contingency-Kurzkennung oder Ereigniskennung) ist gültig für die aktuelle Freigabe-Anforderung. Andere Freigabe-Anforderungen von anderen Tasks können andere Kurzkennungen angeben.

*SYNCH
Synchrone Lock-Anforderung den Lock aus der Warteschlange freizugeben. Rücksprung aus dem Makro, wenn der Lock freigegeben oder eine Fehlerbedingung erkannt wurde. Die Freigabe-Information wird im Returncode zurückgeliefert.

*TUCONTI
Contingency-Prozess. Dieser Wert muss angegeben werden, um eine Bestätigung der Freigabe-Anforderung während der Contingency-Verarbeitung zu erhalten.

*TUEVENT
Ereignissteuerung (Eventing). Um die Freigabe-Information zu erhalten, kann eine Ereignisvariable benutzt werden. Durch Aufruf des SOLSIG-Makros wird die Freigabe-Information geliefert.

<var:enum-of _evttype_s:1>
Name des Feldes mit dem Typ der Freigabe-Information zum Ausführungszeitpunkt.

DEQID=
Kurzkennung für die Lock-Freigabe. Gibt an, welche Contingency-Kurzkennung oder Ereigniskennung bei asynchronen Lock-Anforderungen die Information erhält, dass der Lock jetzt freigegeben wurde.

<var: int:4>
Voreinstellung ist 0. Die Contingency-Kurzkennung oder Ereigniskennung.

MF=

Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.B. PREFIX, MACID und PARAM) siehe Abschnitt „S-Typ-Makroaufrufe“. Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.

Bei der C-Form, D-Form oder M-Form des Makroaufrufs kann ein Präfix PREFIX und bei der C-Form oder M-Form zusätzlich eine Macid MACID angegeben werden.

LOCKID=
Lock-Kurzkennung des Locks, der aus der Warteschlange freigegeben werden soll.

<var: int:4>
Voreinstellung ist 0.
Lock-Kurzkennung eines früheren LKENQ-Makro-Aufruf, die aus der Warteschlange freigegeben werden soll.

LSBADR=
Feld mit der Adresse des Lock-Status-Blocks. Der Lock-Status-Block enthält den Lock-Value-Block.

<var: pointer>
Name des Feldes mit der Adresse des Lock-Status-Blocks.

LVBCTL=
Steuerung des Lock-Value-Blocks.

*IGNORE
Der Lock-Value-Block wird nicht benutzt.

*MOVE
Den Lock-Value-Block lesen oder schreiben. Der Lock-Value-Block kann gelesen werden, wenn der Lock zugeteilt wurde. Er kann geschrieben werden, wenn der Lock im PW- oder EX-Modus freigegeben wurde.

<var: enum-of _lvbctl_s:1>
Name des Feldes mit der Steuerung des Lock-Value-Blocks zum Ausführungszeitpunkt.

STATUS=

Gibt an, ob der Lock-Status zurückgesetzt (= validated) wird, wenn ein Lock im PW- oder EX-Modus freigegeben wird.

*UNCHANGE
Während der Freigabe eines Locks im PW- oder EX-Modus wird der Lock-Status nicht verändert.

*RESET
Während der Freigabe eines Locks im PW- oder EX-Modus wird der Lock-Status wieder auf VALID gesetzt.

*INVALIDATE
Während der Freigabe eines Locks im PW- oder EX-Modus wird der Lock-Status auf INVALID gesetzt.

<var: enum-of _status_s:1>
Name des Feldes mit dem Lock-Status-Änderungsparameter zum Ausführungszeitpunkt.

USERPAR=
Die Parameter für asynchrone Mitteilungen, die an den Contingency-Prozess oder die Ereignissteuerung übergeben werden sollen.

<var: int:4>
Voreinstellung ist 0.Benutzerdefinierte Werte.

Rückinformation und Fehleranzeigen

Standardheader:

+---------------+
|   |   |   |   |
|c|c|b|b|a|a|a|a|
+---------------+

Über die Ausführung des Makros LKDEQ wird im Standardheader folgender Returncode übergeben (cc=Subcode2, bb=Subcode1, aaaa=Maincode):

X'cc'

X'bb'

X'aaaa'

Erläuterung

X'00'

X'00'

X'0000'

Der Makro wurde normal ausgeführt. Der Lock wurde aus der
Warteschlange freigegeben.

X'00'

X'00'

X'0001'

Der Makro wurde normal ausgeführt. Die Freigabe-Anforderung wurde
in die Warteschlange eingereiht. Der Lock wird asynchron aus der
Warteschlange freigegeben. Die Freigabe wird der ausgewählten Ereignis-
steuerungs-Methode mitgeteilt.

X'00'

X'01'

X'1005'

Der Lock-Status-Block ist nicht verfügbar.

X'cc'

X'bb'

X'aaaa'

Erläuterung

X'00'

X'01'

X'100C'

Die Angabe im Operanden LOCKID ist ungültig.

X'00'

X'01'

X'1006'

Der Typ aus DEQID ist nicht derselbe wie in DEQEVTT vereinbart.

X'00'

X'01'

X'10FF'

Es wurde ein falscher Parameter angegeben, der keinen spezifischen
Returncode hat.

X'00'

X'20'

X'2001'

Es trat ein interner Fehler auf.

X'00'

X'20'

X'2003'

Es trat ein interner Fehler im Zusammenhang mit dem Ressourcen-
Block auf.

X'00'

X'20'

X'2004'

Es trat ein interner Fehler im Zusammenhang mit Zeitlimitüberschreitung
auf.

X'00'

X'20'

X'2005'

Es trat ein interner Fehler im Zusammenhang mit der Lock-Anforderung
auf.

X'00'

X'20'

X'2006'

Es trat ein interner Fehler im Zusammenhang mit XCS auf.

X'00'

X'40'

X'4003'

Die vorherige Lock-Anforderung ist noch nicht beendet.

X'00'

X'82'

X'8004'

Der Lock wurde bereits freigegeben.

Weitere Returncodes, deren Bedeutung durch Konvention makroübergreifend festgelegt ist, können der Tabelle „Standard-Returncodes“ (Standardheader) entnommen werden.