SLI_OPEN
SLI_OPEN谓词将指定逻辑单元 (LU) 的控制转移到 Microsoft® Windows® 逻辑单元应用程序 (LUA) 应用程序。 SLI_OPEN 在系统服务控制点 (SSCP) 和指定的 LU 之间建立会话,以及 LU-LU 会话。
以下结构描述了SLI_OPEN使用的谓词控制块 (VCB) LUA_COMMON成员。
第二个语法联合描述 SLI_OPEN 使用的 VCB 的LUA_SPECIFIC成员。 为清楚起见,将省略其他工会成员。
语法
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;
};
union LUA_SPECIFIC {
struct union SLI_OPEN open;
};
The SLI_OPEN structure contains the following nested structures and members:
struct LUA_EXT_ENTRY {
unsigned char lua_routine_type;
unsigned char lua_module_name[9];
unsigned char lua_procedure_name[33];
} ;
struct SLI_OPEN {
unsigned char lua_init_type;
unsigned char lua_resv65;
unsigned short lua_wait;
struct LUA_EXT_ENTRY lua_open_extension[3];
unsigned char lua_ending_delim;
} ;
成员
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_OPEN。
lua_correlator
提供的参数。 包含用户提供的值,该值将谓词与其他用户提供的信息链接在一起。 LUA 不使用或更改此信息。 此参数是可选的。
lua_luname
提供的参数。 指定 Windows LUA 会话使用的本地 LU 的 ASCII 名称。
SLI_OPEN需要此参数。
此参数长度为 8 个字节,如果名称短于 8 个字符,则用空格 (0x20) 在右侧填充。
lua_extension_list_offset
提供的参数。 指定从 VCB 开头到用户提供的动态链接库扩展列表 (DLL) 的偏移量。 除非没有扩展列表,否则该值必须是单词边界的开头。 在这种情况下,值必须设置为零。
如果SLI_OPEN未使用此选项,则此成员应设置为零。
lua_cobol_offset
MICROSOFT® Host Integration Server 中的 LUA 未使用,应为零。
lua_sid
返回的参数。 指定会话标识符。
lua_max_length
SLI_OPEN不使用,应设置为零。
lua_data_length
提供的参数。 指定要发送的数据的实际长度。
lua_data_ptr
指向应用程序提供的缓冲区的指针,该缓冲区包含要为 SLI_OPEN发送的数据。
SNA 命令和数据都放置在此缓冲区中,它们可以采用扩展二进制编码的十进制交换代码 (EBCDIC) 格式。
发出SLI_OPEN时,此参数可以是以下参数之一:
当初始化类型为辅助类型的未格式化 LOGON 消息时,SSCP 正常流的 LOGON 消息。
请求/响应单元 (INITSELF 的 RU) 。 当初始化类型是 INITSELF 的辅助类型时,将提供应用程序的必要数据。
对于所有其他打开类型,此字段应设置为零。
此信息由 Windows LUA 应用程序提供。
lua_post_handle
提供的参数。 如果异步通知要由事件完成,则用于 Microsoft Windows Server 下。 此变量包含要发出信号的事件的句柄或窗口句柄。lua_th
SLI_OPEN不使用,应设置为零。lua_rh
SLI_OPEN不使用,应设置为零。lua_flag1
SLI_OPEN不使用,应设置为零。lua_message_type
SLI_OPEN不使用,应设置为零。lua_flag2
返回的参数。 包含 LUA 返回的消息的标志。 其子参数如下所示:lua_flag2.async
指示 LUA 接口谓词在设置为 1 时异步完成。
lua_resv56
提供的参数。 SLI_OPEN和RUI_INIT使用的保留字段。 有关详细信息,请参见“备注”部分。lua_resv56[1]
提供的参数。 该参数必须设置为零。
lua_resv56[2]
提供的参数。 指示 SLI 应用程序是否可以访问配置为 3270 LU 的 LU 以及 LUA LU。 如果此参数设置为 1,则可以访问 3270 个 LU。
lua_resv56[3]
提供的参数。 指示是否支持不完整的读取。 如果此参数设置为 1,则支持不完整或截断的读取。 有关更多详细信息,请参阅 RUI_READ的备注。
lua_encr_decr_option
SLI_OPEN不使用,应设置为零。open
SLI_OPEN使用的LUA_SPECIFIC的联合成员。 SLI_OPEN所需的SLI_OPEN结构中包含的一组参数。open.lua_init_type
提供的参数。 定义 WINDOWS LUA 接口如何初始化 LU-LU 会话。
以下是有效值:
LUA_INIT_TYPE_SEC_IS
LUA_INIT_TYPE_SEC_LOG
LUA_INIT_TYPE_PRIM
LUA_INIT_TYPE_PRIM_SSCP
open.lua_resv65
保留的字段。
open.lua_wait
提供的参数。 表示次要重试等待时间,指示在主机发送以下任一消息后,Windows LUA 接口在重试传输 INITSELF 或 LOGON 消息之前等待的秒数:
负响应和辅助返回代码为下列值之一:
RESOURCE_NOT_AVAILABLE (0x08010000) SESSION_LIMIT_EXCEEDED (0x08050000) SESSION_SERVICE_PATH_ERROR (0x087D0000)
请注意,如果lua_wait设置为零且发生上述情况之一,则SLI_OPEN终止并出现错误。
NSPE) 消息 (网络服务过程错误。
一个 NOTIFY 命令,指示过程错误。
open.lua_open_extension
提供的参数。 包含应用程序提供的用于处理 BIND、STSN 和 CRV 命令的扩展 DLL 的列表。
open.open_extension.lua_routine_type
扩展例程类型。 法定值为:
LUA_ROUTINE_TYPE_BIND
LUA_ROUTINE_TYPE_CRV
LUA_ROUTINE_TYPE_END (指示扩展列表) 结束
LUA_ROUTINE_TYPE_STSN
open.open_extension.lua_module_name
提供的参数。 为用户提供的扩展 DLL 提供 ASCII 模块名称。 模块名称的长度最多为 8 个字符,其余字节设置为0x00。
open.open_extension.lua_procedure_name
提供的参数。 在 ASCII 中为用户提供的扩展 DLL 提供过程名称。 过程名称的长度最多为 32 个字符,其余字节设置为0x00。
open.lua_ending_delim
扩展列表分隔符。
返回代码
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_DATA_SEGMENT_LENGTH_ERROR
辅助返回代码;发生以下情况之一:
为 SLI_RECEIVE 或 SLI_SEND 提供的数据段不是所需的读/写数据段。
为SLI_RECEIVE提供的数据段不如lua_max_length中提供的数据段。
为SLI_SEND提供的数据段长度不如 lua_data_length 中提供的数据段。
LUA_RESERVED_FIELD_NOT_ZERO
辅助返回代码;刚发出的谓词的保留参数未设置为零。
LUA_INVALID_POST_HANDLE
辅助返回代码;对于使用事件作为异步过帐方法的 Microsoft Windows 操作系统,Windows LUA VCB 不包含有效的事件句柄。
LUA_VERB_LENGTH_INVALID
辅助返回代码;LUA 谓词发出时,使用 LUA 意外 lua_verb_length 值。
LUA_INVALID_OPEN_INIT_TYPE
辅助返回代码;SLI_OPEN中包含的lua_init_type中的 值无效。
LUA_INVALID_OPEN_DATA
辅助返回代码;如果数据的缓冲区没有有效的 INITSELF 命令,则发出的SLI_OPEN lua_init_type设置为LUA_INIT_TYPE_SEC_IS。
LUA_INVALID_OPEN_ROUTINE_TYPE
辅助返回代码;扩展例程SLI_OPEN列表的lua_open_routine_type无效。
LUA_DATA_LENGTH_ERROR
辅助返回代码;应用程序未提供所发出谓词所需的用户提供的数据。 请注意,当为 SNA LUSTAT 命令发出 SLI_SEND 时,状态 (四个字节) 是必需的,并且当通过辅助初始化发出 SLI_OPEN 时,需要数据。
LUA_INVALID_SLI_ENCR_OPTION
辅助返回代码; lua_encr_decr_option 参数在 SLI_OPEN 中设置为 128,加密/解密处理选项不支持该参数。
LUA_STATE_CHECK
主要返回代码;谓词未执行,因为它是在无效状态下发出的。LUA_NOT_ACTIVE
辅助返回代码;发出 LUA 谓词时,LUA 在 Microsoft Host Integration Server 或 SNA 服务器中未处于活动状态。
LUA_UNEXPECTED_SNA_SEQUENCE
辅助返回代码;处理 SLI_OPEN 时,主机收到了意外数据或命令。
LUA_NEG_RSP_FROM_BIND_ROUTINE
辅助返回代码;用户提供的SLI_BIND例程对 BIND 做出负面响应。 SLI_OPEN 未成功结束。
LUA_NEG_RSP_FROM_STSN_ROUTINE
辅助返回代码;用户提供的 SLI STSN 例程对 STSN 做出负面响应。 SLI_OPEN 未成功结束。
LUA_PROCEDURE_ERROR
辅助返回代码;收到 NSPE 或 NOTIFY 消息时指示主机过程错误。 不使用重试选项时,返回代码将发布到 SLI_OPEN 。 若要使用重置选项, 请将lua_wait 设置为非零值。 将重试 LOGON 或 INITSELF 命令,直到主机准备就绪或发出 SLI_CLOSE为止。
LUA_RECEIVED_UNBIND
辅助返回代码;当会话处于活动状态时,PLU (主逻辑单元) 向 LUA 接口发送了 SNA UNBIND 命令。 因此,会话已停止。
LUA_SLI_LOGIC_ERROR
辅助返回代码;LUA 接口在逻辑中发现内部错误。
LUA_NO_RUI_SESSION
辅助返回代码;尚未为发出的 LUA 谓词初始化会话,或者在初始化会话之前发出 除 SLI_OPEN 以外的某个谓词。
LUA_RESOURCE_NOT_AVAILABLE
辅助返回代码;请求单元中指定的逻辑单元、物理单元、链接或链接站不可用。 除非使用重试选项,否则当资源不可用时,此返回代码将发布到 SLI_OPEN 。
若要使用重试选项, 请将lua_wait 设置为非零值。 将重试 LOGON 或 INITSELF 命令,直到主机准备就绪或发出 SLI_CLOSE为止。
LUA_SESSION_LIMIT_EXCEEDED
辅助返回代码;请求的会话未激活,因为 NAU 已达到其会话限制。 此 SNA 感知代码适用于以下请求:BID、CINIT、INIT 和 ACTDRM。
除非使用 RETRY 选项,否则当 NAU 达到限制时,代码将发布到 SLI_OPEN 。
若要使用重置选项, 请将lua_wait 设置为非零值。 将重试 LOGON 或 INITSELF 命令,直到主机准备就绪或发出 SLI_CLOSE为止。
LUA_LU_COMPONENT_DISCONNECTED
辅助返回代码;LU 组件不可用,因为它未正确连接。 确保电源已打开。
LUA_NEGOTIABLE_BIND_ERROR
辅助返回代码;接收了可转让 BIND,仅当用户提供的SLI_BIND例程与SLI_OPEN一起提供时,SLI 才允许该 绑定。
LUA_BIND_FM_PROFILE_ERROR
辅助返回代码;LUA 接口仅支持文件管理标头配置文件 3 和 4。 在 BIND 上找到了 3 或 4 以外的文件管理配置文件。
LUA_BIND_TS_PROFILE_ERROR
辅助返回代码;LUA 接口仅支持传输服务 (TS) 配置文件 3 和 4。 在 BIND 上发现了 3 或 4 以外的 TS 配置文件。
LUA_BIND_LU_TYPE_ERROR
辅助返回代码;LUA 仅支持 LU 0、LU 1、LU 2 和 LU 3。 找到了 0、1、2 或 3 以外的 LU。
LUA_SSCP_LU_SESSION_NOT_ACTIVE
辅助返回代码;所需的 SSCP-LU 处于非活动状态。 特定感知代码信息以字节 2 和 3 为单位。 有效设置包括0x0000、0x0001、0x0002、0x0003和0x0004。
LUA_SESSION_SERVICES_PATH_ERROR
辅助返回代码;无法将会话服务请求重新路由到 SSCP-SSCP 会话路径。 以字节 2 和 3 为单位的特定感知代码信息提供了有关请求无法重新路由的原因的详细信息。
LUA_UNSUCCESSFUL
主返回代码;提供的谓词记录有效,但谓词未成功完成。LUA_VERB_RECORD_SPANS_SEGMENTS
辅助返回代码;LUA VCB 长度参数加上段偏移量超出段末尾。
LUA_SESSION_ALREADY_OPEN
辅助返回代码;会话已针对 SLI_OPEN 中指定的 LU 名称打开。
LUA_INVALID_PROCESS
辅助返回代码;发出 LUA 谓词的会话不可用,因为另一个进程拥有该会话。
LUA_LINK_NOT_STARTED
辅助返回代码;在会话初始化期间,LUA 无法激活数据链接。
LUA_INVALID_ADAPTER
辅助返回代码;数据链接控件的配置 (DLC) 出错或配置文件损坏。
LUA_ENCR_DECR_LOAD_ERROR
辅助返回代码;尝试加载用户提供的加密或解密动态链接模块时,从 OS/2 DosLoadModule 函数收到意外的返回代码。
LUA_ENCR_DECR_PROC_ERROR
辅助返回代码;尝试在用户提供的加密或解密动态链接模块中获取过程地址时,从 OS/2 DosGetProcAddr 函数收到意外的返回代码。
LUA_NEG_NOTIFY_RSP
辅助返回代码;SSCP 对发出的 NOTIFY 请求做出负面响应,该请求指示辅助 LU 能够执行会话。 接收请求的半会话组件理解并支持请求,但无法执行该请求。
LUA_LU_INOPERATIVE
辅助返回代码;SLI 尝试停止会话时发生严重错误。 在从主机收到激活的逻辑单元 (ACTLU) 之前,此 LU 不可用于任何 LUA 请求。
LUA_CANCELED
主返回代码;辅助返回代码提供取消命令的原因。LUA_TERMINATED
辅助返回代码;当谓词挂起时,会话已终止。 谓词进程已取消。
LUA_IN_PROGRESS
主返回代码;已收到异步命令,但未完成。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_OPEN,Windows LUA 接口:
启动通信会话。
读取并验证来自主机的 BIND 命令,如果提供了 BIND 扩展例程,则将其传递给应用程序。
写入 BIND 响应。
读取和处理 STSN 命令,并在必要时将 BIND 扩展传递给应用程序 () 。
如有必要,) 写入 STSN 响应 (。
如有必要,) 读取 CRV 命令 (。
如有必要,) 写入 CRV 响应 (。
读取和处理 SDT 命令。
写入 SDT 响应。
Windows LUA 接口为发出SLI_OPEN并将开放类型设置为 LUA_INIT_TYPE_SEC_IS 或 LUA_INIT_TYPE_SEC_LOG 的会话执行以下附加功能:
写入 INITSELF 或未格式化的 LOGON 消息。
读取和处理 INITSELF 响应或 LOGON 消息响应。
所有 SNA 消息流量都由 SLI_OPEN 通过 SDT 命令响应进行管理。
若要选择为 Windows LUA 配置的某个 LU,应用程序会将lua_luname设置为 ASCII 中的 LU 名称,并在必要时填充尾随空格。
使用 lua_prim_rc 参数中的LUA_OK发布SLI_OPEN时,SLI_OPEN成功完成并建立了 LU-LU 数据流会话。 应用程序现在可以发出 SLI_BID、 SLI_CLOSE、 SLI_PURGE、 SLI_RECEIVE和 SLI_SEND。
使用除 LUA_OK 或 LUA_IN_PROGRESS 以外的主返回代码发布SLI_OPEN时,命令未成功建立会话。
使用 SLI_OPEN 时,Windows LUA 应用程序必须提供会话初始化类型。 有效类型包括: