このセクションでは、論理ユニット アプリケーション (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 を拒否します。
Host Integration Server では、セカンダリ LU が競合の勝者であり、エラー回復が競合の敗者の責任であることを BIND で指定する必要があります。
注
SLI の場合、アプリケーションは BIND 検査を行う場合、 SLI_OPEN で SLI_BIND_ROUTINE を使用することを指定する必要があります。
礼儀としての謝辞
Host Integration Server は、ホストから受信した要求の記録を保持して、アプリケーションによって送信されたすべての応答を適切な要求と関連付けます。 アプリケーションが応答を送信すると、Host Integration Server は応答を元の要求のデータと関連付け、それに関連付けられているストレージを解放できます。
ホストが例外応答のみを指定する場合 (否定応答は送信できますが、肯定的な応答は送信しないでください)、Host Integration Server は、アプリケーションが後で否定応答を送信する場合に備え、要求の記録を保持する必要があります。 アプリケーションが応答を送信しない場合、この要求に関連付けられているストレージを解放することはできません。
このため、Host Integration Server を使用すると、LUA アプリケーションはホストからの例外応答のみの要求に対して肯定的な応答を発行できます。 (これは、提供確認と呼ばれます)。応答はホストに送信されませんが、LUA によって要求に関連付けられているストレージをクリアするために使用されます。
注
アプリケーションは、例外応答のみ要求ごとに礼儀としての確認を送信する必要はありません。 効率を高める目的で、アプリケーションの応答頻度が低くなります。 ノードは、礼儀的な受信確認を事前に保留中のすべての要求に対する暗黙的な受信確認として処理します。
SNA センス・コードと他の 2 次戻りコードの区別
センス コードではないセカンダリ リターン コードには、常に最初の 2 バイトに 0 の値が含まれます。
SNA センス コードには、常に最初の 2 バイトに 0 以外の値が含まれます。 最初のバイトはセンス コード カテゴリを提供し、2 番目のバイトはそのカテゴリ内の特定のセンス コードを識別します。 (3 番目と 4 番目のバイトには追加情報を含めることができます。また、0 を指定することもできます)。
SNAにおけるセンスコードについての情報
返されたセンス コードに関する情報が必要な場合は、
否定応答と SNA センス コード
SNA センス コードは、次の場合に LUA アプリケーションに返すことができます。
ホストが LUA アプリケーションからの要求に否定的な応答を送信すると、否定応答の理由を示す SNA センス コードが含まれます。 これは、後続の RUI_READ または SLI_RECEIVE において、次の情報がアプリケーションに報告されます。
センスコード 説明 プライマリ リターン コード LUA_OK。 要求/応答インジケーター、応答の種類インジケーター、およびセンサー データに含まれるインジケーター すべて 1 に設定され、センス データを含む負の応答を示します。 返されるデータ SNA センスコード。 Host Integration Server は、ホストから無効なデータを受信すると、一般にホストに否定応答を送信し、無効なデータを LUA アプリケーションに渡しません。 これは、後続のRUI_READ、SLI_RECEIVE、RUI_BID、SLI_BIDにおいて、次の情報と共にアプリケーションに報告されます。
センスコード 説明 プライマリ リターン コード LUA_NEGATIVE_RESPONSE。 副リターンコード ホストに送信された SNA センス コード。 場合によっては、Host Integration Server は、ホストによって提供されたデータが無効であることを検出しますが、送信する正しいセンス コードを特定できません。 この場合、例外要求 (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 を受け取ると、 RUI_READのプライマリ リターン コードを設定 するか、RUI_BIDを 0 個のセカンダリ リターン コードでLUA_NEGATIVE_RESPONSEすることによって、これをアプリケーションに示します。
ホストは、チェーンの途中で CANCEL などのメッセージを送信することで、チェーンを終了できます。 この場合、CANCEL メッセージは、RUI_READのアプリケーションに返されます。 LUA_NEGATIVE_RESPONSE返り値コードは使用されていません。
Segmentation
RU のセグメント化は、LUA インターフェイスによって処理されます。 LUA は常に完全な RU をアプリケーションに渡し、アプリケーションは完全な RU を LUA に渡す必要があります。