RUI_WRITE

RUI_WRITE動詞會透過 LU 會話或系統服務控制點,將 SNA 要求或回應單位從邏輯單元應用程式 (LUA) 應用程式傳送至主機, (SSCP) 會話,並將回應、SNA 命令和資料從 Microsoft® Windows ® LUA 應用程式傳送至主機 LU。

下列結構描述RUI_WRITE所使用的動詞控制區塊LUA_COMMON成員 (VCB ) 。

語法

  
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® Host Integration Server 中 RUI 未使用,且應設定為零。

lua_cobol_offset
LUA 在 Host Integration Server 中使用,而且應該是零。

lua_sid
提供和傳回的參數。 指定會話識別碼,並由 SLI_OPENRUI_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
傳回的參數。 包含傳送或接收之訊息的 TH 傳輸標頭 (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,會使用 queued-response indicator (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

Bid enable indicator, one bit.

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 訊息。 不過,Host Integration Server無法接受指定之 BIND 參數,並且已將負回應傳送給主機。 如需Host Integration Server所接受之 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
    主要傳回碼;必要的Host Integration Server元件已終止。

    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 可能會延遲 LU 正常流程上的 RUI_WRITE ,而且可能需要一些時間才能完成。

另請參閱

RUI_INIT
RUI_READ
RUI_TERM
SLI_OPEN
SLI_PURGE
SLI_RECEIVE
SLI_SEND