IMS-Nachrichtenformate für abgehende Nachrichten
Wenn Sie Nachrichten von Liberty an IMS mithilfe von OTMA senden, muss das Feature zosLocalAdapters von einem IMS-Format in ein OTMA-C/I-Format konvertiert werden. Für die Durchführung dieser Konvertierung muss Liberty wissen, ob die Anforderungs- und Antwortnachrichtensegmente im LLZZ- oder LLLLZZ-Format vorliegen.
Ein Nachrichtensegment im LLZZ-Format beginnt mit einem Feld mit 2 Bytes, das die Länge des Segments enthält, gefolgt von einem reservierten Feld mit 2 Bytes. Der verbleibende Teil des Segments wird von der eigentlichen Nachricht verwendet. Die meisten IMS-Segmente verwenden dieses Format.
Ein Nachrichtensegment im LLLLZZ-Format beginnt mit einem 4-Bytes-Feld, das die Länge des Segments enthält, gefolgt von einem reservierten Feld mit 2 Bytes. Der verbleibende Teil des Segments wird von der tatsächlichen Nachricht verwendet. Das LLLLZZ-Format wird von einigen PL/I-Programmen verwendet.
Das Segmentformat für die Anforderung und die Antwort kann in der Verbindungsfactory-Definition in der Datei server.xml angegeben werden, indem die Eigenschaften OTMARequestLLZZ und OTMAResponseLLZZ definiert werden. Das Segmentformat kann auch angegeben oder überschrieben werden, indem Methoden für die Klasse ConnectionSpecImpl ausgeführt werden, wenn Sie eine Verbindung von der Verbindungsfactory abrufen. Die generierte Javadoc für com.ibm.websphere.ola.ConnectionSpecImpl enthält weitere Informationen darüber, wie Sie die LLZZ-Felder auf Verbindungsebene definieren.
Wenn Sie Mehrfachsegmentnachrichten an IMS senden, muss das erste Nachrichtensegment die IMS-Transaktions-ID (8 Bytes) der IMS-Zieltransaktion enthalten. Diese Transaktions-ID folgt auf das LLZZ- oder LLLLZZ-Präfix. Nachfolgende Segmente dürfen keine Transaktions-ID enthalten. Einzelsegmentnachrichten müssen auf dieselbe Weise wie das erste Segment einer Mehrfachsegmentnachricht erstellt werden. Eine Mehrfachsegmentnachricht kann beispielsweise wie die folgende aussehen:
2 bytes LL 20
2 bytes ZZ 00
8 bytes transaction ID 'MYTRAN01'
8 bytes data 'DATA0000'
2 bytes LL 12
2 bytes ZZ 00
8 bytes data 'DATA0001'
2 bytes LL 12
2 bytes ZZ 00
8 bytes data 'DATA0002'
Alle Nachrichtensegmente müssen zu einem einzelnen Byte-Array verknüpft und mithilfe eines IndexedRecord an IMS übergeben werden. Die Klasse com.ibm.websphere.ola.IndexedRecordImpl wird für diesen Zweck bereitgestellt. Das einzelne Byte-Array muss dem IndexedRecord hinzugefügt und an WOLA übergeben werden, wenn Sie Interaction.execute ausführen. Wenn die Interaktion die Antwort zurückgibt, wird ein IndexedRecord zurückgegeben, der alle Antwortsegmente enthält, die in einem einzelnen Byte-Array verknüpft sind. Das Segment hat entweder das Format LLZZ oder LLLLZZ, je nachdem, welcher Wert für die Eigenschaft OTMAResponseLLZZ definiert ist.