RUI_INIT

RUI_INIT動詞會將指定邏輯單元 (LU) 的控制權傳送至 (®® LUA) 應用程式。 RUI_INIT 會在系統服務控制點 (SSCP) 和指定的 LU 之間建立會話。

注意

針對 3270 個模擬器使用者,已新增 Microsoft Host Integration Server 擴充功能,可讓您使用 3270 RU,而不是 LUA RU。 如需詳細資訊,請參閱本主題中的。

下列結構描述RUI_INIT所使用的動詞控制項區塊 (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_RUI要求單位介面 (RUI) 動詞。

lua_verb_length
提供的 參數。 指定 LUA VCB 的位元組長度。 它必須包含所發出動詞記錄的長度。

lua_prim_rc
在動詞完成時,LUA 所設定的主要傳回碼。 有效的傳回碼會隨著發出的 LUA 動詞而有所不同。

lua_sec_rc
在動詞完成時,LUA 所設定的次要傳回碼。 有效的傳回碼會隨著發出的 LUA 動詞而有所不同。

lua_opcode
提供的 參數。 包含 LUA 命令程式碼 (動詞作業程式碼) ,以便發出動詞LUA_OPCODE_RUI_INIT。

lua_correlator
提供的 參數。 包含使用者提供的值,可連結動詞與其他使用者提供的資訊。 LUA 不會使用或變更此資訊。 這是選擇性參數。

lua_luname
提供的 參數。 指定 Windows LUA 會話所使用的本機 LU 的 ASCII 名稱。

RUI_INIT 需要此參數。

此參數長度為八個位元組,如果名稱小於八個字元,則以空格填補右邊 (0x20) 。

lua_extension_list_offset
主機整合伺服器中 RUI 未使用,且應設定為零。

lua_cobol_offset
在主機整合伺服器中,LUA 不會使用 ,而且應該是零。

lua_sid
傳回的參數。 指定會話識別碼。

lua_max_length
RUI_INIT未 使用,且 應該設定為零。

lua_data_length
RUI_INIT未 使用,且 應該設定為零。

lua_data_ptr
RUI_INIT未 使用,且 應該設定為零。

lua_post_handle
提供的 參數。 如果事件要完成非同步通知,則用於 Microsoft® Windows Server。 此變數包含要發出訊號的事件控制碼或視窗控制碼。

lua_th
RUI_INIT未 使用,且 應該設定為零。

lua_rh
RUI_INIT未 使用,且 應該設定為零。

lua_flag1
RUI_INIT未 使用,且 應該設定為零。

lua_message_type
指定輸入和輸出 SNA 命令和資料的類型。 這是 RUI_INIT的傳回參數。 可能的值包括:

LUA_MESSAGE_TYPE_LU_DATA

LUA_MESSAGE_TYPE_SSCP_DATA

LUA_MESSAGE_TYPE_BID

LUA_MESSAGE_TYPE_BIND

LUA_MESSAGE_TYPE_BIS

LUA_MESSAGE_TYPE_CANCEL

LUA_MESSAGE_TYPE_CHASE

LUA_MESSAGE_TYPE_CLEAR

LUA_MESSAGE_TYPE_CRV

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_RQR

LUA_MESSAGE_TYPE_RTR

LUA_MESSAGE_TYPE_SBI

LUA_MESSAGE_TYPE_SHUTD

LUA_MESSAGE_TYPE_SIGNAL

LUA_MESSAGE_TYPE_SDT

LUA_MESSAGE_TYPE_STSN

LUA_MESSAGE_TYPE_UNBIND

工作階段層級介面 (SLI) 透過 LUA 介面延伸模組常式接收和回應 BIND、CRV 和 STSN 要求。

LU_DATA、LUSTAT_LU、LUSTAT_SSCP和SSCP_DATA不是 SNA 命令。

lua_flag2
傳回的參數。 包含 LUA 所傳回之訊息的旗標。

lua_flag2.async

指出如果設定為 1,LUA 介面動詞會以非同步方式完成。

除非LUA_PARAMETER_CHECK) 之類的錯誤,否則RUI_INIT一律會以非同步方式完成。

lua_resv56
提供的 參數。 RUI_INITSLI_OPEN所使用的保留字段。 陣列中所有其他保留字段都必須保留空白。 如需詳細資訊,請參閱一節中這些主機整合伺服器擴充功能的討論。

lua_resv56[1]

提供的參數。 指出 RUI 應用程式是否可以存取設定為 3270 RU 的 RU,以及 LUA RU。 如果此參數為非零值,則可以存取 3270 RU。

lua_resv56[2]

提供的參數。 指出當 LU-SSCP 會話或連線消失時,RUI 程式庫是否會釋放 LU。 如果此參數為非零,則不會釋放 LU。

lua_resv56[3]

提供的參數。 指出是否支援不完整的讀取。 如果此參數設定為非零值,則支援不完整或截斷的讀取。 如需詳細資訊,請參閱 RUI_READ的備註。

lua_resv56[4]

提供的參數。 指出如果應用程式在主機上回收,RUI 程式庫是否允許應用程式保留 LU。 如果此參數為非零,應用程式可以保留 LU。

lua_encr_decr_option
密碼編譯選項的欄位。 在 RUI_INIT上,僅支援下列專案:

lua_encr_decr_option = 0

lua_encr_decr_option = 128

不支援從 1 到 127 的值。

傳回碼

LUA_OK
主要傳回碼;已成功執行動詞。

LUA_CANCELED
主要傳回碼;動詞未順利完成,因為它已由另一個動詞取消。

LUA_TERMINATED

次要傳回碼; RUI_TERM 是在 RUI_INIT 完成之前發出。

LUA_PARAMETER_CHECK
主要傳回碼;動詞未執行,因為發生參數錯誤。

LUA_INVALID_LUNAME

次要傳回碼; lua_luname 參數與組態檔中的任何 LUA LU 名稱或 LU 集區名稱不符。

LUA_INVALID_POST_HANDLE

次要傳回碼;對於使用事件做為非同步張貼方法的 Windows 作業系統,Windows LUA VCB 不包含有效的事件控制碼。

LUA_RESERVED_FIELD_NOT_ZERO

次要傳回碼;動詞記錄中的保留字段或這個動詞未使用的參數設定為非零值。

LUA_VERB_LENGTH_INVALID

次要傳回碼;LUA 動詞發出時,LUA 的值 lua_verb_length非預期

LUA_STATE_CHECK
主要傳回碼;指令動詞未執行,因為發出狀態無效。

LUA_DUPLICATE_RUI_INIT

次要傳回碼; lua_luname 參數指定了此應用程式已使用的 LU 名稱或 LU 集區名稱 (,或此應用程式已在進行中 RUI_INIT) 。

LUA_UNSUCCESSFUL
主要傳回碼;提供的動詞記錄有效,但動詞未順利完成。

LUA_COMMAND_COUNT_ERROR

次要傳回碼,指出發生下列其中一個錯誤:

無法發出動詞,因為應用程式已達到其作用中會話的最大數目。 在 Windows 上,應用程式隨時可以有最多 15,000 個作用中的會話。

動詞命令指定了 LU 集區的名稱或集區中的 LU 名稱,但集區中的所有 LU 都在使用中。

LUA_ENCR_DECR_LOAD_ERROR

次要傳回碼;動詞指定 lua_encr_decr_option 0 或 128 以外的值。

LUA_INVALID_PROCESS

次要傳回碼; lua_luname 指定的 LU 正由另一個進程使用。

LUA_LINK_NOT_STARTED

次要傳回碼;尚未啟動與主機的連線;它可以使用的連結服務都無法使用。

LUA_COMM_SUBSYSTEM_ABENDED
主要傳回碼;表示下列其中一個條件:

  • 此交談所使用的節點遇到 ABEND。

  • 交易程式 (TP) 與實體單位 (PU) 2.1 節點之間的連線已中斷, (LAN 錯誤) 。

  • TP 電腦上的 SnaBase 遇到 ABEND。

    LUA_SESSION_FAILURE
    主要傳回碼;必要的主機整合伺服器元件已終止。

    LUA_LU_COMPONENT_DISCONNECTED

    次要傳回碼;表示 LUA 會話因為連結服務或主機 LU 發生問題而失敗。

    LUA_INVALID_VERB
    主要傳回碼;動詞程式碼或作業程式碼或兩者無效。 動詞未執行。

    LUA_STACK_TOO_SMALL
    主要傳回碼;應用程式的堆疊大小太小,無法執行動詞。 增加應用程式的堆疊大小。

    LUA_COMM_SUBSYSTEM_NOT_LOADED
    主要傳回碼;無法載入必要的元件,或已在處理動詞時終止。 因此,無法進行通訊。 請連絡系統管理員以取得更正動作。

    LUA_UNEXPECTED_DOS_ERROR
    主要傳回碼;發出作業系統呼叫之後,收到非預期的作業系統傳回碼,並在次要傳回碼中指定。

備註

這個動詞必須是針對會話發出的第一個 LUA 動詞。 在此動詞順利完成之前,唯一可以發出給此會話的其他 LUA 動詞 RUI_TERM (終止 擱置 RUI_INIT) 。

在此會話上發出的所有其他動詞命令,都必須使用此動詞命令的下列其中一個參數來識別會話:

  • 會話識別碼,傳回至 lua_sid中的應用程式。

  • 應用程式在 lua_luname 參數中提供的 LU 名稱或 LU 集區名稱。

    RUI_INIT 在接收來自主機的 ACTLU 訊息之後完成。 如有必要,動詞會無限期等候。 如果在 RUI_INIT之前已經收到 ACTLU,LUA 會將 NOTIFY 傳送給主機,告知其 LU 已準備好可供使用。

    LUA 應用程式看不到 ACTLU 或 NOTIFY。

    RUI_INIT成功完成之後,此會話會使用啟動會話的 LU。 從這個或任何其他應用程式 (沒有其他 LUA 會話) 可以使用 LU,直到發出 RUI_TERM ,或直到收到LUA_SESSION_FAILURE主要傳回碼為止。

使用 3270 RU

若要提供 3270 模擬器使用者能夠使用模擬器介面規格 (EIS) 設定呼叫與 RUI API,主機整合伺服器擴充功能已新增至 RUI。 此擴充功能可讓您使用 3270 RU,而不是 LUA LU。 如果應用程式在RUI_INIT呼叫上將 lua_resv56[1]設定為非零值,則可以使用 3270 RU。

不要釋放 LU

如果應用程式在RUI_INIT呼叫上將 lua_resv56[2]設定為非零值,RUI 程式庫就不會在 LU-SSCP 會話或連線消失時釋放 LU。 啟用此主機整合伺服器擴充功能時,應用程式不需要在會話失敗或連線失敗之後發出新的 RUI_INIT 。 當 LU-SSCP 會話備份 (應用程式可以使用 WinRUIGetLastInitStatus 來偵測此) ,應用程式就可以再次開始使用。

支援此會話上的區塊化

如果應用程式 將 lua_resv56[3] 設定為 RUI_INIT 會話建立上的非零值,這會啟用主機整合伺服器擴充功能,以變更 RUI_READ的行為。 RUI_READ呼叫的預設行為是截斷資料, (捨棄任何剩餘的資料) 如果應用程式的資料緩衝區不夠大,無法接收 RU 中的所有資料,則傳回錯誤碼。 當 lua_resv56[3] 設定為 RUI_INIT 呼叫上的非零值時,發出 RUI_READ ,其中應用程式的資料緩衝區不夠大,將不會捨棄 RU 資料。 RUI_READ動詞會針對主要傳回碼傳回成功 (LUA_OK) ,並針對次要傳回碼傳回LUA_DATA_INCOMPLETE。 接著可以發出後續 RUI_READ 要求,以擷取超過應用程式資料緩衝區的資料。

忽略 DACTLU

如果應用程式將 lua_resv56[4] 設定為 RUI_INIT 會話建立上的非零值,這會啟用主機整合伺服器擴充功能,而 RUI 程式庫會允許應用程式在主機 (回收,且停用並重新啟用) 。

注意

所有其他保留字段都必須保留空白。

如需詳細資訊,請參閱 3270 模擬器介面規格的軟體發展工具組 (SDK) 說明一節中的 sepdcrec 函式描述。

加密

工作階段層級加密是透過密碼編譯驗證來實作, (CRV) 要求。 RUI 應用程式必須執行這些要求的所有必要處理。 針對 RUI 以外的所有介面,主機整合伺服器會拒絕 CRV 要求,並出現負面回應。

針對 RUI_INIT,支援下列選項:

  • lua_encr_decr_option = 0

  • lua_encr_decr_option = 128

    不支援從 1 到 127 的值 (ACSRENCR 和 ACSROECR 常式) 。

    傳送應用程式負責將資料填補為八個位元組的倍數,以及設定 RH 中填補的資料指標位,以及加密。 接收應用程式負責在解密之後移除填補。

另請參閱

RUI_TERM
SLI_OPEN