MHPの処理の途中でメッセージの送信完了を確認したいときや,UAPのメッセージ送受信の処理をシステム間で同期を取りたいときに,同期型のメッセージを使います。同期型のメッセージ送受信では,送信または受信を要求して,その処理がすべて完了してから,UAPから呼び出した関数がリターンします。
同期型のメッセージ送受信には,送信,および受信をそれぞれ単独でする関数と,送受信を連続してする関数があります。
同期型のメッセージ処理で,無制限に応答を待ち続けるのを避けるため,監視時間を設定できます。この監視時間は,関数の引数watchtimeに設定します。0を設定した場合は,MCFマネジャ定義のUAP共通定義で指定した同期送受信監視時間が仮定されます。UAP共通定義の監視時間に0が指定されていた場合は,無制限に応答を待ち続けます。
同期型のメッセージの処理時間は,トランザクションブランチの限界経過時間に含めるか含めないかを選択できます。この指定はユーザサービス定義,ユーザサービスデフォルト定義,トランザクションサービス定義のtrn_expiration_time_suspendで指定します。なお,非トランザクション属性のMHPの限界経過時間に含めることはできません。trn_expiration_time_suspendに指定する値とトランザクションの時間監視の詳細については,マニュアル「OpenTP1 システム定義」を参照してください。
MHPがロールバックされた場合,同期型のメッセージは廃棄されません。ただし,dc_mcf_sendsync関数,またはdc_mcf_sendrecv関数で複数セグメントを送信した場合に,最終セグメント(EMI)を指定しないでreturn()を呼び出したときは,メッセージは廃棄されます。
同期型のメッセージ処理を次の図に示します。
図3-10 同期型のメッセージ処理