Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 システム定義


mcfmuap

〈このページの構成〉

名称

UAP共通定義

形式

mcfmuap    〔-d  通信関数発行回数上限値〕
           〔-t  "〔sndtim=同期型送信監視時間〕
                  〔sndrcvtim=同期型送受信監視時間〕
                  〔recvtim=同期型受信監視時間〕"〕
           〔-j  ユーザサーバのジャーナルバッファの大きさ〕
           〔-e  "segsize=最大セグメント長"〕
           〔-l  "〔initseq=出力通番の初期値〕
                  〔maxseq=ラップ時の出力通番最大値〕
                  〔minseq=ラップ後の出力通番開始値〕"〕
           〔-u  "〔ntmetim=非トランザクションMHP限界経過時間〕"〕
           〔-a  "delaytim=アプリケーション起動時の遅延許容時間"〕
           〔-c  "〔order=function|commit〕
                  〔noansreply=yes|no〕
                  〔commitdml=yes|no〕
                  〔otqinhold=commit|function〕
                  〔errevt_recovery=yes|no〕
                  〔itqretryorder=first|last〕"〕
           〔-r  "〔reschedulecnt=アプリケーション異常終了時の
                                  再スケジュール回数〕
                  〔rescheduleint=アプリケーション異常終了時の
                                  再スケジュール間隔〕
                  〔reschedulelog=yes|no〕"〕

機能

UAPに共通する環境を定義します。

オプション

●-d 通信関数発行回数上限値

 〜〈符号なし整数〉((0〜65535))《0》(単位:回)

MHPの暴走を防止するために,MHPが発行するMCF通信関数の発行回数上限値を指定します。

対象となる関数は,サービス関数の開始から終了までの間に該当プロセスで発行するMCF通信関数です。

指定回数を超えてMCF通信関数を発行した場合,該当プロセスを異常終了させます。

0を指定した場合は,MCF通信関数の発行回数に制限はありません。

指定値が有効となる優先順位は次のとおりです(1.>2.>3.)。

  1. ユーザサービス定義のmcf_service_max_countオペランド

  2. ユーザサービスデフォルト定義のmcf_service_max_countオペランド

  3. MCFマネジャ定義のmcfmuap定義コマンドの-dオプション

注※

対象となる関数は次のとおりです。これらの関数に対応したDMLインタフェースについては,マニュアル「OpenTP1 プログラム作成リファレンス COBOL言語編」を参照してください。

  • dc_mcf_commit関数 【CBLDCMCF('COMMIT ')】

  • dc_mcf_contend関数 【CBLDCMCF('CONTEND ')】

  • dc_mcf_execap関数 【CBLDCMCF('EXECAP ')】

  • dc_mcf_receive関数 【CBLDCMCF('RECEIVE ')】

  • dc_mcf_recvsync関数 【CBLDCMCF('RECVSYNC')】

  • dc_mcf_reply関数 【CBLDCMCF('REPLY ')】

  • dc_mcf_resend関数 【CBLDCMCF('RESEND ')】

  • dc_mcf_rollback関数 【CBLDCMCF('ROLLBACK')】

  • dc_mcf_send関数 【CBLDCMCF('SEND ')】

  • dc_mcf_sendrecv関数 【CBLDCMCF('SENDRECV')】

  • dc_mcf_sendsync関数 【CBLDCMCF('SENDSYNC')】

  • dc_mcf_tempget関数 【CBLDCMCF('TEMPGET ')】

  • dc_mcf_tempput関数 【CBLDCMCF('TEMPPUT ')】

●-t

(オペランド)

sndtim=同期型送信監視時間 〜〈符号なし整数〉((0〜65535))《0》(単位:秒)

同期型メッセージ送信の仕掛り開始時から,仕掛り終了時までの限界経過時間を指定します。

相手システムの処理完了報告までの時間を監視します。

0を指定した場合は,時間監視をしません。

注意事項

監視時間の精度は秒単位です。また,タイマ定義(mcfttim -t)のbtimオペランドで指定する時間監視間隔でタイムアウトが発生したかどうかを監視しています。このため,このオペランドで指定した監視時間と実際にタイムアウトを検出する時間には秒単位の誤差が生じます。そのため,タイミングによっては,指定した監視時間よりも短い時間でタイムアウトすることがあります。監視時間が小さくなるほど,誤差の影響を受けやすくなりますので,監視時間は3(単位:秒)以上の値の設定を推奨します。

sndrcvtim=同期型送受信監視時間 〜〈符号なし整数〉((0〜65535))《0》(単位:秒)

同期型メッセージ送受信の仕掛り開始時から,仕掛り終了時までの限界経過時間を指定します。

相手システムからの応答時間を監視します。

0を指定した場合は,時間監視をしません。

注意事項

監視時間の精度は秒単位です。また,タイマ定義(mcfttim -t)のbtimオペランドで指定する時間監視間隔でタイムアウトが発生したかどうかを監視しています。このため,このオペランドで指定した監視時間と実際にタイムアウトを検出する時間には秒単位の誤差が生じます。そのため,タイミングによっては,指定した監視時間よりも短い時間でタイムアウトすることがあります。監視時間が小さくなるほど,誤差の影響を受けやすくなりますので,監視時間は3(単位:秒)以上の値の設定を推奨します。

recvtim=同期型受信監視時間 〜〈符号なし整数〉((0〜65535))《0》(単位:秒)

同期型メッセージ受信の仕掛り開始時から,仕掛り終了時までの限界経過時間を指定します。

相手システムからの処理完了報告までの時間を監視します。

0を指定した場合は,時間監視をしません。

注意事項

監視時間の精度は秒単位です。また,タイマ定義(mcfttim -t)のbtimオペランドで指定する時間監視間隔でタイムアウトが発生したかどうかを監視しています。このため,このオペランドで指定した監視時間と実際にタイムアウトを検出する時間には秒単位の誤差が生じます。そのため,タイミングによっては,指定した監視時間よりも短い時間でタイムアウトすることがあります。監視時間が小さくなるほど,誤差の影響を受けやすくなりますので,監視時間は3(単位:秒)以上の値の設定を推奨します。

●-j ユーザサーバのジャーナルバッファの大きさ

 〜〈符号なし整数〉((4096〜4000000の4の倍数))《32768》(単位:バイト)

ジャーナルデータを蓄えておく領域の大きさを指定します。

UAPプロセスが,ジャーナルに対して次の要求を出すまで,この領域にジャーナルデータを蓄えておきます。

  • ジャーナルファイルへの出力要求

  • ジャーナルサービスのバッファへの格納要求

ジャーナルバッファの大きさには,GJ,OJ,CJのデータ長のうち最大値以上の値を指定してください。

  1. GJのデータ長

    MCFアプリケーション定義のmcfaalcap定義コマンドの-jオプションのgjオペランドにyesを指定したときに取得します。

    ●32ビット版のとき

    ↑(204+seg)/4↑×4

    ●64ビット版のとき

    ↑(204+seg)/8↑×8

  2. OJのデータ長

    MHPからメッセージ送信をした場合は,MCFアプリケーション定義のmcfaalcapの-jオプションのojオペランドにyesを指定したときに取得します。SPPからメッセージ送信をした場合は,ユーザサービス定義のmcf_spp_ojオペランドにYを指定したときに取得します。

    ●32ビット版のとき

    ↑(204+seg)/4↑×4

    ●64ビット版のとき

    ↑(204+seg)/8↑×8

  3. CJ(メッセージキューサーバ)のデータ長

    ITQ,OTQにディスクキューを使用した場合に取得します。

    ●32ビット版のとき

    ↑{260+Σ{(24×(↑msg/ql↑+↑960/ql↑))}+qio}/4↑×4

    ●64ビット版のとき

    ↑{260+Σ{(24×(↑msg/ql↑+↑1276/ql↑))}+qio}/8↑×8

(凡例)

↑↑:小数点以下を切り上げます。

seg:セグメント長

msg:ディスクキューを使用した受信メッセージ長または送信メッセージ長

ql:キューファイル物理レコード長

qio:メッセージキューサービス定義のque_io_maxrecsizeオペランドの指定値

Σ:該当するトランザクションで,受信または送信したメッセージに対する見積もりの総和

ユーザが指定した値によって,MCFは次の処理をします。

  1. 指定した値がMCFで定めた下限値より小さい場合,その値をMCFで定めた下限値に補正します。

  2. 指定した値がMCFで定めた上限値より大きい場合,その値をMCFで定めた上限値に補正します。

  3. 指定した値が4の倍数でない場合,その値を4の倍数になるように切り上げます。

なお,このオペランドは,ユーザサービス定義,およびユーザサービスデフォルト定義のmcf_jnl_buff_sizeオペランドでも指定できます。

指定値の優先順位は次のとおりです(1.>2.>3.)。

  1. ユーザサービス定義

  2. ユーザサービスデフォルト定義

  3. MCFマネジャ定義

ただし,ジャーナルのデータ長が131072を超える場合は,データ長をMCFマネジャ定義に指定し,ユーザサービス定義,およびユーザサービスデフォルト定義のmcf_jnl_buff_sizeオペランドは省略してください。

●-e segsize=最大セグメント長

 〜〈符号なし整数〉((512〜2147483647))《32768》(単位:バイト)

次の場合に送受信するメッセージの最大セグメント長を指定します。最も大きい方の値を,最大セグメント長として指定してください。

  • エラーイベント処理用MHPを起動する場合(エラーイベント処理用MHPが送受信するメッセージの最大セグメント長)

  • アプリケーション起動機能を使用する場合(dc_mcf_execap関数で起動するアプリケーションに渡すメッセージの最大セグメント長)

  • メッセージ再送機能を使用する場合

  • mcftdmpquコマンドで入出力キューの内容を複写する場合(内容を複写するキュー内のメッセージの最大セグメント長)

●-l

(オペランド)

initseq=出力通番の初期値 〜〈符号なし整数〉((0〜2147483647))《1》

メッセージ出力通番の初期値を指定します。

maxseq=ラップ時の出力通番最大値 〜〈符号なし整数〉((0〜2147483647))《65535》

出力通番をラップさせる時の,最大値を指定します。

指定した値の次は,開始値になります。

指定した値が小さいと,出力通番のラップアラウンドが発生したあとに,同一キューファイル内に同一の出力通番が存在して,メッセージの出力通番のユニーク性が保証されない場合があります。

このため,次の計算式を満たす値を指定してください。

ラップ時の出力通番最大値 > Q×(1+R)

Q:ディスクメッセージ最大格納数

R:ロールバック率

ただし,ロールバック率は最悪のケースを考慮した値を指定してください。

minseq=ラップ後の出力通番開始値 〜〈符号なし整数〉((0〜1))《1》

出力通番をラップさせる時の,ラップ後の開始値を指定します。

ラップ後の出力通番開始値は,接続相手のオンラインコントロールプログラムによって異なります。

●-u ntmetim=非トランザクションMHP限界経過時間

 〜〈符号なし整数〉((0〜65535))《0》(単位:秒)

アプリケーション属性定義(mcfaalcap)の-vオプションに指定するntmetimオペランドの省略値を指定します。

非トランザクションMHPの処理のループ,およびハングアップを監視するために,非トランザクションMHPの処理に掛かる限界経過時間を指定します。

0を指定した場合は,時間監視しません。

指定時間を超えても非トランザクションMHPの処理が終了しない場合,非トランザクションMHPを異常終了します。

注意事項

サービス関数開始から終了までの実行監視時間の精度は秒単位です。そのため,タイミングによっては,このオペランドに指定した値よりも短い時間でプロセスを強制停止することがあります。サービス関数開始から終了までの実行監視時間が小さくなるほど,誤差の影響を受けやすくなりますので,このオペランドには3(単位:秒)以上の値の指定を推奨します。

●-a delaytim=アプリケーション起動時の遅延許容時間

 〜〈符号なし整数〉((0〜360))《0》(単位:分)

起動時刻指定のアプリケーション起動で,指定時刻が現在時刻の前の場合の遅延許容時間を指定します。

指定した時刻が現在時刻より前で,遅延許容時間の範囲内の時間の場合,MCFはすぐに該当するアプリケーションを起動します。遅延許容時間外の時刻の場合,翌日の指定時刻に起動します。

●-c

(オペランド)

order=function|commit 〜《commit》

複数のUAPによる次に示す処理順序を指定します。

  • 同一の論理端末(mcftalcle -l)を使用するメッセージの送信順序および再送順序

  • 同一の論理端末(mcfaalcap -n lname)または内部通信路(mcfaalcap -n cname)を使用するUAPの起動順序

function

UAPからの関数の呼び出し順に処理します。

commit

UAPによるトランザクションのコミット順に処理します。

論理端末の出力キュー(ディスクキュー)にメッセージが滞留している状態で,OpenTP1を再開始した場合でも,トランザクションのコミット順に処理します。

注※

関数とは,メッセージ送信関数,メッセージ再送関数およびアプリケーション起動関数を示します。

noansreply=yes|no 〜《yes》

非応答型のMHPからの問い合わせ応答をするかどうかを指定します。

yes

非応答型のMHPからの問い合わせ応答をします。

非応答型MHPから応答メッセージを送信した場合,一般一方送信メッセージとして扱います。

なお,出力通番は付けられません。

no

非応答型のMHPからの問い合わせ応答をしません。

非応答型MHPから応答メッセージを送信した場合,エラーになります。

commitdml=yes|no 〜《no》

データ操作言語のCOMMIT文を発行するかどうかを指定します。

yes

COMMIT文を使用します。

データ操作言語のCOMMIT文を発行してエラーが発生した場合,KFCA11199-Eメッセージを出力し,MHPが異常終了します。

no

COMMIT文を使用しません。

データ操作言語のCOMMIT文を発行してエラーが発生しても,UAPでエラーを検出できません。

otqinhold=commit|function 〜《commit》

出力キューの入力保留中にUAPがメッセージを送信したときの動作を指定します。

commit

トランザクションの同期点処理でUAPの処理を待ち合わせます。

同期点処理で待ち合わせる場合の例を次に示します。

[図データ]

function

メッセージの送信関数でUAPの処理を待ち合わせます。

メッセージの送信関数で待ち合わせる場合の例を次に示します。

[図データ]

出力キューの入力保留中にUAPの処理を待ち合わせる関数を次の表に示します。

言語

関数名称

C言語

dc_mcf_send関数

dc_mcf_resend関数

dc_mcf_reply関数

COBOL言語

CALLインタフェース

CBLDCMCF('SEND ')

CBLDCMCF('RESEND ')

CBLDCMCF('REPLY ')

DMLインタフェース

SEND − メッセージの送信

注※

非同期型のメッセージ送信(SYNCHRONOUS MODE句を指定していない,またはASYNC,'0'もしくは空白が設定されているデータ項目を指定)の場合だけです。

注意事項

同期点処理で待ち合わせる場合とメッセージの送信関数で待ち合わせる場合の動作の違いを次の表に示します。

UAP共通定義(mcfmuap -c)のotqinholdオペランドの指定値

dcsvstop -fコマンドによる強制停止

service_expiration_timeオペランドによる実時間監視タイムアウト

trn_expiration_timeオペランド,mcfmuap -u ntmetimオペランド,mcfaalcap -v ntmetimオペランドの監視対象該否

UAP強制停止前に送信したメッセージの扱い

commitまたは省略

入力保留を解除するまで待ち合わせる

入力保留を解除するまでUAPの異常終了を待ち合わせる

該当しない

(監視区間の範囲外)

有効

(出力キューに残留)

function

即時に受け付ける

即時にUAPが異常終了する

該当する

(監視区間の範囲内)

無効

(出力キューから削除)

注※

SPPだけ有効です。MHPでは監視しません。

errevt_recovery=yes|no 〜《yes》

OpenTP1再開始時のエラーイベント(ERREVT1,ERREVT2,ERREVT3,ERREVT4,ERREVTA)を引き継ぐかどうかを指定します。

yes

OpenTP1再開始時のエラーイベントを引き継ぎます。

no

OpenTP1再開始時のエラーイベントを引き継ぎません。すべてのエラーイベントを破棄します。

注意事項

  • 引き継ぎ対象となるのは,ディスクキューに割り当てられている(アプリケーション属性定義(mcfaalcap -g)のquekindオペランドにdiskを指定)エラーイベントです。メモリキューに割り当てられているエラーイベントはこのオペランドの指定値に関係なく,破棄します。

  • エラーイベントが発生したメッセージがOpenTP1再開始時に破棄されるメッセージの場合,このオペランドの指定値に関係なく,OpenTP1の再開始時にエラーイベントを破棄します。

itqretryorder=first|last 〜《last》

MHPの再スケジュール時に,受信メッセージを入力キューに格納する位置を指定します。

注※

次の場合が該当します。

  • トランザクション処理を実行しているMHPからRETRYを設定したロールバック(C言語の場合,actionにDCMCFRTRYを設定したdc_mcf_rollback関数を発行する,COBOL言語の場合,データ名Cに'RTRY'を設定したCBLDCMCF('ROLLBACK')を発行する)を行った場合

  • アプリケーション異常終了時の再スケジュール回数(アプリケーション属性定義(mcfaalcap -d)のreschedulecntオペランドまたはUAP共通定義(mcfmuap -r)のreschedulecntオペランドの指定値)が1以上のとき,トランザクション処理を実行しているMHPがサービス実行中に異常終了してロールバックした場合

first

受信メッセージを入力キューの最初に格納します。

firstを指定する場合,次の指定をする必要があります。

  • システム共通定義のwatch_timeオペランドを省略するか,180以上を指定する。

  • プロセスサービス定義のprc_recovery_residentオペランドを省略するか,Yを指定する。

  • MHPのユーザサービス定義またはユーザサービスデフォルト定義のscd_process_ctl_optオペランドに1を指定する。

MHPの多重度が1の場合,MHPの再スケジュールが発生したときにあとから受信したメッセージが前に受信したメッセージを追い越すことはありません。

last

受信メッセージを入力キューの最後に格納します。

MHPの多重度を1としていたとしても,MHPの再スケジュールが発生したときにあとから受信したメッセージが前に受信したメッセージを追い越すことがあります。

●-r

(オペランド)

reschedulecnt=アプリケーション異常終了時の再スケジュール回数 〜〈符号なし整数〉((0〜3))《0》(単位:回)

トランザクション処理を実行しているMHPがサービス実行中に異常終了してロールバックした場合の,再スケジュール回数を指定します。

アプリケーション属性定義(mcfaalcap)に指定する-dオプションのreschedulecntオペランドの省略時解釈値となります。

このオペランドに1〜3の値を指定すると,受信したメッセージを該当する入力キューの最後に格納し,異常終了したMHPを自動的にスケジュールし直します。

0を指定した場合は,再スケジュールしません。

指定した回数を超えてMHPが異常終了した場合,再スケジュールしません。この場合,KFCA11163-Eメッセージを出力し,エラーイベントを通知します。

rescheduleint=アプリケーション異常終了時の再スケジュール間隔 〜〈符号なし整数〉((0〜3))《0》(単位:秒)

異常終了してロールバックしたMHPを自動的に再スケジュールするまでの所要時間に加算する時間を,秒単位で指定します。

アプリケーション属性定義(mcfaalcap)に指定する-dオプションのrescheduleintオペランドの省略時解釈値となります。

この指定は,reschedulecntオペランドに1〜3の値を指定した場合に有効となります。

注※

異常終了したプロセス以外に空きプロセスが存在する場合,間隔を空けないで再スケジュールします。

異常終了したプロセス以外に空きプロセスが存在しない,かつユーザサービス定義,またはユーザサービスデフォルト定義のholdオペランドにYを指定した場合,再スケジュールするまでに最大10秒掛かります。

異常終了したプロセス以外に空きプロセスが存在しない,かつユーザサービス定義,またはユーザサービスデフォルト定義のholdオペランドにNを指定した場合,ユーザサービス定義,またはユーザサービスデフォルト定義のterm_watch_timeオペランドの指定時間内で,異常終了したMHPの3回目の再スケジュールに最大10秒掛かります。2回目までは間隔を空けないで再スケジュールします。

reschedulelog=yes|no 〜《no》

異常終了してロールバックしたMHPを自動的に再スケジュールするときに,ログメッセージを出力するかどうかを指定します。

アプリケーション属性定義(mcfaalcap)に指定する-dオプションのreschedulelogオペランドの省略時解釈値となります。

この指定は,reschedulecntオペランドに1〜3の値を指定した場合に有効となります。

yes

KFCA11810-Iメッセージを出力します。

no

KFCA11810-Iメッセージを出力しません。