このセクションでは、アプリケーションからローカル ノードへの受信データ フローについて説明します。 説明されているプロトコルの全体的な構造は、システム サービス制御ポイント (SSCP) とプライマリ論理ユニット (PLU) 接続に適用されますが、より複雑な側面 (遅延要求モードの使用など) は PLU 接続にのみ適用されます。
アプリケーションは、次のように、任意の接続で受信データを送信できます。
ホスト SSCP 用の機能管理データ ネットワーク サービス (FMD NS) (セッション サービス) と関数管理データ (FMD) の文字コード化データは、SSCP 接続のローカル ノードに送信する必要があります。
ホスト PLU 用の FMD データは、PLU 接続のローカル ノードに送信する必要があります。
アプリケーションは 、データ メッセージを使用してデータ フロー制御 (DFC) またはセッション制御要求メッセージをホストに送信できません。 代わりにStatus-Controlメッセージを使用する必要があります。 (詳細については、「 Status-Control メッセージ」を参照してください)。
すべての接続について、アプリケーションは データ メッセージのヘッダーの特定のキー フィールドに入力する必要があります。 特に、次の必要があります。
メッセージの種類を DATAFMI に設定します。
この接続の受信 データ メッセージに新しいメッセージ キーを割り当てます。
必要に応じて 、ACKRQD フィールドを設定します。
アプリケーション フラグを設定します。 (詳細については、「 アプリケーション フラグ」を参照してください)。
メッセージ ヘッダー内の nxtqptr、 hdreptr 、 numelts フィールド、およびメッセージ要素の elteptr フィールドと 開始 フィールドは、Host Integration Server バッファー管理ルーチンによって設定されます。 (詳細については、 DL-BASE/DMOD インターフェイスを参照してください。アプリケーションは、endd フィールドの設定を担当します。
アプリケーションがこれらのルーチンにアクセスできない場合 (たとえば、オペレーティング環境でタスク間プロシージャ呼び出しと共有メモリがサポートされていない場合)、ヘッダー内のすべてのフィールドをアプリケーションで設定する必要があります。
インバウンド ・データ ・メッセージでは、伝送ヘッダー (TH) および応答ヘッダー (RH) 標識をアプリケーションで使用できません。 アプリケーションでは、チェーンや方向などを制御するために、メッセージ ヘッダーに適切なアプリケーション フラグを設定する必要があります。 受信データに使用できるアプリケーション フラグの説明と、受信データ フローの制御にフラグを使用する方法については、このセクションの以降のトピックの「 アプリケーション フラグ」を参照してください。
受信データの場合、最初のバイトは標準関数管理インターフェイス (FMI) の RU[0] です。
受信データ メッセージ ヘッダー内のアプリケーションによって提供されるメッセージ キーは、ローカル ノードによって使用され、送信状態確認が参照するこの接続上のデータ メッセージを示します。 アプリケーションは、ローカル ノードとの接続ごとに受信データ フローの一意のメッセージ キー シーケンスを保持する必要があります。そのため、アプリケーションはメッセージ キーを使用して、接続の受信 データ メッセージと送信 状態確認 メッセージを関連付けることができます。 アプリケーションは、複数の RQE LUSTAT メッセージを区別するために、Status-Control 要求メッセージにメッセージ・キーも提供する必要があることに注意してください。
受信データ受信確認プロトコルは、次のように、セッションで使用されているセカンダリ チェーン応答プロトコルと要求モードを反映します。
ヘッダーに ACKRQD が設定された受信データ メッセージは、RQD 要求を生成します。
ヘッダーに ACKRQD が設定されていない受信データ メッセージでは、チェーン応答プロトコルに応じて RQE または RQN 要求が生成されます。
アプリケーションでは、エンド チェーン インジケーター (ECI) アプリケーション フラグが設定されているデータ メッセージに対してのみ ACKRQD を設定する必要があります。
セカンダリが即時要求モードを使用することをセッションで指定した場合、アプリケーションは、ACKRQD が設定されたデータを送信した後も、そのデータ メッセージの Status-Acknowledge メッセージを受信していない場合でも、さらにデータ メッセージを送信できます。 メッセージはローカル ノード内でキューに登録され、肯定的な応答が受信されると徐々に送信されます。
セッションでセカンダリが遅延要求モードを使用することを指定した場合、ACKRQD が設定されたデータ メッセージを送信した後、アプリケーションは引き続きデータ メッセージを送信できます。
アプリケーションがデータ メッセージのメッセージ ヘッダーに ACKRQD フィールドを設定する場合は、このデータ メッセージに対する受信確認が必要であることを示します。 ローカル ノードは、同じ接続上のアプリケーションに Status-Acknowledge メッセージを送信し、データ メッセージと同じメッセージ キーを使用して、受信データ メッセージを確認します。 (図については、このトピックの最後にある最初の図を参照してください)。
ローカル ノードは、内部状態コンピューターを介してアプリケーションからの受信 データ メッセージを処理し、このフローの正しい SNA シーケンス番号または識別子を割り当て、要求のデータをホストに送信します。 要求のチェーン応答の種類は、 ACKRQD が データ メッセージとセッション パラメーターで設定されたかどうかによって異なります。
ローカル ノードは、ホストからの肯定的な応答を Status-Acknowledge(Ack) にアプリケーションにマップします。 アプリケーションでは、Status-Acknowledge のメッセージ キーを使用して 、受信確認 を元の データ メッセージと関連付けることができます。 そのため、特定のデータ メッセージに対する Status-Acknowledge(Ack) の受信は、ローカル ノードがホストから受信 SNA 要求への正の SNA 応答を受信したことを意味します。 (図については、このトピックの最後にある 2 番目の図を参照してください)。
応答は、SSCP-PU セッションで吸収されることに注意してください。
送信 Status-Acknowledge(Ack) メッセージには、アプリケーション フラグとシーケンス番号が含まれていることに注意してください。 アプリケーション フラグは、応答の RH インジケーターを反映します。 シーケンス番号は応答からの SNA シーケンス番号であり、伝送サービス・プロファイル (TS プロファイル) 4 を使用してアプリケーションが作業単位に対応する SNA 2 次シーケンス番号を追跡するためのメカニズムを提供します。
ローカル ノードは、ホストからの否定応答を Status-Acknowledge(Nack-1) メッセージにアプリケーションにマップします。 アプリケーションでは、 Status-Acknowledge のメッセージ キーを使用して、否定受信確認を元の データ メッセージと関連付けることができます。 送信 Status-Acknowledge(Nack-1) メッセージには、否定応答からの SNA センス コードとシーケンス番号が含まれています。 (図については、このトピックの最後にある 3 番目と 4 番目の図を参照してください)。
ローカル ノードが受信 データ メッセージの形式でエラーを検出した場合、または データ メッセージがセッションの現在の状態に適していない場合は、エラー コードを含むアプリケーションに Status-Acknowledge(Nack-2) を送信します。 (エラー コードの一覧については、「 エラー コードとセンス コード」を参照してください)。ローカル ノードは、エラーの データ メッセージに対応する要求をホストに送信せず、セッションの SNA シーケンス番号を進めません。 アプリケーションは、次の受信 データ メッセージで任意のメッセージ キーを使用できます (エラーによって重大なエラーが発生しない場合)。
アプリケーションが ACKRQD を使用してデータ メッセージを送信し、アプリケーション フラグに ECI を含まない重大なチェーン エラーの例を、このトピックの最後の図に示します。 この特定のエラーを検出した後、ローカル ノードはアプリケーションの接続を重大に失敗としてマークし、接続を閉じて、UNBIND を引き出す TERM-SELF 要求を SSCP に送信することに注意してください。 (詳細については、「 回復」を参照してください)。
迅速なフロー要求の生成の原因となる受信 状態制御 メッセージは、いつでも送信でき、受信 データ メッセージへの肯定受信確認または否定受信確認の送信には影響しません。 SNA の優先フロー要求に対応する Status-Control メッセージの詳細については、「 Status-Control メッセージ」を参照してください。
次の 5 つの図は、さまざまなチェーン応答の種類とセカンダリ セッション要求モードの受信データ受信確認プロトコル (および基になる SNA プロトコル) の例を示しています。
次の図を示します。
データ メッセージの ACKRQD フィールド。
データ メッセージのメッセージ キー。
データ メッセージに関連するアプリケーション フラグ。
データ メッセージのエラー コード ("ERROR=..."" と表示されます)。
SNA 要求/応答に関連する RH フラグ。
SNA 要求/応答のシーケンス番号。
SNA 要求/応答のセンス コード ("SENSE=...."" と表示されます)。
わかりやすくするために、すべてのメッセージは同じ PLU セッションで流れていると見なされます。
次の図では、アプリケーションは正常に データ メッセージを送信します。
アプリケーションがデータ メッセージを正常に送信する次の図では、アプリケーションは 正常にデータ メッセージのチェーンを送信します。
アプリケーションがデータ メッセージのチェーンを正常に送信する次の図では、ホストは データ メッセージのチェーンを拒否します。
ホストがデータ メッセージのチェーンを拒否する次の図では、ホストは最初の明確な応答チェーンを拒否し、遅延要求セッションで 3 番目の例外応答チェーンを拒否します。 3 番目のチェーンに対する負の応答は、2 番目のチェーンに対する肯定的な応答を意味します。
ホストが最初の明確な応答チェーンを拒否する次の図では、ローカル ノードは、データ メッセージに対する ECI アプリケーション フラグなしで、アプリケーションによる ACKRQD の無効な使用を検出します。 ホストにデータが送信されない点に注意してください。 ただし、エラーは重大であるため、ローカル ノードは TERM-SELF メッセージを SSCP に送信します。
ローカル ノードは、データ メッセージに対する ECI アプリケーション フラグなしで、アプリケーションによる ACKRDQ の無効な使用を検出します