MC_SEND_CONVERSATION
MC_SEND_CONVERSATION谓词在本地逻辑单元 (LU) 和伙伴 LU 之间分配会话,发送会话上的数据,然后解除分配会话。
以下结构描述了MC_SEND_CONVERSATION谓词使用的谓词控制块 (VCB ) 。
语法
struct mc_send_conversation {
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[8];
unsigned char rtn_ctl;
unsigned char reserv4;
unsigned long conv_group_id;
unsigned long sense_data;
unsigned char plu_alias[8];
unsigned char mode_name[8];
unsigned char tp_name[64];
unsigned char security;
unsigned char reserv6[11];
unsigned char pwd[10];
unsigned char user_id[10];
unsigned short pip_dlen;
unsigned char FAR * pip_dptr;
unsigned char reserv6;
unsigned char fqplu_name[17];
unsigned char reserv7[8];
unsigned short dlen;
unsigned char FAR * dptr;
};
成员
opcode
提供的参数。 指定谓词操作代码,AP_M_SEND_CONVERSATION。
opext
提供的参数。 指定谓词操作扩展,AP_MAPPED_CONVERSATION。
reserv2
一个保留字段。
primary_rc
返回的参数。 指定在谓词完成时由 APPC 设置的主要返回代码。 有效的返回代码因发出的 APPC 谓词而异。 有关此谓词的有效错误代码,请参阅“返回代码”。
secondary_rc
返回的参数。 指定在谓词完成时由 APPC 设置的次要返回代码。 有效的返回代码因发出的 APPC 谓词而异。 有关此谓词的有效错误代码,请参阅“返回代码”。
tp_id
提供的参数。 标识 TP) (本地事务程序。 此参数的值由 TP_STARTED 返回。
conv_id
提供的参数。 提供会话标识符。
此参数的值由调用 TP 中的 MC_ALLOCATE 或调用的 TP 中的 RECEIVE_ALLOCATE 返回。
rtn_ctl
提供的参数。 指定 APPC 应如何选择要为会话分配的会话,以及本地 LU 何时应将控制权返回到本地 TP。 允许的值为:
AP_IMMEDIATE指定 LU 分配一个争用胜者会话(如果一个会话立即可用),并将控制权返回到 TP。
AP_WHEN_SESSION_ALLOCATED指定 LU 在分配会话或遇到本主题中的返回代码中所述的错误之一之前,不会将控制权返回到 TP。 如果会话限制为零,LU 将立即返回控件。 请注意,如果会话不可用,TP 将等待一个会话。
AP_WHEN_SESSION_FREE指定 LU 分配一个争用胜者或争用-失败者会话(如果一个会话可用或能够激活),并将控制权返回到 TP。 如果 (如本主题中的返回代码中所述) 调用将立即返回 ,并在primary_rc 和 secondary_rc 字段中显示错误。
AP_WHEN_CONWINNER_ALLOC指定 LU 在分配争用方会话或遇到本主题中的返回代码中所述的错误之一之前不返回控件。 如果会话限制为零,LU 将立即返回控件。 请注意,如果会话不可用,TP 将等待一个会话。
AP_WHEN_CONV_GROUP_ALLOC指定 LU 在分配由 conv_group_id 指定的会话或遇到本主题中的返回代码中所述的错误之一之前,不会将控制权返回到 TP。 如果会话不可用,TP 将等待它变为可用状态。
conv_group_id
提供/返回的参数。 在 rtn_ctl WHEN_CONV_GROUP_ALLOC时用作提供的参数,以指定应从中分配会话的会话组的标识。 当 rtn_ctl 指定其他值,并且AP_OK primary_rc时,这是返回的值。 此参数的目的是为 TP 提供相同的会话将重新分配的保证,因此,通过会话进行的会话将按启动的相同顺序进行。sense_data
返回的参数。 如果主要和辅助返回代码指示 (重试或未重试) 分配错误,则返回 SNA 定义的感知代码。plu_alias
提供的参数。 指定本地 TP 知道伙伴 LU 的别名。 此参数必须与在配置过程中建立的合作伙伴 LU 的名称匹配。 参数是一个 8 字节的 G ASCII 字符集,其中包括:大写字母
数字 0 到 9
空格
特殊字符 $、#、% 和@
如果此参数的值小于 8 个字节,请在右侧填充 ASCII 空格 (0x20) 。
mode_name
提供的参数。 指定在配置期间定义的一组网络特征的名称。 此参数必须与配置期间与合作伙伴 LU 关联的模式的名称匹配。参数是一个 8 字节 EBCDIC 字符串。 它可以由类型 A EBCDIC 字符集中的字符组成,包括所有 EBCDIC 空格。 这些字符包括:
大写字母
数字 0 到 9
特殊字符 $、#和@
字符串中的第一个字符必须是大写字母或特殊字符。
在映射会话中,名称不能是 SNASVCMG (APPC) 内部使用的保留模式名称。
tp_name
提供的参数。 指定调用的 TP 的名称。 MC_ALLOCATE在调用 TP 中指定的tp_name的值必须与调用的 TP 中RECEIVE_ALLOCATE指定的tp_name的值匹配。参数是一个 64 字节、区分大小写的 EBCDIC 字符串。 此参数可以包含类型 AE EBCDIC 字符集中的字符。 这些字符包括:
大写和小写字母
数字 0 到 9
特殊字符 $、#、@ 和句点 (.)
如果 TP 名称小于 64 个字节,请使用 EBCDIC 空格 (0x40) 将其放在右侧。
SNA 约定是服务 TP 名称最多可以包含四个字符。 第一个字符是介于 0x00 和 0x3F 之间的十六进制字节。 其他字符来自 EBCDIC AE 字符集。
security
提供的参数。 指定合作伙伴 LU 为了验证对调用的 TP 的访问权限而需要的信息。AP_NONE指定调用的 TP 不使用任何会话安全性。
AP_PGM指定调用的 TP 使用会话安全性,并且需要用户标识符和密码。 使用 user_id 和 pwd 提供此信息。
AP_SAME指定调用的 TP(使用有效的用户标识符和密码调用)反过来又调用另一个 TP。
例如,假设 TP A 使用有效的用户标识符和密码调用 TP B,而 TP B 又调用 TP C。如果 TP B 指定AP_SAME值,APPC 将向 TP C 的 LU 发送来自 TP A 的用户标识符和已验证的指示器。 如果 TP C 配置为接受已验证的指示器) ,则此指示器指示 TP C 不需要密码 (。
pwd
提供的参数。 指定与 user_id关联的密码。 仅当安全参数设置为 AP_PGM 并且必须与配置过程中建立 user_id 的密码匹配时,此参数才是必需的。此参数是一个 10 字节、区分大小写的 EBCDIC 字符串。 它可以由类型 AE EBCDIC 字符集中的字符组成。 这些字符包括:
大写和小写字母
数字 0 到 9
特殊字符 $、#、@ 和句点 (.)
如果密码小于 10 个字节,请使用 EBCDIC 空格 (0x40) 将其填充在右侧。
user_id
提供的参数。 指定访问合作伙伴 TP 所需的用户标识符。 仅当安全参数设置为 AP_PGM 并且必须与为合作伙伴 TP 配置的用户标识符之一匹配时,此参数才是必需的。参数可以包含类型 AE EBCDIC 字符集中的字符。 这些字符包括:
大写和小写字母
数字 0 到 9
特殊字符 $、#、@ 和句点 (.)
如果用户标识符小于 10 个字节,请使用 EBCDIC 空格 (0x40) 将其填充在右侧。
pip_dlen
提供的参数。 指定要传递给合作伙伴 TP 的 PIP 的长度。 此参数的范围是从 0 到 32767。pip_dptr
提供的参数。 指定包含 PIP 数据的缓冲区的地址。 仅当 pip_dlen 大于零时,才使用此参数。PIP 数据可以包含合作伙伴 TP 或远程操作系统所需的初始化参数或环境设置信息。 PIP 数据必须遵循 GDS 格式。 有关详细信息,请参阅 IBM SNA 手册 () 。
对于 Microsoft Windows 操作系统,数据缓冲区可以驻留在静态数据区域或全局分配的区域中。
fqplu_name
提供的参数。 指定本地 LU 的完全限定名称。 此参数必须与远程节点中定义的本地 LU 的完全限定名称匹配。 参数由两个类型 A EBCDIC 字符串组成,每个字符串 (最多八个字符) ,即 NETID) 的网络 (名称和伙伴 LU 的 LU 名称。 名称由 EBCDIC 句点 (.) 分隔。 可以省略 NETID,如果是这种情况,还应省略句点。如果未提供 plu_alias ,则必须提供此名称。
类型 A EBCDIC 字符包含:
大写字母
数字 0 到 9
特殊字符 $、#和@
如果此参数的值小于 17 个字节,请在右侧填充 EBCDIC 空格 (0x40) 。
dlen
提供的参数。 指定要放入本地 LU 的发送缓冲区中的数据的字节数。 此参数的范围是从 0 到 65535。dptr
提供的参数。 指定缓冲区的地址,该缓冲区包含要放入本地 LU 的发送缓冲区中的数据。对于 Windows 操作系统,数据缓冲区可以驻留在静态数据区域或全局分配的区域中。 数据缓冲区必须完全适合此区域。
返回代码
AP_OK
主要返回代码;谓词已成功执行。
AP_UNSUCCESSFUL
主返回代码;提供的 参数 rtn_ctl 指定将控件立即返回给 TP (AP_IMMEDIATE) ,并且本地 LU 没有可用的争用胜者会话。
AP_PARAMETER_CHECK
主要返回代码;由于参数错误,谓词未执行。
AP_BAD_RETURN_CONTROL
辅助返回代码;为 rtn_ctl 指定的值无效。
AP_BAD_SECURITY
辅助返回代码;为 安全性 指定的 值无效。
AP_BAD_TP_ID
辅助返回代码; tp_id 的值与 APPC 分配的 TP 标识符不匹配。
AP_PIP_LEN_INCORRECT
辅助返回代码; pip_dlen 的值大于 32767。
AP_UNKNOWN_PARTNER_MODE
辅助返回代码;为 mode_name 指定的值无效。
AP_BAD_PARTNER_LU_ALIAS
辅助返回代码,APPC 无法识别提供的 partner_lu_alias。
AP_NO_USE_OF_SNASVCMG
辅助返回代码;SNASVCMG 不是 mode_name的有效值。
AP_INVALID_DATA_SEGMENT
辅助返回代码;PIP 数据或应用程序数据比分配的数据段长,或者数据缓冲区的地址错误。
AP_ALLOCATION_ERROR
主返回代码;APPC 未能分配会话。 会话状态设置为 RESET。
此代码可以通过 MC_ALLOCATE后发出的谓词返回。
AP_ALLOCATION_FAILURE_NO_RETRY
辅助返回代码;由于配置错误或会话协议错误等永久性条件,无法分配会话。 若要确定发生了哪种错误,系统管理员应检查错误日志文件。 请仅在更正错误之后才重试分配。
AP_ALLOCATION_FAILURE_RETRY
辅助返回代码;由于临时条件(如链接失败),无法分配会话。 失败的原因已记录在系统错误日志中。 重试分配。
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
辅助返回代码;至少已启动一个节点,但发出 TP_STARTED 时本地 LU () 未在任何活动节点上配置。 问题可能为以下任一情况:
未启动具有本地 LU 的节点。
未配置本地 LU。
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 字节交换顺序显示的。 如果问题持续出现,请咨询系统管理员。
备注
此谓词由调用 TP 发出,用于与远程 TP 进行整个会话。 如果远程 TP 拒绝会话启动或数据,调用的 TP 将不会收到拒绝通知。
当 TP 发出此谓词时,会话状态为 RESET。 没有状态更改。
MC_SEND_CONVERSATION的多个参数是 EBCDIC 或 ASCII 字符串。 TP 可以使用通用服务谓词 (CSV) CONVERT 将字符串从一个字符集转换为另一个字符集。
通常, mode_name 的值必须与为调用的 TP 节点配置的模式的名称匹配,并在配置期间与伙伴 LU 关联。 如果与调用的 TP 节点上的伙伴 LU 关联的模式之一是隐式模式,则当与伙伴 LU 关联的模式名称与 mode_name 的值匹配时,在两个 LU 之间建立的会话将为隐式模式。