SLI_RECEIVE
SLI_RECEIVE谓词将响应、SNA 命令和数据接收到 Microsoft® Windows® 逻辑单元应用程序, (LUA) 应用程序缓冲区。 SLI_RECEIVE 还提供 Windows LUA 应用程序的会话的当前状态。
以下结构描述了SLI_RECEIVE使用的谓词控制块 (VCB) LUA_COMMON成员。
语法
struct LUA_COMMON {
unsigned short lua_verb;
unsigned short lua_verb_length;
unsigned short lua_prim_rc;
unsigned long lua_sec_rc;
unsigned short lua_opcode;
unsigned long lua_correlator;
unsigned char lua_luname[8];
unsigned short lua_extension_list_offset;
unsigned short lua_cobol_offset;
unsigned long lua_sid;
unsigned short lua_max_length;
unsigned short lua_data_length;
char FAR * lua_data_ptr;
unsigned long lua_post_handle;
struct LUA_TH lua_th;
struct LUA_RH lua_rh;
struct LUA_FLAG1 lua_flag1;
unsigned char lua_message_type;
struct LUA_FLAG2 lua_flag2;
unsigned char lua_resv56[7];
unsigned char lua_encr_decr_option;
};
成员
lua_verb
提供的参数。 包含谓词代码,LUA_VERB_SLI会话级别接口 (SLI) 谓词。
lua_verb_length
提供的参数。 指定 LUA VCB 的长度(以字节为单位)。 它必须包含要发出的谓词记录的长度。
lua_prim_rc
由 LUA 在谓词完成时设置的主要返回代码。 有效的返回代码因发出的 LUA 谓词而异。
lua_sec_rc
完成谓词时由 LUA 设置的辅助返回代码。 有效的返回代码因发出的 LUA 谓词而异。
lua_opcode
提供的参数。 包含要发出谓词的 LUA 命令代码 (谓词操作代码) ,LUA_OPCODE_SLI_RECEIVE。
lua_correlator
提供的参数。 包含用户提供的值,该值将谓词与其他用户提供的信息链接在一起。 LUA 不使用或更改此信息。 此参数是可选的。
lua_luname
提供的参数。 指定 Windows LUA 会话使用的本地 LU 的 ASCII 名称。
仅当lua_sid为零时,SLI_RECEIVE才需要此参数。
此参数长度为 8 个字节,如果名称短于 8 个字符,则用空格 (0x20) 在右侧填充。
lua_extension_list_offset
不由SLI_RECEIVE使用,应设置为零。
lua_cobol_offset
Microsoft® Host Integration Server 或 SNA Server 中的 LUA 不使用,应为零。
lua_sid
提供并返回的参数。 指定会话标识符,由 SLI_OPEN 和 RUI_INIT 返回。 其他谓词使用此参数来标识用于命令的会话。 如果其他谓词使用 lua_luname 参数来标识会话,请将 lua_sid 参数设置为零。
lua_max_length
指定 RUI_READ和 SLI_RECEIVE的接收缓冲区的长度。
lua_data_length
返回的参数。 指定接收缓冲区中返回的数据的长度。
lua_data_ptr
指向应用程序提供的缓冲区的指针,该缓冲区用于从 SLI_RECEIVE 谓词接收数据。 SNA 命令和数据都放置在此缓冲区中,它们可以采用扩展二进制编码的十进制交换代码 (EBCDIC) 格式。
发出SLI_RECEIVE时,此参数指向从主机接收数据的位置。
lua_post_handle
提供的参数。 如果异步通知要由事件完成,则使用 Microsoft® Windows Server 下。 此变量包含要发出信号的事件的句柄或窗口句柄。
lua_th
返回的参数。 包含接收的消息的 SNA 传输标头 (TH) 。 读取和出价函数返回各种子参数。 其子参数如下所示:
lua_th.flags_fid
格式标识类型 2,4 位。
lua_th.flags_mpf
分段映射字段,两位。 定义数据段的类型。 以下为有效值:
0x0 中间段0x04 最后一个段0x08 第一个段0x0C 仅限段
lua_th.flags_odai
源地址字段 - 目标地址字段 (OAF–DAF) 分配器指示器,一位。
lua_th.flags_efi
加速流指示器,一位。
lua_th.daf
目标地址字段 (DAF) ,无符号字符。
lua_th.oaf
源地址字段 (OAF) ,无符号字符。
lua_th.snf
序列号字段,无符号字符[2]。
lua_rh
返回的参数。 包含发送或接收的消息的 SNA 请求/响应标头 (RH) 。 其子参数如下所示:
lua_rh.rri
请求-响应指示器,一位。
lua_rh.ruc
请求/响应单位 (RU) 类别,两位。 以下为有效值:
LUA_RH_NC () (0x20) 网络控制LUA_RH_DFC (0x40) 数据流控制LUA_RH_SC LUA_RH_SC 0x60) 会话控制LUA_RH_FMD fm 数据段LUA_RH_NC (0x00 0x60) FM 数据段
lua_rh.fi
格式指示器,一位。
lua_rh.sdi
感知数据包括指示器,一位。
lua_rh.bci
开始链指示器,一位。
lua_rh.eci
端链指示器,一位。
lua_rh.dr1i
明确响应 1 指标,1 位。
lua_rh.dr2i
明确响应 2 指示器,一位。
lua_rh.ri
请求) 的异常响应指示器 (,或响应) 的响应类型指示器 (一位。
lua_rh.qri
排队响应指示器,一位。
lua_rh.pi
节奏指示器,一位。
lua_rh.bbi
开始方括号指示器,一位。
lua_rh.ebi
端括号指示器,一位。
lua_rh.cdi
更改方向指示器,一位。
lua_rh.csi
代码选择指示器,一位。
lua_rh.edi
加密数据指示器,一位。
lua_rh.pdi
填充数据指示器,一位。
lua_flag1
提供的参数。 包含包含应用程序提供的消息标志的数据结构。 此参数由 RUI_BID、RUI_READ、RUI_WRITE、SLI_BID、SLI_RECEIVE 和 SLI_SEND 使用。 其子参数如下所示:
lua_flag1.bid_enable
出价启用指示器,一位。
lua_flag1.close_abend
关闭即时指示器,一位。
lua_flag1.nowait
无需等待数据标志,一位。
lua_flag1.sscp_exp
系统服务控制点 (SSCP) 加速流,一位。
lua_flag1.sscp_norm
SSCP 正常流,一位。
lua_flag1.lu_exp
LU 加速流,一位。
lua_flag1.lu_norm
LU 正常流,一位。
将 lua_flag1.bid_enable 设置为 1 以重新启用最新的 SLI_BID (等效于使用 与) 之前完全相同的参数再次发出SLI_BID,或者如果不想重新启用 SLI_BID,则将其设置为零。 请注意,重新启用以前的 SLI_BID 会重用最初为其分配的 VCB,因此此 VCB 不得已释放或修改。
将 lua_flag1.nowait 设置为 1 可指示希望SLI_RECEIVE立即返回数据是否可供读取;如果希望谓词在返回前等待数据,则将其设置为零。
将以下一个或多个标志设置为 1,以指示从哪个消息流读取数据:
lua_flag1.sscp_exp
lua_flag1.lu_exp
lua_flag1.sscp_norm
lua_flag1.lu_norm
如果设置了多个标志,则返回可用的最高优先级数据。 优先级 (最高的第一个) 的顺序是:SSCP 加速、LU 加速、SSCP 正常、LU 正常。 lua_flag2组中的等效标志设置为指示从哪个流读取数据。
lua_message_type
指定入站或出站 SNA 命令和数据的类型。 返回的参数。 指定向 SLI_RECEIVE指示的 SNA 消息的类型。 可能的值为:
LUA_MESSAGE_TYPE_LU_DATA
LUA_MESSAGE_TYPE_SSCP_DATA
LUA_MESSAGE_TYPE_RSP
LUA_MESSAGE_TYPE_BID
LUA_MESSAGE_TYPE_BIND
LUA_MESSAGE_TYPE_BIS
LUA_MESSAGE_TYPE_CANCEL
LUA_MESSAGE_TYPE_CHASE
LUA_MESSAGE_TYPE_LUSTAT_LU
LUA_MESSAGE_TYPE_LUSTAT_SSCP
LUA_MESSAGE_TYPE_QC
LUA_MESSAGE_TYPE_QEC
LUA_MESSAGE_TYPE_RELQ
LUA_MESSAGE_TYPE_RTR
LUA_MESSAGE_TYPE_SBI
LUA_MESSAGE_TYPE_SIGNAL
LUA_MESSAGE_TYPE_STSN
SLI 通过 LUA 接口扩展例程接收并响应 BIND 和 STSN 请求。
LU-DATA、LUSTAT_LU、LUSTAT_SSCP和SSCP_DATA不是 SNA 命令。
lua_flag2
返回的参数。 包含 LUA 返回的消息的标志。 由 RUI_BID、 RUI_READ、 RUI_WRITE、 SLI_BID、 SLI_RECEIVE 和 SLI_SEND 返回。 其子参数如下所示:
lua_flag2.bid_enable
指示如果设置为 1,则指示已成功重新启用 RUI_BID 。
lua_flag2.async
指示 LUA 接口谓词在设置为 1 时异步完成。
lua_flag2.sscp_exp
如果设置为 1,则指示 SSCP 加速流。
lua_flag2.sscp_norm
如果设置为 1,则指示 SSCP 正常流。
lua_flag2.lu_exp
如果设置为 1,则指示 LU 加速流。
lua_flag2.lu_norm
如果设置为 1,则指示 LU 正常流。
lua_resv56
不由SLI_RECEIVE使用,应设置为零。
lua_encr_decr_option
不由SLI_RECEIVE使用,应设置为零。
返回代码
LUA_OK
主要返回代码;谓词已成功执行。
LUA_SEC_OK
辅助返回代码;不存在LUA_OK的其他信息。
LUA_PARAMETER_CHECK
主要返回代码;由于参数错误,谓词未执行。
LUA_INVALID_LUNAME
辅助返回代码;指定的 lua_luname 无效。
LUA_BAD_SESSION_ID
辅助返回代码;在 VCB 中指定 了lua_sid 的无效值。
LUA_BAD_DATA_PTR
辅助返回代码; lua_data_ptr 参数不包含有效的指针或未指向读/写段,并且需要提供的数据。
LUA_RESERVED_FIELD_NOT_ZERO
辅助返回代码;刚发出的谓词的保留参数未设置为零。
LUA_INVALID_POST_HANDLE
辅助返回代码;对于使用事件作为异步过帐方法的 Microsoft Windows 操作系统,Windows LUA VCB 不包含有效的事件句柄。
LUA_BID_VERB_SEGMENT_ERROR
辅助返回代码;SLI_BID VCB 的缓冲区是在发出lua_flag1.bid_enable 设置为 1 的SLI_RECEIVE之前释放的。
LUA_NO_PREVIOUS_BID_ENABLED
辅助返回代码;使用lua_flag1.bid_enable 发出SLI_RECEIVE之前,未发出SLI_BID。
LUA_BID_ALREADY_ENABLED
辅助返回代码; SLI_BID 已处于活动状态时, lua_flag1.bid_enable 发出 了SLI_RECEIVE 。
LUA_INVALID_FLOW
辅助返回代码;发出谓词时, lua_flag1 流标志设置不正确:
发出 发送 SNA 响应SLI_SEND 时,仅设置一个 lua_flag1 流标志。
发出SLI_RECEIVE时,请至少设置一个lua_flag1流标志。
LUA_VERB_LENGTH_INVALID
辅助返回代码;LUA 谓词发出了 LUA 意外 lua_verb_length 值。
LUA_STATE_CHECK
主要返回代码;谓词未执行,因为它是在无效状态下发出的。LUA_NO_SLI_SESSION
辅助返回代码;发出命令时,由于 SLI_CLOSE 或会话失败,会话未打开或关闭。
LUA_RECEIVE_ON_FLOW_PENDING
辅助返回代码;当此应用程序为 SNA 流发出另一个SLI_RECEIVE时,SLI_RECEIVE仍然未完成。
LUA_SESSION_FAILURE
主返回代码;辅助返回代码中指定的错误条件导致会话失败。LUA_RUI_WRITE_FAILURE
辅助返回代码; RUI_WRITE向 SLI 发布意外错误。
LUA_RECEIVED_UNBIND
辅助返回代码; (PLU 的主逻辑单元) 会话处于活动状态时向 LUA 接口发送了 SNA UNBIND 命令。 因此,会话已停止。
LUA_SLI_LOGIC_ERROR
辅助返回代码;LUA 接口在逻辑中发现内部错误。
LUA_NO_RUI_SESSION
辅助返回代码;在初始化会话之前,尚未为发出的 LUA 谓词初始化会话或发出 SLI_OPEN 以外的某个谓词。
LUA_MODE_INCONSISTENCY
辅助返回代码;当前状态不允许执行此函数。 即使已理解和支持发送到半会话组件的请求,也不会执行该请求。 此 SNA 感知代码也是异常请求感知代码。
LUA_RECEIVER_IN_TRANSMIT_MODE
辅助返回代码;处理正常流数据所需的资源不可用,或者收到正常流请求时未收到半双工争用的状态。 结果是争用条件。 此 SNA 感知代码也是异常请求感知代码。
LUA_LU_COMPONENT_DISCONNECTED
辅助返回代码;LU 组件不可用,因为它未正确连接。 确保电源已打开。
LUA_FUNCTION_NOT_SUPPORTED
辅助返回代码;LUA 不支持请求的函数。 控制字符、RU 参数或格式化请求代码可能已指定函数。 特定感知代码信息以字节 2 和 3 为单位。
LUA_CHAINING_ERROR
辅助返回代码;链指示器设置的顺序出错。 发现接收方当前会话控制或数据流控制状态的请求标头或请求单元无效。 已阻止传递到半会话组件。
LUA_BRACKET
辅助返回代码;发送方未能强制实施会话括号规则。 请注意,争用和争用条件不受此错误影响。 发现接收方当前会话控制或数据流控制状态的请求标头或请求单元无效。 已阻止传递到半会话组件。
LUA_DIRECTION
辅助返回代码;当半双工翻转状态NOT_RECEIVE时,收到正常流的请求。 发现接收方当前会话控制或数据流控制状态的请求标头或请求单元无效。 已阻止传递到半会话组件。
LUA_DATA_TRAFFIC_QUIESCED
辅助返回代码;数据流控制 (DFC) 或函数管理数据 (FMD) 请求是从发送了 SHUTC 命令或 QC 命令的半会话接收的,并且 DFC 或 FMD 请求未响应 RELQ 命令。 发现接收方当前会话控制或数据流控制状态的请求标头或请求单元无效。 已阻止传递到半会话组件。
LUA_NO_BEGIN_BRACKET
辅助返回代码;收到指定 BBI=BB 的 BID 或 FMD 请求时,接收方已向 BIS 命令发送了肯定响应。 发现收到的当前会话控制或数据流控制状态的请求标头或请求单元无效。 已阻止传递到半会话组件。
LUA_IMMEDIATE_REQUEST_MODE_ERROR
辅助返回代码;请求违反了即时请求模式协议。 发现收到的当前会话控制或数据流控制状态的标头请求或请求单元无效。 已阻止传递到半会话组件。
LUA_QUEUED_RESPONSE_ERROR
辅助返回代码;请求违反了排队响应协议。 发现收到的当前会话控制或数据流控制状态的标头请求或请求单元无效。 已阻止传递到半会话组件。
LUA_ERP_SYNC_EVENT_ERROR
辅助返回代码;发生 ERP 同步事件协议冲突。 发现收到的当前会话控制或数据流控制状态的标头请求或请求单元无效。 已阻止传递到半会话组件。
LUA_RSP_CORRELATION_ERROR
辅助返回代码;发送的响应与以前收到的请求不对应,或者收到的响应与以前发送的请求不对应。
LUA_RSP_PROTOCOL_ERROR
辅助返回代码;在从主半会话收到的响应中发现响应协议冲突。
LUA_BB_NOT_ALLOWED
辅助返回代码;未正确指定开头方括号指示器。 请求标头参数值违反了先前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 未能强制实施会话规则的发送方可能已导致错误。
允许LUA_EB_NOT
辅助返回代码;未正确指定尾括号指示器。 请求标头参数值违反了先前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_EXCEPTION_RSP_NOT_ALLOWED
辅助返回代码;如果不允许异常响应,则请求了一个异常响应。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_DEFINITE_RSP_NOT_ALLOWED
辅助返回代码;当不允许明确响应时,会请求一个响应。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_CD_NOT_ALLOWED
辅助返回代码;错误地指定了更改方向指示器。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_NO_RESPONSE_NOT_ALLOWED
辅助返回代码;EXR 以外的请求包含 NO 响应。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_CHAINING_NOT_SUPPORTED
辅助返回代码;未正确指定链接指示器。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_BRACKETS_NOT_SUPPORTED
辅助返回代码;括号指示器未正确指定。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_CD_NOT_SUPPORTED
辅助返回代码;已设置更改方向指示器,但 LUA 不支持这种情况下的更改方向。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_INCORRECT_USE_OF_FI
辅助返回代码;格式指示器未正确指定。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_ALTERNATE_CODE_NOT_SUPPORTED
辅助返回代码;已设置代码选择指示器,但 LUA 不支持此会话的代码选择。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_INCORRECT_RU_CATEGORY
辅助返回代码;错误地指定了请求单位类别指示器。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_INCORRECT_REQUEST_CODE
辅助返回代码;错误地指定了请求代码。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_INCORRECT_SPEC_OF_SDI_RTI
辅助返回代码;未在响应中正确指定 SDI 和 RTI。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_INCORRECT_DR1I_DR2I_ERI
辅助返回代码;未正确指定 DR1I、DR2I 和 ERI。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_INCORRECT_USE_OF_QRI
辅助返回代码;未正确指定排队响应指示器。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_INCORRECT_USE_OF_EDI
辅助返回代码;未正确指定 EDI。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_INCORRECT_USE_OF_PDI
辅助返回代码;未正确指定 PDI。 请求标头参数值违反了以前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 发送方未能强制实施会话规则可能导致错误。
LUA_UNSUCCESSFUL
主返回代码;提供的谓词记录有效,但谓词未成功完成。LUA_DATA_TRUNCATED
辅助返回代码;数据被截断,因为接收的数据长于 lua_max_length 中指定的缓冲区长度。
LUA_DATA_SEGMENT_LENGTH_ERROR
辅助返回代码;发生了以下情况之一:
SLI_RECEIVE提供的数据段长度不如 lua_max_length 中提供的数据段。
SLI_SEND提供的数据段长度不如lua_data_length中提供的数据段。
LUA_NO_DATA
辅助返回代码;发出包含 no wait 参数 的SLI_RECEIVE 时,无法读取任何数据。
LUA_VERB_RECORD_SPANS_SEGMENTS
辅助返回代码;LUA VCB 长度参数加上段偏移量超出段末尾。
LUA_NOT_ACTIVE
辅助返回代码;发出 LUA 谓词时,LUA 在 Microsoft Host Integration Server 或 SNA Server 中未处于活动状态。
LUA_NOT_READY
辅助返回代码;以下任一事件导致 SLI 会话暂时挂起:
收到 SNA UNBIND 类型0x02命令,这表示新的 BIND 即将到来。 如果在开始SLI_OPEN完成后收到 UNBIND 类型 0x02 ,会话将暂停,直到收到 BIND、可选 CRV 和 STSN 以及 SDT 流。 这些例程会重新进入,因为它们必须再次调用。 会话在 SLI 处理 SDT 命令后恢复。 如果在SLI_OPEN仍在处理时收到 UNBIND 类型 0x02 ,则主返回代码LUA_SESSION_FAILURE,而不是LUA_STATUS。
SNA CLEAR 的接收导致暂停。 收到 SNA SDT 将导致会话恢复。
LUA_SLI_LOGIC_ERROR
辅助返回代码;LUA 接口在逻辑中发现内部错误。
LUA_INVALID_PROCESS
辅助返回代码;发出 LUA 谓词的会话不可用,因为另一个 OS/2 进程拥有该会话。
LUA_LU_INOPERATIVE
辅助返回代码;LUA 尝试停止会话时发生严重错误。 在从主机收到激活的逻辑单元 (ACTLU) 之前,此 LU 对于任何 LUA 请求不可用。
LUA_RECEIVE_CORRELATION_TABLE_FULL
辅助返回代码;会话接收请求流的相关表达到其容量。
LUA_NEGATIVE_RESPONSE
主返回代码;由于在消息中发现错误,LUA 对从主逻辑单元接收的消息 (PLU) 发送了负面响应,或者应用程序对链末到达的链做出了负面响应。LUA_MODE_INCONSISTENCY
辅助返回代码;当前状态不允许执行此函数。 即使已理解和支持发送到半会话组件的请求,也不会执行该请求。 此 SNA 感知代码也是异常请求感知代码。
LUA_FUNCTION_NOT_SUPPORTED
辅助返回代码;LUA 不支持请求的函数。 控制字符、RU 参数或格式化请求代码可能已指定函数。 特定感知代码信息以字节 2 和 3 为单位。
LUA_DATA_TRAFFIC_RESET
辅助返回代码;活动会话的半会话,但具有非活动数据流量收到了正常的流 DFC 或 FMD 请求。 发现接收方当前会话控制或数据流控制状态的请求标头或请求单元无效。 已阻止传递到半会话组件。
LUA_DATA_TRAFFIC_NOT_RESET
辅助返回代码;数据流量状态未重置时,已收到会话控制请求。 发现收到的当前会话控制或数据流控制状态的请求标头或请求单元无效。 已阻止传递到半会话组件。
LUA_SC_PROTOCOL_VIOLATION
辅助返回代码;发生了 SC 协议冲突。 请求 (,仅在收到 SC 请求和对请求的积极响应成功交换后才允许,) 在所需的交换之前收到请求。 感知数据的字节 4 包含请求代码。 此感知代码不存在用户数据。 发现收到的当前会话控制或数据流控制状态的标头请求或请求单元无效。 已阻止传递到半会话组件。
LUA_INVALID_SC_OR_NC_RH
辅助返回代码;SC 或 NC 请求的 RH 无效。
LUA_PACING_NOT_SUPPORTED
辅助返回代码;当接收半会话或边界函数半会话不存在对此会话的节奏支持时,请求包含一个起搏指示器。 请求标头参数值违反了先前选择的 BIND 选项或体系结构规则。 已阻止传递到半会话组件。 错误不依赖于当前会话状态。 未能强制实施会话规则的发送方可能已导致错误。
LUA_NAU_INOPERATIVE
辅助返回代码;网络可寻址单元无法处理响应或请求。 由于以下原因之一,无法交付给接收方:
路径信息单元错误
路径中断
激活请求序列无效
如果在活动会话期间收到路径错误,这通常意味着会话伙伴不再有有效路径。
LUA_CANCELED
主返回代码;辅助返回代码提供取消命令的原因。LUA_PURGED
辅助返回代码; SLI_RECEIVE 发出并取消了 SLI_PURGE。
LUA_NO_SLI_SESSION
辅助返回代码;发出命令时,由于 SLI_CLOSE 或会话失败,会话未打开或关闭。
LUA_CANCEL_COMMAND_RECEIVED
辅助返回代码;主机发送了 SNA CANCEL 命令以取消 SLI_RECEIVE当前接收的数据链。
LUA_TERMINATED
辅助返回代码;当谓词挂起时,会话已终止。 谓词过程已取消。
LUA_IN_PROGRESS
主返回代码;已收到异步命令,但未完成。LUA_STATUS
主返回代码;辅助返回代码包含应用程序的 SLI 状态信息。LUA_READY
辅助返回代码;在“未就绪”状态之后,会发出此状态来通知 SLI 已准备好处理命令。
LUA_NOT_READY
辅助返回代码;SLI 会话暂时暂停,原因如下:
收到 SNA UNBIND 类型0x02命令,这意味着即将推出新的 BIND。 如果在开始SLI_OPEN完成后收到 UNBIND 类型 0x02 ,会话将暂停,直到收到 BIND、可选 CRV 和 STSN 以及 SDT 流。 这些例程会重新进入,因为它们必须再次调用。 会话在 SLI 处理 SDT 命令后恢复。 如果在SLI_OPEN仍在处理时收到 UNBIND 类型0x02,则主要返回代码为会话失败,而不是状态。
SNA CLEAR 的接收导致暂停。 收到 SNA SDT 将导致会话恢复。
LUA_INIT_COMPLETE
辅助返回代码;LUA 接口在 处理SLI_OPEN 时初始化了会话。 发出lua_open_type_prim_sscp SLI_OPEN的 LUA 应用程序会在 SLI_RECEIVE 或 SLI_BID上收到此状态。
LUA_SESSION_END_REQUESTED
辅助返回代码;LUA 接口收到了来自主机的 SNA SHUTD,这意味着主机已准备好关闭会话。
LUA_COMM_SUBSYSTEM_ABENDED
主要返回代码;指示以下状况之一:此对话使用的节点遇到了 ABEND。
(LAN 错误) ,事务程序 (TP) 与物理单元 (PU) 2.1 节点之间的连接已断开。
TP 计算机上的 SnaBase 遇到 ABEND。
LUA_COMM_SUBSYSTEM_NOT_LOADED
主要返回代码;处理谓词时无法加载或终止某个必需的组件。 因此无法通信。 请联系系统管理员以执行纠正措施。LUA_INVALID_VERB_SEGMENT
主要返回代码;VCB 超出了数据段的末尾。LUA_UNEXPECTED_DOS_ERROR
主返回代码;发出操作系统调用后,收到意外的操作系统返回代码,并在辅助返回代码中指定。LUA_STACK_TOO_SMALL
主要返回代码;应用程序的堆栈大小太小,无法执行谓词。 增加应用程序的堆栈大小。LUA_INVALID_VERB
主返回代码;谓词代码或操作代码或两者都无效。 谓词未执行。
注解
SLI_RECEIVE 从主机接收响应、SNA 命令和请求单元数据。 SLI_RECEIVE 还提供 Windows LUA 应用程序的会话状态。 必须先完成SLI_OPEN请求,然后才能发出SLI_RECEIVE。 但是,如果在将 lua_init_type 设置为 LUA_INIT_TYPE_PRIM_SSCP 的情况下发出SLI_OPEN,则只要返回IN_PROGRESS SLI_OPEN,就可以通过 SSCP 正常流发出SLI_RECEIVE。
应用程序在四个会话流之一中接收数据。 从最高到最低优先级的四个会话流是:
SSCP 加速
LU 加速
SSCP 正常
LU 正常
SLI_RECEIVE将处理的数据流类型在 lua_flag1 中指定。 应用程序还可以指定是否要查看多种类型的数据流。 设置多个流位时,首先接收最高优先级。 SLI_RECEIVE完成处理后,lua_flag2指示 Windows LUA 应用程序已接收其数据的特定流类型。
如果在发出 SLI_RECEIVE 之前成功完成SLI_BID,则可以指示 Windows LUA 接口重复使用最后一个SLI_BID谓词 VCB。 为此,请发布SLI_RECEIVE,将 lua_flag1.bid_enable 设置为 1。
使用 lua_flag1.bid_enable 时,不得释放SLI_BID存储,因为使用了最后一个SLI_BID谓词 VCB。 此外,使用 lua_flag1.bid_enable 时,将发布成功完成SLI_BID。
如果在没有数据可供接收时向 lua_flag1.nowait 发出SLI_RECEIVE,LUA_NO_DATA将是 Windows LUA 接口设置的辅助返回代码。
会话状态返回值
如果LUA_STATUS是主要返回代码,则辅助返回代码可以是下列代码之一:
LUA_READY
LUA_NOT_READY
LUA_SESSION_END_REQUESTED
LUA_INIT_COMPLETE
此外,如果 LUA_STATUS 是主返回代码,则使用以下参数:
lua_sec_rc
lua_sid
LUA_READY在LUA_NOT_READY状态后返回,指示 SLI 再次准备好执行所有命令。
LUA_NOT_READY指示 SLI 会话已挂起,因为 SLI 已收到 SNA CLEAR 命令或 SNA UNBIND 命令,其类型为 0x02 UNBIND (UNBIND 以及 BIND 即将) 。 根据导致挂起的原因,可以重新激活会话,如下所示:
当挂起由 SNA CLEAR 引起时,接收 SNA SDT 会重新激活会话。
当即将推出的 SNA UNBIND 类型 BIND 导致会话挂起并且打开会话 的SLI_OPEN 完成时,会话将暂停,直到 SLI 收到 BIND 和 SDT 命令。 会话还可以选择性地接收 STSN 命令。 因此,必须使用初始SLI_OPEN颁发的用户提供的例程重新输入,因为它们将被召回。
应用程序可以在 CLEAR 或 UNBIND 类型 BIND 到达后以及读取NOT_READY状态之前发送 SSCP 数据。 应用程序可以在读取NOT_READY后发送和接收 SSCP 数据。
当在打开会话的SLI_OPEN完成之前到达的 SNA UNBIND 类型 BIND 时,LUA_SESSION_FAILURE (不LUA_STATUS) 是主要返回代码。
LUA_SESSION_END_REQUESTED指示应用程序收到了来自主机的 SNA SHUTD。 Windows LUA 应用程序应发出 SLI_CLOSE ,以在方便时关闭会话。
仅当LUA_INIT_TYPE_PRIM_SSCP SLI_OPEN的lua_init_type时,才会返回 LUA_INIT_COMPLETE 。 状态表示SLI_OPEN已得到充分处理,现在允许发送或接收 SSCP 数据。
异常请求
如果将主机应用程序请求单元转换为 EXR,将返回感知数据。 当 SLI_BID 返回的谓词参数集(如图所示)完成时,将发生 EXR 转换。
成员 | 设置为 |
---|---|
lua_prim_rc | 确定 (0x0000) |
lua_sec_rc | 确定 (0x00000000) |
lua_rh.rri | bit off (请求单位) |
lua_rh.sdi | bit on (包括感知数据) |
在 lua_peek_data 中的 7 个字节数据中,字节 0 到 3 定义检测到的错误。 下表指示可能的感知数据以及字节 0 到 3 的值。
感知数据 | 字节值 0-3 |
---|---|
LUA_MODE_INCONSISTENCY | 0x08090000 |
LUA_BRACKET_RACE_ERROR | 0x080B0000 |
LUA_BB_REJECT_NO_RTR | 0x08130000 |
LUA_RECEIVER_IN_TRANSMIT_MODE | 0x081B0000 |
LUA_CRYPTOGRAPHY_FUNCTION_INOP | 0x08480000 |
LUA_SYNC_EVENT_RESPONSE | 0x10010000 |
LUA_RU_DATA_ERROR | 0x10020000 |
LUA_RU_LENGTH_ERROR | 0x10020000 |
LUA_INCORRECT_SEQUENCE_NUMBER | 0x20010000 |
lua_peek_data中返回到字节 3 到 6 的信息由导致错误的初始请求单元的前三个字节确定。
另请参阅
RUI_INIT
RUI_PURGE
RUI_READ
RUI_WRITE
SLI_BID
SLI_CLOSE
SLI_OPEN
SLI_PURGE
SLI_SEND