Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス COBOL言語編


CBLDCMCF('TIMERSET')

〈このページの構成〉

名称

ユーザタイマ監視の設定

形式

PROCEDURE DIVISIONの指定

CALL  'CBLDCMCF' USING 一意名1 一意名2 一意名3.

DATA DIVISIONの指定

01 一意名1.
   02 データ名A  PIC X(8) VALUE 'TIMERSET'.
   02 データ名B  PIC X(5).
   02 FILLER    PIC X(3).
   02 データ名C  PIC X(16) VALUE LOW-VALUE.
01 一意名2.
   02 データ名D  PIC 9(9) COMP.
   02 データ名E  PIC 9(9) COMP.
   02 データ名F  PIC X(16) VALUE LOW-VALUE.
   02 データ名G  PIC X(8).
   02 データ名H  PIC X(8).
   02 データ名I  PIC X(16) VALUE LOW-VALUE.
01 一意名3.
   02 データ名J  PIC 9(9) COMP.
   02 データ名K  PIC X(n).

機能

ユーザで任意の時間監視をするには,UAPからCBLDCMCF('TIMERSET')でユーザタイマ監視を設定します。CBLDCMCF('TIMERSET')を呼び出すには,MCF通信構成定義 mcfttimの-pオプションにusertime=yesを指定する必要があります。

CBLDCMCF('TIMERSET')は,ユーザサーバからだけ呼び出せます。

データ名Dに指定した時間(単位:秒)を経過した(タイムアウトが発生した)場合,データ名Gで指定した論理端末からイベントを生成し,データ名Hに設定したアプリケーション名のMHPを起動させます。MHPからCBLDCMCF('TIMERSET')を呼び出す場合,データ名Gを省略できます。省略した場合,入力元論理端末を仮定します。

タイムアウト発生時に起動させるMHPは,非応答型(noans型)のMHPでなくてはなりません。このMHPにメッセージを渡す場合,一意名3で示す領域は次のようになります。

[図データ]

このMHPにメッセージが渡されたときの形式は「CBLDCMCF('RECEIVE ')」を参照してください。

CBLDCMCF('TIMERSET')で設定したユーザタイマ監視は,同一のデータ名Eおよびデータ名Gを指定したCBLDCMCF('TIMERCAN')関数を呼び出すことで取り消せます。

時間監視は,CBLDCMCF('TIMERSET')を呼び出した直後から行います。

同時に時間監視できる数は,MCF通信構成定義mcfttimの-pオプションのtimereqnoオペランドに指定した最大タイマ監視要求数までです。

UAPで値を設定するデータ領域

●データ名A

ユーザタイマ監視の設定を示す要求コードを「VALUE 'TIMERSET'」と設定します。

●データ名C

「LOW-VALUE」を設定します。

●データ名D

CBLDCMCF('TIMERSET')を呼び出してから,何秒後にMHPを起動させるかを設定します。設定できる秒数は,1から360000まで(1秒から100時間まで)です。

注意事項

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

●データ名E

タイマ要求識別子を設定します。

データ名Eはこのタイマを一意に識別するための情報です。データ名Eは,データ名Gで指定した論理端末内で必ずユニークになるようにしてください。

●データ名F

「LOW-VALUE」を設定します。

●データ名G

タイムアウトが発生したときにイベントを生成する論理端末名称を指定します。8文字に満たない名称を指定する場合は後ろを空白で埋めます。論理端末名称は,アプリケーション起動サービスの論理端末を指定してもかまいません。

MHPからこの関数を呼び出す場合は,論理端末名称を省略できます。省略する場合には,空白を指定します。省略した場合,入力元論理端末を仮定します。

●データ名H

起動させるMHPのアプリケーション名を指定します。このアプリケーションの属性は,データ名Gで指定した論理端末を持つMCF通信サーバのMCF通信構成定義mcftenv -aオプションで指定したMCFアプリケーション定義内のアプリケーション属性定義(mcfaalcap)に定義してください。8文字に満たない名称を指定する場合は後ろを空白で埋めます。MHPは非応答型(noans型)のMHPでなければなりません。指定するアプリケーション名はユーザイベントでなければなりません。

●データ名I

「LOW-VALUE」を設定します。

●データ名J

起動させるMHPに渡すメッセージセグメントの長さを設定します。起動させるMHPに渡すセグメントがない場合は,0を設定します。指定できる値の範囲は0から256までです。設定できる値の最大値はMCF通信構成定義 mcfttimの-pオプションのmsgsizeオペランドに指定した最大メッセージ長に依存します。

●データ名K

起動させるMHPに渡す,メッセージのセグメントの内容を設定します。複数のセグメントを設定できません。起動させるMHPに渡すセグメントがない場合は,ヌル文字を設定します。

OpenTP1から返されるデータ領域

●データ名B

ステータスコードが,5けたの数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

72016

データ名Cに設定した値が間違っています。

72028

データ名Aに設定した値が間違っています。

70900

データ名Iに設定した値が間違っています。

70909

データ名Dに設定した値が間違っています。

70910

データ名Eに設定した値が間違っています。

指定したタイマ要求識別子はすでに登録されています。

70911

データ名Fに設定した値が間違っています。

70912

データ名Gに設定した値が間違っています。

70913

データ名Hに設定した値が間違っています。

70914

データ名Jに設定した値が間違っています。

70915

データ名Kに設定した値が間違っています。

70916

要求された機能はMCFで定義されていません。

70917

タイマ登録領域に空きがないためユーザタイマ監視が設定できません。タイマ登録領域を確保するため,MCF通信構成定義mcfttimの-pオプションのtimereqnoオペランドの値を見直してください。必要に応じて,MCFマネジャ定義mcfmcomnの-pオプション,およびシステム環境定義static_shmpool_sizeオペランドの値を確認してください。

上記以外

プログラム破壊などによる,予期しないエラーが発生しました。