XPI 调用引起的重入注意事项

在 XPI 调用期间, CICS® 可能会在处理 XPI 调用时将控制权交给另一个任务。 第二个任务可以调用相同的出口程序并进行相同的 XPI 调用,可能使用不同的参数值。 在此情况下,必须确保不会发生锁定情况。

在处理 XPI 调用时, CICS 可能会迂到另一个使用同一用户出口程序的用户出口点。 因此,必须在与出口程序的单个调用相关联的存储器中构建 XPI 参数列表。

如果您的出口程序是全局用户出口,那么 CICS 会为其提供 1024 字节的 LIFO 存储器,该存储器仅用于出口程序的一次调用。 出口程序可以使用 DFHUEPAR 参数列表的参数 UEPXSTOR 访问此存储器。 在构建 XPI 参数列表时,使用此存储器将 DFHxxyyY 副本提供的 DSECT 作为基础。 这样,如果重新输入出口程序,那么参数不会损坏。

此处提供的 XPI 服务的参数列表不超过 256 个字节。 UEPXSTOR 存储器的剩余 768 字节可供您的出口程序用于自己的目的。 预计在大多数情况下, 768 字节的备用存储器将避免出口程序获取更多存储器的需要。 如果确实需要获取多于所提供的 768 字节的数据,可通过 DFHSMMCX FUNCTION (GETMAIN) 宏或 MVS GETMAIN 请求获取。

6.3 beta CICS 提供额外的 256 字节 LIFO 存储空间。 XPI 服务的参数列表不应超过 512 字节,接下来的 768 字节可由退出程序使用。

要在出口程序的调用之间保留的信息可以存储在可为出口程序 (或出口程序组) 定义的全局工作区中。 LIFO 存储器的 1024 字节不能用于此目的,因为它是动态的。