LUA に関する SNA の考慮事項
このセクションでは、論理ユニット アプリケーション (LUA) アプリケーションを作成するときに考慮する必要がある SNA 情報について説明します。
BIND チェック
LU セッションの初期化中に、ホストは、LU セッションで使用する要求/応答ユニット (RU) サイズなどの情報を含む BIND メッセージを LUA アプリケーションに送信します。 Microsoft® Host Integration Server は、このメッセージを RUI_READの LUA アプリケーションに返します。 LUA アプリケーションは、BIND で指定されたパラメーターが適切であることを確認する必要があります。 アプリケーションには、次のオプションがあります。
BIND に対する OK 応答を含む RUI_WRITE を発行することで、BIND をそのまま受け取ることができます。 応答で追加の BIND データを送信することはできません。
1 つ以上の BIND パラメーターのネゴシエートを試みることができます。 (これは、BIND が交渉可能な場合にのみ許可されます)。これを行うには、アプリケーションは、OK 応答を含む が 、変更された BIND をデータとして含むRUI_WRITEを発行します。
適切な SNA センス コードをデータとして使用して、否定的な応答を含む RUI_WRITE を発行することで、BIND を拒否できます。
BIND パラメーターを検証し、送信されるすべてのメッセージがそれらと一致していることを確認することは、LUA アプリケーションの責任です。 ただし、次の 2 つの制限が適用されます。
Host Integration Server は、BIND で指定されたサイズより大きい RU 長を指定する RUI_WRITE を拒否します。
ホスト統合サーバーでは、セカンダリ LU が競合の勝者であり、エラー回復が競合損失の責任であることを BIND で指定する必要があります。
Note
SLI の場合、アプリケーションは BIND チェックを行う場合、 SLI_OPEN で SLI_BIND_ROUTINE を使用することを指定する必要があります。
サービス提供の確認
Host Integration Server は、アプリケーションから送信された応答を適切な要求と関連付けるために、ホストから受信した要求の記録を保持します。 アプリケーションが応答を送信すると、Host Integration Server は応答を元の要求のデータと関連付け、それに関連付けられているストレージを解放できます。
ホストが例外応答のみを指定している場合 (否定応答は送信できますが、肯定的な応答を送信しないでください)、ホスト統合サーバーは、アプリケーションが後で否定応答を送信する場合に備え、要求の記録を保持する必要があります。 アプリケーションが応答を送信しない場合、この要求に関連付けられているストレージを解放することはできません。
このため、Host Integration Server を使用すると、LUA アプリケーションはホストからの例外応答のみの要求に対して肯定的な応答を発行できます。 (これは、提供確認と呼ばれます)。応答はホストに送信されませんが、要求に関連付けられているストレージをクリアするために LUA によって使用されます。
Note
アプリケーションは、各例外応答専用要求に対して提供確認を送信する必要はありません。 効率を高める目的で、アプリケーションの応答頻度が低くなります。 ノードは、事前に保留中のすべての要求に対する暗黙的な受信確認として、提供確認を扱います。
SNA センス・コードを他の 2 次戻りコードと区別する
センス コードではないセカンダリ リターン コードには、常に最初の 2 バイトに 0 の値が含まれます。
SNA センス コードには、常に最初の 2 バイトに 0 以外の値が含まれます。 1 番目のバイトはセンス コード カテゴリを提供し、2 番目のバイトはそのカテゴリ内の特定のセンス コードを識別します。 (3 番目と 4 番目のバイトには追加情報を含めることができます。また、0 を指定することもできます)。
SNA センス コードに関する情報
返されたセンス コードに関する情報が必要な場合は、次を参照してください。
否定応答と SNA センス コード
SNA センス コードは、次の場合に LUA アプリケーションに返すことができます。
ホストが LUA アプリケーションからの要求に否定応答を送信すると、否定応答の理由を示す SNA センス コードが含まれます。 これは、後続の RUI_READ または次の情報を 含むSLI_RECEIVE にアプリケーションに報告されます。
センス コード 説明 主な戻りコード LUA_OK。 要求/応答インジケーター、応答の種類インジケーター、およびセンス データに含まれるインジケーター すべて 1 に設定され、センス データを含む負の応答を示します。 返されるデータ SNA センス コード。 ホスト統合サーバーは、ホストから無効なデータを受信すると、通常、ホストに否定応答を送信し、無効なデータを LUA アプリケーションに渡しません。 これは、後続のRUI_READ、SLI_RECEIVE、RUI_BID、または次の情報を含むSLI_BIDでアプリケーションに報告されます。
センス コード 説明 主な戻りコード LUA_NEGATIVE_RESPONSE。 セカンダリ リターン コード ホストに送信される SNA センス コード。 ホスト統合サーバーは、ホストによって提供されたデータが無効であることを検出するが、送信する正しいセンス コードを特定できない場合があります。 この場合、例外要求 (EXR) の無効なデータが、RUI_READまたはSLI_RECEIVEの LUA アプリケーションに次の情報と共に渡されます。
センス コード 説明 要求/応答インジケーター 要求を示す 0 に設定します。 センサー データに含まれるインジケーター センス データが含まれていることを示す 1 に設定します。 (このインジケーターは通常、応答にのみ使用されます)。 メッセージ データ 推奨される SNA センス コード。 その後、アプリケーションはメッセージに否定的な応答を送信する必要があります。 Host Integration Server によって提案されたセンス コードを使用することも、センス コードを変更することもできます。
Host Integration Server は、アプリケーションによって提供されたデータが無効であることを示すセンス コードをアプリケーションに送信できます。 これは、次の情報を 使用して、RUI_WRITE または SLI_SEND でアプリケーションに報告されます。
センス コード 説明 主な戻りコード LUA_UNSUCCESSFUL。 セカンダリ リターン コード SNA センス コード。 LUA 動詞のセカンダリ リターン コードとして返すことができるセンス コードは、WINLUA に記載されています。H ヘッダー ファイル。 このファイルについては、Host Integration Server または SNA SDK を参照してください。
ペーシング
ペースは LUA インターフェイスによって処理されます。 LUA アプリケーションはペースを制御する必要がなく、ペースインジケーターフラグを設定しないでください。
LUA アプリケーションからホスト (BIND によって決定) に送信されるデータに対してペーシングが使用されている場合、 RUI_WRITE または SLI_SEND が完了するまでに時間がかかる場合があります。 これは、より多くのデータを送信する前に、LUA がホストからのペースの速い応答を待つ必要があるためです。
LUA アプリケーションがホストまたはホスト (ファイル転送アプリケーションなど) から一方向に大量のデータを転送する場合、ホスト構成では、その方向にペースを使用するように指定する必要があります。 これにより、データを受信するノードにデータがあふれず、データ ストレージが不足しないようにします。
チェーンの末尾へのデータの消去
ホストが LUA アプリケーションに要求ユニットのチェーンを送信する場合、アプリケーションは、応答を送信する前に、チェーン内の最後の RU が受信されるまで待機するか、チェーンの最後ではない RU に否定応答を送信できます。 否定応答がチェーンの途中で送信された場合、LUA はこのチェーンから後続のすべての RU を消去し、アプリケーションに送信しません。
LUA は、チェーン内の最後の RU を受け取ると、0 個のセカンダリリターンコードで LUA_NEGATIVE_RESPONSEにRUI_READ または RUI_BID のプライマリリターンコードを設定することによって、これをアプリケーションに示します。
ホストは、チェーンの途中で CANCEL などのメッセージを送信することで、チェーンを終了できます。 この場合、CANCEL メッセージは、RUI_READのアプリケーションに返されます。 LUA_NEGATIVE_RESPONSE戻りコードは使用されません。
セグメント化
RU のセグメント化は、LUA インターフェイスによって処理されます。 LUA は常に完全な RU をアプリケーションに渡し、アプリケーションは完全な RU を LUA に渡す必要があります。