通道和容器
容器 是指定的数据块,旨在在程序之间传递信息。 程序可以在彼此之间传递任意数量的容器。 容器分组为称为 通道 的集合。 通道类似于参数列表。
要创建指定的容器并将其分配给通道,程序将使用 EXEC CICS PUT CONTAINER ( container-name ) CHANNEL ( channel-name ) 命令。 然后,它可以使用 CHANNEL ( channel-name ) 将通道及其容器传递到第二个程序 EXEC CICS LINK , XCTL , START , RUN TRANSID 或 RETURN 命令的选项。
第二个程序可以读取使用 EXEC CICS GET CONTAINER ( container-name ) 传递给它的容器 命令。 此命令读取属于调用程序所使用的通道的指定容器。
如果第二个程序由 EXEC CICS LINK 命令调用,那么它还可以将容器返回到调用程序。 它可以通过创建新容器或复用现有容器来执行此操作。
通道和容器仅对创建它们的程序以及将它们传递到的程序可见,或者 (对于 EXEC CICS FETCH CHANNEL 命令) 访存通道的程序可见。 当这些程序结束时, CICS® 会自动破坏容器及其存储器。 程序还可以在该时间之前发出命令以删除通道和容器。
AMODE (64) 程序可以使用通道和容器,通过使用 EXEC CICS PUT64 CONTAINER 和 EXEC CICS GET64 CONTAINER 命令以相同的方式在 64 位存储器中传输数据。 这些命令仅用于非语言环境 ® (LE) AMODE (64) 组装语言应用程序,并且不支持 CICS 业务事务服务 (BTS) 容器。
通道容器不可恢复。 无法重新启动使用 RETURN TRANSID CHANNEL() 启动的伪会话事务。 如果必须使用可恢复容器,请使用 CICS 业务事务服务 (BTS) 容器。
在 z/OS® 中运行但在 CICS 外部的程序可以使用外部 CICS 接口 (EXCI) 上的通道和容器将数据传递到 CICS 程序,作为使用通信区域的替代方法。 支持以下命令: EXEC CICS DELETE CHANNEL , EXEC CICS DELETE CONTAINER , EXEC CICS GET CONTAINER , EXEC CICS MOVE CONTAINER 和 EXEC CICS PUT CONTAINER 。 EXCI 不支持 EXEC CICS PUT64 CONTAINER 和 EXEC CICS GET64 CONTAINER 命令。
当作业结束时,将释放 EXCI 作业所使用的通道和容器。 但是,良好的编程实践是作业在不再需要通道时发出 EXEC CICS DELETE CHANNEL 命令以删除通道及其容器集。 否则,在同一作业中后续使用 EXCI 将有权访问通道及其容器。
事务通道 DFHTRANSACTION
当链路级别发生更改时,通道通常超出范围。 因此,它们可能不可用于事务中的所有程序。 如果创建名为 DFHTRANSACTION 的通道,那么当链路级别更改时,它不会超出作用域。 因此,它可用于事务中的所有程序,包括任何已启用 API 的出口点。 但是,事务通道无法传递到版本低于 CICS TS 5.2的 CICS 区域。
事务通道只能在 MRO 和 IPIC 链路类型上使用。
基于 SNA 的 ISC 链路类型不支持事务通道。
可在接受通道名称的所有 API 命令中使用 DFHTRANSACTION。
无法删除事务通道,因此当您想要清除使用数据时,请从通道中删除容器,而不是删除通道。
事务通道是在 DPL 请求上交付的。 它们未在其他功能交付的请求上交付,因此无法在目标区域上退出。
当您有事务程序对远程程序进行分布式程序链接 (DPL) 调用时,如果要使用 DFHTRANSACTION 通道,那么 DPL 堆栈中的前端程序应该是创建该通道的程序,即使它创建了空通道也是如此。
使用通道和容器的 EXCI 作业可以使用事务通道 DFHTRANSACTION。 除了在 EXEC CICS LINK 命令或调用级别 DPL_REQUEST 上指定的通道及其容器集外,还会将包含其容器数据的事务通道交付到 CICS 。 在 EXCI EXEC CICS LINK 命令或调用级别 DPL_REQUEST上,事务通道未随 COMMAREAS 一起提供。
如果要在 EXCI 客户机中使用事务通道,那么必须在 EXCI 客户机中创建通道,而不是在 CICS 服务器任务中创建通道。 事务通道具有 EXCI 作业的生存期。 它将以与来自另一个 CICS 系统的 DPL 请求所交付的事务通道相同的方式在 CICS 服务器上运行。
如果 EXCI 作业将事务通道传递到版本低于 CICS TS 5.2的 CICS 区域,那么 CICS 程序将异常终止,异常终止代码为 AXGA。