Mit dem Aufruf UNLK (unlock) entsperren Sie einen der folgenden Speicherbereiche:
den Globalen Sekundären Speicherbereich (GSSB).
einen Block des Terminal-spezifischen Langzeitspeichers (TLS).
einen Block des User-spezifischen Langzeitspeichers (ULS).
Der Bereich wird nur dann entsperrt, wenn aus ihm in der aktuellen Transaktion nur gelesen wurde.
Unix-, Linux- und Windows-Systeme
In UTM-Cluster-Anwendungen sind GSSB und ULS Cluster-weit gültig. Damit wirkt sich das Entsperren eines GSSB oder ULS mit UNLK Cluster-weit aus.
Versorgen des 1. Parameters (KDCS-Parameterbereich)
Die folgende Tabelle zeigt die verschiedenen Möglichkeiten und die dafür notwendigen Angaben im KDCS-Parameterbereich.
Funktion des Aufrufs | Einträge im KDCS-Parameterbereich | |||
---|---|---|---|---|
KCOP | KCOM | KCRN | KCLT bzw. KCUS | |
Entsperren eines TLS (in Dialog-Programmen) | "UNLK" | "DA" | Blockname | - |
Entsperren eines TLS (in Asynchron-Programmen) | "UNLK" | "DA" | Blockname | LTERM/LPAP/OSI-LPAP/Master-LPAP-Name |
Entsperren eines GSSB | "UNLK" | "GB" | Name des GSSB | - |
Entsperren eines ULS | "UNLK" | "US" | Blockname | Benutzerkennung/LSES-Name/Association-Name/Leerzeichen |
Bei KCOM = US müssen alle nicht verwendeten Felder des KDCS-Parameterbereichs mit binär null versorgt werden.
Versorgen der Parameter | |
Feldname im KDCS-Parameterbereich | Inhalt |
"UNLK" | |
"GB"/"DA"/"US" | |
Name des Bereichs/Blockname | |
LTERM/LPAP/OSI-LPAP/Master-LPAP-Name bzw. |
KDCS-Aufruf | |
2. Parameter | |
KDCS-Parameterbereich | Nachrichtenbereich |
C/C++-Makroaufrufe | |
Parameter | |
KDCS_UNLKGB | (kcrn) |
KDCS_UNLKDA | (kcrn,kclt) |
KDCS_UNLKUS | (kcrn,kcus) |
In den KDCS-Parameterbereich tragen Sie für den UNLK-Aufruf ein:
KCOP
im Feld KCOP den Operationscode UNLK.
KCOM
im Feld KCOM den Speichertyp, der entsperrt werden soll:
GB für einen Globalen Sekundären Speicherbereich (GSSB),
DA für einen Terminal-spezifischen Langzeitspeicher (TLS),
US für einen User-spezifischen Langzeitspeicher (ULS).
KCRN
im Feld KCRN den Namen des zu entsperrenden Speicherbereichs.
KCLT
KCUS
je nachdem, um welchen Speichertyp es sich handelt:
beim Entsperren eines TLS in einem Asynchron-Programm:
im Feld KCLT den Namen des LTERM- oder (OSI-)LPAP-Partners, dessen TLS entsperrt werden soll,beim Entsperren eines TLS in einem Dialog-Programm:
irrelevant, es wird immer auf den entsprechenden Block des "eigenen" TLS zugegriffen.beim Entsperren eines ULS-Blocks:
im Feld KCUS die Benutzerkennung, wenn ein ULS-Block einer fremden Benutzerkennung entsperrt werden soll, oder Leerzeichen bei einem ULS-Block der eigenen Benutzerkennung. Wird eine fremde Benutzerkennung in KCUS eingetragen, dann muss die eigene Benutzerkennung administrationsberechtigt sein.Falls ein ULS-Block einer fremden Session/Association entsperrt werden soll, ist deren Name anzugeben.
beim Entsperren eines GSSBs:
irrelevant.
Beim KDCS-Aufruf geben Sie an:
1. Parameter
als 1. Parameter: Die Adresse des KDCS-Parameterbereichs.
Makronamen
Wie Sie Makroaufrufe für C/C++ nutzen, ist in Abschnitt „C/C++-Makroschnittstelle" ausführlich beschrieben.
openUTM gibt zurück:
KCRCCC
im Feld KCRCCC den KDCS-Returncode.
KCRCDC
im Feld KCRCDC den internen Returncode von openUTM (siehe openUTM-Handbuch „Meldungen, Test und Diagnose“).
KDCS-Returncodes im Feld KCRCCC beim UNLK-Aufruf
Im Programm sind auswertbar:
000 | Die Operation wurde ausgeführt. |
14Z | Unter dem in KCRN angegebenen Namen ist kein GSSB/TLS vorhanden. |
16Z | GSSB/TLS/ULS nicht von eigener Transaktion gesperrt oder GSSB wurde in gleicher Transaktion erzeugt oder geändert oder TLS wurde in gleicher Transaktion geändert. |
40Z | Das System kann die Operation nicht ausführen (Generierungs- bzw. Systemfehler, Deadlock, Timeout). |
42Z | Die Angabe in KCOM ist ungültig. |
44Z | Bei GSSB: Angabe in KCRN ist ungültig (Leerzeichen oder binär null). Bei TLS und ULS: Der Name des Blocks in KCRN ist unbekannt oder ungültig. |
46Z | LTERM- oder LPAP-Name in KCLT ist ungültig (nur bei Asynchron-Programmen und TLS) oder die Benutzerkennung ist unbekannt (nur bei ULS). |
49Z | Der Inhalt nicht verwendeter Felder des KDCS-Parameterbereichs ist ungleich binär null (nur bei KCOM = US). |
Ein weiterer Returncode ist dem DUMP zu entnehmen:
71Z | In diesem Programm wurde kein INIT gegeben. |
Eigenschaften des UNLK-Aufrufs
Ein UNLK-Aufruf auf einen TLS/ULS/GSSB ist nur sinnvoll nach einem vorherigen Leseaufruf (GTDA bzw. SGET). Wurde der Bereich in der aktuellen Transaktion mit PTDA, SPUT oder SREL (bei GSSBs) verändert, dann weist openUTM den Aufruf mit KCRCCC = 16Z zurück; der Bereich bleibt bis Transaktionsende gesperrt.
Ein UNLK-Aufruf ist z.B. vor einem PEND KP bzw. PGWT KP/PR sinnvoll. Dadurch lassen sich TLS/ULS-Blöcke und GSSBs bereits vor dem nächsten Sicherungspunkt freigeben. Damit stehen sie den anderen Transaktionen zur Verfügung.
Ein UNLK-Aufruf für einen Bereich, der nicht von der eigenen Transaktion gesperrt ist, wird abgewiesen (Returncode 16Z).
Unix-, Linux- und Windows-Systeme
In UTM-Cluster-Anwendungen wird ein GSSB oder ULS durch einen UNLK-Aufruf Cluster-weit entsperrt, d.h. sobald der UNLK-Aufruf wirksam wird, können auch Transaktionen in anderen Knoten-Anwendungen wieder auf den entsperrten Bereich zugreifen.