Der Funktionsaufruf CTRL (control) findet Verwendung bei verteilter Verarbeitung über das OSI TP-Protokoll. Er dient dazu, einen Dialog mit einem OSI TP-Partner explizit zu steuern. Die Aufrufe CTRL PR und CTRL PE dürfen nur an Auftragnehmer-Vorgänge gerichtet werden, für die die Functional Unit "Commit" ausgewählt wurde.
Es gibt mehrere Ausprägungen des Aufrufs CTRL:
CTRL PR (Prepare to Commit)
Mit CTRL PR wird der Auftragnehmer-Vorgang aufgefordert, das Transaktionsende einzuleiten. Wenn der lokale Vorgang zusätzlich mit einem MPUT-Aufruf Daten an den Partner sendet, kann er im CTRL-Aufruf steuern, ob der ferne Vorgang noch Daten senden darf.CTRL PE (Prepare End Dialogue)
Mit CTRL PE wird der Auftragnehmer-Vorgang aufgefordert, das Dialogende einzuleiten. Wenn der lokale Vorgang zusätzlich mit einem MPUT-Aufruf Daten an den Partner sendet, kann er im CTRL-Aufruf steuern, ob der ferne Vorgang noch Daten senden darf.CTRL AB (Abort Dialogue)
Mit CTRL AB wird für den Dialog mit einem Auftragnehmer-Vorgang eine abnormale Beendigung eingeleitet. Ein MPUT-Aufruf an diesen Auftragnehmer wird nicht gesendet sondern gelöscht. Ist für den Dialog die Commit Funktionalität ausgewählt, dann sorgt openUTM dafür, dass die verteilte Transaktion auf den letzten Sicherungspunkt zurückgesetzt wird; erst dann wird der Dialog beendet. Für jeden abnormal zu beendenden Dialog ist ein eigener CTRL Aufruf erforderlich.
Versorgen des 1. Parameters
Die folgende Tabelle zeigt die verschiedenen Möglichkeiten und die dazu notwendigen Angaben im KDCS-Parameterbereich.
Funktion des Aufrufs | Einträge im KDCS-Parameterbereich | |||||
---|---|---|---|---|---|---|
KCOM | KCLA | KCLM | KCRN | KCMF/kcfn | KCNORPLY | |
Prepare to Commit | "PR" | 0 | 0 | Vorgangs-Id | Leerzeichen | "Y"/0 |
Prepare End Dialogue | "PE" | 0 | 0 | Vorgangs-Id | Leerzeichen | "Y"/0 |
Abort Dialogue | "AB" | 0 | 0 | Vorgangs-Id | Leerzeichen | 0 |
Versorgen des 2. Parameters
Hier müssen Sie die Adresse des Nachrichtenbereichs angeben. Der Nachrichtenbereich wird in dieser Version von openUTM nicht verwendet, er ist für spätere Erweiterungen vorgesehen.
Versorgen der Parameter | |
Feldname im KDCS-Parameterbereich | Inhalt |
"CTRL" | |
"PR"/"PE"/"AB" | |
0 | |
0 | |
Vorgangs-Id | |
Leerzeichen | |
"Y"/0 |
KDCS-Aufruf | |
KDCS-Parameterbereich | Nachrichtenbereich |
C/C++-Makroaufrufe | |
Parameter | |
KDCS_CTRLPR/KDCS_CTRLPE/KDCS_CTRLAB | (kcrn) |
Im KDCS-Parameterbereich sind für den CTRL-Aufruf folgende Eintragungen notwendig:
KCOP
In das Feld KCOP muss der Operationscode CTRL eingetragen werden.
KCOM
Das Feld KCOM muss eine der folgenden Operationsmodifikationen enthalten:
PR (PRepare to commit)
Mit dieser Ausprägung wird ein Auftragnehmer-Vorgang aufgefordert, das Transaktionsende einzuleiten. Außerdem gilt:Wenn der lokale Vorgang zusätzlich mit einem MPUT-Aufruf Daten an den Auftragnehmer-Vorgang sendet, kann er mit dem Feld KCNORPLY steuern, ob der Auftragnehmer-Vorgang in der laufenden Transaktion noch Daten senden darf. Der lokale Vorgang wird nach Ende des Verarbeitungsschritts erst dann fortgesetzt, wenn der ferne Vorgang das Transaktionsende eingeleitet hat.
Wenn der lokale Vorgang keine Daten an den Auftragnehmer-Vorgang sendet, dann darf der Auftragnehmer-Vorgang in dieser Transaktion ebenfalls keine Daten mehr senden. Der lokale Vorgang wartet dann nach Ende des
Verarbeitungsschritts nicht darauf, dass der Auftragnehmer-Vorgang das Transaktionsende einleitet.
PE (Prepare End dialogue)
Mit dieser Ausprägung wird ein AN-Vorgang aufgefordert, das Dialogende einzuleiten. Außerdem gilt:Wenn der lokale Vorgang zusätzlich mit einem MPUT-Aufruf Daten an den Auftragnehmer-Vorgang sendet, kann er mit dem Feld KCNORPLY steuern, ob der Auftragnehmer-Vorgang im laufenden Dialog noch Daten senden darf. Der lokale Vorgang wird nach Ende des Verarbeitungsschritts erst dann fortgesetzt, wenn der ferne Vorgang das Dialogende eingeleitet hat.
Wenn der lokale Vorgang keine Daten an den Auftragnehmer-Vorgang sendet, dann darf der Auftragnehmer-Vorgang in diesem Dialog ebenfalls keine Daten mehr senden. Der lokale Vorgang wartet dann nach Ende des
Verarbeitungsschritts nicht darauf, dass der Auftragnehmer-Vorgang das Dialogende einleitet.
AB (ABort dialogue)
Mit dieser Ausprägung wird für einen Dialog mit einem AN-Vorgang eine abnormale Beendigung eingeleitet. Ist für den Dialog die Commit Funktionalität ausgewählt, dann erzwingt openUTM, dass die verteilte Transaktion auf den letzten
Sicherungspunkt durch einen geeigneten PEND-Aufruf zurückgesetzt wird; erst dann wird der Dialog beendet. Für jeden abnormal zu beendenden Dialog ist ein eigener CTRL Aufruf erforderlich. Eine mit MPUT ausgegebene Nachricht für den Partner wird beim CTRL AB gelöscht.
KCLA
Das Feld KCLA muss mit null versorgt werden.
KCLM
Das Feld KCLM muss mit null versorgt werden.
KCRN
Im Feld KCRN ist die Vorgangs-Id (VGID) des Partner-Vorgangs anzugeben, auf den sich der CTRL Aufruf bezieht.
KCMF/kcfn
Im Feld KCMF/kcfn sind Leerzeichen anzugeben.
KCNORPLY
Im Feld KCNORPLY kann bei KCOM=PR/PE der Wert Y eingetragen werden. Mit diesem Wert wird dem Auftragnehmer-Vorgang angezeigt, dass er in dieser Transaktion bzw. diesem Dialog keine Daten mehr senden darf, auch wenn der lokale Vorgang noch Daten mit MPUT an den Auftragnehmer-Vorgang sendet.
Alle nicht verwendeten Felder müssen mit binär null versorgt werden.
Beim KDCS-Aufruf geben Sie an:
1. Parameter
die Adresse des KDCS-Parameterbereichs.
2. Parameter
die Adresse des Nachrichtenbereichs. Diese Adresse muss bei allen CTRL-Aufrufen angegeben werden, obwohl CTRL-Aufrufe derzeit den Nachrichtenbereich nicht verwenden.
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 CTRL-Aufruf
Im Programm sind auswertbar:
000 | Die Funktion wurde ordnungsgemäß durchgeführt. |
40Z | Die Anwendung wurde ohne verteilte Verarbeitung generiert. |
41Z | Der Aufruf CTRL ist an dieser Stelle unzulässig.
|
42Z | Die Funktionsausprägung in KCOM ist ungültig. |
43Z | Der in KCLA oder KCLM angegebene Wert ist ungültig. |
44Z | Die in KCRN angegebene Vorgangs-Id ist ungültig oder es wurde keine Vorgangs-Id angegeben. |
45Z | Das Feld KCMF/kcfn wurde nicht mit Leerzeichen versorgt. |
49Z | Der Inhalt nicht verwendeter Felder des KDCS-Parameterbereichs ist ungleich binär null. |
54Z | Das Feld KCNORPLY hat bei CTRL PR oder PE einen Wert ungleich Y oder binär null. |
Weitere Returncodes sind dem DUMP zu entnehmen:
71Z | In dem Teilprogrammlauf wurde noch kein INIT-Aufruf gegeben. |
77Z | Ungültige Bereichsadresse. |
Eigenschaften des CTRL-Aufrufs
Zum Ende eines Verarbeitungsschritts, in dem ein CTRL PR oder PE Aufruf und ein MPUT Aufruf an ein und denselben Partner gegeben wurde, darf kein Transaktionsende angefordert werden.
Der Aufruf CTRL PR / PE / AB darf nur an solche AN-Vorgänge gerichtet werden, mit denen ein verteilter Dialog geführt wird, d.h. die mit einem APRO DM adressiert wurden.
Die Aufrufe CTRL PR und CTLR PE dürfen nur an solche AN-Vorgänge gerichtet werden, für welche die Commit Functional Unit ausgewählt wurde und für die nach dem APRO bereits ein MPUT gegeben wurde.
In einem Verarbeitungsschritt bzw. Teilprogrammlauf dürfen CTRL-Aufrufe für mehrere Partner gegeben werden.
Nach einem CTRL AB Aufruf für einen Dialog mit einem AN-Vorgang, bei dem die Commit Funktionalität ausgewählt ist, sind nur die PEND-Aufrufe mit den Operationsmodifikationen RS, FR und ER erlaubt.