程序控制出口 XPCREQ、XPCERES 和 XPCREQC
这些出口由 EXEC 接口程序在处理链接请求之前,在 CICS® 处理动态路由的链接请求之前或在链接请求完成之后调用。
- XPCREQ
- XPCREQ 由 EXEC 接口程序在处理链接请求之前调用。 如果请求是分布式程序链接,那么 XPCREQ 出口将在链接的两侧驱动; 即,在客户机和服务器区域中。 出口程序传递应用程序的参数列表的地址 (在 UEPCLPS 中) ,并且可以根据需要修改此列表。 例如,您可以使用此出口在分布式程序链接请求时修改 SYSID。 您可以编写应用程序以管理全局工作区 (GWA) 中的 SYSID 列表。 全局用户出口程序可以获取对 GWA 的访问权,并使用存储在其中的信息来重定向 DPL 请求。注:
- 本地 PROGRAM 资源的属性不会传递到出口程序。 如果出口程序需要属性值,那么它可以发出 EXEC CICS INQUIRE PROGRAM 命令。
- 如果使用 XPCREQ 来更改目标 SYSID ,请记住:
- 如果 SYSID 指定远程区域,那么不会引用本地 PROGRAM 资源。 在远程区域中,程序在客户机区域中事务的 TRANSID 下运行,而不是在客户机区域中的 PROGRAM 资源上指定的 TRANSID 下运行。
- 如果 SYSID 指定本地区域,那么 CICS 会将链接请求视为未指定 SYSID。 已采用本地 PROGRAM 资源。
- XPCREQ 出口由 CICS 代码发出的内部请求以及应用程序发出的请求调用。
- XPCERES
- 在 CICS 处理以下任一类型的动态路由链接请求之前, EXEC 接口程序将调用 XPCERES:
- 分布式程序链接 (DPL) 调用
- Link3270 网桥请求
XPCERES 被调用:- 在出口 XPCREQ 之后以及在 XPCREQC 之前 (如果启用了这些出口):
- 如果 XPCREQ 出口程序选择绕过请求,那么不会调用 XPCERES。
- 如果 XPCREQ 出口程序修改命令参数列表,那么 XPCERES 必须处理修改后的请求。
- 在请求已路由到的目标区域上。
- 仅当已启用时。 当 DPL 和 Link3270 网桥请求可以动态路由时,仅在应用程序拥有区域中启用此出口。
- 通过 CICS 代码发出的内部请求以及应用程序发出的请求。
未调用 XPCERES 出口:- 对于静态路由的请求。
- 如果已禁用。
- 如果 XPCREQ 出口程序选择绕过请求。
您可以使用 XPCERES 来检查链接至程序所需的所有资源在目标区域上是否可用。 如果程序已禁用或缺少必需的文件,那么出口程序可以使动态路由程序有机会将请求路由到其他区域。 设置返回码 UERCRESU。 CICS 会执行以下处理:- 在路由程序的 COMMAREA 中, CICS 将 DYRERROR 字段设置为 "F"-资源不可用。
- CICS 在路由区域上针对路由选择失败调用路由程序。
- CICS 在由目标区域上的镜像运行的 EXEC CICS LINK 命令上返回 RESUNAVAIL 条件。 此条件不会返回到应用程序。
CICS 将忽略出口程序对任何出口参数的值所作的任何更改。 出口程序可以设置返回码,但不能更改任何参数。
有关动态路由 DPL 请求的指导信息,请参阅 动态路由 DPL 请求。 有关动态路由 Link3270 网桥请求的指导信息,请参阅 使用 Link3270 网桥负载均衡。 有关编写动态路由程序以路由 DPL 请求的编程信息,请参阅 动态路由 DPL 请求。 有关编写动态路由程序以路由 Link3270 网桥请求的编程信息,请参阅 动态路由网桥请求。
- XPCREQC
- 在链接请求完成后调用 XPCREQC。 您可以使用此出口通过使用 EIBRESP 或 EIBRESP2 字段将响应传递回应用程序。 此类响应可用于使有关链接请求的状态信息保持最新。 例如,如果链接请求由于连接不可用而失败,那么 XPCREQC 可以设置 EIBRESP=500 ( CICS未使用的响应代码) 以指示失败,从而使应用程序能够与其他出口 XPCREQ 一起确定合适的操作过程。注: XPCREQC 出口由 CICS 代码发出的内部请求以及应用程序发出的请求调用。
EIB 已传递到出口
EIBRSRCE , EIBRCODE , EIBRESP 和 EIBRESP2 的副本将传递到出口,以便您可以:
- 修改或设置 XPCREQ 和 XPCREQC 中的完成信息或资源信息。
- 检查 XPCREQC 中的完成信息。
您可以更新参数列表中提供的 EIBRSRCE , EIBRCODE , EIBRESP 和 EIBRESP2 的副本。 在 XPCREQC 完成后,或者如果在 XPCREQ 中指定 "旁路" 返回码,那么程序控制会将您的值复制到实际 EIB 中。
必须设置有效的程序控制响应。 必须将所有三个 EIBRCODE , EIBRESP 和 EIBRESP2 都设置为一组一致的值,例如将由 "程序控制" 设置以描述有效完成。 程序控制不会对 EIBRCODE , EIBRESP 和 EIBRESP2的一致性进行监管。 为了帮助您设置 EIBRCODE , EIBRESP 和 EIBRESP2的值,程序控制所使用的值在 DFHPCEDS 中指定。