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时,此参数可以是下列参数之一:
当初始化类型为辅助类型时,SSCP 正常流的 LOGON 消息具有未格式化的 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]
提供的参数。 指示除了 LUA LU 之外,SLI 应用程序是否可以访问配置为 3270 RU 的 LU。 如果此参数设置为 1,可以访问 3270 RU。
lua_resv56[3]
提供的参数。 指示是否支持不完整的读取。 如果此参数设置为 1,则支持不完整或截断的读取。 有关更多详细信息,请参阅 有关RUI_READ的备注。
lua_encr_decr_option
SLI_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 模块名称。 模块名称最多可以包含八个字符,其余字节设置为0x00。
open.open_extension.lua_procedure_name
提供的参数。 为用户提供的扩展 DLL 提供 ASCII 中的过程名称。 过程名称最多可以包含 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 Server 中未处于活动状态。
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 设置为非零的值。 在主机准备就绪或 发出SLI_CLOSE之前,将重试 LOGON 或 INITSELF 命令。
LUA_RECEIVED_UNBIND
辅助返回代码;当会话处于活动状态时,主逻辑单元(PLU)将 SNA UNBIND 命令发送到 LUA 接口。 因此,会话已停止。
LUA_SLI_LOGIC_ERROR
辅助返回代码;LUA 接口在逻辑中发现了内部错误。
LUA_NO_RUI_SESSION
辅助返回代码;未为发出 LUA 谓词初始化会话,或者在初始化会话之前发出 SLI_OPEN 以外的某些谓词。
LUA_RESOURCE_NOT_AVAILABLE
辅助返回代码;请求单元中指定的逻辑单元、物理单元、链接或链接站不可用。 除非使用重试选项,否则当资源不可用时,此返回代码将发布到 SLI_OPEN 。
若要使用重试选项, 请将lua_wait 设置为非零的值。 在主机准备就绪或 发出SLI_CLOSE之前,将重试 LOGON 或 INITSELF 命令。
LUA_SESSION_LIMIT_EXCEEDED
辅助返回代码;请求的会话未激活,因为 NAU 处于其会话限制。 此 SNA 感知代码适用于以下请求:BID、CINIT、INIT 和 ACTDRM。
除非使用 RETRY 选项,否则当 NAU 处于限制时,代码将发布到 SLI_OPEN 。
若要使用重置选项, 请将lua_wait 设置为非零的值。 在主机准备就绪或 发出SLI_CLOSE之前,将重试 LOGON 或 INITSELF 命令。
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。
事务程序(TP)与物理单元(PU)2.1 节点之间的连接已中断(LAN 错误)。
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 消息流量都通过 SDT 命令响应 SLI_OPEN 进行管理。
若要选择为 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 应用程序必须提供会话初始化类型。 有效类型是: