RUI_WRITE動詞動詞會透過 LU 工作階段或系統服務控制點 (SSCP) 工作階段,將邏輯單元應用程式 (LUA) 應用程式的 SNA 要求或回應單位傳送至主機,並將回應、SNA 命令和數據從Microsoft® Windows® LUA 應用程式傳送至主機 LU。
下列結構描述RUI_WRITE所使用的動詞控制區塊 (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_WRITE。
lua_correlator
提供的參數。 包含使用者提供的值,這個值會鏈接動詞與其他使用者提供的資訊。 LUA 不會使用或變更這項資訊。 這是選擇性參數。
lua_luname
提供的參數。 指定 Windows LUA 工作階段所使用的本機 LU 的 ASCII 名稱。
RUI_WRITE 只有在 lua_sid 為零時,才需要此參數。
如果名稱短於八個字元,則此參數長度為8個字節,以空格(0x20)填補右邊。
lua_extension_list_offset
Microsoft主機整合伺服器中 ® RUI 未使用,且應設定為零。
lua_cobol_offset
在主機整合伺服器中,LUA 不會使用 ,而且應該是零。
lua_sid
提供和傳回的參數。 指定會話標識碼,並由 SLI_OPEN 和 RUI_INIT傳回。 其他動詞會使用此參數來識別用於命令的會話。 如果其他動詞使用 lua_luname 參數來識別會話,請將 lua_sid 參數設定為零。
lua_max_length
RUI_WRITE未 使用,且 應設定為零。
lua_data_length
傳回的參數。 指定RUI_BID動詞命令lua_peek_data中傳回的數據長度。
lua_data_ptr
指向緩衝區,其中包含要透過 RUI_WRITE傳送至主機的數據。
SNA 命令和數據都放在這個緩衝區中,而且它們可以是 EBCDIC 格式。
lua_post_handle
提供的參數。 如果異步通知是由事件完成,則用於 Microsoft Windows。 此變數包含要發出訊號的事件句柄或視窗句柄。
lua_th
傳回的參數。 包含已傳送或接收之訊息的 SNA 傳輸標頭(TH)。 針對寫入函式設定各種子參數,並針對讀取和投標函式傳回。 其子參數如下所示:
lua_th.flags_fid
格式識別類型 2,四個位。
lua_th.flags_mpf
區隔對應欄位,兩個位。 定義數據區段的類型。 下列是有效值:
0x00 中間區段0x04 最後一個區段0x08 僅限第一個區段0x0C 區段
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)。 針對 RUI_WRITE 的 RH,除了佇列回應指標 (lua_rh.qri) 和步調指示器 (lua_rh.pi) 以外的所有字段都會使用。 其子參數如下所示:
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
提供的參數。 包含包含應用程式所提供訊息旗標的資料結構。 其子參數如下所示:
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 一般流程,一位。
將下列其中一個旗標設定為 1,以指出要傳送數據的訊息流程:
lua_flag1.sscp_exp
lua_flag1.sscp_norm
lua_flag1.lu_exp
lua_flag1.lu_norm
lua_message_type
RUI_WRITE未 使用,且 應設定為零。
lua_flag2
傳回的參數。 包含 LUA 所傳回之訊息的旗標。 其子參數如下所示:
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
保留且應設定為零。
lua_encr_decr_option
保留且應設定為零。
回傳代碼
LUA_OK
主要傳回碼;已順利執行動詞。
LUA_CANCELED
主要傳回碼;動詞未順利完成,因為已由另一個動詞命令取消。
LUA_TERMINATED
次要傳回碼;因為已針對此會話發出 RUI_TERM ,因此已取消動詞。
LUA_PARAMETER_CHECK
主要傳回碼;因為參數錯誤而未執行動詞。
LUA_BAD_DATA_PTR
次要傳回碼; lua_data_ptr 參數包含無效的值。
LUA_BAD_SESSION_ID
次要傳回碼;在 VCB 中指定 了 無效lua_sid值。
LUA_DUPLICATE_WRITE_FLOW
次要傳回碼; RUI_WRITE 對於這個動詞中指定的會話流程而言已經未完成(會話流程是藉由將其中一個 lua_flag1 流程旗標設定為1來指定)。 每個會話流程一次只能有一個 RUI_WRITE 。
LUA_INVALID_FLOW
次要傳回碼; 已設定 lua_flag1.sscp_exp 流程旗標,表示訊息應該在 SSCP 加速流程上傳送。 LUA 不允許應用程式在此流程上傳送數據。
LUA_INVALID_POST_HANDLE
次要傳回碼;對於使用事件做為異步張貼方法的 Windows作系統,Windows LUA VCB 不包含有效的事件句柄。
LUA_MULTIPLE_WRITE_FLOWS
次要傳回碼;已將多個 lua_flag1 流程旗標設定為 1。 其中一個和其中一個旗標必須設定為 1,以指出要傳送數據的會話流程。
LUA_REQUIRED_FIELD_MISSING
次要傳回碼;表示下列其中一個案例:
未設定 任何lua_flag1 流程旗標。 其中一個和其中一個旗標必須設定為 1。
RUI_WRITE 用來傳送回應,而回應所需的數據比提供的數據還多。
LUA_RESERVED_FIELD_NOT_ZERO
次要傳回碼;動詞記錄中的保留欄位或這個動詞未使用的參數已設定為非零值。
LUA_VERB_LENGTH_INVALID
次要傳回碼;LUA 動詞是由 LUA 非預期的 lua_verb_length 值所發出。
LUA_STATE_CHECK
主要傳回碼;指令動詞未執行,因為發出狀態無效。LUA_MODE_INCONSISTENCY
次要傳回碼;RUI_WRITE 上傳送 的 SNA 訊息目前無效。 這是在會話系結之前嘗試在 LU 工作階段上傳送數據所造成。 檢查所傳送 SNA 訊息的順序。
LUA_NO_RUI_SESSION
次要傳回碼; RUI_INIT 尚未順利完成此動詞中指定的 LU 名稱。
LUA_UNSUCCESSFUL
主要傳回碼;提供的動詞記錄有效,但動詞未順利完成。LUA_FUNCTION_NOT_SUPPORTED
次要傳回碼;表示下列其中一個案例:
lua_rh.fi 位 (格式指標) 設定為 1,但提供 RU 的第一個字節不是可辨識的要求碼。
lua_rh.ruc 參數 (RU 類別) 指定網路控制 (NC) 類別:LUA 不允許應用程式在此類別中傳送要求。
LUA_INVALID_PROCESS
次要傳回碼;發出此動詞的 OS/2 程式與發出此工作階段 RUI_INIT 的程式不同。 只有啟動工作階段的程式可以發出該工作階段的動詞命令。
LUA_INVALID_SESSION_PARAMETERS
次要傳回碼;應用程式使用 RUI_WRITE 將正回應傳送至從主機接收的BIND訊息。 不過,主機整合伺服器無法接受指定的BIND參數,並且已將負回應傳送給主機。 如需主機整合伺服器所接受之 BIND 配置檔的詳細資訊,請參閱 使用 LUA 的 SNA 考慮。
LUA_RSP_CORRELATION_ERROR
次要傳回碼;使用 RUI_WRITE 傳送回應時, lua_th.snf (表示所接收訊息回應的序號)未包含有效的值。
LUA_RU_LENGTH_ERROR
次要傳回碼; lua_data_length 參數包含無效的值。 在 LU 一般流程上傳送數據時,最大長度會如從主機接收的 BIND 中所指定;對於所有其他流程,最大長度為 256 個字節。
備註
任何其他次要傳回碼都是 SNA 感知碼,指出提供的 SNA 數據無效或無法傳送。 如需解譯可傳回之 SNA 感知碼的相關信息,請參閱 使用 LUA 的 SNA 考慮。
LUA_COMM_SUBSYSTEM_ABENDED
主要傳回碼;表示下列其中一個條件:
此交談所使用的節點遇到 ABEND。
交易程式 (TP) 與實體單位 (PU) 2.1 節點之間的連線已中斷(LAN 錯誤)。
TP 電腦上的 SnaBase 遇到 ABEND。
LUA_SESSION_FAILURE
主要傳回碼;必要的主機整合伺服器元件已終止。LUA_LU_COMPONENT_DISCONNECTED
次要傳回碼;表示 LUA 工作階段因為連結服務或主機 LU 發生問題而失敗。
LUA_RUI_LOGIC_ERROR
次要傳回碼;在 LUA 內偵測到內部錯誤。 在正常作業期間不應該發生此錯誤。
LUA_INVALID_VERB
主要傳回碼;動詞程式代碼或作業程序代碼或兩者都無效。 動詞未執行。LUA_STACK_TOO_SMALL
主要傳回碼;應用程式的堆疊大小太小,無法執行動詞。 增加應用程式的堆疊大小。LUA_COMM_SUBSYSTEM_NOT_LOADED
主要傳回碼;無法載入必要的元件,或處理動詞時已終止。 因此,無法進行通訊。 請連絡系統管理員以採取更正動作。LUA_UNEXPECTED_DOS_ERROR
主要傳回碼;發出作系統呼叫之後,收到非預期的作系統傳回碼,並在次要傳回碼中指定。
備註
在發出這個 動詞之前,必須先成功發出RUI_INIT。
傳送 SNA 要求時,必須設定 lua_rh 中的所有適用值。 鏈結和括弧是應用程式的責任。
傳送回應時,回應類型會決定所需的 RUI_WRITE 資訊。 針對所有回應,您必須:
將選取 的 lua_rh.rri 旗標設定為 1。
針對您回應的要求,提供 lua_th.snf 中的序號。
針對多鏈結訊息回應,必須使用最後一個接收鏈結元素的序號。 若要回應結尾為 CANCEL 命令的多鏈訊息,則會使用 CANCEL 命令序號。
若為只需要要求代碼的正面回應,請將 lua_rh.ri 設定為零(表示回應為正數),並將 lua_data_length 設為零(表示未提供任何數據)。 要求碼會使用提供的序號,由 RUI 填入。
若為負回應,請將 lua_rh.ri 設定為 1、 lua_data_ptr 為 SNA 感知碼位址,並將 lua_data_length 設為 SNA 感知碼長度 (四個字節)。 RUI 會使用序號來填入要求碼。
如需要求回應中數據的BIND和 STSN 命令的正面回應,請將 lua_data_ptr 設定為指向回應,並將 lua_data_length 設定為 lua_data_ptr中提供的數據長度。
當現有的 RUI_WRITE擱置 中時,只有當它指定與擱置 RUI_WRITE 不同的會話流程時,您才能發出第二個 RUI_WRITE。 同一個會話流程不能有多個 RUI_WRITE 未完成。
RUI_WRITE 可以在成功 RUI_INIT之後,隨時在 SSCP 正常流程上發出。 只有在 收到 BIND 之後,才會允許 LU 加速或 LU 一般流程上的RUI_WRITE動詞,且必須遵守 BIND 上指定的通訊協定。
成功完成RUI_WRITE表示訊息已順利排入數據連結。 它不一定表示訊息已成功傳送,或主機已接受訊息。
步調可用於次要對主要半會話(在 BIND 上指定),以防止 LUA 應用程式傳送比本機或遠端 LU 可以處理的更多數據。 如果是這種情況,LUA 可能會延遲 LUA 上的 RUI_WRITE ,而且可能需要一些時間才能完成。
另請參閱
RUI_INIT
RUI_READ
RUI_TERM
SLI_OPEN
SLI_PURGE
SLI_RECEIVE
SLI_SEND