Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成の手引


3.6.7 メッセージの再送

送信したメッセージを,再び送信できます。メッセージはdc_mcf_resend関数【CBLDCMCF('RESEND ')】で再送します。再送するメッセージは,以前に送信したメッセージとは別の,新しいメッセージとして扱います。次のような場合に,メッセージを再送します。

〈この項の構成〉

(1) 再送できるメッセージの条件

再送の対象にできるのは,次のすべての条件を満たしているメッセージです。

注※1

UAPからメッセージを送信したあと,出力キューに滞留したままのメッセージは再送の対象にはなりません。また,-dオプションを省略したmcftdlqleコマンドの入力,またはdc_mcf_tdlqle関数で削除したメッセージは送信済みのメッセージと見なします。一方,-dオプションを指定したmcftdlqleコマンド,またはmcftspqleコマンドで削除したメッセージは,送信済みのメッセージと見なしません。

注※2

ディスクキューに保持できるメッセージ数については,「(3) システムサービス定義との関連」を参照してください。

メッセージキュー(ディスクキュー)内に対象のメッセージがない場合,dc_mcf_resend関数はエラーリターンします。

(2) 再送対象メッセージの指定内容

どのメッセージを再送するかは,送信済みメッセージに設定してあった,次に示す情報で選択します。

(3) システムサービス定義との関連

メッセージキュー(ディスクキュー)内に保持する送信済みメッセージ数はメッセージキューサービス定義のquegrpコマンドの-mオプションで指定します。

論理端末ごとにこのオプションで指定したメッセージ数をメッセージキューに保持することができます。

(4) ネットワークコミュニケーション定義との関連

メッセージを再送するとき,MCFマネジャ定義のUAP共通定義(mcfmuap)の-eオプションで指定した最大セグメント長分の領域だけ,作業領域として使います。再送するメッセージセグメント長が,この作業領域よりも大きい場合は,dc_mcf_resend関数はエラーリターンします。このため,UAP共通定義の-eオプションでは,再送するメッセージの最大長以上の値を設定しておいてください。

また,MCFマネジャ定義のUAP共通定義(mcfmuap)の-lオプションでの,出力通番に関する指定内容によっては,メッセージキューファイル内に同じ出力通番を持ったメッセージが同時に存在する場合があります。この場合,どのメッセージを再送するか保証できません。