RUI_READ

RUI_READ動詞は、応答、SNA コマンド、およびデータを Microsoft® Windows® 論理ユニット アプリケーション (LUA) アプリケーション バッファーに受信します。

次の構造体は、 RUI_READ によって使用される動詞制御ブロック (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
指定されたパラメーター。 要求ユニット インターフェイス (RUI) 動詞のLUA_VERB_RUI動詞コードが含まれています。

lua_verb_length
指定されたパラメーター。 LUA VCB の長さをバイト単位で指定します。 発行される動詞レコードの長さを含む必要があります。

lua_prim_rc
動詞の完了時に LUA によって設定された主なリターン コード。 有効な戻りコードは、発行される LUA 動詞によって異なります。

lua_sec_rc
動詞の完了時に LUA によって設定されたセカンダリ リターン コード。 有効な戻りコードは、発行される LUA 動詞によって異なります。

lua_opcode
指定されたパラメーター。 発行される動詞の LUA コマンド コード (動詞操作コード) が含LUA_OPCODE_RUI_READ。

lua_correlator
指定されたパラメーター。 動詞を他のユーザー指定の情報とリンクする、ユーザー指定の値が含まれます。 LUA では、この情報は使用または変更されません。 このパラメーターは省略可能です。

lua_luname
指定されたパラメーター。 Windows LUA セッションで使用されるローカル LU の ASCII 名を指定します。

RUI_READ は、 lua_sid が 0 の場合にのみこのパラメーターを必要とします。

このパラメーターの長さは 8 バイトで、名前が 8 文字より短い場合は、右側にスペース (0x20) が埋め込まれます。

lua_extension_list_offset
ホスト統合サーバーの RUI では使用されず、0 に設定する必要があります。

lua_cobol_offset
Microsoft® Host Integration Server の LUA では使用されず、ゼロにする必要があります。

lua_sid
指定され、返されるパラメーター。 セッション識別子を指定し、 SLI_OPEN および RUI_INITによって返されます。 他の動詞では、このパラメーターを使用して、 コマンドに使用されるセッションを識別します。 他の動詞で lua_luname パラメーターを使用してセッションを識別する場合は、 lua_sid パラメーターを 0 に設定します。

lua_max_length
RUI_READSLI_RECEIVEの受信バッファーの長さを指定します。 他の RUI および SLI 動詞では使用されず、ゼロに設定する必要があります。

lua_data_length
返されたパラメーター。 RUI_BID動詞のlua_peek_dataで返されるデータの長さを指定します。

lua_data_ptr
RUI_READ動詞からデータを受け取る、アプリケーション提供のバッファーへのポインター。 SNA コマンドとデータの両方がこのバッファーに配置され、EBCDIC 形式にすることができます。

RUI_READが発行されると、このパラメーターはホストからデータを受信する場所を指します。

lua_post_handle
指定されたパラメーター。 イベントによって非同期通知を実行する場合は、Microsoft Windows Server で使用されます。 この変数には、シグナル処理されるイベントまたはウィンドウ ハンドルのハンドルが含まれます。

lua_th
返されたパラメーター。 送受信されるメッセージの SNA 伝送ヘッダー (TH) が含まれます。 書き込み関数にはさまざまなサブパラメーターが設定され、読み取り関数と入札関数に対して返されます。 そのサブパラメーターは次のとおりです。

lua_th.flags_fid

形式識別タイプ 2、4 ビット。

lua_th.flags_mpf

セグメントマッピングフィールド、2ビット。 データ セグメントの種類を定義します。 有効な値は、次のとおりです。

0x00 中間セグメント0x04最後の セグメント0x08最初の セグメント0x0C セグメントのみ

lua_th.flags_odai

発信元アドレス・フィールド・宛先アドレス・フィールド (OAF–DAF) アロケーター標識 (1 ビット)。

lua_th.flags_efi

迅速なフロー インジケーター、1 ビット。

lua_th.daf

宛先アドレス フィールド (DAF)、符号なし文字。

lua_th.oaf

発信元アドレス フィールド (OAF)、符号なし文字。

lua_th.snf

シーケンス番号フィールド。符号なし char[2]。

lua_rh
返されたパラメーター。 送受信されるメッセージの SNA 要求/応答ヘッダー (RH) が含まれます。 書き込み関数用に設定され、読み取り関数と入札関数によって返されます。 そのサブパラメーターは次のとおりです。

lua_rh.rri

要求応答インジケーター、1 ビット。

lua_rh.ruc

RU カテゴリ、2 ビット。 有効な値は、次のとおりです。

LUA_RH_FMD (0x00) FM データ セグメントLUA_RH_NC (0x20) ネットワーク制御LUA_RH_DFC (0x40) データ フロー制御LUA_RH_SC (0x60) セッション制御

lua_rh.fi

書式インジケーター、1 ビット。

lua_rh.sdi

センサー データに含まれるインジケーター、1 ビット。

lua_rh.bci

開始チェーン インジケーター(1 ビット)。

lua_rh.eci

エンド チェーン インジケーター、1 ビット。

lua_rh.dr1i

確定応答 1 インジケーター、1 ビット。

lua_rh.dr2i

確定応答 2 インジケーター、1 ビット。

lua_rh.ri

例外応答インジケーター (要求の場合)、または応答の種類インジケーター (応答の場合)、1 ビット。

lua_rh.qri

キューに登録された応答インジケーター(1 ビット)。

lua_rh.pi

ペースインジケーター、1 ビット。

lua_rh.bbi

角かっこインジケーター (1 ビット) を開始します。

lua_rh.ebi

終了角かっこインジケーター(1 ビット)。

lua_rh.cdi

方向インジケーター (1 ビット) を変更します。

lua_rh.csi

コード選択インジケーター、1 ビット。

lua_rh.edi

暗号化されたデータ インジケーター(1 ビット)。

lua_rh.pdi

埋め込みデータ インジケーター(1 ビット)。

lua_flag1
指定されたパラメーター。 アプリケーションによって提供されるメッセージのフラグを含むデータ構造を格納します。 そのサブパラメーターは次のとおりです。

lua_flag1.bid_enable

入札単価有効化インジケーター(1 ビット)。

lua_flag1.close_abend

即時インジケーター (1 ビット) を閉じます。

lua_flag1.nowait

データ フラグ (1 ビット) を待機しません。

lua_flag1.sscp_exp

SSCP 優先フロー、1 ビット。

lua_flag1.sscp_norm

SSCP 標準フロー、1 ビット。

lua_flag1.lu_exp

LU 優先フロー、1 ビット。

lua_flag1.lu_norm

LU 標準フロー、1 ビット。

lua_flag1.nowait を 1 に設定すると、データを読み取ることができるかどうかをすぐに返すRUI_READを指定するか、動詞がデータを待機してから返す場合は 0 に設定します。

lua_flag1.bid_enable を 1 に設定して、最新のRUI_BIDを再度有効にするか (以前とまったく同じパラメーターでRUI_BIDを再度発行するのと同じ)、RUI_BIDを再度有効にしない場合は 0 に設定します。

前の RUI_BID を再度有効にすると、最初に割り当てられた VCB が再利用されるため、この VCB は解放または変更されていない必要があります。

次のフラグの 1 つ以上を 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 コマンドおよびデータのタイプを指定します。 返されたパラメーター。 RUI_READに示す SNA メッセージの種類を指定します。 次のいずれかの値になります。

LUA_MESSAGE_TYPE_LU_DATA

LUA_MESSAGE_TYPE_SSCP_DATA

LUA_MESSAGE_TYPE_RQR

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_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

LU_DATA、LUSTAT_LU、LUSTAT_SSCP、およびSSCP_DATAは SNA コマンドではありません。

lua_flag2
返されたパラメーター。 LUA によって返されるメッセージのフラグが含まれます。 そのサブパラメーターは次のとおりです。

lua_flag2.bid_enable

RUI_BIDが 1 に設定されている場合に正常に再有効化されたことを示します。

lua_flag2.async

LUA インターフェイス動詞が 1 に設定されている場合に非同期的に完了したことを示します。

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
予約済み で、0 に設定する必要があります。

lua_encr_decr_option
予約済み で、0 に設定する必要があります。

リターン コード

LUA_OK
プライマリ リターン コード。動詞は正常に実行されました。

LUA_DATA_INCOMPLETE

セカンダリ リターン コード。 RUI_READ は、アプリケーションのデータ バッファー ( lua_max_length で示される) が十分な大きさでなかったため、受信したすべてのデータを返すことができませんでした。 後続 のRUI_READ 要求を発行して、残りの RUI データを取得できます。

これはRUI_READの既定の動作ではなく、セッションの確立中に RUI_INIT を呼び出すときに、動詞制御ブロックで lua_resv56[3] が 0 以外の値に設定されている場合にのみ有効になります。 詳しくは、「注釈」をご覧ください。

LUA_CANCELED
主なリターン コード。動詞は別の動詞または内部エラーによって取り消されたため、正常に完了しませんでした。

LUA_PURGED

セカンダリ リターン コード。 RUI_READRUI_PURGEによって取り消されました。

LUA_TERMINATED

セカンダリ リターン コード。 RUI_READ が保留中の間 にRUI_TERM が発行されました。

LUA_PARAMETER_CHECK
プライマリ リターン コード。パラメーター エラーのため、動詞は実行されませんでした。

LUA_BAD_DATA_PTR

セカンダリ リターン コード。 lua_data_ptr パラメーターに無効な値が含まれていました。

LUA_BAD_SESSION_ID

セカンダリ リターン コード。VCB でlua_sid の無効な値が指定されました。

LUA_BID_ALREADY_ENABLED

セカンダリ リターン コード。 lua_flag1.bid_enable、RUI_BID を再度有効にするように設定されましたが、以前の RUI_BID はまだ進行中でした。

LUA_DUPLICATE_READ_FLOW

セカンダリ リターン コード。 lua_flag1 グループ内のフロー フラグは、RUI_READが既に 未処理であった 1 つ以上のセッション フローを指定しました。 各セッション フローで待機できる RUI_READ は一度に 1 つだけです。

LUA_INVALID_FLOW

セカンダリ リターン コード。 lua_flag1 フロー フラグは設定されませんでした。 読み取るフローを示すには、これらのフラグの少なくとも 1 つを 1 に設定する必要があります。

LUA_INVALID_POST_HANDLE

セカンダリ リターン コード。非同期投稿方法としてイベントを使用する Windows オペレーティング システムの場合、Windows LUA VCB には有効なイベント ハンドルが含まれていません。

LUA_NO_PREVIOUS_BID_ENABLED

セカンダリ リターン コード。 lua_flag1.bid_enable、RUI_BIDを再度有効にするように設定されていましたが、有効にできる以前 のRUI_BID はありませんでした。 (詳細については、「解説」を参照してください。)

LUA_RESERVED_FIELD_NOT_ZERO

セカンダリ リターン コード。動詞レコードの予約フィールド、またはこの動詞で使用されていないパラメーターが 0 以外の値に設定されました。

LUA_VERB_LENGTH_INVALID

セカンダリ リターン コード。LUA 動詞が LUA によって予期しない値 lua_verb_length 発行されました。

LUA_STATE_CHECK
プライマリ リターン コード。動詞は無効な状態で発行されたため、実行されませんでした。

LUA_NO_RUI_SESSION

セカンダリ リターン コード。 RUI_INIT で指定された LU 名に対してまだ 正常に完了RUI_READ。

LUA_NEGATIVE_RSP
主なリターン コード。は、次の 2 つのケースのいずれかを示します。これは、セカンダリ リターン コードで区別できます。

  • LUA は、ホストから受信したデータでエラーを検出しました。 受信したメッセージを RUI_READのアプリケーションに渡す代わりに、LUA はメッセージを破棄し (チェーン内にある場合はチェーンの残りの部分)、ホストに否定応答を送信します。 LUA は、後続の RUI_READ でアプリケーションに通知するか、否定的な応答が送信されたことを RUI_BID します。

  • LUA アプリケーションは以前、チェーンの途中のメッセージに否定的な応答を送信しました。 LUA は、このチェーン内の後続のメッセージを消去し、チェーンからのすべてのメッセージが受信および消去されたことをアプリケーションに報告しています。

    LUA_SEC_RC

    セカンダリ リターン コード。このパラメーターは、否定応答でホストに送信されたセンス コードを含む 0 以外のセカンダリリターン コードです。 これは、LUA がホスト データのエラーを検出し、ホストに否定的な応答を送信したことを示します。 返される可能性があるセンス コード値の解釈については、「 SNA での LUA の使用に関する考慮事項」を参照してください。

    0 の 2 次戻りコードは、チェーンの途中でメッセージに対する否定応答の前の RUI_WRITE に続いて、LUA がこのチェーンからすべてのメッセージを受信して破棄したことを示します。

    LUA_UNSUCCESSFUL
    主なリターン コード。指定された動詞レコードは有効でしたが、動詞が正常に完了しませんでした。

    LUA_DATA_TRUNCATED

    セカンダリ リターン コード。 lua_data_length パラメーターは、メッセージで受信したデータの実際の長さよりも小さかった。 lua_data_lengthバイトのデータのみが動詞に返されました。残りのデータは破棄されました。 このセカンダリ リターン コードが取得された場合は、追加のパラメーターも返されます。

    LUA_NO_DATA

    セカンダリ リターン コード。 lua_flag1.nowait は、データを待たずに即時戻りを示すように設定されており、指定されたセッション フローまたはフローで現在使用できるデータがありませんでした。

    LUA_INVALID_PROCESS

    セカンダリ リターン コード。この動詞を発行した OS/2 プロセスは、このセッション に対してRUI_INIT を発行したプロセスと同じではありません。 セッションを開始したプロセスのみが、そのセッションで動詞を発行できます。

    LUA_COMM_SUBSYSTEM_ABENDED
    プライマリ リターン コード。次のいずれかの条件を示します。

  • このメッセージ交換で使用されているノードで、ABEND が発生しました。

  • トランザクション プログラム (TP) と物理ユニット (PU) 2.1 ノード間の接続が切断されました (LAN エラー)。

  • TP コンピューターの SnaBase で、異常終了が発生しました。

    LUA_SESSION_FAILURE
    主なリターン コード。必要な Host Integration Server コンポーネントが終了しました。

    LUA_LU_COMPONENT_DISCONNECTED

    セカンダリ リターン コード。は、リンク サービスまたはホスト LU に問題があるため、LUA セッションが失敗したことを示します。

    LUA_RUI_LOGIC_ERROR

    セカンダリ リターン コード。LUA 内で内部エラーが検出されました。 このエラーは、通常の操作中には発生しません。

    LUA_INVALID_VERB
    主なリターン コード。動詞コードまたは操作コード、またはその両方が無効です。 動詞が実行されませんでした。

    LUA_STACK_TOO_SMALL
    プライマリ リターン コード。アプリケーションのスタック サイズが小さすぎて動詞を実行できません。 アプリケーションのスタック サイズを増やしてください。

    LUA_COMM_SUBSYSTEM_NOT_LOADED
    主なリターン コード。必要なコンポーネントを読み込めなかったか、動詞の処理中に終了しました。 そのため、通信を行うことができませんでした。 是正措置については、システム管理者に問い合わせてください。

    LUA_UNEXPECTED_DOS_ERROR
    主なリターン コード。オペレーティング システム呼び出しを発行した後、予期しないオペレーティング システムのリターン コードが受信され、セカンダリ リターン コードで指定されます。

注釈

RUI_READ が発行される前に、 RUI_INIT が正常に完了している必要があります。

既存の RUI_READ が保留中の間は、別のセッション フローまたは保留中 のRUI_READ 動詞からのフローを指定している場合にのみ 、別のRUI_READを 発行できます。 同じセッション フローに対 して複数のRUI_READ を未処理にすることはできません。

データの読み取り元となる特定のメッセージ・フロー (LU 標準、LU 優先、SSCP 標準、または SSCP 優先) を指定することも、複数のメッセージ・フローを指定することもできます。 2 つの動詞で同じフローが指定されていない場合は、複数の RUI_READ 動詞を未処理にすることができます。

データは、4 つのセッション フローのいずれかでアプリケーションによって受信されます。 優先度が最も高いものから最も低いものまでの 4 つのセッション フローは次のとおりです。

  • SSCP の高速化

  • LU の優先

  • SSCP 標準

  • LU 標準

    RUI_READ処理するデータ フローの種類は、lua_flag1 パラメーターで指定します。 アプリケーションでは、複数の種類のデータ フローを調べるかどうかを指定することもできます。 複数のフロー ビットが設定されている場合、最も高い優先度が最初に受信されます。 RUI_READ処理が完了すると、lua_flag2は、Windows LUA アプリケーションによってデータが受信された特定の種類のフローを示します。

    RUI_READが発行される前にRUI_BIDが正常に完了した場合は、Windows LUA インターフェイスに最後のRUI_BID動詞 VCB を再利用するように指示できます。 これを行うには、lua_flag1.bid_enable セットでRUI_READを発行します。

    lua_flag1.bid_enable パラメーターは、次の条件に該当する場合にのみ使用できます。

  • RUI_BID は既に正常に発行されており、完了しています。

  • RUI_BIDに割り当てられたストレージが解放または変更されていません。

  • 他の RUI_BID は保留中です。

    lua_flag1.bid_enable を使用する場合、最後のRUI_BID動詞 VCB が使用されるため、RUI_BIDストレージを解放しないでください。 また、 lua_flag1.bid_enable を使用すると、 RUI_BID の正常な完了が投稿されます。

    lua_flag1.nowait でRUI_READが発行され、受信できるデータがない場合、LUA_NO_DATAは Windows LUA インターフェイスによって設定されたセカンダリ リターン コードになります。

    受信したデータが lua_max_lengthよりも長い場合は、切り捨てられます。 lua_max_length バイトのデータのみが返されます。 プライマリリターンコードLUA_UNSUCCESSFULとセカンダリリターンコードLUA_DATA_TRUNCATEDも返されます。 RUI ライブラリは、可能な限り多くのデータをアプリケーションのデータ バッファーに返しますが、RUI 内の残りのデータは破棄され、後続 のRUI_READ 要求では抽出できません。 これにより、RUI アプリケーションは完全な RU サイズを処理するのに十分な大きさ のRUI_READ データ バッファーを割り当てます。

    この既定の動作は、セッションの確立中にRUI_INITを呼び出すときに、動詞制御ブロックで lua_resv56[3] の値を 0 以外の値に設定することで変更できます。 この場合、受信したデータが lua_max_lengthより長い場合、RUI_READ要求は、 LUA_OK のプライマリリターンコードとLUA_DATA_INCOMPLETEのセカンダリリターンコードを返します。 その後、RUI アプリケーションは新しい RUI_READ 呼び出しを発行し、残りのデータを受信できます。

    この機能強化は、Microsoft Windows Open Services アーキテクチャ (WOSA) LUA API 標準の一部として採用されておらず、IBM による RUI の実装とは異なります。

    RUI_READを使用してメッセージを読み取った後 メッセージは受信メッセージ キューから削除され、再度アクセスすることはできません。 (RUI_BID非破壊的読み取りとして使用できます。アプリケーションはそれを使用して使用可能なデータの種類をチェックできますが、データは受信キューに残り、すぐに使用する必要はありません)。

    (ホスト構成で指定されている) プライマリからセカンダリへのハーフセッションでペースを設定して、LUA アプリケーションがメッセージでフラッディングされないようにすることができます。 LUA アプリケーションでメッセージの読み取りが遅い場合、ホスト統合サーバーは、ホストへのペースの速い応答の送信を遅らせ、速度を低下させます。

参照

RUI_BID
RUI_INIT
RUI_TERM
RUI_WRITE
SLI_OPEN
SLI_PURGE
SLI_RECEIVE
SLI_SEND