Natural unter IMS TM - Servicemodule

#### Search Results

Search

# Natural unter IMS TM - Servicemodule

Dieses Kapitel beschreibt die Servicemodule der Natural IMS TM-Schnittstelle.

Die folgenden Themen werden behandelt:

- Zweck der Servicemodule

- Beschreibungen der Servicemodule

- CMCMMND - IMS TM-Operator-Kommandos ausgeben

- CMDEFSW - Aufgeschobenen Transaktionswechsel zu einem Natural-Transaktionscode ausführen

- CMDEFSWX - Aufgeschobenen Transaktionswechsel zu einem Nicht-Natural-Transaktionscode durchführen

- CMDIRNMX - Wechsel zu einer anderen konversationellen Transaktion ohne Nachricht durchführen

- CMDIRNMZ - Wechsel zu einer anderen konversationellen Transaktion ohne Nachricht durchführen

- CMDIRSWX - Wechsel zu einer anderen konversationellen Transaktion mit Nachricht durchführen

- CMDIRSWZ - Wechsel zu einer anderen konversationellen Transaktion mit Nachricht durchführen

- CMDISPCB - PCB-Inhalt holen

- CMEMOD - MOD-Namen dynamisch ändern

- CMGETMSG - Nächste Nachricht lesen

- CMGETSEG - Nächstes Segment lesen

- CMGETSPA - Daten aus SPA übertragen

- CMGSEGO - Nächstes Segment lesen

- CMIMSID - MVS-Subsystemkennung abfragen

- CMIMSINF - Informationen zur Systemumgebung abfragen

- CMPCBADR - PCB-Adresse zurückgeben

- CMPRNTR - Standard-Hardcopy-Ziel ändern

- CMPUTMSG - Ausgabemeldung in den IO-PCB einfügen

- CMPUTSPA - Daten in die SPA verschieben

- CMQTRAN - Inhalt des aktuellen Transaktionscode-Tabelleneintrags zurückgeben

- CMQUEUE - Nachricht in alternativen PCB einfügen

- CMQUEUEX - Vollständige Kontrolle über den Nachrichteninhalt erlangen

- CMSNFPRT - Logischen Gerätenamen setzen

- CMSVC13D - Natural-Sitzung abbrechen

- CMTRNSET - SPA über den alternativen PCB einfügen

- NIIDDEFS - Aufgeschobenen Wechsel zu einer Fremdtransaktion durchführen

- NIIDPURG - Multisegment-Nachricht versenden

- NIIDQUMS - Multisegment-Nachrichten erstellen

- NIIDSETT - Fremdtransaktionscode abfragen

## Zweck der Servicemodule

Servicemodule führen IMS TM-spezifische Funktionen aus. Sie können aus einem Natural-Programm heraus über die standardmäßige Natural-Call-Schnittstelle aufgerufen werden. Beispielprogramme werden durch ein Natural INPL in die Library `SYSEXTP` geladen.

## Beschreibungen der Servicemodule

Dieser Abschnitt enthält detaillierte Beschreibungen der Servicemodule in alphabetischer Reihenfolge. Dazu gehört auch eine Liste der zur Verfügung stehenden Parameter und der Name des modulrelevanten Beispielprogramms.

## CMCMMND - IMS TM-Operator-Kommandos ausgeben

Das Modul `CMCMMND` gibt IMS TM-Operator-Kommandos aus und sendet die Antwortsegmente an das Natural-Anwenderprogramm zurück.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Command` |  | Eingabe |
`Command length` | (B4) | Eingabe |
`Reply` |  | Ausgabe |
`Length of reply area` | (B4) | Eingabe |

Das im Kommandobereich enthaltene Operator-Kommando wird mit der angegebenen Länge an IMS TM ausgegeben.

Wenn der Benutzer eine Antwortlänge ungleich Null eingestellt hat, werden alle Antwortsegmente von IMS TM über die maximal verfügbare Länge in den Antwortbereich verschoben. Wenn der Antwortbereich mindestens zwei Bytes lang ist, enthalten die ersten beiden Bytes den IMS TM-Statuscode, nachdem der Kommandoaufruf erfolgt ist. Die beiden äußersten rechten Bytes des `REPLGTH`-Feldes enthalten die effektive Länge der gesamten Antwort, die in das `REPLY`-Feld übertragen wurde.

Wenn die Antwort von IMS TM gekürzt werden muss, wird dies durch Setzen von `X'80'` im ganz linken Byte des `REPLGTH`-Feldes angezeigt.

Beispielprogramm: `NIPSCMND`

## CMDEFSW - Aufgeschobenen Transaktionswechsel zu einem Natural-Transaktionscode ausführen

Das Modul `CMDEFSW` führt einen verzögerten Transaktionswechsel zu einem Natural-Transaktionscode durch.

Der folgende Parameter wird bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Trancode` |  | Eingabe |

Bei der nächsten Terminal-E/A wird die Ausgabe an das Terminal gesendet und die nächste Eingabe von diesem Terminal wird durch den als Parameternachricht übergebenen Transaktionscode verarbeitet.

## CMDEFSWX - Aufgeschobenen Transaktionswechsel zu einem Nicht-Natural-Transaktionscode durchführen

Das Modul `CMDEFSWX` führt einen aufgeschobenen Wechsel zu einem Nicht-Natural-Transaktionscode durch.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Trancode` |  | Eingabe | Transaktionscode
`Message` |  | Eingabe | Nachricht
`Message length` |  | Eingabe | Länge der Nachricht
`MOD name` |  | Eingabe | MOD-Name

Bei der nächsten Terminal-E/A wird die gegebene Nachricht mit dem gegebenen `MOD_name` eingefügt und die Natural-Sitzung wird beendet.

Wenn der neue Transaktionscode ein Natural-Transaktionscode ist, werden die Nachricht und der `MOD_name`, die als Parameter übergeben wurden, ignoriert und `CMDEFSWX` funktioniert wie `CMDEFSW`.

Beispielprogramm: `NIPSDEFX`.

## CMDIRNMX - Wechsel zu einer anderen konversationellen Transaktion ohne Nachricht durchführen

Das Modul `CMDIRNMX` hat die gleiche Funktionalität wie `CMDIRSWX`, mit dem Unterschied, dass keine Nachricht auf dem alternativen PCB eingefügt wird. Der einzige Parameter, den Sie angeben müssen, ist daher `Trancode`.

Der folgende Parameter wird bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
Trancode |  | Eingabe | Transaktionscode

`CMDIRNMX` kann auch verwendet werden, um direkt zu einem anderen Natural-Transaktionscode zu wechseln, da in diesem Fall standardmäßig die Taste CLEAR als Eingabenachricht an Natural übergeben wird.

Wenn Sie zu einem Nicht-Natural-Transaktionscode wechseln wollen, wird dringend empfohlen, stattdessen das Statement `TERMINATE` in Verbindung mit dem Servicemodul `CMTRNSET` zu verwenden.

    CALL 'CMTRNSET' TRANCODE /* set transaction code */
    TERMINATE                /* terminate Natural and call TRANCODE */

## CMDIRNMZ - Wechsel zu einer anderen konversationellen Transaktion ohne Nachricht durchführen

Das Modul `CMDIRNMZ` hat die gleiche Funktionalität wie `CMDIRSWZ`, mit dem Unterschied, dass keine Nachricht in den alternativen PCB eingefügt wird. Der einzige Parameter, den Sie angeben müssen, ist daher `Trancode`.

Der folgende Parameter wird bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Trancode` |  | Eingabe | Transaktionscode

## CMDIRSWX - Wechsel zu einer anderen konversationellen Transaktion mit Nachricht durchführen

Das Modul `CMDIRSWX` führt einen direkten Wechsel zu einer anderen konversationellen Transaktion durch und gibt eine Nachricht an, die an diese neue Transaktion weitergegeben werden soll.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Trancode` |  | Eingabe | Transaktionscode
`Message` |  | Eingabe | Nachricht
`Message length` | (B4) | Eingabe | Länge der Nachricht

Bei der nächsten Terminal-E/A wird ein Änderungsaufruf gegen den alternativen PCB ausgeführt, um dessen Ziel auf den Wert des Feldes `Trancode` zu setzen. Die SPA und die Nachricht werden dann in den alternativen PCB eingefügt.

Der neue Transaktionscode wird daraufhin überprüft, ob es sich um einen Natural- oder einen Nicht-Natural-Transaktionscode handelt.

Im Falle eines Nicht-Natural-Transaktionscodes wird die Natural-Sitzung abgebrochen.

Bei einem Natural-Transaktionscode wird die Taste CLEAR als Eingabenachricht an Natural übergeben, was bedeutet, dass Natural so reagiert, als ob der Terminalbenutzer die Taste `CLEAR` gedrückt hätte. Der Typ des neuen Transaktionscodes wird automatisch übernommen.

Wenn Sie zu einem Nicht-Natural-Transaktionscode wechseln wollen, wird dringend empfohlen, stattdessen das `TERMINATE`-Statement in Verbindung mit dem Servicemodul `CMTRNSET` zu verwenden.

    CALL 'CMTRNSET' TRANCODE /* set transaction code */
    TERMINATE 0 MESSAGE      /* terminate Natural and call TRANCODE with MESSAGE */

Die Nachricht `MESSAGE` wird in der Länge der Natural-Variablen `Message` an den Transaktionscode `Trancode` übergeben. Der Rückgabecode des `TERMINATE`-Statements muss Null sein. Andernfalls wird die Natural-Sitzung mit der Abbruchfehlermeldung NAT9987 abgebrochen und der Transaktionscode-Wechsel findet nicht statt.

Beispielprogramm: `NIPSDIRX`

## CMDIRSWZ - Wechsel zu einer anderen konversationellen Transaktion mit Nachricht durchführen

Das Modul `CMDIRSWZ` hat die gleiche Funktionalität wie `CMDIRSWX`.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Trancode` |  | Eingabe | Transaktionscode
`Message` |  | Eingabe | Nachricht
`Message length` | (B4) | Eingabe | Länge der Nachricht

Der Unterschied zu `CMDIRSWX` besteht darin, dass im Falle eines Wechsels zu einem Nicht-Natural-Transaktionscode die aktuelle Natural-Sitzung nicht abgebrochen wird. Dies geschieht in der folgenden Absicht:

- Eine bestimmte Natural-Sitzung gibt die Kontrolle an einen Nicht-Natural-Transaktionscode ab. Die Sitzung wird nicht abgebrochen.

- Die Nicht-Natural-Transaktion führt eine Terminal-E/A durch und schaltet dann zurück zur ursprünglichen Natural-Transaktion und gibt Daten in die SPA weiter.

- Die Natural-Transaktion beginnt keine neue Sitzung, sondern setzt die alte Sitzung dort fort, wo sie sie verlassen hat. Der Roll Slot wird vom Roll Server geholt und die Kontrolle an Natural übergeben, um so mit einer bestehenden Sitzung fortzufahren.

Der Nicht-Natural-Transaktionscode muss die Nachricht `LLZZD` übermitteln, wobei `LL=H'0005'`, `ZZ=X'0000'` und `D=X'6D'` gegenüber Natural simulieren, dass die Taste CLEAR gedrückt wurde. Indem das Natural-Programm für die CLEAR-Taste sensibilisiert wird, kann es erkennen, dass die aufgerufene Nicht-Natural-Transaktion wieder da ist, und es kann die von der Nicht-Natural-Transaktion vorbereiteten Daten zur Verwendung in der nachfolgenden Verarbeitung abrufen.

`CMDIRSWZ` kann nicht verwendet werden, wenn der Transaktionscode, zu dem gewechselt werden soll, ein Natural-Transaktionscode ist.

Beispielprogramm: `NIPSDIFS`

## CMDISPCB - PCB-Inhalt holen

Das Modul `CMDISPCB` wird verwendet, um den Inhalt eines Program Control Block (PCB) zu ermitteln.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`PCB number` | (B4) | Eingabe | Nummer des PCB
`Receiving area` |  | Ausgabe | Empfangender Bereich
`Area length` | (B4) | Eingabe | Länge des Bereichs

Nach Ausführung des Aufrufs enthält der empfangende Bereich den Inhalt des PCB mit der angeforderten Nummer und in der angeforderten Länge. Es wird geprüft, ob der angeforderte PCB in Ihrer aktuellen PCB-Liste enthalten ist. Der erste PCB ist PCB Nummer 1, der zweite PCB ist PCB Nummer 2, usw. Wenn Sie eine ungültige Nummer angeben, wird das Feld `PCB number` auf `X'FFFFFFFF'` gesetzt und es werden keine weiteren Informationen an Ihr Anwendungsprogramm übergeben.

Beispielprogramm: `NIPSPCBD`

## CMEMOD - MOD-Namen dynamisch ändern

Mit dem Modul `CMEMOD` kann bei normaler Beendigung einer Natural-Sitzung der MOD-Name für ein bestimmtes `LTERM` dynamisch geändert werden.

Der folgende Parameter wird bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`MOD name` | (A8) | Eingabe | MOD-Name

Bei einem normalen Sitzungsende fügt die umgebungsabhängige Schnittstelle die Nachricht `X'00060000403F'` in den IOPCB ein und verwendet dabei den MOD-Namen, dessen Wert im Parameter `MOD name` enthalten ist. Damit soll dem Terminalbenutzer ein aussagefähiger Bildschirm (z.B. ein allgemeines Menü) präsentiert werden, damit er seine Arbeit am Terminal fortsetzen kann.

## CMGETMSG - Nächste Nachricht lesen

Das Modul `CMGETMSG` liest die nächste Nachricht aus der Nachrichtenwarteschlange.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Message area` |  | Ausgabe | Nachrichtenbereich
`Message area length` | (B4) | Eingabe | Länge des Nachrichtenbereichs

Die Länge wird überprüft, um festzustellen, ob die empfangene Nachricht in den Nachrichtenbereich passt. Die Nachricht wird einschließlich der `LLZZ`-Bytes in den Nachrichtenbereich verschoben. Gibt es keine weiteren Nachrichten, wird `LL=0` in den Nachrichtenbereich verschoben.

Passt die Nachricht nicht in den Nachrichtenbereich, wird eine entsprechende Fehlermeldung zurückgegeben.

Beispielprogramme: `NIPSGETM` und `NIPSOBMP`.

## CMGETSEG - Nächstes Segment lesen

Das Modul `CMGETSEG` liest das nächste Segment der aktuellen Nachricht aus der Nachrichtenwarteschlange.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Message area` |  | Ausgabe | Nachrichtenbereich
`Message area length` | (B4) | Eingabe | Länge des Nachrichtenbereichs

Die Länge wird überprüft, um festzustellen, ob die empfangene Nachricht in den Nachrichtenbereich passt. Das Nachrichtensegment wird einschließlich der `LLZZ`-Bytes in den Nachrichtenbereich verschoben. Sind keine weiteren Nachrichtensegmente vorhanden, wird `LL=0` in den Nachrichtenbereich verschoben.

Passt die Nachricht nicht in den Nachrichtenbereich, wird eine entsprechende Fehlermeldung zurückgegeben.

Alle gelesenen Nachrichtensegmente werden zu einem String verkettet im internen Eingabe-Nachrichtenpuffer aufbewahrt, dessen Größe durch den Schlüsselwort-Subparameter `MISIZE` des Makros `NTIMPSPE` festgelegt wird (siehe Parameter-Referenz-Dokumentation).

Wenn Sie einen Überlauf des internen Eingabenachrichtenpuffers vermeiden wollen, können Sie anstelle von `CMGETSEG` das Modul `CMGSEGO` verwenden.

Beispielprogramm: `NIPSOBMP`

## CMGETSPA - Daten aus SPA übertragen

Das Modul `CMGETSPA` überträgt die Daten aus der SPA ab dem angegebenen Offset in der gewünschten Länge in den Empfangsbereich.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Offset` | (B4) | Eingabe | Versatz
`Length` | (B4) | Eingabe | Länge
`Area` | (B4) | Ausgabe | Bereich

Programmbeispiele: `NIPSGSPA` und `NIPSPSPA`

## CMGSEGO - Nächstes Segment lesen

Das Modul `CMGSEGO` liest das nächste Segment der aktuellen Nachricht aus der Nachrichtenwarteschlange.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Message area` |  | Ausgabe | Nachrichtenbereich
`Message area length` | (B4) | Eingabe | Länge des Nachrichtenbereichs

Die Länge wird überprüft, um festzustellen, ob die empfangene Nachricht in den Nachrichtenbereich passt. Das Nachrichtensegment wird einschließlich der `LLZZ`-Bytes in den Nachrichtenbereich verschoben. Sind keine weiteren Nachrichtensegmente vorhanden, wird `LL=0` in den Nachrichtenbereich verschoben.

Passt die Nachricht nicht in den Nachrichtenbereich, wird eine entsprechende Fehlermeldung zurückgegeben.

Nur das erste und das aktuelle Nachrichtensegment werden im internen Eingabepuffer aufbewahrt, dessen Größe durch den Subparameter `MISIZE` des Makros `NTIMPSPE` festgelegt wird (siehe Parameter-Referenz-Dokumentation). Wenn Sie alle Nachrichtensegmente behalten wollen, müssen Sie anstelle von `CMGSEGO` das Modul `CMGETSEG` verwenden.

Beispielprogramm: `NIPSOBMP`

## CMIMSID - MVS-Subsystemkennung abfragen

Mit dem Modul `CMIMSID` können Natural-Programme die MVS-Subsystemkennung des IMS TM-Systems abfragen, in dem sie zurzeit eingeplant sind.

Der folgende Parameter wird bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`IMSID` | (A4) | Ausgabe | Subsystemkennung

Nach der Ausführung des Aufrufs enthält das Feld `IMSID` die MVS-Subsystemkennung des IMS TM-Systems, für das Sie zurzeit eingeplant sind.

Das Modul `CMIMSID` hängt von einem internen IMS TM-Kontrollblock ab. Es handelt sich daher um eine IMS TM-release-abhängige Funktion, die aktualisiert wird, wann immer dies möglich ist.

## CMIMSINF - Informationen zur Systemumgebung abfragen

Das Modul `CMIMSINF` liefert Informationen zur Systemumgebung.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`IMSID` | (A4) | Ausgabe | Die IMS TM-Kennung.
`SUFFIX` | (A2) | Ausgabe | Das Preload-Suffix.
`APPLGNAM` | (A8) | Ausgabe | Der Gruppenname der Anwendung.
`APPLNAM` | (A8) | Ausgabe | Der Name der Anwendung.
`NRENT` | (B4) | Ausgabe | Die Anzahl der vorab geladenen reentranten Module.
`NNONR` | (B4) | Ausgabe | Die Anzahl der vorab geladenen nicht-reentranten Module.

CMIMSINF ist ebenfalls ein IMS TM Release-abhängiges Modul.

Beispielprogramm: `NIPSINF`

## CMPCBADR - PCB-Adresse zurückgeben

Das Modul `CMPCBADR` gibt die Adresse eines PCB zurück, der durch einen logischen Namen identifiziert wird. Der PSB-Name wird ebenfalls an das Natural-Programm zurückgegeben.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`PSB name` | (A8) | Ausgabe | Der PSB-Name.
`PCB name` | (A8) | Eingabe | Der PSB-Name.
`PCB address` | (B4) | Ausgabe | Die PSB-Adresse.

Nach der Ausführung des Aufrufs enthält das Feld `PCBADR` die Adresse des PCB, der im Tabellenmodul durch den logischen Namen `PCBNAME` in dem Tabelleneintrag identifiziert wird, der dem aktuell eingeplanten Transaktionscode entspricht. Existiert der logische Name für diesen Transaktionscode nicht, wird im Feld `PCBADR` der Wert `X'FFFFFFFF'` zurückgegeben. In jedem Fall enthält das Feld `PSBNAME` den Namen des aktuell eingeplanten PSB.

Beispielprogramm: `NIPSPCBA`

## CMPRNTR - Standard-Hardcopy-Ziel ändern

Das Modul `CMPRNTR` ändert das vom Modul `NIIIMSHC` gesetzte Standard-Hardcopy-Ziel in den als Parameter übergebenen Wert.

Der folgende Parameter wird bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Destination` | (A8) | Eingabe | Das Hardcopy-Ziel.

Das Modul `CMPRNTR` wird nur aus Kompatibilitätsgründen bereitgestellt. Verwenden Sie stattdessen das Natural-Statement `SET CONTROL` `hdest-id`.

## CMPUTMSG - Ausgabemeldung in den IO-PCB einfügen

Das Modul `CMPUTMSG` kann verwendet werden, um eine beliebige Ausgabemeldung mit einer gegebenen Länge unter Verwendung eines gegebenen MFS `MOD name` in den IO-PCB einzufügen. Auf diese Weise können Sie MFS-formatierte Ausgabemeldungen an den Absender der Eingabenachricht zurücksenden.

`CMPUTMSG` entnimmt die in der Nachrichtenlänge angegebene Anzahl von Bytes aus dem Nachrichtenbereich und fügt sie mit dem angegebenen `MOD name` in die Nachrichtenwarteschlange ein. Es gibt keine Beschränkung bezüglich der Länge der Nachricht, außer dass sie in den Eingabe-Nachrichtenbereich der umgebungsabhängigen Schnittstelle passen muss.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Message area` |  | Eingabe | Nachrichtenbereich
`Message length` | (B4) | Eingabe | Nachrichtenlänge
`MOD name` |  | Eingabe | MOD-Name

Wird in der IO-PCB ein nicht leerer Statuscode zurückgegeben, wird die Natural-Fehlermeldung NAT8272 ausgegeben, die den Statuscode als variablen Teil enthält.

## CMPUTSPA - Daten in die SPA verschieben

Das Modul `CMPUTSPA` verschiebt die Daten mit der angegebenen Länge und dem angegebenen Offset in die SPA.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Offset` | (B4) | Eingabe | Versatz
`Length` | (B4) | Eingabe | Länge
`Data` |  | Eingabe | Daten

Es wird geprüft, ob der angegebene Offset in die Natural Reserved Area (NRA) innerhalb der SPAs zeigt. Wenn ja, wird der Rückgabecode 4 zurückgegeben.

Beispielprogramm: `NIPSPSPA`

## CMQTRAN - Inhalt des aktuellen Transaktionscode-Tabelleneintrags zurückgeben

Das Modul `CMQTRAN` gibt den Inhalt des aktuellen Eintrags in der Transaktionscode-Tabelle zurück.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Transaction code` |  | Ausgabe | Der Transaktionscode, unter dem Sie gerade arbeiten.
`Offset` | (B2) | Ausgabe | Der Versatz der NRA zu der SPA.
`Length` | (B2) | Ausgabe | Die Länge der NRA.
`Uoffset` | (B2) | Ausgabe | Nicht verwendet.
`PSB name` |  | Ausgabe | Der Name des geplanten PSB.
`Number of PCBs` |  | Ausgabe | Die Anzahl der PCBs, deren Adressen Sie über das Modul `CMPCBADR` erhalten können.

Die logischen Namen, mit denen Sie im Modul `CMPCBADR` auf PCBs verweisen können, werden aus Security-Gründen nicht zurückgegeben. Sie sollten sich von Ihrem Systemverwalter darüber informieren lassen, auf welche logischen Namen Sie verweisen dürfen.

Beispielprogramm: `NIPSQTRA`

## CMQUEUE - Nachricht in alternativen PCB einfügen

Das Modul `CMQUEUE` fügt eine Nachricht in den angegebenen alternativen PCB ein.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Destination` |  | Eingabe | Ziel
`Message` |  | Eingabe | Nachricht
`Message length` | (B4) | Eingabe | Nachrichtenlänge
`TP PCB number` | (B4) | Eingabe | Optional

Dieser Aufruf bewirkt einen sofortigen Änderungsaufruf, mit dem das Ziel des angegebenen alternativen PCB auf den im Feld `Destination` enthaltenen Wert gesetzt wird, woraufhin die Nachricht in den alternativen PCB mit der angegebenen Nachrichtenlänge eingefügt wird.

Der Transaktionscode wird nach den `LLZZ`-Bytes mit einer Länge von 8 eingefügt.

Nachdem ein `PURGE`-Aufruf ausgegeben worden ist, wird die Kontrolle an das nächste Statement im Natural-Programm zurückgegeben.

Die Nachricht kann eine beliebige Länge bis zur Größe des Eingabenachrichtenbereichs haben (normalerweise 8000 minus 12 Byte).

Der zu verwendende alternative PCB wird mit dem letzten, optionalen, Parameter angegeben. Wird beim Aufruf keine `TP PCB number` angegeben, wird der mit dem Subparameter `ALTPCB` des Makros `NTIMSPT` (im Natural-Parametermodul) angegebene alternative TP PCB verwendet.

Beispielprogramm: `NIPSQLOA`

## CMQUEUEX - Vollständige Kontrolle über den Nachrichteninhalt erlangen

Das Modul `CMQUEUEX` ermöglicht Ihnen die vollständige Kontrolle über den Inhalt einer Nachricht, die in die IMS TM-Eingabewarteschlange gestellt werden soll.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Destination` |  | Eingabe | Ziel
`Message` |  | Eingabe | Nachricht
`Message length` | (B4) | Eingabe | Nachrichtenlänge
`TP PCB number` | (B4) | Eingabe | Optional

Dieser Aufruf bewirkt einen sofortigen Änderungsaufruf, um das Ziel des angegebenen alternativen PCB auf den im Feld `Destaination` enthaltenen Wert zu setzen, woraufhin die Nachricht in den alternativen PCB mit der angegebenen Nachrichtenlänge nach den `LLZZ`-Bytes eingefügt wird. Der Unterschied zu `CMQUEUE` besteht darin, dass dort der Transaktionscode nicht nach den `LLZZ`-Bytes eingefügt wird.

Nach einem `PURGE`-Aufruf wird die Kontrolle an das nächste Statement im Natural-Programm zurückgegeben. Die Nachricht kann eine beliebige Länge bis zur Größe des Eingabenachrichtenbereichs haben (normalerweise 8000 minus 12 Byte).

Der zu verwendende alternative PCB wird mit dem letzten, optionalen, Parameter angegeben. Wird beim Aufruf keine TP PCB-Nummer angegeben, wird der mit dem Subparameter `ALTPCB` des Makros `NTIMSPT` (im Natural-Parametermodul) angegebene alternative TP PCB verwendet.

Beispielprogramm: `NIPSQUEX`

## CMSNFPRT - Logischen Gerätenamen setzen

Das Modul `CMSNFPRT` setzt den logischen Namen des Geräts, an das die Natural-Nachrichten während des Online-BMP-Laufs gesendet werden.

Der folgende Parameter wird bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Printer name` |  | Eingabe | Name des Druckers

Vor dem Aufruf von `CMSNFPRT` müssen Sie mit dem Natural-Profilparameter `SENDER` das Standard-Ausgabeziel definieren.

Beispielprogramm: `NIPSOBMP`

## CMSVC13D - Natural-Sitzung abbrechen

Das Modul `CMSVC13D` bricht die Natural-Sitzung mit dem Benutzerabbruchcode U3962 ab und erzeugt einen Dump.

Parameter: Keine

Beispielprogramm: Keines.

## CMTRNSET - SPA über den alternativen PCB einfügen

Wenn die Natural-Sitzung normal beendet wird, führt die Natural IMS TM-Schnittstelle einen direkten Programm-Wechsel zum angegebenen Transaktionscode durch und fügt die SPA über den alternativen PCB ein.

Der folgende Parameter wird bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Trancode` |  | Eingabe | Transaktionscode

Beispielprogramm: `NIPSEOSS`

## NIIDDEFS - Aufgeschobenen Wechsel zu einer Fremdtransaktion durchführen

Das Modul `NIIDDEFS` ist ähnlich wie das Modul `CMDEFSWX`. Wenn Sie mit `NIIDDEFS` einen aufgeschobenen Wechsel zu einer Fremdtransaktion durchführen, wird die aktuelle Natural-Sitzung wie beim Modul `CMDIRSWZ` unterbrochen. Die unterbrochene Natural-Sitzung kann jederzeit wieder aufgenommen werden, indem Sie eine Nachricht mit der CLEAR-Taste an Natural zurücksenden.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Transaction code` |  | Eingabe | Der Transaktionscode, zu dem gewechselt werden soll.
`Message` |  | Eingabe | Die Nachricht, die an den fremden Transaktionscode gesendet werden soll.
`Message length` | (B4) | Eingabe | Die Nachrichtenlänge.
`MOD name` | (A8) | Eingabe | Der MOD-Name.
`Transaction type` | (A4) | Eingabe | Eine Variable im Format A4, die den String `CONV` enthält, wenn die fremde Transaktion konversationell ist, und den String `NONC`, wenn die fremde Transaktion nicht konversationell ist.

Rückgabecodes:

0 | OK
4 | Die Nachrichtenlänge ist größer als die Größe des in der Umgebungstabelle definierten Nachrichtenbereichs.
8 | Sie haben versucht, einen aufgeschobenen Wechsel mit Suspend von einer konversationellen Natural- zu einer nicht-konversationellen Fremdtransaktion durchzuführen, was nicht möglich ist.
12 | Der fünfte Parameter ist ungültig; er enthält weder `CONV` noch `NONC`.

Beispielprogramm: `NIPSDEFS`

## NIIDPURG - Multisegment-Nachricht versenden

Das Modul `NIIDPURG` hat keine Parameter. Es führt einen `PURGE`-Aufruf unter Verwendung desselben alternativen PCB aus, der beim `NIIDQUMS`-Aufruf verwendet wurde, und sendet Multisegment-Nachrichten, die mit dem Modul `NIIDQUMS` erstellt wurden.

Rückgabecodes: Entweder enthalten die Bytes zwei und drei des 4-Byte-Rückgabecodes den Statuscode, oder der Rückgabecode hat den Wert 0.

Beispielprogramm: `NIPSQLMS`

## NIIDQUMS - Multisegment-Nachrichten erstellen

Dieses Modul erstellt Multisegment-Nachrichten. Es hat grundsätzlich die gleiche Funktionalität wie das Modul `CMQUEUE`, mit dem Unterschied, dass NIIDQUMS keinen `PURGE`-Aufruf ausgibt.

Die folgenden Parameter werden bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Destination` |  | Eingabe | Ziel
`Message` |  | Eingabe | Nachricht
`Message length` | (B4) | Eingabe | Nachrichtenlänge
`TP PCB number` | (B4) | Eingabe | Optional

Die Durchführung des `PURGE`-Aufrufs mit dem Modul `NIIDPURG` liegt in Ihrer Verantwortung.

Der zu verwendende alternative PCB wird mit dem letzten, optionalen, Parameter angegeben. Wird beim Aufruf keine TP PCB-Nummer angegeben, wird der mit dem Subparameter `ALTPCB` des Makros `NTIMSPT` (im Natural-Parametermodul) angegebene alternative TP PCB verwendet.

Beispielprogramm: `NIPSQLMS`

## NIIDSETT - Fremdtransaktionscode abfragen

Um einen korrekten Transaktionswechsel zu einem fremden Transaktionscode durchführen zu können, muss der Typ des Fremdtransaktionscodes bekannt sein. Um diesen Typ zu erhalten, kann das spezielle Modul `NIIDSETT` verwendet werden. Wird `NIIDSETT` nicht verwendet, wird angenommen, dass der fremde Transaktionscode vom gleichen Typ ist wie der aufrufende Natural-Transaktionscode. Ist dies nicht der Fall, kommt es zu unvorhersehbaren Ergebnissen oder zu einer abnormalen Beendigung der Sitzung.

Der folgende Parameter wird bereitgestellt:

Name | Format/Länge | Typ | Kommentar
--- | --- | --- | ---
`Transaction type` | (A4) | Eingabe | Mögliche Werte: `CONV` für konversationell, `NONC` für nicht-konversationell.

### On this page

- Zweck der Servicemodule
- Beschreibungen der Servicemodule
- CMCMMND - IMS TM-Operator-Kommandos ausgeben
- CMDEFSW - Aufgeschobenen Transaktionswechsel zu einem Natural-Transaktionscode ausführen
- CMDEFSWX - Aufgeschobenen Transaktionswechsel zu einem Nicht-Natural-Transaktionscode durchführen
- CMDIRNMX - Wechsel zu einer anderen konversationellen Transaktion ohne Nachricht durchführen
- CMDIRNMZ - Wechsel zu einer anderen konversationellen Transaktion ohne Nachricht durchführen
- CMDIRSWX - Wechsel zu einer anderen konversationellen Transaktion mit Nachricht durchführen
- CMDIRSWZ - Wechsel zu einer anderen konversationellen Transaktion mit Nachricht durchführen
- CMDISPCB - PCB-Inhalt holen
- CMEMOD - MOD-Namen dynamisch ändern
- CMGETMSG - Nächste Nachricht lesen
- CMGETSEG - Nächstes Segment lesen
- CMGETSPA - Daten aus SPA übertragen
- CMGSEGO - Nächstes Segment lesen
- CMIMSID - MVS-Subsystemkennung abfragen
- CMIMSINF - Informationen zur Systemumgebung abfragen
- CMPCBADR - PCB-Adresse zurückgeben
- CMPRNTR - Standard-Hardcopy-Ziel ändern
- CMPUTMSG - Ausgabemeldung in den IO-PCB einfügen
- CMPUTSPA - Daten in die SPA verschieben
- CMQTRAN - Inhalt des aktuellen Transaktionscode-Tabelleneintrags zurückgeben
- CMQUEUE - Nachricht in alternativen PCB einfügen
- CMQUEUEX - Vollständige Kontrolle über den Nachrichteninhalt erlangen
- CMSNFPRT - Logischen Gerätenamen setzen
- CMSVC13D - Natural-Sitzung abbrechen
- CMTRNSET - SPA über den alternativen PCB einfügen
- NIIDDEFS - Aufgeschobenen Wechsel zu einer Fremdtransaktion durchführen
- NIIDPURG - Multisegment-Nachricht versenden
- NIIDQUMS - Multisegment-Nachrichten erstellen
- NIIDSETT - Fremdtransaktionscode abfragen