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個字節,以空格(0x20)填補右邊。
lua_extension_list_offset
提供的參數。 指定 VCB 開頭到使用者提供的動態連結庫延伸模組清單 (DLL) 的位移。 除非沒有延伸模組清單,否則此值必須是字邊界的開頭。 在此情況下,值必須設定為零。
如果SLI_OPEN未使用這個選項,這個成員應該設定為零。
lua_cobol_offset
MICROSOFT主機整合伺服器中 ® 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
指出如果設定為 1,LUA 介面動詞動詞會以異步方式完成。
lua_resv56
提供的參數。 SLI_OPEN和RUI_INIT所使用的保留欄位。 如需詳細資訊,請參閱備註一節。lua_resv56[1]
提供的參數。 此參數必須設定為零。
lua_resv56[2]
提供的參數。 指出除了 LUA RU 之外,SLI 應用程式是否可以存取設定為 3270 RU 的 RU。 如果此參數設定為 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
提供的參數。 包含應用程式提供的擴充 DLL 清單,以處理 BIND、STSN 和 CRV 命令。
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
提供的參數。 為使用者提供的擴充 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 動詞命令時,在Microsoft主機整合伺服器或 SNA 伺服器內未使用 LUA。
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) 會在會話使用中時,將 SNA UNBIND 命令傳送至 LUA 介面。 因此,會話已停止。
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
次要傳回碼;數據連結控制元件的元件的元件發生錯誤,或組態檔損毀。
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 嘗試停止工作階段時發生嚴重錯誤。 此 LU 無法供任何 LUA 要求使用,直到從主機收到啟動邏輯單元 (ACTLU) 為止。
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 名稱,並視需要填補尾端空格。
SLI_OPEN在 lua_prim_rc 參數中張貼LUA_OK時,SLI_OPEN成功完成,並已建立 LU-LU 數據流會話。 應用程式現在可以發出 SLI_BID、 SLI_CLOSE、 SLI_PURGE、 SLI_RECEIVE和 SLI_SEND。
當SLI_OPEN張貼LUA_OK或LUA_IN_PROGRESS以外的主要傳回碼時,命令無法成功建立會話。
使用SLI_OPEN時,Windows LUA 應用程式必須提供會話初始化類型。 有效類型包括: