外部 CICS 接口

外部 CICS® 接口(EXCI)是一种应用程序编程接口,它使在 MVS 中运行的非 CICS 程序(客户端程序)能够调用在 CICS 区域中运行的程序(服务器程序),并通过通信区或通过通道和一组容器来传递和接收数据。 CICS 应用程序被启动时,如同被另一个 CICS 应用程序所链接。

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

每个EXCI地址空间默认限制为100个管道;当 MVS 被IPLed时,该限制可被修改。 此限制可防止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 服务器区域(即服务器程序运行或定义所在的区域)必须位于同一 MVS 映像中,除非满足以下条件:
  • CICS 区域正在支持跨系统 MRO 的综合系统中运行。
  • 客户机程序发出的所有 DPL 请求都指定 SYNCONRETURN 选项。

或者,如果 MVS 映像中不存在本地 CICS 区域,则必须通过在DFHXCOPT表中编码CICSSVC参数,来指定外部 CICS 接口应使用的SVC参数。 尽管外部 CICS 接口不支持跨内存访问方法,但它可以使用 CICS 的XCF/MRO设施提供的XCF访问方法。

使用外部 CICS 接口的客户端程序可为不同用户运行多个会话(这些会话可能位于同一TCB或不同TCB下),所有会话均可在同一 MVS 地址空间中共存,彼此互不干扰且互不知晓。

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

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

EXCI 编程接口

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