Mit dem Aufruf QCRE (queue create) wird dynamisch eine Temporäre Queue erzeugt.
Voraussetzung für einen erfolgreichen QCRE-Aufruf ist, dass bei der Generierung genügend viele Tabellenplätze für QUEUE-Objekte mit der QUEUE-Anweisung reserviert wurden.
Im QCRE-Aufruf können Sie einen Namen für die zu erzeugende Queue vergeben oder festlegen, dass openUTM automatisch einen Namen vergibt, der dann im Rückgabefeld KCRQN (Queue-Name) eingetragen wird.
openUTM erzeugt aufeinanderfolgende Queue-Namen aus abdruckbaren Ziffern. Werden die Queue-Namen von openUTM vergeben, so werden Queue-Namen erst nach 100 Millionen QCRE-Aufrufen erneut verwendet. Damit ist sichergestellt, dass langlaufende Vorgänge für die Kommunikation nicht unbeabsichtigt eine Temporäre Queue verwenden, deren Name nach zwischenzeitlichem Löschen neu vergeben wurde.
Im Folgenden wird das Format des QCRE-Aufrufs ausführlich dargestellt. Weitere Informationen zum Thema "Message Queuing" finden Sie in Abschnitt „Message Queuing (Asynchron-Verarbeitung)".
Versorgen des KDCS-Parameterbereichs (1. Parameter)
Die folgende Tabelle zeigt die notwendigen Angaben im KDCS-Parameterbereich.
Funktion des Aufrufs | Einträge im KDCS-Parameterbereich | |||||
---|---|---|---|---|---|---|
KCOP | KCOM | KCRN | KCLA | KCMF/kcfn | KCQMODE | |
Queue ohne Namensangabe erzeugen | "QCRE" | "NN" | Leerzeichen | Queue-Level | Leerzeichen | "S" / "W" / binär null |
Queue mit Namensangabe erzeugen | "QCRE" | "WN" | Queue-Name | Queue-Level | Leerzeichen | "S" / "W" / binär null |
Versorgen der Parameter | |
Feldname im KDCS-Parameterbereich | Inhalt |
"QCRE" | |
"NN"/ "WN" | |
Leerzeichen / Name der Queue | |
Queue Level der Queue | |
Leerzeichen | |
"S" / "W" / binär null |
KDCS-Aufruf | |
2. Parameter | |
KDCS-Parameterbereich | — |
C/C++-Makroaufruf | |
Parameter | |
KDCS_QCRENN | (kcla,qmode) |
KDCS_QCREWN | (kcla,kcrn,qmode) |
Rückgaben von openUTM | |
---|---|
Feldname im KB-Rückgabebereich | Inhalt |
von openUTM vergebener Name | |
Returncode |
Im KDCS-Parameterbereich machen Sie für den QCRE-Aufruf folgende Angaben:
KCOP
Im Feld KCOP tragen Sie den Operationscode QCRE ein.
KCOM
Im Feld KCOM:
NN (no name),
wenn openUTM den Namen der Queue automatisch erzeugen sollWN (with name),
wenn Sie den Namen selbst vergeben
KCRN
Im Feld KCRN tragen Sie den Namen der Queue ein (KCOM=WN) bzw. Leerzeichen (KCOM=NN). Ein von Ihnen vergebener Name darf nicht mit einer Ziffer beginnen und muss den Konventionen für generierbare Namen genügen. D.h. er darf nur aus den Zeichen A...Z, a...z, 0...9, $, #, @ bestehen und muss ggf. mit Leerzeichen aufgefüllt werden.
KCLA
Im Feld KCLA geben Sie das Queue-Level an, das heißt, Sie geben an, wieviele Nachrichten in dieser Queue maximal gespeichert werden können.
Wenn Sie Null angeben, verwendet openUTM den Wert bzw. Standardwert des Parameters QLEV aus der QUEUE-Anweisung der Generierung.
KCMF / kcfn
Das Feld KCMF/kcfn muss mit Leerzeichen versorgt werden.
KCQMODE
Im Feld KCQMODE:
S (Standard),
wenn beim Erreichen des Queue-Levels weitere Nachrichten abgewiesen werden sollenW (wrap),
wenn beim Erreichen des Queue-Levels eine neue Nachricht die älteste vorhandene Nachricht überschreibtbinär null:
openUTM verwendet den Wert bzw. Standardwert des Parameters QMODE aus der QUEUE-Anweisung der Generierung.
Beim KDCS-Aufruf geben Sie an:
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:
KCRQN
im Feld KCRQN den automatisch erzeugten Namen (bei KCOM=NN).
KCRCCC
im Feld KCRCCC den KDCS-Returncode (siehe nächste Seite).
KDCS-Returncodes im Feld KCRCCC beim QCRE-Aufruf
Im Programm sind auswertbar:
000 | Die Operation wurde durchgeführt. |
16Z | KCOM=WN: Der Queue-Name existiert bereits KCOM=NN: openUTM hat keinen freien Namen gefunden. In diesem Fall können Sie versuchen, mit einem weiteren Aufruf QCRE NN einen freien Queue-Namen zu finden. Hinweis zur Namensvergabe: |
40Z | Die Operation kann nicht ausgeführt werden, weil:
|
42Z | Der Wert in KCOM ist ungültig. |
43Z | Der Wert in KCLA (Queue Level) ist negativ bzw. ungültig. |
44Z | Der Queue-Name beginnt mit einer Ziffer (KCOM=WN) bzw. KCRN enthält keine Leerzeichen (KCOM=NN). |
45Z | KCMF/kcfn wurde nicht mit Leerzeichen versorgt. |
46Z | Der Wert in KCQMODE ist ungültig. |
49Z | Nicht verwendete Felder haben einen Wert ungleich binär null. |
Ein weiterer Returncode ist dem DUMP zu entnehmen:
71Z | Im Teilprogrammlauf wurde noch kein INIT aufgerufen. |
Eigenschaften des QCRE-Aufrufs
Zum Erzeugen einer Temporären Queue ist keine Administrationsberechtigung erforderlich.
Werden die Queue-Namen von openUTM vergeben, so werden diese erst nach 100 Millionen QCRE-Aufrufen erneut verwendet.
Wurde eine Temporäre Queue mit QCRE neu erzeugt, dann können schon in der selben Transaktion Nachrichten in diese Queue geschrieben werden. Diese Nachrichten lassen sich jedoch erst nach dem erfolgreichen Abschluss der Transaktion lesen und administrieren.
Bei UTM-S bleiben Temporäre Queues und ihre Nachrichten über den Anwendungslauf hinaus erhalten, bis sie explizit mit einem QREL-Aufruf gelöscht werden. Bei UTM-F werden Temporäre Queues automatisch mit dem Ende des Anwendungslaufs gelöscht. Alle noch in der Queue gespeicherten Nachrichten gehen verloren.