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 名稱。
SLI_RECEIVE只有在lua_sid為零時,才需要此參數。
如果名稱短於八個字元,則此參數長度為8個字節,以空格(0x20)填補右邊。
lua_extension_list_offset
SLI_RECEIVE未 使用,且 應設定為零。
lua_cobol_offset
MICROSOFT主機整合伺服器或 SNA 伺服器中®未使用 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,四個位。
lua_th.flags_mpf
區隔對應欄位,兩個位。 定義數據區段的類型。 下列是有效值:
0x0中間區段0x04最後一個區0x0C段0x08僅限第一個區段
lua_th.flags_odai
原始位址欄位 -目的地位址字段 (OAF–DAF) 指派器指標,一個位。
lua_th.flags_efi
加速流程指示器,一位。
lua_th.daf
目的地位址欄位 (DAF),不帶正負號的字元。
lua_th.oaf
原始位址欄位 (OAF),不帶正負號的字元。
lua_th.snf
序號欄位,不帶正負號的 char[2]。
lua_rh
傳回的參數。 包含已傳送或接收之訊息的 SNA 要求 /回應標頭 (RH)。 其子參數如下所示:
lua_rh.rri
要求響應指標,一個位。
lua_rh.ruc
要求/回應單位 (RU) 類別,兩個位。 下列是有效值:
LUA_RH_FMD (0x00) FM 數據區段LUA_RH_NC (0x20) 網路控制LUA_RH_DFC (0x40) 數據流控制LUA_RH_SC (0x60) 工作階段控制
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
步調指標,一個位。
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
指出如果設定為 1,LUA 介面動詞動詞會以異步方式完成。
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
次要傳回碼;發行lua_flag1.bid_enable 設定為 1 的SLI_RECEIVE之前,會釋放具有 SLI_BID VCB 的緩衝區。
LUA_NO_PREVIOUS_BID_ENABLED
次要傳回碼;SLI_BID未在發行 SLI_RECEIVE lua_flag1.bid_enable 之前發出。
LUA_BID_ALREADY_ENABLED
次要傳回碼;SLI_RECEIVE已在使用中SLI_BID時,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
次要傳回碼;數據流控制 (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 RESPONSE。 要求標頭參數值違反了先前選擇的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 或 SLI_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 動詞命令時,在Microsoft主機整合伺服器或 SNA 伺服器內未使用 LUA。
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 嘗試停止會話時發生嚴重錯誤。 此 LU 無法供任何 LUA 要求使用,直到從主機收到啟動邏輯單元 (ACTLU) 為止。
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_RECEIVE或SLI_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_OPEN 要求,才能發出 SLI_RECEIVE 。 不過,如果SLI_OPEN發出設定為 LUA_INIT_TYPE_PRIM_SSCP 的lua_init_type,則只要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 命令(即將推出的 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 數據。
當 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 | 位開啟 (包括感知資料) |
在 lua_peek_data 中的七個字節數據中,位元組 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