2.2.8 エラー通知

エラー通知は,自システムでエラーが発生したことを相手システムに通知する場合と,ハンドシェイク,制御権委譲付きハンドシェイク,または確認型ダイアログ終了の拒否応答として使用する場合とがあります。

<この項の構成>
(1) 全二重の場合
(2) 半二重の場合

(1) 全二重の場合

UAPからSENDSYNC文またはsendsync関数で要求を受けると,TP1/NET/OSI-TPは相手システムにエラー通知を送信します。ただし,相手システムからエラー通知応答を受信した場合,TP1/NET/OSI-TPはUAPに対してエラー通知応答はしません。

相手システムからエラー通知を受信した場合,UAPはRECVSYNC文,またはrecvsync関数でメッセージの受信を要求します。TP1/NET/OSI-TPは相手システムにエラー通知応答を送信し,相手システムから受信したメッセージをUAPに渡します。

UAPでのエラー発生時の処理を図2-23に,相手システムからのエラー通知受信の処理を図2-24に示します。

図2-23 UAPでのエラー発生時の処理(全二重の場合)

[図データ]

図2-24 相手システムからのエラー通知受信の処理(全二重の場合)

[図データ]

注※
次に示す場合,TP1/NET/OSI-TPはエラー通知応答を送信しません。
  • ダイアログ終了要求(Confirmation='True')の送信後,エラー通知要求を受信したとき
  • ハンドシェイク要求の送信後,エラー通知要求を受信したとき

(2) 半二重の場合

(a) 制御権のある側からエラー通知の送信,ない側でエラー通知の受信

制御権のあるシステムではUAPからSENDSYNC文またはsendsync関数でエラー通知の要求を受けると,TP1/NET/OSI-TPは相手システムにエラー通知(TP-U-ERROR)要求を送信します。

制御権のないシステムでは,TP1/NET/OSI-TPが相手システムからエラー通知(TP-U-ERROR)要求を受信すると,RECVSYNC文またはrecvsync関数で受信待ちになっているUAPにエラー通知(TP-U-ERROR)指示を通知します。このとき制御権は移動しません。UAPでのエラー発生時の処理を図2-25に,相手システムからのエラー受信の処理を図2-26に示します。

図2-25 UAPでのエラー発生時の処理(制御権がある場合)

[図データ]

図2-26 相手システムからのエラー通知受信の処理(制御権がない場合)

[図データ]

(b) 制御権のない側からエラー通知の送信,ある側でエラー通知の受信

制御権のないシステムではUAPからSENDSYNC文またはsendsync関数でエラー通知の要求を受けると,TP1/NET/OSI-TPは相手システムにエラー通知(TP-U-ERROR)要求を送信します。

制御権のあるシステムでは,TP1/NET/OSI-TPが相手システムからエラー通知(TP-U-ERROR)要求を受信すると,RECVSYNC文またはrecvsync関数で受信待ちになっているUAPにエラー通知(TP-U-ERROR)指示を通知します。エラー通知(TP-U-ERROR)指示を受けたUAPは,SENDSYNC文またはsendsync関数で相手システムに制御権委譲(TP-GRANT-CONTROL)要求を送信しなければなりません。

制御権のないシステムでは相手システムから制御権委譲(TP-GRANT-CONTROL)要求を受信すると,RECVSYNC文またはrecvsync関数で受信待ちになっているUAPに制御権委譲(TP-GRANT-CONTROL)指示を通知します。このとき制御権は移動します。UAPでのエラー発生時の処理を図2-27に,相手システムからのエラー受信の処理を図2-28に示します。

図2-27 UAPでのエラー発生時の処理(制御権がない場合)

[図データ]

図2-28 相手システムからのエラー通知受信の処理(制御権がある場合)

[図データ]

なお,エラー通知をしても,ダイアログは終了しません。ダイアログを終了させたい場合は,UAPからダイアログ終了要求を送信してください。

発生したエラーの詳細情報は,エラー通知後,データ転送で送受信する必要があります。また,エラーの詳細は,ユーザ間で事前に取り決めておきます。