MC_TEST_RTS_AND_POST谓词允许应用程序(通常是 5250 模拟器)在合作伙伴事务计划(TP)请求发送方向时请求异步通知。
以下结构描述了 MC_TEST_RTS_AND_POST 谓词使用的谓词控制块(VCB)。
语法
struct mc_test_rts_and_post {
unsigned short opcode;
unsigned char opext;
unsigned char reserv2;
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned char tp_id[8];
unsigned long conv_id;
unsigned char reserv3;
unsigned long handle;
};
成员
opcode
提供的参数。 指定谓词作代码,AP_M_TEST_RTS_AND_POST。
opext
提供的参数。 指定谓词作扩展,AP_MAPPED_CONVERSATION。
reserv2
保留字段。
primary_rc
返回的参数。 指定 APPC 在谓词完成时设置的主要返回代码。 有效的返回代码因发布的 APPC 谓词而异。 有关此谓词的有效错误代码,请参阅返回代码。
secondary_rc
返回的参数。 指定 APPC 在谓词完成时设置的辅助返回代码。 有效的返回代码因发布的 APPC 谓词而异。 有关此谓词的有效错误代码,请参阅返回代码。
tp_id
提供的参数。 标识本地 TP。 此参数的值由调用 TP 中的 TP_STARTED 或调用的 TP 中的 RECEIVE_ALLOCATE 返回。
conv_id
提供的参数。 提供会话标识符。 此参数的值由调用 TP 中的 MC_ALLOCATE 或调用的 TP 中的 RECEIVE_ALLOCATE 返回。
reserv3
保留字段。
处理
提供的参数。 在 windows Microsoft,此字段提供要设置的事件句柄。
从初始谓词返回代码
AP_OK
主要返回代码;已成功执行谓词。 特别请注意,初始谓词中AP_OK的返回代码并不指示从合作伙伴 TP 收到的 MC_REQUEST_TO_SEND 谓词。 它只是指示已注册接收异步通知的设施。
AP_UNSUCCESSFUL
主要返回代码;尚未收到请求到发送通知。
AP_PARAMETER_CHECK
主要返回代码;由于参数错误,谓词未执行。
AP_BAD_CONV_ID
辅助返回代码; conv_id 的值与 APPC 分配的会话标识符不匹配。
AP_BAD_TP_ID
辅助返回代码; tp_id 的值与 APPC 分配的 TP 标识符不匹配。
AP_COMM_SUBSYSTEM_ABENDED
主要返回代码;指示以下条件之一:
此会话使用的节点遇到 ABEND。
TP 与 PU 2.1 节点之间的连接已中断(LAN 错误)。
TP 计算机上的 SnaBase 遇到 ABEND。
系统管理员应检查错误日志以确定 ABEND 的原因。
AP_COMM_SUBSYSTEM_NOT_LOADED
主要返回代码;无法在处理谓词时加载或终止所需的组件。 因此,无法进行通信。 请联系系统管理员以采取纠正措施。当此返回代码与 MC_ALLOCATE一起使用时,它可能指示找不到任何通信系统来支持本地逻辑单元(LU)。 (例如,使用 TP_STARTED 指定的本地 LU 别名不正确或尚未配置。请注意,如果 lu_alias 或 mode_name 少于 8 个字符,则必须确保这些字段填充右侧的空格。 如果这些参数未填充空格,则返回此错误,因为没有节点可以满足 MC_ALLOCATE 请求。
MC_ALLOCATE为配置了多个节点的 Host Integration Server 客户端系统生成此返回代码时,有两个辅助返回代码,如下所示:
0xF0000001
辅助返回代码;尚未启动任何节点。
0xF0000002
辅助返回代码;至少有一个节点已启动,但未在任何活动节点上配置本地 LU (TP_STARTED颁发 时)。 问题可能是以下任一问题:
未启动具有本地 LU 的节点。
未配置本地 LU。
AP_CONVERSATION_TYPE_MIXED
主要返回代码;TP 已发出基本和映射的对话谓词。 单个对话中只能发出一种类型。AP_INVALID_VERB_SEGMENT
主要返回代码;VCB 超出了数据段的末尾。AP_STACK_TOO_SMALL
主要返回代码;应用程序的堆栈大小太小,无法执行谓词。 增加应用程序的堆栈大小。AP_CONV_BUSY
主要返回代码;在任何对话中,一次只能有一个未完成的对话谓词。 如果本地 TP 有多个线程,并且多个线程使用相同的 conv_id发出 APPC 调用,则可能会出现这种情况。AP_THREAD_BLOCKING
主要返回代码;调用线程已在阻塞调用中。AP_UNEXPECTED_DOS_ERROR
主要返回代码;作系统在处理来自本地 TP 的 APPC 调用时,已将错误返回到 APPC。 作系统返回代码通过 secondary_rc返回。 它以 Intel 字节交换的顺序显示。 如果问题仍然存在,请咨询系统管理员。
从异步完成返回代码
AP_OK
主要返回代码;已从合作伙伴 TP 收到请求到发送通知。
AP_CANCELLED
未完成 TEST_RTS_AND_POST 谓词已终止。 如果已解除分配基础会话或已发出AP_TP_ENDED,则会出现这种情况。 请注意,与 RECEIVE_AND_POST一样,TP 仍负责正确终止会话并可能终止 TP。 此时发出另一个谓词(如 RECEIVE_IMMEDIATE) 将指示会话失败的原因。
注解
当 TP 发出此谓词时,对话可以处于除 RESET 之外的任何状态。 没有状态更改。
许多 APPC 应用程序的常见功能(例如 5250 仿真器)是检测合作伙伴发送请求的要求。 目前,可以通过轮询 APPC 接口来检测合作伙伴的请求来完成此作。 例如,应用程序有时可能会发出以下谓词之一:
MC_TEST_RTS
MC_RECEIVE_IMMEDIATE 并检查 rts_rcvd 字段
MC_SEND_DATA 为零字节,再次检查 rts_rcvd 字段。
与此轮询方法关联的一些问题包括:
应用程序必须持续中断其主要工作来轮询 APPC。
合作伙伴的请求在可用后不会立即检测到。
这些方法是处理器密集型的。
MC_TEST_RTS_AND_POST谓词允许在 Windows 上运行的应用程序(通常是 5250 模拟器)在合作伙伴 TP 请求发送方向时请求异步通知。
APPC 应用程序通常在 SEND 状态下发出 MC_TEST_RTS_AND_POST 谓词,然后继续执行其主处理。 向应用程序异步指示从合作伙伴 TP 发送方向的请求。 处理合作伙伴的请求后,应用程序通常会返回到 SEND 状态,重新发出 MC_TEST_RTS_AND_POST并继续。
MC_TEST_RTS_AND_POST谓词同步完成,返回代码AP_OK指示已注册异步通知请求。 请务必强调,这并不表示已从合作伙伴 TP 接收请求到发送。
收到合作伙伴发送请求时,将发生异步事件完成。 请务必注意,这可能是在本地 TP 的原始 MC_TEST_RTS_AND_POST 谓词完成之前。 如果是在发出本地 TP 的 MC_TEST_RTS_AND_POST 谓词之前收到合作伙伴发送的请求,或者处理本地 TP 的 MC_TEST_RTS_AND_POST 谓词,则会出现这种情况。