Hitachi

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


CBLEEMCH('CMTSNDSY')【XTC限定】

〈このページの構成〉

名称

トランザクション同期の一方送信メッセージの送信

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEMCH' USING 一意名1 一意名2

DATA DIVISIONの指定

01 一意名1.
  02 データ名A  PIC X(8) VALUE 'CMTSNDSY'.
  02 データ名B  PIC X(5).
  02 FILLER      PIC X(3).
  02 データ名C  PIC S9(9) COMP.
  02 データ名D  PIC X(4).
  02 データ名E  PIC X(32).
  02 データ名F  PIC X(32).
01 一意名2.
  02 データ名G  PIC 9(9) COMP.
  02 データ名H  PIC X(n).

機能

トランザクションのコミットが確定したとき,トランザクション処理と同じスレッドから一方送信メッセージをUDPプロトコルで送信します。これによって,SPPに対してサービスを要求します。トランザクションがロールバックとなった場合,メッセージは破棄されます。

サービスを要求するときには,「サービスグループ名」と「サービス名」をデータ領域に設定します。この名称に該当するサービスプログラムへサービスが要求されます。

CBLEEMCH('CMTSNDSY')を使う場合,サーバUAPがあるノードのTP1/EEが稼働していることが前提です。

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

●データ名A

サービスの要求を示す要求コードを「VALUE 'CMTSNDSY'」と設定します。

●データ名C

メッセージ送信形態とオプションを数値で設定します。

0

ユニキャストで一方送信メッセージを送信する場合に設定します。

1

マルチキャストでCLサーバに一方送信メッセージを送信する場合に設定します。

65536

自プロセスあてに一方送信メッセージを送信する場合に設定します。

一方送信メッセージを永続属性とする場合は,「16」を加算してください。

●データ名D

メッセージ送信先で登録された処理キューの中で優先的に起動するかどうかを設定します。

VALUE 'HI△△'

優先的に起動します。

VALUE 'LOW△'

優先的に起動しないで,登録した順序で起動します。

●データ名E

SPPのサービス名を,31バイト以内のアスキー文字列で設定します。文字列の最後には空白を設定してください。この空白は文字列の長さに数えません。

●データ名F

SPPのサービスグループ名を,31バイト以内のアスキー文字列で設定します。文字列の最後には空白を設定してください。この空白は文字列の長さに数えません。

●データ名G

サービスの入力パラメタ長(データ名Hの長さ)を設定します。1〜EEMCH_MAX_MESSAGE_SIZEの範囲の値を設定できます。EEMCH_MAX_MESSAGE_SIZEは,eemch.hで定義してあります。

注※

EEMCH_MAX_MESSAGE_SIZEの値は,将来拡張される場合があります。

●データ名H

サービスの入力パラメタを設定します。

TP1/EEから値が返されるデータ領域

●データ名B

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

ステータスコード

ここで示すステータスコードは,TP1/EEが返す値です。サービスプログラムが返す値ではありません。

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため,この機能は使用できません。

00005

オフラインバッチプロセスから発行しているため,この機能は使用できません。

08001

要求コード(データ名A)が間違っています。

08002

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

08003

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

08004

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

08005

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

08006

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

08008

データ名Gに設定した入力パラメタ長が,最大値を超えています。

08010

データ名Fに設定したサービスグループ名は,定義されていません。

08011

データ名Eに設定したサービス名は,定義されていません。

08030

発行条件が不正です。

08040

出力キュー(OTQ)が閉塞中,または閉塞解除処理中です。

08050

メモリが不足しました。

08099

システムエラーが起こりました。

CBLEEMCH('CMTSNDSY')がエラーになる場合

CBLEEMCH('CMTSNDSY')がエラーリターンする場合について説明します。

クラスタ連携関連定義のcluster_modeオペランドにYを指定している場合

CBLEEMCH('CMTSNDSY')は「08030」でエラーリターンします。その他の理由についてはCBLEEMCH('CMTSND ')の説明を参照してください。

注意事項

  1. 設定するサービスグループ名およびサービス名は,サーバUAPの環境設定で指定しておいてください。

  2. メッセージ送信時にエラーが発生した場合,高速メッセージ送信関連定義のmch_send_retry_countオペランドに従い,再送信を行います。再送信がエラーとなった場合は,ERRTRNSが起動されます。ただし,要求元のトランザクションがエラートランザクションの場合,ERRTRNSは起動されません。

    注※

    高速メッセージ送信関連定義のmch_send_err_rollbackオペランドでYを指定した場合は,ERRTRNRが起動されます。ただし,要求元のトランザクション種別がMNまたはTM以外の場合,ERRTRNRは起動されません。

  3. CLサーバでは使用できません。

  4. メッセージ送信は,自プロセスあてを含めUDP用送信バッファ(UOBF)を使用します。

  5. 高速メッセージ送信関連定義mch_send_err_rollbackオペランドでYを指定した場合は,自プロセスあて用のUDP用送信バッファは2倍必要です。

  6. この関数を発行したトランザクションでは,トランザクションの最適化は行われません。

  7. この関数は,トランザクションのコミット時に実行されます。したがって,トランザクションの同期点を取得する処理でエラーが起こった場合,この関数の処理は無効となります。