Mit dem Aufruf SREL (storage release) löschen Sie einen Sekundärspeicherbereich. Als Sekundärspeicherbereiche kommen dabei infrage:
der Globale Sekundäre Speicherbereich (GSSB)
der Lokale Sekundäre Speicherbereich (LSSB)
Blöcke eines ULS (User-spezifischer Langzeitspeicher) können nicht mit SREL gelöscht werden, da ihre Namen bei der Generierung der Anwendung vergeben werden. Soll der Inhalt eines ULS-Block gelöscht werden, so ist der Block mit der Länge null zu überschreiben.
Unix-, Linux- und Windows-Systeme
In UTM-Cluster-Anwendungen ist ein GSSB Cluster-weit gültig. Damit wirkt sich auch sein Löschen mit SREL 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 | |
Löschen eines LSSB | "SREL" | "LB" | Name des LSSB |
Löschen eines GSSB | "SREL" | "GB" | Name des GSSB |
Versorgen der Parameter | |
Feldname im KDCS-Parameterbereich | Inhalt |
"SREL" | |
"LB"/"GB" | |
Name des Bereichs |
KDCS-Aufruf | |
2. Parameter | |
KDCS-Parameterbereich | — |
C/C++-Makroaufrufe | |
Parameter | |
KDCS_SRELGB / KDCS_SRELLB | (kcrn) |
In den KDCS-Parameterbereich tragen Sie für den SREL-Aufruf ein:
KCOP
im Feld KCOP den Operationscode SREL.
KCOM
im Feld KCOM
LB zum Löschen eines LSSBs oder
GB zum Löschen eines GSSBs.
KCRN
im Feld KCRN den Namen des LSSB/GSSB, der gelöscht werden soll.
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 SREL-Aufruf
Im Programm sind auswertbar:
000 | Die Operation wurde ausgeführt. |
14Z | Unter dem in KCRN angegebenen Namen ist kein Bereich vorhanden. |
40Z | Das System kann die Operation nicht ausführen (Generierungs- bzw. Systemfehler, Deadlock, Timeout), siehe KCRCDC. |
42Z | Der Eintrag in KCOM ist ungültig. |
44Z | Name in KCRN ist ungültig (wenn er nur aus Leerzeichen oder nur aus binär null besteht). |
Ein weiterer Returncode ist dem DUMP zu entnehmen:
71Z | In diesem Programm wurde kein INIT gegeben. |
Eigenschaften des SREL-Aufrufs
openUTM führt SREL erst am Ende der laufenden Transaktion aus.
SREL wird nicht ausgeführt
bei Vorgangs-Abbruch durch PEND ER/FR, oder
wenn ein PEND RS oder ein RSET-Aufruf folgt.
Ein SREL-Aufruf sperrt den aufgerufenen Bereich bis zum Transaktionsende bzw. der Freigabe durch UNLK oder bis zur nächsten Rücksetzoperation, d.h. nachfolgende SGET-Aufrufe auf diesen Bereich weist openUTM mit dem Returncode 14Z zurück. Folgt aber auf einen SREL-Aufruf ein SPUT-Aufruf mit demselben Bereichsnamen, dann wird dieser Bereich (LSSB oder GSSB) neu eingerichtet.
Die Sperre wird über einen Verarbeitungs-/Dialog-Schritt hinaus beibehalten, wenn der Teilprogrammlauf abgeschlossen oder unterbrochen wird mit
PEND KP und PGWT KP,
PEND PA/PR mit Taskwechsel wegen TAC-Klassensteuerung,
PEND PA/PR oder PGWT PR mit Warten auf eine DGET-Nachricht.
Ist der gesperrte Bereich ein GSSB, dann können andere Vorgänge auf diesen GSSB weder mit SGET noch mit SPUT zugreifen. Wie openUTM in diesem Fall reagiert, ist in Abschnitt „Verhalten bei gesperrten Speicherbereichen (TLS, ULS und GSSB)" beschrieben.
Bei Vorgangsende (PEND FI/FC) oder Vorgangs-Abbruch (PEND ER/FR, u.U. auch bei PEND RS) löscht openUTM automatisch alle LSSBs. SREL-Aufrufe auf LSSBs sind daher in Transaktionen, die den Vorgang beenden, überflüssig.
Unix-, Linux- und Windows-Systeme
In UTM-Cluster-Anwendungen wird ein GSSB durch einen SREL-Aufruf Cluster-weit gelöscht, d.h. sobald der SREL-Aufruf wirksam wird, kann der GSSB in keiner Knoten-Anwendung mehr gelesen werden.
Die folgende Tabelle beschreibt, wie die Aufruffolge SREL . . . RSET oder SREL . . . PEND auf GSSBs oder LSSBs wirkt.
Aufruf | Wirkung auf GSSB | Wirkung auf LSSB | |
---|---|---|---|
SREL | löscht und sperrt; Operation bleibt rücksetzbar | löscht; Operation bleibt rücksetzbar | |
... | RSET | setzt zurück und entsperrt | setzt zurück |
... | PEND KP | lässt die Operation rücksetzbar | lässt die Operation rücksetzbar |
.... | PEND RE | löscht und entsperrt; Operation nicht rücksetzbar | löscht; Operation nicht rücksetzbar |
.... | PEND FI | löscht alle LSSBs | |
.... | PEND ER | setzt zurück und entsperrt | löscht alle LSSBs |
.... | PEND PA/PR1 | Sperre bleibt, Operation rücksetzbar | Sperre bleibt, Operation rücksetzbar |
1 Mit Taskwechsel wegen TAC-Klassensteuerung oder mit Warten auf eine DGET-Nachricht