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 LKCAN löscht Lock-Anforderungen, die noch nicht vom DLM zugeteilt wurden.
Die Lock-Anforderungen, die vom LKENQ-Makro erstellt wurden und sich in der WAITING- oder CONVERTING-Warteschlange des Locks befinden, werden vollständig gelöscht. Befindet sich die Lock-Anforderung in der GRANTED-Warteschlange, wird mit einem Fehler-Code abgebrochen.
Die Lock-Anforderungen, die durch den LKCVT-Makro verändert werden sollen, werden nicht gelöscht. Es wird nur der Änderungsauftrag gelöscht.
Der Aufruf kann synchron oder asynchron erfolgen.
Makroaufrufformat und Operandenbeschreibung
LKCAN |
MF=C / D / L / M / E ,ACKEVTT=*SYNCH / *TUCONTI / *TUEVENT / <var: enum-of _evttype_s:1> ,ACKNID=0 / <var: int:4> ,LOCKID=0 / <var: int:4> ,LSBADR=<var: pointer> ,USERPAR=0 / <var: int:4> ,PARAM=<var: pointer> / (reg: pointer>) ,PREFIX=N / p ,MACID=LDA / mac |
In der nachfolgenden Operandenbeschreibung sind die Operanden alphabetisch geordnet.
ACKEVTT=
Beschreibt in welcher Art Informationen über die Löschung zurückgeliefert werden sollen. Es gibt drei Methoden zur Steuerung. Die angegebene Kurzkennung (Contingency-Kurzkennung oder Ereigniskennung) ist für die aktuelle Lösch-Anforderung gültig. Andere Lösch-Anforderungen von anderen Tasks können andere Kurzkennungen angeben.
*SYNCH
Synchrone Lösch-Anforderung. Rücksprung aus dem Makro, wenn die Lock-Anforderung gelöscht oder eine Fehlerbedingung erkannt wurde. Die Lösch-Information wird im Returncode zurückgeliefert.
*TUCONTI
Contingency-Prozess. Dieser Wert muss angegeben werden, um eine Bestätigung der Lösch-Anforderung während der Contingency-Verarbeitung zu erhalten.
*TUEVENT
Ereignissteuerung (Eventing). Um die Lösch-Information zu erhalten, kann eine Ereignisvariable benutzt werden. Durch Aufruf des SOLSIG-Makros wird die Lösch-Information geliefert.
<var:enum-of _evttype_s:1>
Name des Feldes mit dem Wert der Lösch-Methode.
ACKNID=
Gibt bei einer asynchronen Lock-Anforderung die Contingency-Kurzkennung oder die Ereigniskennung an, die die Information erhält, dass der Lock jetzt gelöscht wurde.
<var: int:4>
Voreinstellung ist 0.
Contingency-Kurzkennung oder Ereigniskennung.
LOCKID=
Lock-Kurzkennung der Lock-Anforderung, die gelöscht werden soll.
<var: int:4>
Voreinstellung ist 0.
Lock-Kurzkennung, die vom LKENQ-Makro zurückgeliefert wurde.
LSBADR=
Feld mit der Adresse des Lock-Status-Blocks. Der Lock-Status-Block enthält den Returncode des asynchronen Aufrufs.
<var: pointer>
Name des Feldes mit der Adresse des Lock-Status-Blocks.
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.
USERPAR=
Die Parameter für asynchrone Mitteilungen, die an den Contingency-Prozess oder an die Ereignisvariable ü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 LKCAN 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. |
X'00' | X'00' | X'0001' | Der Makro wurde normal ausgeführt. Die Lösch-Anforderung wurde in |
X'00' | X'00' | X'0004' | Löschen der Lock-Anforderung wurde eingeleitet, aber der Lock ist noch |
X'00' | X'01' | X'1005' | Der Lock-Status-Block ist nicht zugreifbar. |
X'00' | X'01' | X'1006' | Der Typ von ACKNID ist nicht derselbe wie in ACKEVTT vereinbart. |
X'00' | X'01' | X'100C' | Die Angabe im Operanden LOCKID ist ungültig. |
X'00' | X'01' | X'1014' | Die ausgewählte Funktion ist für den Benutzer nicht erlaubt. |
X'00' | X'01' | X'10FF' | Es wurde ein falscher Parameter angegeben, der keinen spezifischen |
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- |
X'00' | X'20' | X'2004' | Es trat ein interner Fehler im Zusammenhang mit Zeitlimitüberschreitung |
X'00' | X'20' | X'2005' | Es trat ein interner Fehler im Zusammenhang mit der Lock-Anforderung |
X'00' | X'20' | X'2006' | Es trat ein interner Fehler im Zusammenhang mit XCS auf. |
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.