Kanäle und Container

Container werden als Datenblöcke bezeichnet, die für die Weitergabe von Informationen zwischen Programmen konzipiert sind. Programme können untereinander eine beliebige Anzahl Container übergeben. Die Container sind in Gruppen zusammengefasst, die als Kanäle bezeichnet werden. Ein Kanal entspricht einer Parameterliste.

Um benannte Container zu erstellen und sie einem Kanal zuzuweisen, verwendet ein Programm die Befehle EXEC CICS PUT CONTAINER (Containername ) CHANNEL (Kanalname ). Anschließend kann der Kanal und seine Container mithilfe der Option CHANNEL(Kanalname) der Befehle EXEC CICS LINK, XCTL, START, RUN TRANSID oder RETURN an ein zweites Programm übergeben werden.

Das zweite Programm kann Container lesen, die ihm mit dem Befehl EXEC CICS GET CONTAINER (Container-Name) übergeben werden. Dieser Befehl liest den benannten Container, der zu dem Kanal gehört, mit dem das Programm aufgerufen wurde.

Wenn das zweite Programm durch einen EXEC CICS LINK -Befehl aufgerufen wird, kann es auch Container an das aufrufende Programm zurückgeben. Dies kann durch die Schaffung neuer Container oder durch die Wiederverwendung vorhandener Container erfolgen.

Kanäle und Container sind nur für das Programm sichtbar, das sie erstellt, und für die Programme, an die sie weitergeleitet werden, oder (bei EXEC CICS FETCH CHANNEL -Befehlen) für das Programm, das den Kanal abruft. Nach Abschluss dieser Programme werden die Behälter und ihre Lagerung CICS® automatisch vernichtet. Programme können auch Befehle zum Löschen von Kanälen und Containern vor diesem Zeitpunkt ausgeben.

AMODE (64)-Programme können Kanäle und Container verwenden, um Daten in 64-Bit-Speichern auf die gleiche Weise zu übertragen, indem sie die Befehle EXEC CICS PUT64 CONTAINER und EXEC CICS GET64 CONTAINER verwenden. Diese Befehle sind nur für die Verwendung in nicht Language Environment® (LE) AMODE(64) Assembler-Anwendungsprogrammen bestimmt, und CICS Business Transaction Services (BTS) Container werden nicht unterstützt.

Kanalcontainer sind nicht wiederverwertbar. Pseudokonversationstransaktionen, die mit RETURN TRANSID CHANNEL() begonnen wurden, können nicht neu gestartet werden. Wenn Sie wiederverwendbare Container verwenden müssen, verwenden Sie CICS BTS)-Container.

Programme, die unter z/OS® aber außerhalb von CICS ausgeführt werden, können Daten an ein CICS -Programm übergeben, indem sie Kanäle und Container auf der externen CICS Schnittstelle (EXCI) verwenden, statt einen Kommunikationsbereich zu verwenden. Die folgenden Befehle werden unterstützt:
  • EXEC CICS DELETE CHANNEL
  • EXEC CICS DELETE CONTAINER
  • EXEC CICS GET CONTAINER
  • EXEC CICS MOVE CONTAINER
  • EXEC CICS PUT CONTAINER
EXCI unterstützt EXEC CICS PUT64 CONTAINER und EXEC CICS GET64 CONTAINER nicht.

Kanäle und Container, die von einem EXCI-Job verwendet werden, werden freigegeben, wenn der Job endet. Es wäre jedoch eine gute Programmierpraxis, wenn der Job einen EXEC CICS DELETE CHANNEL -Befehl zum Löschen eines Kanals und seiner Container ausgeben würde, wenn der Kanal nicht mehr benötigt wird. Andernfalls hat eine spätere Verwendung von EXCI innerhalb desselben Auftrags Zugriff auf den Kanal und seine Container.

Wenn Sie die Befehle STARTBROWSE oder GETNEXT verwenden, beachten Sie, dass die Reihenfolge, in der Container zurückgegeben werden, nicht definiert ist und sich ändern kann. Anträge sollten sich nicht auf die Reihenfolge der zurückgegebenen Behälter stützen. Wenn Sie bereits Anwendungen haben, die als solche geschrieben sind, finden Sie unter "Upgrade von Anwendungen" weitere Informationen.

Transaktionskanal DFHTRANSACTION

Kanäle gehen normalerweise aus dem Bereich, wenn sich die Verbindungsebene ändert. Sie stehen daher möglicherweise nicht für alle Programme in einer Transaktion zur Verfügung. Wenn Sie einen Kanal mit dem Namen DFHTRANSACTION erstellen, wird dieser nicht außer Kraft gesetzt, wenn sich die Verknüpfungsebene ändert. Es steht daher für alle Programme in einer Transaktion zur Verfügung, einschließlich aller Ausstiegspunkte, die API-fähig sind.

Transaktionskanäle können nur für die Verbindungstypen MRO und IPIC verwendet werden.

Transaktionskanäle werden für ISC-über-SNA-Verbindungstypen nicht unterstützt.

DFHTRANSACTION kann in allen API-Befehlen verwendet werden, die einen Kanalnamen akzeptieren.

Sie können einen Transaktionskanal nicht löschen. Wenn Sie also die Verwendung von Daten bereinigen möchten, löschen Sie Container aus dem Kanal, anstatt den Kanal zu löschen.

Transaktionskanäle werden auf DPL-Anfragen versendet. Sie werden nicht auf anderen Funktionsanfragen versendet und stehen daher nicht für Exits in der Zielregion zur Verfügung.

Wenn Sie Transaktionsprogramme haben, die DPL-Aufrufe (Distributed Program Link) an Remote-Programme senden, und Sie den DFHTRANSACTION-Kanal verwenden möchten, sollte das Front-End-Programm im DPL-Stack das Programm sein, das den Kanal erstellt, auch wenn es einen leeren Kanal erstellt.

Ein EXCI-Job, der Kanäle und Container verwendet, kann den Transaktionskanal DFHTRANSACTION verwenden. Der Transaktionskanal mit seinen Container-Daten wird zusätzlich zum Kanal und seinen Containern, die auf der Befehls- oder Aufrufebene EXEC CICS LINK benannt sind, an CICS gesendet. DPL_REQUEST Der Transaktionskanal wird nicht mit COMMAREAS auf einem EXCI EXEC CICS LINK -Befehl oder auf der Anrufebene DPL_REQUEST versendet.

Wenn Sie einen Transaktionskanal im EXCI-Client verwenden möchten, muss der Kanal im EXCI-Client erstellt werden, nicht in CICS. Der Transaktionskanal hat eine Lebensdauer des EXCI-Jobs. Es funktioniert auf dem CICS -Server auf die gleiche Weise, als ob der Transaktionskanal durch eine DPL-Anforderung von einem anderen CICS System bereitgestellt würde.

CICS mit Lesezugriff

CICS kann Kanäle und Container für den eigenen Gebrauch erstellen und diese an Benutzerprogramme weitergeben. In einigen Fällen markiert CICS diese Container als schreibgeschützt, sodass das Benutzerprogramm keine Daten ändern kann, die CICS bei der Rückgabe vom Benutzerprogramm benötigt.

Benutzerprogramme können keine schreibgeschützten Container erstellen.

Ein schreibgeschützter Container kann nicht überschrieben, verschoben oder gelöscht werden. Wenn Sie einen schreibgeschützten Container in einem PUT CONTAINER -, PUT64 CONTAINER -, MOVE CONTAINER - oder DELETE CONTAINER -Befehl angeben, tritt eine INVREQ-Bedingung auf. Programme können schreibgeschützte Kanäle nicht mit dem Befehl EXEC CICS DELETE CHANNEL löschen.