Mit dem Aufruf PTDA (put data) schreiben Sie einen Block aus einem angegebenen Speicherbereich in einen Terminal-spezifischen Langzeitspeicher (TLS) eines LTERM/LPAP/OSI-LPAP/Master-LPAP-Partners.
Ein Teilprogrammlauf eines Dialog-Vorgangs kann nur Blöcke des "eigenen" TLS schreiben, d.h. Blöcke des LTERM/LPAP/OSI-LPAP-Partners, über den der Vorgang gestartet wurde.
Ein Teilprogrammlauf eines Asynchron-Vorgangs kann die Blöcke jedes LTERM/LPAP/OSI-LPAP/Master-LPAP-Partners der UTM-Anwendung beschreiben.
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 | KCLA | KCRN | KCLT | |
Schreiben in einen TLS-Block (im Dialog-Programm) | "PTDA" | Länge | Blockname | — |
Schreiben in einen TLS-Block (im Asynchron-Programm) | "PTDA" | Länge | Blockname | LTERM/LPAP/OSI-LPAP/Master-LPAP-Name |
Versorgen des 2. Parameters
Hier stellen Sie die Adresse des Nachrichtenbereichs bereit, der die zu schreibende Nachricht enthält.
Versorgen der Parameter | |
Feldname im KDCS-Parameterbereich | Inhalt |
"PTDA" | |
Länge in Byte | |
Blockname | |
Name des LTERM/LPAP/OSI-LPAP/Master-LPAP-Partners | |
Daten |
KDCS-Aufruf | |
KDCS-Parameterbereich | Nachrichtenbereich |
C/C++-Makroaufruf | |
Parameter | |
KDCS_PTDA | (nb,kcla,kcrn,kclt) |
In den KDCS-Parameterbereich tragen Sie für den PTDA-Aufruf ein:
KCOP
im Feld KCOP den Operationscode "PTDA".
KCLA
im Feld KCLA die Länge, in der openUTM die Daten in den TLS schreiben soll. Die hier angegebene Länge wird zur neuen Länge des TLS-Blocks.
KCRN
im Feld KCRN den Namen des TLS-Blocks, in den openUTM die Daten schreiben soll.
KCLT
nur bei Asynchron-Programmen:
im Feld KCLT den Namen des LTERM/LPAP/OSI-LPAP/Master-LPAP-Partners, in dessen TLS openUTM schreiben soll (von Dialog-Programmen wird dieses Feld nicht ausgewertet).
Nachrichtenbereich
Im Nachrichtenbereich tragen Sie die Nachricht ein, die Sie in den TLS schreiben wollen.
Beim KDCS-Aufruf geben Sie an:
1. Parameter
als 1. Parameter: die Adresse des KDCS-Parameterbereichs.
2. Parameter
als 2. Parameter: die Adresse des Nachrichtenbereichs, aus dem openUTM die Nachricht lesen soll. Die Adresse des Nachrichtenbereichs geben Sie auch an, wenn Sie in KCLA die Länge 0 eintragen.
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, siehe unten.
KCRCDC
im Feld KCRCDC den internen Returncode von openUTM (siehe openUTM-Handbuch „Meldungen, Test und Diagnose“).
KDCS-Returncodes im Feld KCRCCC beim PTDA-Aufruf
Im Programm sind auswertbar:
000 | Die Operation wurde ausgeführt. |
40Z | Das System kann die Operation nicht ausführen (Generierungs- bzw. Systemfehler, Deadlock, Timeout), siehe KCRCDC. |
41Z | Der Aufruf wurde im ersten Teil des Anmelde-Vorgangs gegeben, obwohl dies in der Generierung nicht erlaubt wurde. |
43Z | Die Längenangabe in KCLA ist negativ bzw. ungültig. |
44Z | Der Name des Blocks in KCRN ist unbekannt oder ungültig. |
46Z | Der LTERM/LPAP/OSI-LPAP/Master-LPAP-Name in KCLT ist ungültig (nur bei Asynchron-Programmen). |
47Z | Der Nachrichtenbereich fehlt oder ist in der angegebenen Länge nicht zugreifbar. |
Ein weiterer Returncode ist dem DUMP zu entnehmen:
71Z | In diesem Programm wurde kein INIT gegeben. |
Eigenschaften des PTDA-Aufrufs
Bei Transaktionsende (PEND RE/FI/FC/SP) wird die Änderung des TLS-Blocks durchgeführt und der Block entsperrt. Andere Transaktionen können ihn dann wieder verwenden.
Bei PEND RS/ER/FR oder RSET werden die Änderungen der TLS-Blöcke rückgängig gemacht und die Blöcke entsperrt.Die Sperre wird über evtl. über einen längeren Zeitraum hinaus beibehalten bei
PEND KP und PGWT KP
PEND PA/PR mit Taskwechsel wegen TAC-Klassensteuerung
PEND PA/PR mit Warten auf eine DGET-Nachricht.
Ein PTDA-Aufruf sperrt den Zugriff auf einen TLS-Block bis zum nächsten Sicherungspunkt. Alle anderen TLS-Blöcke des angesprochenen LTERM-/ LPAP- oder OSI-LPAP-Partners sind nicht gesperrt.
Beachten Sie, dass ein TLS-Block aktuell in der Länge existiert, in der er beim letzten PTDA-Aufruf geschrieben wurde.
Wie openUTM reagiert, wenn der gewünschte TLS-Block gesperrt ist, ist in Abschnitt „Verhalten bei gesperrten Speicherbereichen (TLS, ULS und GSSB)" beschrieben.