外部 CICS 接口

外部 CICS® 接口 (EXCI) 是一个应用程序编程接口,支持在 z/OS® 中运行的非CICS 程序 (客户机程序) 调用在 CICS 区域中运行的程序 (服务器程序) ,并通过使用通信区域或使用通道和一组容器来传递和接收数据。 启动 CICS 应用程序如同由另一个 CICS 应用程序链接到一样。

您可以使用外部 CICS 接口将会话或 管道 (发送进程与接收进程之间的单向通信路径) 分配到 CICS 区域,并通过这些会话传递分布式程序链接 (DPL) 请求。 CICS 区域间通信 (IRC) 设施的多区域操作 (MRO) 设施支持这些请求,每个管道映射到一个 MRO 会话,其中客户机程序表示发送进程, CICS 服务器区域表示接收进程。

每个 EXCI 地址空间有 100 个管道的缺省限制; 当 z/OS 已 IPL 时,可以更改此限制。 此限制可防止 EXCI 客户机垄断 MRO 资源,这可能会阻止 CICS 区域使用 MRO。 此限制在 MRO 和跨系统 MRO (XCF/MRO) 环境中都适用。 allocate_pipe 请求导致发出 MRO LOGON 请求,并且对允许来自所有地址空间的 MRO LOGON 请求总数进行了限制。 当您使用 XCF/MRO 时,这很关键,其中 XCF 组中成员数的限制也会限制 MRO LOGON 请求的总数。

因此,当不再需要管道时,必须确保管道已关闭并取消分配。 在程序终止之前,由用户负责确保客户机程序关闭并取消分配它已打开的管道。 未能释放管道可能会导致由于达到登录限制而导致的错误。

注: 成功 Open_Pipe 请求后,当客户机程序完成使用管道时,必须首先发出 Close_Pipe 命令,然后发出 Deallocate_Pipe 命令以释放管道。 如果发出 Deallocate_Pipe 命令而不首先使用 Close_Pipe关闭打开的管道,那么请求将失败,返回 USER_ERROR (RC12) ,原因码为 405 PIPE_NOT_CLOSED。

如果 Open_Pipe 请求失败,建议取消分配管道以避免达到登录限制。

外部 CICS 接口标识 CICS 区域 APPLID 要与之通信的 CICS 区域,如 APPLID 系统初始化参数中所定义。 可以在 EXCI API 调用上指定 APPLID ,也可以使用 DFHXCURM 用户可替换程序指定 APPLID。 您还可以使用 DFHXCURM 来更改要在 allocate_pipe 请求上使用的 XCFGROUP 的值。 有关 DFHXCURM 的更多信息,请参阅 EXCI 用户可替换模块
注: 请勿将术语 通用 APPLID通用资源名称混淆。 通用资源名称仅适用于 EXCI 不支持的 z/OS Communications Server 通用资源组。
除非在以下情况下,否则客户机程序和 CICS 服务器区域 (在其中运行或定义了服务器程序的区域) 必须位于同一 z/OS 映像中:
  • CICS 区域正在支持跨系统 MRO 的综合系统中运行。
  • 客户机程序发出的所有 DPL 请求都指定 SYNCONRETURN 选项。

或者,如果 z/OS 映像中没有本地 CICS 区域,那么必须通过在 DFHXCOPT 表中编码 CICSSVC 参数来指定外部 CICS 接口要使用的 SVC 参数。 虽然外部 CICS 接口不支持跨内存访问方法,但它可以使用 CICS XCF/MRO 工具提供的 XCF 访问方法。

使用外部 CICS 接口的客户机程序可以针对不同用户 (在相同或不同的 TCB 下) 操作多个会话,所有这些会话都共存于同一 z/OS 地址空间中,而不会相互了解或干扰。

如果客户机程序连接另一个客户机程序,那么连接的程序将在其自己的 TCB 下运行。

服务器程序的 API 限制: 由外部 CICS 接口请求调用的 CICS 服务器程序仅限于 CICS 应用程序编程接口的 DPL 子集。 API 命令的此子集 (DPL 子集) 与 CICS-to-CICS 服务器程序相同。 有关服务器程序的 DPL 子集的详细信息,请参阅 分布式程序链接 (DPL)

EXCI 编程接口

外部 CICS 接口提供两种形式的编程接口:
  • EXCI CALL 接口
  • EXCI EXEC CICS 接口