SLI_RECEIVE

SLI_RECEIVE谓词接收Microsoft Windows® 逻辑单元应用程序(LUA)应用程序缓冲区中的响应、SNA 命令和数据®。 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 名称。

SLI_RECEIVE仅当lua_sid为零时才需要此参数。

如果名称短于 8 个字符,则此参数长度为 8 字节,用空格(0x20)在右侧填充。

lua_extension_list_offset
SLI_RECEIVE 不使用,应 设置为零。

lua_cobol_offset
MICROSOFT Host Integration Server 或 SNA Server 中® LUA 不使用,且应为零。

lua_sid
提供并返回的参数。 指定会话标识符,并由 SLI_OPENRUI_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_FMD0x00) FM 数据段LUA_RH_NC0x20) 网络控制LUA_RH_DFC0x40) 数据流控制LUA_RH_SC0x60) 会话控制

lua_rh.fi

格式指示器,一位。

lua_rh.sdi

感知数据包括指示器,一位。

lua_rh.bci

开始链指示器,一位。

lua_rh.eci

结束链指示器,一位。

lua_rh.dr1i

明确响应 1 指示器,一位。

lua_rh.dr2i

明确响应 2 指示器,一位。

lua_rh.ri

异常响应指示器(对于请求),或响应类型指示器(对于响应),一位。

lua_rh.qri

排队响应指示器,一位。

lua_rh.pi

Pacing 指示器,一位。

lua_rh.bbi

开始方括号指示器,一位。

lua_rh.ebi

端括号指示器,一位。

lua_rh.cdi

更改方向指示器,一位。

lua_rh.csi

代码选择指示器,一位。

lua_rh.edi

加密的数据指示器,一位。

lua_rh.pdi

填充的数据指示器,一位。

lua_flag1
提供的参数。 包含包含应用程序提供的消息标志的数据结构。 此参数由 RUI_BIDRUI_READRUI_WRITESLI_BIDSLI_RECEIVESLI_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_BIDRUI_READRUI_WRITESLI_BIDSLI_RECEIVESLI_SEND返回。 它的子参数如下所示:

lua_flag2.bid_enable

指示如果设置为 1,则已成功重新启用 RUI_BID

lua_flag2.async

指示 LUA 接口谓词在设置为 1 时异步完成。

lua_flag2.sscp_exp

指示 SSCP 加速流(如果设置为 1)。

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

辅助返回代码;在lua_flag1.bid_enable 设置为 1 的SLI_RECEIVE之前释放了SLI_BID VCB 的缓冲区。

LUA_NO_PREVIOUS_BID_ENABLED

辅助返回代码;lua_flag1.bid_enable 发出SLI_RECEIVE之前,未发出SLI_BID

LUA_BID_ALREADY_ENABLED

辅助返回代码;SLI_BID已处于活动状态时,SLI_RECEIVE颁发了 lua_flag1.bid_enable

LUA_INVALID_FLOW

辅助返回代码;发出谓词时, lua_flag1 流标志设置不正确:

  • 发出 SLI_SEND 发送 SNA 响应时,仅设置一 个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)将 SNA UNBIND 命令发送到 LUA 接口。 因此,会话已停止。

    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

    辅助返回代码;从发送 SHUTC 命令或 QC 命令的半会话收到数据流控制(DFC)或函数管理数据(FMD)请求,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_RECEIVESLI_SEND 提供的数据段不是所需的读/写数据段。

  • 提供的SLI_RECEIVE数据段不如在lua_max_length中提供。

  • 提供的SLI_SEND数据段不如lua_data_length中提供的数据段。

    LUA_NO_DATA

    辅助返回代码;在没有发出等待参数 的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_PURGE 已颁发并取消 SLI_RECEIVE

    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_RECEIVESLI_BID上收到此状态。

    LUA_SESSION_END_REQUESTED

    辅助返回代码;LUA 接口从主机收到 SNA SHUTD,这意味着主机已准备好关闭会话。

    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_RECEIVE 接收来自主机的响应、SNA 命令和请求单元数据。 SLI_RECEIVE 还提供 Windows LUA 应用程序的会话状态。 在发出SLI_RECEIVE之前,必须完成SLI_OPEN请求。 但是,如果SLI_OPEN lua_init_type设置为LUA_INIT_TYPE_PRIM_SSCP,则SLI_OPEN返回IN_PROGRESS后,就可以立即发出 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。 为此,lua_flag1.bid_enable 设置为 1 的问题SLI_RECEIVE。

    使用 lua_flag1.bid_enable 时,不得释放SLI_BID存储,因为使用了最后一个SLI_BID谓词 VCB。 此外,使用 lua_flag1.bid_enable 时,将发布SLI_BID的成功完成。

    如果没有数据可供接收时,SLI_RECEIVE lua_flag1.nowait 发出,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 命令或具有0X02 UNBIND 类型的 SNA UNBIND 命令(即将推出的 BIND 的 UNBIND)。 根据导致挂起的原因,可以按如下所示重新激活会话:

  • 当挂起由 SNA CLEAR 引起时,接收 SNA SDT 会重新激活会话。

  • 当 SNA UNBIND 类型 BIND 即将启动导致会话挂起并且打开会话 的SLI_OPEN 完成时,会话将挂起,直到 SLI 收到 BIND 和 SDT 命令。 会话还可以选择接收 STSN 命令。 因此,必须重新输入与初始SLI_OPEN颁发的用户提供的例程,因为它们将被召回。

    应用程序可以在 CLEAR 或 UNBIND 类型 BIND 即将到达以及读取NOT_READY状态之前发送 SSCP 数据。 读取NOT_READY后,应用程序可以发送和接收 SSCP 数据。

    当 SNA UNBIND 类型 BIND 即将到达之前,打开会话的SLI_OPEN完成时,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