调用的事务程序(TP)发出 RECEIVE_ALLOCATE 谓词,以确认已调用的 TP 已准备好开始与发出 ALLOCATE 或 MC_ALLOCATE的调用 TP 的会话。
以下结构描述了 RECEIVE_ALLOCATE 谓词使用的谓词控制块(VCB)。
语法
struct receive_allocate {
unsigned short opcode;
unsigned char opext;
unsigned char reserv2;
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned char tp_name[64];
unsigned char tp_id[8];
unsigned long conv_id;
unsigned char sync_level;
unsigned char conv_type;
unsigned char user_id[10];
unsigned char lu_alias[8];
unsigned char plu_alias[8];
unsigned char mode_name[8];
unsigned char reserv3[2];
unsigned long conv_group_id;
unsigned char fqplu_name[17];
unsigned char pip_incoming;
unsigned char syncpoint_rqd;
unsigned char reserv4[3];
};
成员
opcode
提供的参数。 指定谓词作代码,AP_RECEIVE_ALLOCATE。
opext
提供的参数。 指定谓词作扩展,AP_BASIC_CONVERSATION。
reserv2
保留字段。
primary_rc
返回的参数。 指定 APPC 在谓词完成时设置的主要返回代码。 有效的返回代码因发布的 APPC 谓词而异。 有关此谓词的有效错误代码,请参阅返回代码。
secondary_rc
返回的参数。 指定 APPC 在谓词完成时设置的辅助返回代码。 有效的返回代码因发布的 APPC 谓词而异。 有关此谓词的有效错误代码,请参阅返回代码。
tp_name
提供的参数。 提供本地 TP 的名称。
tp_name的值必须与通过注册表或环境变量配置的 TP 名称匹配。 APPC 将 RECEIVE_ALLOCATE 谓词的 tp_name 参数与传入分配指定的 TP 名称匹配,该名称由调用 TP 中的 MC_ALLOCATE 或 ALLOCATE 生成。
此参数是 64 字节 EBCDIC 字符串,区分大小写。 tp_name参数可以包含 AE EBCDIC 字符集中的字符:
大写和小写字母
数字 0 到 9
特殊字符 $、#和 period (.)
如果 tp_name 小于 64 个字节,请使用 EBCDIC 空格(0x40)将其放在右侧。
SNA 约定是服务 TP 名称最多可以有四个字符。 第一个字符是0x00和0x3F之间的十六进制字节。 其他字符来自 AE EBCDIC 字符集的类型。
tp_id
返回的参数。 标识本地 TP。conv_id
返回的参数。 提供会话标识符。 它标识两个合作伙伴 TP 之间已建立的对话 APPC。sync_level
返回的参数。 指定会话的同步级别。 它确定 TP 是否可以请求确认接收数据并确认接收数据。AP_NONE指定不会在此会话中使用确认处理。
AP_CONFIRM_SYNC_LEVEL指定 TP 可以在此会话中使用确认处理。
AP_SYNCPT指定 TP 可以在此会话中使用同步点级别 2 确认处理。
conv_type
返回的参数。 使用 MC_ALLOCATE 或 ALLOCATE 指定合作伙伴 TP 选择的对话类型。 以下是可能的值:AP_BASIC_CONVERSATION
AP_MAPPED_CONVERSATION
user_id
返回的参数。 使用 MC_ALLOCATE 或 ALLOCATE 提供合作伙伴 TP 指定的用户标识符(如果合作伙伴 TP 将 MC_ALLOCATE 或 ALLOCATE 谓词的安全参数设置为AP_PGM或AP_SAME)。 它是 AE EBCDIC 字符串类型。lu_alias
返回的参数。 提供本地逻辑单元(LU)已知到本地 TP 的别名。 它是 ASCII 字符串。plu_alias
返回的参数。 提供合作伙伴 LU(已启动传入分配)已知到本地 TP 的别名。 它是 ASCII 字符串。mode_name
返回的参数。 在合作伙伴 TP 中提供 由MC_ALLOCATE 或 ALLOCATE 指定的模式名称。 它是配置期间定义的一组网络特征的名称。 mode_name是类型 A EBCDIC 字符串。reserv3
保留字段。conv_group_id
对话组标识符。fqplu_name
此返回的参数提供完全限定的 LU 名称。pip_incoming
仅当需要 Sync Point 服务时,此可选提供的和返回的参数才适用。对于提供的参数:
如果 TP 接受 PIP 数据,AP_YES。
如果 TP 不接受 PIP 数据,AP_NO。
对于返回的参数:
如果 PIP 数据可用,则AP_YES。
如果 PIP 数据不可用,AP_NO。
syncpoint_rqd
此参数指示是否需要 Sync Point 服务。如果需要同步点,AP_YES。
如果不需要同步点,则AP_NO。
reserv4
保留字段。
返回代码
AP_OK
主要返回代码;已成功执行谓词。
AP_PARAMETER_CHECK
主要返回代码;由于参数错误,谓词未执行。
AP_UNDEFINED_TP_NAME
辅助返回代码;未正确配置 TP 名称。
AP_STATE_CHECK
主要返回代码;该谓词未执行,因为它以无效状态发出。
AP_ALLOCATE_NOT_PENDING
辅助返回代码;APPC 未找到传入分配(从调用 TP)以匹配由RECEIVE_ALLOCATE提供的tp_name的值。 RECEIVE_ALLOCATE 等待传入分配,并最终超时。
AP_INVALID_PROCESS
辅助返回代码;发出 RECEIVE_ALLOCATE 的过程与 APPC 启动的过程不同。
AP_COMM_SUBSYSTEM_ABENDED
主要返回代码;指示以下条件之一:
此会话使用的节点遇到 ABEND。
TP 与 PU 2.1 节点之间的连接已中断(LAN 错误)。
TP 计算机上的 SnaBase 遇到 ABEND。
系统管理员应检查错误日志以确定 ABEND 的原因。
AP_CONV_BUSY
主要返回代码;在任何对话中,一次只能有一个未完成的对话谓词。AP_THREAD_BLOCKING
主要返回代码;调用线程已在阻塞调用中。AP_COMM_SUBSYSTEM_NOT_LOADED
主要返回代码;处理谓词时,无法加载或终止所需的组件。 因此,无法进行通信。 请联系系统管理员以采取纠正措施。AP_INVALID_VERB_SEGMENT
主要返回代码;VCB 超出了数据段的末尾。AP_STACK_TOO_SMALL
主要返回代码;应用程序的堆栈大小太小,无法执行谓词。 增加应用程序的堆栈大小。AP_UNEXPECTED_DOS_ERROR
主要返回代码;作系统在处理来自本地 TP 的 APPC 调用时,已将错误返回到 APPC。 作系统返回代码通过 secondary_rc返回。 它以 Intel 字节交换的顺序显示。 如果问题仍然存在,请咨询系统管理员。
注解
这必须是调用的 TP 发出的第一个 APPC 谓词。 初始状态为 RESET。 如果谓词成功执行(primary_rc 为AP_OK),状态将更改为 RECEIVE。
为了响应此谓词,APPC 在两个 TP 之间建立对话,并为已调用的 TP 和会话标识符生成 TP 标识符。 这些标识符是后续 APPC 谓词的必需参数。
如果调用的 TP 问题 RECEIVE_ALLOCATE 和相应的传入分配(由调用 TP 发出的 MC_ALLOCATE 或 ALLOCATE 导致)不存在,则调用的 TP 将等待传入分配到达或谓词超时。超时值由系统管理员设置。
Host Integration Server 还支持 APPC RECEIVE_ALLOCATE_EX和RECEIVE_ALLOCATE_EX_END函数,以简化某些可调用事务程序的设计和实现。 此函数允许 APPC 应用程序接收主机集成服务器通过特定本地 APPC LU 接收的所有传入 FMH-5 附加请求,从而允许应用程序充当“附加管理器”。附加管理器是处理传入 FMH-5 附加请求以启动 LU6.2 对话的程序。 当 APPC 应用程序调用RECEIVE_ALLOCATE(而不是RECEIVE_ALLOCATE_EX)时,Host Integration Server 将处理附加管理器功能。
有关附加管理器的详细信息,请参阅 RECEIVE_ALLOCATE_EX。