Zu den Programmen von CICS Transaction Server for z/OS kann eine Verbindung hergestellt werden, indem entweder Kommunikationsbereichsdatenstrukturen oder Kanaldatenstrukturen als Eingabe verwendet werden, die ihrerseits dieselben Datenstrukturen als Ausgabe zurückgeben. Der CICSRequest-Knoten unterstützt die Interaktion mit CICS durch Kommunikationsbereichs- oder Kanaldatenstrukturen.
Kanäle sind eine moderne Alternative zu Kommunikationsbereichen, da die maximale Größe der Kommunikationsbereiche von 32766 Byte für sie nicht gilt und sie größere Flexibilität bei den Eingabe- und Ausgabedatenstrukturen ermöglichen.
Wenn ein Kommunikationsbereich (COMMAREA) als Eingabedatenstruktur für die Kommunikation mit CICS dient, sendet der CICSRequest-Knoten einen Abschnitt des Eingabehauptteils, wie in den Anfrageeigenschaften des CICSRequest-Knotens definiert, als Kommunikationsbereich an CICS.
Der zurückkehrende Kommunikationsbereich wird dann in die Ausgabebaumstruktur gestellt und ersetzt den vorhandenen Hauptteil an der Stelle, die in den Ergebniseigenschaften des CICSRequest-Knotens definiert ist. Der Kommunikationsbereich kann anschließend über die Eigenschaften von 'Syntaxanalyse der Antwortnachricht' des CICSRequest-Knotens für die Syntaxanalyse konfiguriert werden.
Stellen Sie beim Definieren einer Kommunikationsbereichsdatenstruktur sicher, dass der Eigenschaftswert Kommunikationsbereichslänge des CICSRequest-Knotens groß genug ist, um die Daten der Eingabeanforderung oder der Ausgabeantwort zu enthalten, ohne den Maximalwert von 32767 Byte zu überschreiten. Wenn der Wert für Länge des Kommunikationsbereichs nicht groß genug für die Antwortdaten oder die Anforderungsdaten ist, kommt es in zu einem Speicherverlust in CICS. Die Größe des Kommunikationsbereichs kann nicht vom CICS-Programm geändert werden. Überschreiten die serialisierten Anforderungsdaten die Kommunikationsbereichslänge, werden die Daten auf die Länge des Kommunikationsbereichs abgeschnitten. Sie können den Wert für die Kommunikationsbereichslänge beim CICS-Administrator oder -Entwickler erfragen.
Der Standardwert für die Basiseigenschaft Datenstruktur des CICSRequest-Knotens ist Kommunikationsbereich.
Weitere Informationen zur Verwendung eines Kommunikationsbereichs als Eingabedatenstruktur finden Sie in den Abschnitten CICS Transaction Server for z/OS-Datenstruktur definieren, Nachrichtenfluss mit einem CICSRequest-Knoten entwickeln und Nachricht für den CICSRequest-Knoten formen.
CICS-Kanäle enthalten eine Reihe von Strukturen, die als Container bezeichnet werden. Container enthalten die Geschäftsinformationen, auf die das CICS-Zielprogramm zugreift. Jeder Container kann bis zu 2 GB Daten enthalten, und die Anzahl der Container pro Kanal richtet sich allein nach dem Bedarf. Dies sorgt für Flexibilität bei der Größe und dem Aufbau der der Daten. Jeder Containername ist ein alphanumerischer Wert mit maximal 16 Zeichen, der innerhalb des Kanals eindeutig sein muss. Er wird zum Abrufen des Containerinhalts aus dem Kanal benötigt.
Anders als bei Kommunikationsbereichsstrukturen, bei denen die Größe der Antwort bereits in der Anforderung zu berücksichtigen ist, muss bei Binärcontainern die Größe des Antwortkanals nicht der Anforderung entsprechen.
Kanäle und Container in CICS
Der CICS-Kanal im folgenden Beispieldiagramm enthält zwei Container: CustomerName (Kundenname) und Order (Auftrag).
01 ORDER_STRUCTURE.
03 QTY COMP-1.
03 ITEM PIC X(10).
03 PRICE PIC S9(9).
Das
CICS-Zielprogramm kann beide genannten
Container aus dem Kanal abrufen, indem der Name des Containers beim Ausführen der API
GET CONTAINER angegeben wird. Wenn das
CICS-Programm die Daten empfängt, werden sie
auf die im Programm festgelegte Weise verarbeitet. Beispielsweise kann das Programm
andere Container im Kanal platzieren, um mithilfe der API PUT CONTAINER
eine Antwort für den aufgerufenen Container zu liefern.Kanäle und Container in WebSphere Message Broker
In WebSphere Message Broker wird ein CICS-Kanal als Nachrichtensammlungsstruktur dargestellt. Eine Nachrichtensammlung kann untergeordnete Nachrichten enthalten, die vom CICSRequest-Knoten alle als einzelne Container behandelt werden. Beim Verwenden einer Kanaldatenstruktur nutzt der CICSRequest-Knoten eine Nachrichtensammlungsstruktur sowohl für die Eingabe als auch die Ausgabe. Weitere Informationen zu Nachrichtensammlungen finden Sie im Abschnitt Nachrichtensammlungen und zum Erstellen einer Nachrichtensammlung im Abschnitt Nachrichtensammlung mit ESQL erstellen.
Der Name der Nachrichtensammlung wird zur Benennung des Kanals verwendet. Der Name der untergeordneten Nachricht in der Nachrichtensammlung dient als Name des Containers im Kanal und muss eindeutig sein. Wenn der Name der untergeordneten Nachricht in der Nachrichtensammlung nicht eindeutig ist, wird die Anforderung in CICS abgelehnt.
CICS | WebSphere Message Broker |
---|---|
Name des Kanals | Name der Nachrichtensammlung |
Name des Containers (muss innerhalb des übergeordneten Kanals eindeutig sein) | Name der untergeordneten Nachricht (muss innerhalb der Nachrichtensammlung eindeutig sein) |
Name/Wert-Attribute
In WebSphere Message Broker können Container erstellt werden, indem einer Nachrichtensammlung Name/Wert-Attribute hinzugefügt werden. Eine Nachrichtensammlung kann keine oder mehrere Attribute haben. Der Name eines Attributs muss innerhalb der Nachrichtensammlung eindeutig sein. Ein Standardattribut für die Nachrichtensammlung ist ein Attribut namens CollectionName.
Sie können einer Nachrichtensammlung Name/Wert-Attribute hinzufügen, um CICS-Container zu erstellen. Mit Ausnahme des Attributs CollectionName (Name der Sammlung) können Name/Wert-Attribute in der Nachrichtensammlung anstelle von kompletten Nachrichtenordnern für einfache Daten verwendet werden. Beispielsweise kann in der Nachrichtensammlung ein Name/Wert-Zeichenfolgeattribut festgelegt und direkt durch den CICSRequest-Knoten genutzt werden, ohne dass eine Nachrichtengruppe für das Element erstellt werden muss.
Name/Wert-Attribute können von Containern sowohl bei der Ausgabe erstellt als auch bei der Eingabe akzeptiert werden. Weitere Informationen zum Erstellen eines Attributs anstelle eines Nachrichtenordners aus einem Container finden Sie im Abschnitt CICSRequest-Knoten.
Der CICS-Kanal im folgenden Beispieldiagramm wird durch eine Nachrichtensammlung mit dem Namen Collection dargestellt. Die Nachrichtensammlung Collection enthält zwei Container, die durch untergeordnete Nachrichten mit den Namen CustomerName und Order dargestellt werden. Sowohl CollectionName als auch CustomerName ist ein Name/Wert-Attribut, doch das Attribut CollectionName wird vom CICSRequest-Knoten nicht als Attribut behandelt und deshalb nicht an CICS gesendet.
Wenn das Attribut CustomerName vom CICSRequest-Knoten als Zeichencontainer behandelt werden soll, muss dies in der Eigenschaft 'LocalEnvironment' für die lokale Umgebung angegeben werden.
Lokale Umgebung
SET
OutputLocalEnvironment.Destination.CICS.RequestChannel.Containers.<Containername> = CHARACTER;
Wenn eine Nachrichtensammlung nach der entsprechenden Anforderung vom CICSRequest-Knoten ausgegeben wird, enthält die Eigenschaft 'LocalEnvironment' die Informationen zum Rückgabetyp des Containers. Wenn der Antwortkanal z. B. von CICS zurückkommt, werden in 'LocalEnvironment' die Containertypen angezeigt, die an folgender Stelle zurückgekommen sind: LocalEnvironment.CICS.ResponseChannel.Containers.<Containername> = CHARACTER
SET
OutputLocalEnvironment.Destination.CICS.RequestChannel.ChannelName =
<Neuer_Kanalname>;
SET
OutputLocalEnvironment.Destination.CICS.RequestChannel.SingleMessageContainerName =
<Containername_für_einzelne_Nachricht>;
Da eine Nachrichtensammlung es ermöglicht, dass jeder Container im Kanal als separate Nachricht modelliert wird, hat jede Nachricht ihre eigenen Struktur- und Syntaxanalyseoptionen. Beispielsweise kann ein Container auf XML und ein anderer auf einem Copybook basieren, die jeweils durch die Verwendung von XMLNSC- bzw. MRM-Nachrichten innerhalb einer Nachrichtensammlung dargestellt werden.
Jede untergeordnete Nachricht in der Nachrichtensammlung enthält Angaben zu Nachrichtendomäne, -gruppe, -typ, -format, -CCSID und -codierung. Diese Informationen sind im Ordner Eigenschaften gespeichert, der der untergeordneten Nachricht zugeordnet ist, die zu einem Bytestrom serialisiert und an CICS gesendet wird. Die Serialisierung der untergeordneten Nachrichtenordner in der Nachrichtensammlung, die an CICS gesendet wird, findet auf der Ebene des letzten untergeordneten Elements der Nachrichteneigenschaftenendomäne statt. Nicht alle CICS-Container müssen durch eine Nachrichtengruppe dargestellt werden.
Im vorherigen Beispiel kann der Container Order als MRM-Nachricht dargestellt werden, und aus dem Copybook 'ORDER_STRUCTURE' kann eine Nachrichtengruppe zu deren Darstellung erstellt werden. Der Rückgabekanal wird in eine Nachrichtensammlung konvertiert, in der jede untergeordnete Nachricht einen Container aus dem Kanal dargestellt. Untergeordnete Nachrichten in der Nachrichtensammlung werden mithilfe des Namens der jeweiligen untergeordneten Nachricht einer Liste mit Angaben zu Nachrichtendomäne, -gruppe, -typ, -format, -CCSID und -codierung zugeordnet, wobei jedoch bei zeichenbasierten Nachrichten die CCSID und Codierungsinformationen ignoriert werden. Wenn in der Nachricht keine Zuordnung gefunden wird, kann eine Standardzuordnung erstellt werden.
Da im Voraus nicht bekannt ist, wie viele Container die Antwort enthält, wird als Ausgabe immer eine Nachrichtensammlung erstellt.
Anhand der Eigenschaften zur Syntaxanalyse der Antwortnachricht für den CICSRequest-Knoten können Sie eine Zuordnung zwischen dem Rückgabecontainer und den Angaben zu Nachrichtendomäne, -gruppe, -typ, -format, -CCSID und -codierung herstellen. Insbesondere mithilfe der Eigenschaft Position für Ergebnisdaten kann die Ergebnisbaumstruktur auf einen einzelnen Nachrichtenordner oder ein einzelnes Feld bzw. eine einzelne untergeordnete Baumstruktur für die Ausgabe reduziert werden. Weitere Informationen zur Eigenschaft Position für Ergebnisdaten finden Sie im Abschnitt CICSRequest-Knoten.
Da der Kanal in WebSphere Message Broker durch eine Nachrichtensammlung dargestellt wird, können Sie den Kanalnamen erstellen, indem Sie den Namen der Nachrichtensammlung festlegen. Die Namen von Nachrichtensammlungen werden mithilfe des Attributs CollectionName festgelegt. Weitere Informationen zum Erstellen einer Nachrichtensammlung und zum Festlegen von deren Namen finden Sie im Abschnitt Nachrichtensammlung mit ESQL erstellen.
Da ein Container in WebSphere Message Broker durch eine untergeordnete Nachricht dargestellt wird, können Sie den Containernamen erstellen, indem Sie den Namen der untergeordneten Nachricht festlegen. Weitere Informationen zum Erstellen einer Nachrichtensammlung und zum Festlegen des Namens einer untergeordneten Nachricht finden Sie im Abschnitt Nachrichtensammlung mit ESQL erstellen.
Mit einem Beispiel wird veranschaulicht, wie ein kanalbasiertes CICS-Programm aufgerufen wird, indem eine Nachrichtensammlung für den CICSRequest-Knoten erstellt und mit Daten gefüllt wird, und wie die Nachrichtensammlung nach diesem Aufruf verarbeitet wird. Der Abschnitt CICS Transaction Server for z/OS Channel Connectivity enthält weitere Informationen hierzu.