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 LKINF informiert darüber, welche Locks bereits benutzt werden. Zur besseren Auswahl können einige Such-Filter aktiviert werden. Die Locks werden über ihre Lock-Namen identifiziert. Die Lock-Namen können voll- oder teilqualifizierte Namen sein. Bei Angabe von teilqualifizierten Lock-Namen dauert der Zugriff ggf. sehr lange, da die gesamte DLM-Datenbasis nach Treffern durchsucht werden muss.
Makroaufrufformat und Operandenbeschreibung
LKINF |
MF=C / D / L / M / E ,CONTROL=list-poss(3): *LOCKED / *LOCKED_BY_ME / *LCKMODE ,LCKMODE=*NU / *CR / *CW / *PR / *PW / *EX / <var: enum-of _lckmode_s:1> ,NAMEADR=<var: pointer> ,NAMELEN=0 / <integer 0..48> / <var: int:2> ,NAMRNGE=*OWNSYSTEM / *CLUSTER / <var: enum-of _namerange_s:1> ,SCOPE=*NAMESPACEID / *USERID / *GROUPID / <var: emun-of_scope_s:1> ,NAMTYPE=*FULL / *PARTIAL / <var: enum-of _nametype_s:1> ,PARAM=<var: pointer> / (reg: pointer>) ,PREFIX=N / p ,MACID=LDI / mac |
In der nachfolgenden Operandenbeschreibung sind die Operanden alphabetisch geordnet.
CONTROL=
Der Such-Filter steuert, welche Daten zurückgeliefert werden.
list-poss(3):
Aus den nachfolgenden Operandenwerten kann eine Liste gebildet werden, die maximal 3 Elemente enthält.
*LOCKED
Es werden nur Informationen über Locks zurückgeliefert, die in einem Lock-Modus ungleich Null gehalten sind.
*LOCKED_BY_ME
Es werden nur Informationen über Locks zurückgeliefert, die durch den Benutzer in einem Lock-Modus ungleich Null gehalten sind. Der Benutzer wird über seine Lock-Kurzkennung (LOCKID) identifiziert.
*LCKMODE
Es werden nur die Informationen zurückgeliefert, die zu dem angegebenen Lock-Modus gehören.
LCKMODE=
Gibt den angeforderten Lock-Modus an. Wird nur ausgewertet, wenn auch der Operand CONTROL=*LCKMODE angegeben wurde.
*NU
Der Lock befindet sich im Null-Modus und ist immer zugeteilt. Er ist mit allen anderen Lock-Anforderungen kompatibel. Ein Zugriff auf die Ressource ist nicht erlaubt.
*CR
Der Lock befindet sich im Concurrent-Read-Modus. Erlaubt sind andere Locks nur im Null-Modus, im Concurrent-Read-Modus, im Concurrent-Write-Modus, im Protected-Read-Modus und im Protected-Write-Modus. Dem Lock-Halter wird ein ungeschützter Lesezugriff auf die Ressource gewährt.
*CW
Der Lock befindet sich im Concurrent-Write-Modus. Erlaubt sind andere Locks nur im Null-Modus, im Concurrent-Write-Modus oder im Concurrent-Read-Modus. Dem Lock-Halter wird ein ungeschützter Schreibzugriff auf die Ressource gewährt.
*PR
Der Lock befindet sich im Protected-Read-Modus. Erlaubt sind andere Locks nur im Null-Modus, im Concurrent-Read-Modus oder im Protected-Read-Modus. Dem Lock-Halter wird ein geschützter Lesezugriff auf die Ressource gewährt.
*PW
Der Lock befindet sich im Protected-Write-Modus. Erlaubt sind andere Locks nur im Null-Modus und im Concurrent-Read-Modus. Dem Lock-Halter wird ein geschützter Schreibzugriff auf die Ressource gewährt.
*EX
Der Lock befindet sich im Exklusiv-Modus. Erlaubt sind andere Locks nur im Null-Modus. Nur der Lock-Halter darf auf die Ressource zugreifen.
<var: enum-of _lckmode_s:1>
Name des Feldes mit dem Lock-Modus.
Hinweis
Die Operanden LCKMODE und CONTROL dürfen nicht zusammen angegeben werden. Die Angabe des Lock-Modus darf nur direkt über den Operanden LCKMODE oder indirekt über den Operanden CONTROL angegeben werden.
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.
NAMEADR=
Feld mit der Adresse des Lock-Namens.
<var: pointer>
Name des Feldes mit der Adresse des Lock-Namens.
NAMELEN=
Voreinstellung ist 0.
Gibt die Länge des Lock-Namens an.
<integer 0..48>
Direkte Angabe der Länge des Lock-Namens zum Übersetzungszeitpunkt.
<var: int:2>
Name des Feldes mit der Länge des Lock-Namens zum Ausführungszeitpunkt.
NAMRNGE=
Gibt an, in welchem Bereich der Lock-Name gültig ist.
*OWNSYSTEM
Der angegebene Lockname ist nur auf dem lokalen System gültig.
*CLUSTER
Der angegebene Lockname ist cluster-weit gültig.
<var: enum-of _namerange_s:1>
Name des Feldes mit dem Bereich, in dem der Lock-Name gültig ist.
NAMTYPE=
Gibt an, ob die Namens-Zeichenfolge einen voll-qualifizierten Lock-Namen oder einen teilqualifizierten Lock-Namen bezeichnet.
*FULL
Der angegebene Lock-Name ist ein voll-qualifizierter Lock-Name.
*PARTIAL
Der angegebene Lock-Name ist ein teil-qualifizierter Lock-Name.
<var: enum-of _nametype_s:1>
Name des Feldes mit dem Typ des Lock-Namens.
SCOPE=
Bestimmt den lokalen Geltungsbereich des Lock-Namens.
*NAMESPACEID
ist Voreinstellung: Der angegebene Lock-Name wird als interner Lock-Name
verwendet. Der erste Teil (8 Byte) des angegebenen Lock-Namens bildet dabei implizit den lokalen Geltungsbereich. Der lokale Geltungsbereich muss eine Zeichenfolge sein. Die gültigen Zeichen sind die Buchstaben „A..Z”, „a..z”; die Ziffern „0..9” und die Sonderzeichen „@” und „#”. Die maximale Länge des angegebenen Lock-Namens ist 48 Zeichen.
*USERID
Die Benutzerkennung zu der die Aufrufer-Task gehört, wird für die Bildung des internen Lock-Namens verwendet. Der DLM bestimmt die Benutzerkennung und setzt sie an den Anfang des Lock-Namens. Der erste Teil des angegebenen Lock-Namens wird nicht als lokaler Geltungsbereich betrachtet. Die maximale Länge des angegebenen Lock-Namens verringert sich auf 40 Zeichen.
Durch die Angabe des Operanden SCOPE=*USERID können die Locks einer Anwendung auf einfache Weise gegen den Zugriff einer anderen Anwendung geschützt werden. Die Anwendungen müssen nur unter verschiedenen Benutzerkennungen gestartet werden.
*GROUPID
Die Benutzergruppe zu der die Aufrufer-Task gehört, wird für die Bildung des internen Lock-Namens verwendet. Der DLM bestimmt die Benutzergruppe und setzt sie an den Anfang des Lock-Namens. Der erste Teil des angegebenen Lock-Namens wird nicht als lokaler Geltungsbereich betrachtet. Die maximale Länge des angegebenen Lock-Namens verringert sich auf 40 Zeichen.
Der Operand SCOPE=*GROUPID darf nur angegeben werden, wenn das kostenpflichtige Software-Produkt SECOS im Einsatz ist, sonst führt der LKENQ-Aufruf zu einem Fehler.
<var: enum-of _scope_s:1>
Name des Feldes mit dem lokalen Geltungsbereich des Lock-Namens zum Ausführungszeitpunkt.
Rückinformation und Fehleranzeigen
Standardheader:
+---------------+ | | | | | |c|c|b|b|a|a|a|a| +---------------+
Über die Ausführung des Makros LKINF 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. Mindestens ein entsprechender |
X'01' | X'00' | X'0000' | Der Makro wurde ausgeführt, aber es wurde kein entsprechender Lock |
X'02' | X'00' | X'0000' | Der Makro wurde ausgeführt, entsprechende Locks wurden gefunden, |
X'00' | X'01' | X'1001' | Die Länge des Lock-Namens ist zu groß. |
X'00' | X'01' | X'1002' | Die Adresse des Lock-Namens ist nicht verfügbar. |
X'00' | X'01' | X'1003' | Der angegebene Lock-Name ist unzulässig. |
X'00' | X'01' | X'1004' | Der angegebene Namensraum ist ungültig. |
X'00' | X'01' | X'100F' | Der Such-Filter ist unzulässig. |
X'00' | X'01' | X'1015' | Die Angabe im Operanden LCKMODE ist ungültig. |
X'00' | X'01' | X'1016' | Die Angabe im Operanden NAMTYPE ist ungültig. |
X'00' | X'01' | X'1017' | Die Angabe im Operanden NAMRNGE ist ungültig. |
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. |
Weitere Returncodes, deren Bedeutung durch Konvention makroübergreifend festgelegt ist, können der Tabelle „Standard-Returncodes“ (Standardheader) entnommen werden.