出口 XPCFTCH

在对 CICS® 定义的程序 (包括内部 CICS 模块) 接收控制之前调用 XPCFTCH ,这可能是因为它是事务中的第一个程序,或者由于 LINK , XCTL 或 HANDLE ABEND PROGRAM 请求。

您可以使用此出口来修改链接到程序时使用的条目地址。 如果出口设置返回码为零或修改地址为零,那么将使用原始应用程序的入口地址。

在调用原始程序之前,使用此出口将控制权传递给 AMODE (64) , AMODE (31) 或 AMODE (24) 汇编程序应用程序或例程。 此汇编程序完成其处理后,应使用分支指令将控制权传递回原始程序的入口点。 请勿使用出口来调用除原始程序以外的任何程序,因为结果不可预测。

对使用 XPLINK 选项编译的 C 或 C++ 程序调用 XPCFTCH 时,会设置一个标志以忽略用户出口可能对入口点地址进行的任何修改。

如果提供了修改后的条目地址,那么调用的程序将接收原始应用程序将在其中接收控制的执行键中的控制; 即,在原始程序的资源定义的 EXECKEY 选项上指定的控制。

调用时机

在应用程序接收控制之前。

特定于出口的参数

UEPPCDS
包含程序和终端相关信息的存储区域的地址,可以使用 DSECT DFHPCUE 进行映射。 调用 XPCFTCH 时,以下 DFHPCUE 字段很重要:
PCUE_CONTROL_BITS
  • 1 字节标志字段。 设置 PCUECBTE 指示事务已链接到终端。
  • 设置 PCUENOTX (X'40 ') 指示程序不是命令级别。
  • PCUE_CONTROL_BITS 中的标志 PCUE_NO_MODIFY 指示不支持修改的条目地址。 设置时,将忽略来自 XPCFTCH 的 UERCMEA 的任何返回码。 CICS 在调用使用 XPLINK 选项编译的 C 和 C++ 程序的 XPCFTCH 之前设置此标志。
  • 设置 PCUE_REAL (X'20 ') 指示在 PCUE_REAL_ENTRY 中设置了实际入口点。
PCUE_TASK_NUMBER
3-包含任务编号的字符压缩十进制字段。
PCUE_TRANSACTION_ID
4-包含原始事务标识的字符字段。 此标识可能与当前事务标识不同。
PCUE_TERMINAL_ID
4-包含终端标识 (如果有) 的字符字段。
PCUE_PROGRAM_NAME
8-包含要接收控制的程序的名称的字符字段。
PCUE_PROGRAM_LANGUAGE
3-包含要接收控制的程序的语言的字符字段。
PCUE_LOAD_POINT
程序的装入点。
PCUE_ENTRY_POINT
程序的入口点。
PCUE_AMOD
程序的寻址方式为 AMODE (31)。 提供此字段是为了与现有出口程序兼容。
PCUE_AMOD_31
程序的寻址方式为 AMODE (31)。 使用此字段优先于 PCUE_AMOD。
PCUE_AMOD_64
程序的寻址方式为 AMODE (64)。
PCUE_PROGRAM_SIZE
包含程序大小的全字 (以字节为单位)。
PCUE_COMMAREA_ADDRESS
程序的通信区域的地址 (如果程序有一个通信区域)。
PCUE_COMMAREA_SIZE
包含程序的通信区域长度的全字 (如果程序有一个)。
PCUE_LOGICAL_LEVEL
包含程序逻辑级别的全字。
PCUE_BRANCH_ADDRESS
全字 使用此字段来提供备用条目地址。 设置顶部位以指定备用程序要运行 AMODE (31)。
PCUE_REAL_ENTRY
z/OS® 1.7 开始,此字段提供 Language Environment ® 符合程序的实际入口点。 先前,只有 PCUE_ENTRY_POINT 可供您使用,但对于符合语言环境的程序,此字段不包含您需要了解的入口点。
注: 对于 z/OS 1.7,此字段提供了 APAR PQ43992引起的问题的解决方案。
PCUE_CHANNEL_NAME
16 字节字段的地址,其中包含要用于调用应用程序的通道的名称 (即,程序的当前通道)。 如果没有通道,那么此字段设置为空白。

返回码

UERCNORM
继续处理。
UERCPURG
在 XPI 调用期间清除了任务。
UERCMEA
已修改条目地址。

XPI 调用

都可以用。

样本出口程序

DFH$PCEX