Hitachi

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


mcfaalcap

〈このページの構成〉

名称

アプリケーション属性定義

形式

mcfaalcap  -n  "  name=アプリケーション名|MCFイベント名
                〔kind=user|mcf〕
                〔type=ans|noans|cont〕
                〔aplihold=m|a|s〕
                〔msgcnt=入力メッセージ最大格納数〕
                〔lname=論理端末名称〕
                〔cname=内部通信路名〕
                〔tempsize=継続問い合わせ応答用一時記憶データ格納用
                           領域サイズ〕
                〔trnmode=trn|nontrn〕
                〔errevt=yes|no〕"
         〔-N  "  modelname=モデルアプリケーション名|モデルMCFイベント名"〕
           -g  "  servgrpn=サービスグループ名
                〔quegrpid=キューグループID〕
                〔quekind=memory|disk〕
                〔srvghold=m|s〕
                〔recvmsg=e|r〕"
           -v  "  servname=サービス名
                〔servhold=m|a|s〕
                〔ntmetim=非トランザクションMHP限界経過時間〕"
         〔-d  "〔holdlimit=アプリケーション異常終了限界回数〕
                〔holdlmtyp=sum|cont〕
                〔reschedulecnt=アプリケーション異常終了時の
                                再スケジュール回数〕
                〔rescheduleint=アプリケーション異常終了時の
                                再スケジュール間隔〕
                〔reschedulelog=yes|no〕"〕
         〔-j  "〔ij=yes|no〕
                〔oj=yes|no〕
                〔gj=yes|no〕"〕
         〔-e  "  evtlogout=yes|no"〕

機能

アプリケーションに関する属性を定義します。

指定数に応じて静的共用メモリの容量を見積もる必要があります。静的共用メモリの見積もりは,「付録B.2 MCFサービス用の共用メモリの見積もり式」を参照してください。

オプション

●-n

(オペランド)

name=アプリケーション名|MCFイベント名 〜〈1〜8文字の識別子〉

使用するアプリケーション名,またはMCFイベント名を指定します。

nameオペランドの指定値はkindオペランドで指定するアプリケーションの種別内で,ほかのmcfaalcapコマンドのnameオペランドの指定値とは異なる指定をします。

mcfuevtコマンドで直接MHPを起動したい場合は,UCMDEVTを指定してください。

ERREVT2の一部,およびERREVT3を起動する場合,アプリケーション起動プロセスが必要です。アプリケーション起動プロセス用のMCF通信構成定義を作成してください。

kind=user|mcf 〜《user》

アプリケーションの種別を指定します。

user

ユーザのアプリケーション

mcf

MCFイベント

nameオペランドにUCMDEVTを指定した場合は,userを指定するか,指定を省略してください。誤って指定すると,MCF定義オブジェクト生成ユティリティ起動コマンド(mcfapli)は,KFCA11513-Eメッセージを表示し,異常終了します。

type=ans|noans|cont 〜《noans》

アプリケーションのを指定します。

ans:応答型

noans:非応答型

cont:継続問い合わせ応答型

nameオペランドでMCFイベント名を指定した場合,このtypeオペランドの指定は無効になります。

MCFはMCFイベントに対して次のように自動的に設定します。

  1. 次のMCFイベントの場合,要求元となった論理端末の端末タイプに応じて,reply型論理端末の場合はansを,reply型以外の論理端末の場合はnoansを設定します。

    不正アプリケーション名検出通知イベント(ERREVT1)

  2. 次のMCFイベントの場合,それを起動する要因となったアプリケーションの型をそのまま引き継ぎます。

    メッセージ廃棄通知イベント(ERREVT2)

    UAP異常終了通知イベント(ERREVT3)

    タイマ起動メッセージ廃棄通知イベント(ERREVT4)

  3. 上記以外のMCFイベントの場合は,noansを設定します。

    異常が発生した場合,起動元通信プロセスに対応するMCFイベントが起動されます。アプリケーション起動機能を使用して複数のMCFアプリケーション定義を経由した場合も,最初の起動元通信プロセスに対応するMCFイベントが起動されます。

    SPPからアプリケーションを起動し,起動元通信プロセスがない場合は,アプリケーション起動プロセスに対応するMCFイベントが起動されます。

    mcfuevtコマンドで直接MHPを起動したい場合は,noansを指定するか,指定を省略してください。誤って指定すると,MCF定義オブジェクト生成ユティリティ起動コマンド(mcfapli)は,KFCA11513-Eメッセージを表示し,異常終了します。

aplihold=m|a|s  〜《m》

アプリケーションが異常終了した場合のアプリケーションの処置を指定します。

m

アプリケーションを閉塞しません。

a

アプリケーションを閉塞します。入力およびスケジュールを禁止します。

s

アプリケーションを閉塞します。スケジュールを禁止します。

次の場合には,この定義の指定値に関係なく,アプリケーションを閉塞しません。

  • dc_mcf_rollback関数にDCMCFRTRYを指定(CBLDCMCF('ROLLBACK')にRTRYを指定)してロールバックした場合

  • アプリケーション属性定義(mcfaalcap)またはUAP共通定義(mcfmuap)のreschedulecntオペランドの指定値が1以上の場合に,MHPが異常終了したとき

  • アプリケーションに対応するサービス開始前にユーザサービスが異常終了した場合

msgcnt=入力メッセージ最大格納数  〜〈符号なし整数〉((0〜65535))《0》

入力するメッセージの最大格納数を指定します。

0を指定した場合,メモリまたはディスクに入力するメッセージの数は無制限になります。

lname=論理端末名称  〜〈1〜8文字の識別子〉

アプリケーション起動機能を使用するときの,内部通信路上の論理端末名称を指定します。-nオプションのtypeオペランドでnoansを指定した場合だけ指定できます。

この論理端末名称は,アプリケーション起動プロセスに対応するMCF通信構成定義の,mcftalcleコマンドで登録したものを指定します。ここでは,一方送信型論理端末を指定します。

ほかのアプリケーションからこのアプリケーションを起動するとき,ここで指定した論理端末を使用してメッセージが受け渡されます。

アプリケーション起動機能使用時の定義方法については,cnameオペランドの説明を参照してください。

cname=内部通信路名  〜〈1〜8文字の識別子〉

アプリケーション起動機能を使用するときの,内部通信路名を指定します。ただし,typeオペランドでans,またはcontを指定したときだけ指定できます。

この内部通信路名は,MCF通信構成定義のmcftpsvrコマンドで登録したものを指定します。

ほかのアプリケーションからこのアプリケーションを起動するとき,ここで指定した内部通信路上の適当な問い合わせ型論理端末を使用して,メッセージが受け渡されます。論理端末定義で,一つ以上,問い合わせ型論理端末を定義しておく必要があります。

アプリケーション起動機能使用時の定義方法を次の表に示します。

表5‒1 アプリケーション起動機能使用時の定義方法

起動元のアプリケーションプログラム

起動先のアプリケーションプログラム

noans型MHP

ans型MHP

cont型MHP

noans型MHP

LNAME

×

×

ans型MHP

LNAME

CNAME

×

cont型MHP

LNAME

×

CNAME

SPP

LNAME

×

×

(凡例)

LNAME:起動先のmcfaalcap定義コマンドのlnameオペランドに,内部通信路上のsend型論理端末名称を指定します。

CNAME:起動先のmcfaalcap定義コマンドのcnameオペランドに,request型論理端末が一つ以上定義されている内部通信路名を指定します。

×:アプリケーション起動機能を使用できないため,指定できません。

tempsize=継続問い合わせ応答用一時記憶データ格納用領域サイズ 〜〈符号なし整数〉((1〜32000))《4096》(単位:バイト)

継続問い合わせ応答で使用する一時記憶データ格納用領域サイズを指定します。ただし,typeオペランドでcontを指定した場合だけ有効です。

指定値に応じて動的共用メモリの容量を見積もる必要があります。動的共用メモリの見積もりは,「付録B.2 MCFサービス用の共用メモリの見積もり式」を参照してください。

trnmode=trn|nontrn 〜《trn》

アプリケーションのトランザクション属性を指定します。

trn

MHPの処理をトランザクションとして管理します。

trnを指定した場合,該当MHPのユーザサービス定義のatomic_updateオペランドにYを指定してください。

nontrn

MHPの処理をトランザクションとして管理しません。

送受信にはメモリキューが使用されます。

errevt=yes|no 〜《no》

通信イベントの受信メッセージを破棄した場合,および通信イベント処理用MHPが異常終了した場合の,エラーイベント通知(通信イベント障害時のエラーイベント通知機能の使用)の有無を指定します。

yes

エラーイベントを通知します。

no

エラーイベントを通知しません。

このオペランドは,nameオペランドで通信イベントを指定した場合に有効になります。

nameオペランドにエラーイベント(ERREVT1,ERREVT2,ERREVT3,ERREVT4,ERREVTA)を指定した場合,このオペランドの指定は無効になります。また,-nオプションのkindオペランドを省略またはuserを指定した場合は指定できません。

●-N

(オペランド)

modelname=モデルアプリケーション名|モデルMCFイベント名 〜〈1〜8文字の識別子〉

このアプリケーション属性定義で使用する定義情報を持つ(モデルとする)アプリケーション属性定義のアプリケーション名,またはMCFイベント名を指定します。ただし,指定したアプリケーション名,またはMCFイベント名に対する,アプリケーション属性定義が先に定義されていなければなりません。

このオペランドを指定したときは,-nオプションのnameオペランド以外のオプション,またはオペランドを省略できます。

-nオプションのnameオペランド以外のオプション,またはオペランドを省略した場合,modelnameオペランドに指定したアプリケーション名,またはMCFイベント名の定義指定値がすべて流用されます。

アプリケーション属性定義に-Nオプション以外のオプション,またはオペランドを指定した場合は,指定したオプション,またはオペランドの指定値が適用されます。

このオペランドは2回以上指定できません。また,モデルとしたアプリケーション名,またはMCFイベント名と,-Nオプション以外に指定したオペランドの組み合わせによっては,相関チェックによってエラーになる場合があります。そのため,次に示すオペランドには,モデル定義と異なる指定をしないでください。

  • -nオプションのtypeオペランド

  • -gオプションのquekindオペランド

●-g

(オペランド)

servgrpn=サービスグループ名 〜〈1〜31文字の識別子〉

アプリケーション名に対応するサービスグループ名を指定します。

サービスグループ名は,ユーザサービス定義に指定してあるサービスグループ名を指定します。

指定したサービスグループの数に応じて静的共用メモリ,およびステータスファイルの容量を見積もる必要があります。静的共用メモリの見積もりは,「付録B.2 MCFサービス用の共用メモリの見積もり式」を参照してください。ステータスファイルの見積もりは,マニュアル「OpenTP1 運用と操作」の「ステータスファイルのサイズの見積もり式」の説明を参照してください。

quegrpid=キューグループID 〜〈1〜8文字の識別子〉

入力メッセージのキューグループIDを指定します。MCFマネジャ定義のmcfmqgidコマンドで指定するキューグループID(キュー種別はitq)のどれかを指定します。

このオペランドは,quekindオペランドでdiskを指定した場合だけ指定します。

一つのサービスグループに対して,異なるキューグループを定義することはできません。異なるキューグループを定義した場合,KFCA11008-Wメッセージが出力されます。一つのサービスグループに対して,異なるキューグループを定義しても,MCF開始時にすでに定義されたキューグループで登録し直します。

quekind=memory|disk 〜《memory》

入力メッセージの割り当て先(メモリキューまたはディスクキュー)を指定します。

memory

メモリキューに割り当てます。

disk

ディスクキューに割り当てます。

diskを指定した場合,必ずquegrpidオペランドを指定してください。

mcfuevtコマンドで直接MHPを起動する場合に,diskを指定すると,リラン後にUCMDEVTが再スケジュールされることがあります。

-nオプションのtrnmodeオペランドでnontrnを指定した場合,diskを指定できません。

srvghold=m|s 〜《m》

アプリケーションが異常終了した場合のサービスグループの処置を指定します。

m

サービスグループを閉塞しません。

s

サービスグループを閉塞します。スケジュールを禁止します。

次の場合には,この定義の指定値に関係なく,サービスグループを閉塞しません。

  • dc_mcf_rollback関数にDCMCFRTRYを指定(CBLDCMCF('ROLLBACK')にRTRYを指定)してロールバックした場合

  • アプリケーション属性定義(mcfaalcap)またはUAP共通定義(mcfmuap)のreschedulecntオペランドの指定値が1以上の場合に,MHPが異常終了したとき

アプリケーションに対応するサービス開始前にユーザサービスが異常終了した場合,この定義の指定値に関係なく,ユーザサービス定義またはユーザサービスデフォルト定義のholdオペランドおよびterm_watch_timeオペランドの指定値によって,サービスグループを閉塞するかどうかが決まります。

recvmsg=e|r 〜《e》

異常終了したUAPの受信メッセージの扱いを指定します。

このオペランドは,srvgholdオペランドでsを指定したサービスグループが閉塞されたときに有効となります。

e

処理途中のメッセージをエラーイベントに切り替えます。

r

自動閉塞時に処理途中のメッセージを,スケジュールキューの先頭に再登録し,スケジュール待ち状態にします。ただし,-gオプションのquekindオペランドでdiskを指定したときだけ有効です。memoryを指定した場合は,閉塞時に発生するERREVT2としてスケジュールします。

なお,このオペランドはスケジュールの順序性を保証するものではありません。

●-v

(オペランド)

servname=サービス名 〜〈1〜31文字の識別子〉

アプリケーション名に対応するサービス名を指定します。

サービス名は,ユーザサービス定義に指定してあるサービス名を指定します。

指定したサービスの数に応じて静的共用メモリの容量を見積もる必要があります。静的共用メモリの見積もりは,「付録B.2 MCFサービス用の共用メモリの見積もり式」を参照してください。

servhold=m|a|s 〜《m》

アプリケーションが異常終了した場合のサービスの処置を指定します。

m

サービスを閉塞しません。

a

サービスを閉塞します。入力およびスケジュールを禁止します。

s

サービスを閉塞します。スケジュールを禁止します。

次の場合には,この定義の指定値に関係なく,サービスを閉塞しません。

  • dc_mcf_rollback関数にDCMCFRTRYを指定(CBLDCMCF('ROLLBACK')にRTRYを指定)してロールバックした場合

  • アプリケーション属性定義(mcfaalcap)またはUAP共通定義(mcfmuap)のreschedulecntオペランドの指定値が1以上の場合に,MHPが異常終了したとき

  • アプリケーションに対応するサービス開始前にユーザサービスが異常終了した場合

ntmetim=非トランザクションMHP限界経過時間 〜〈符号なし整数〉((0〜65535))(単位:秒)

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

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

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

指定を省略した場合は,UAP共通定義(mcfmuap)の-uオプションに指定したntmetimオペランドの値を仮定します。

このオペランドは,-nオプションのtrnmodeオペランドでnontrnを指定したときに有効となります。

注意事項

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

●-d

(オペランド)

holdlimit=アプリケーション異常終了限界回数 〜〈符号なし整数〉((1〜65535))《1》(単位:回)

アプリケーションの異常終了限界回数を指定します。ここで指定した回数分の異常終了が起こると,そのアプリケーション,サービス,またはサービスグループを閉塞します。ただし,-nオプションのapliholdオペランドまたは-vオプションのservholdオペランドで,aまたはsを指定した場合,および-gオプションのsrvgholdオペランドでsを指定した場合だけ有効です。

-dオプションにreschedulecntオペランドを指定している場合,reschedulecntオペランドの指定値を超えるまでの異常終了回数は,ここで指定した回数に含まれません。また,dc_mcf_rollback関数にDCMCFRTRYを指定(CBLDCMCF('ROLLBACK')にRTRYを指定)して異常終了した場合も,アプリケーション異常終了限界回数にカウントしません。

holdlmtyp=sum|cont 〜《cont》

holdlimitオペランドを指定した場合のアプリケーション異常終了回数のカウント方法を指定します。

sum

アプリケーションが異常終了した累積回数をカウントします。

次に示すとき,カウントリセットします

  • mcfaactapコマンドを実行したとき

  • mcfaclcapコマンドを実行したとき

  • OpenTP1の終了/開始時

cont

アプリケーションが連続して異常終了した場合にカウントします。

次に示すとき,カウントリセットします

  • mcfaactapコマンドを実行したとき

  • mcfaclcapコマンドを実行したとき

  • MHPサービス関数が正常終了したとき

  • OpenTP1の終了/開始時

注※

dcsvstopコマンド,dcsvstartコマンド,mcftactsgコマンド,またはmcftactsvコマンドではカウント値はリセットされません。

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

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

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

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

指定を省略した場合は,UAP共通定義(mcfmuap)の-rオプションに指定したreschedulecntオペランドの値を仮定します。

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

なお,異常終了したMHPを再スケジュールするには,アプリケーション起動プロセスが必要です。アプリケーション起動プロセス用のMCF通信構成定義を作成してください。

また,指定した回数を超えるまでは,-dオプションのholdlimitオペランドで指定したアプリケーション異常終了回数をカウントしません。このため,アプリケーション,サービス,およびサービスグループは閉塞されません。

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

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

指定を省略した場合は,UAP共通定義(mcfmuap)の-rオプションに指定したrescheduleintオペランドの値を仮定します。

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

注※

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

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

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

reschedulelog=yes|no

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

指定を省略した場合は,UAP共通定義(mcfmuap)の-rオプションに指定したreschedulelogオペランドの値を仮定します。

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

yes

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

no

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

●-j

(オペランド)

ij=yes|no 〜《no》

他システムから受信したメッセージを入力キューに登録する場合に,履歴情報(IJ)を取得するかどうかを指定します。

-nオプションのkindオペランドでmcfを指定した場合,ijオペランドの指定は無効になります。

入力キューを経由しない同期送受信関数(dc_mcf_sendrecv関数)による受信メッセージは,履歴情報の取得対象外になります。

yes

取得します。

no

取得しません。

oj=yes|no 〜《no》

UAPからのメッセージ送信要求時に,履歴情報(OJ)を取得するかどうかを指定します。

-nオプションのkindオペランドでmcfを指定した場合,ojオペランドの指定は無効になります。

出力キューを経由しない同期送受信関数(dc_mcf_sendrecv関数)による送信メッセージは,履歴情報の取得対象外になります。

yes

取得します。

no

取得しません。

gj=yes|no 〜《no》

UAPからのメッセージ受信要求時に,履歴情報(GJ)を取得するかどうかを指定します。

-nオプションのkindオペランドでmcfを指定した場合,gjオペランドの指定は無効になります。

yes

取得します。

no

取得しません。

●-e

(オペランド)

evtlogout=yes|no 〜《no》

ERREVT1〜ERREVT4を起動するとき,ログメッセージを出力するかどうかを指定します。

このオペランドは,-nオプションのkindオペランドでmcfを指定し,-nオプションのnameオペランドでERREVT1〜ERREVT4を指定した場合だけ有効です。

yes

ログメッセージを出力します。

ログメッセージとして,KFCA11194-Iメッセージとともに,次の内容が出力されます。

・MCF識別子

・エラーイベント名

・理由コード

・エラーイベント起動の原因となったアプリケーション名

KFCA11194-Iメッセージの詳細については,マニュアル「OpenTP1 メッセージ」を参照してください。

なお,trnmodeオペランドにtrnを指定した場合は,ユーザサービス定義のtrn_rollback_information_putオペランドでロールバック要因のログを取得するように指定することをお勧めします。ERREVT3の発生要因を調査する際に必要になることがあります。

no

ログメッセージを出力しません。