Hitachi

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


1.2.10 オンラインバッチ制御(ee_obm_〜)(C言語)

〈この項の構成〉

(1) ee_obm_lot_end

名称

ノーマルトランザクションのロットの終了要求

形式

ANSI C,C++の形式

#include <eeobm.h>
int ee_obm_lot_end(EELONG flags);
機能

ロットの正常終了を要求します。ノーマルトランザクションを起動したロットを正常終了します。ほかのロットを正常終了することはできません。

本関数を実行したサービス関数リターン後にトランザクションがコミット決着すると,ロットが正常終了します。

本関数を実行したサービス関数リターン後,トランザクションがロールバック決着した場合,またはスレッドダウンした場合はロットの終了要求は無効となります。

本関数は,イベント型OBMのノーマルトランザクションから実行できます。

UAPで値を設定する引数

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

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

EECOMER_CNDUOC

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

EECOMER_CNDBPP

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

EEOBMER_ARGUMENT

引数に設定した値が間違っています。

EEOBMER_CONDITION

発行条件が不正です。

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

  • OBM機能を使用していません。

  • イベント型OBMのノーマルトランザクションではありません。

  • ee_trn_rollback_mark関数を発行済みです。

EEOBMER_ORDER_INJUSTICE

同一トランザクションで次のどれかの関数を発行済みです。

  • ee_obm_lot_end()

  • ee_obm_lot_stop()

  • ee_obm_stop()

(2) ee_obm_lot_stop

名称

ノーマルトランザクションのロットの停止要求

形式

ANSI C,C++の形式

#include <eeobm.h>
int ee_obm_lot_stop(char stop_factor, char postprocessing, EELONG flags);
機能

ロットの停止を要求します。本関数は,ノーマルトランザクションから実行できます。ノーマルトランザクションを起動したロットを停止します。ほかのロットを停止することはできません。

本関数を実行したサービス関数リターン後にトランザクションがコミット決着すると,本関数で設定した停止要因でロットが停止します。

本関数を実行したサービス関数リターン後にトランザクションがロールバック決着した場合,またはスレッドダウンした場合はロットの停止要求は無効となります。

UAPで値を設定する引数

stop_factor

ロットの停止要因を設定します。計画停止は,イベント型OBMの場合だけ設定できます。

EEOBM_STOP_FORCE:強制停止します。

EEOBM_STOP_PLAN:計画停止します。

postprocessing

本関数を実行したノーマルトランザクションで処理していたバッチデータを処理済みとするか,未処理のままとするかを設定します。イベント型OBMの場合は,EEOBM_DATA_RETRYを設定してください。EEOBM_DATA_SKIPを設定しても無視します。

EEOBM_DATA_SKIP:バッチデータを処理済みとします。

EEOBM_DATA_RETRY:バッチデータを未処理のままとします。

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

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

EECOMER_CNDUOC

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

EECOMER_CNDBPP

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

EEOBMER_ARGUMENT

引数に設定した値が間違っています。

EEOBMER_CONDITION

発行条件が不正です。

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

  • OBM機能を使用していません。

  • ノーマルトランザクションではありません。

  • 停止要因に計画停止が設定されていますが,イベント型OBMではありません。

  • ee_trn_rollback_mark関数を発行済みです。

EEOBMER_ORDER_INJUSTICE

同一トランザクションで次のどれかの関数を発行済みです。

  • ee_obm_lot_end()

  • ee_obm_lot_stop()

  • ee_obm_stop()

(3) ee_obm_stop

名称

ノーマルトランザクションのOBMの停止要求

形式

ANSI C,C++の形式

#include <eeobm.h>
int ee_obm_stop(char stop_factor, EELONG reason_code, char postprocessing, EELONG flags);
機能

OBMの停止を要求します。本関数は,ノーマルトランザクションから実行できます。ノーマルトランザクションを起動したOBMを停止します。

本関数を実行したサービス関数リターン後にトランザクションがコミット決着すると,本関数で設定した停止要因でOBMが停止します。

本関数を実行したサービス関数リターン後にトランザクションがロールバック決着した場合,またはスレッドダウンした場合はOBMの停止要求は無効となります。

UAPで値を設定する引数

stop_factor

ロットの停止要因を設定します。計画停止は,イベント型OBMの場合だけ設定できます。

EEOBM_STOP_FORCE:強制停止します。

EEOBM_STOP_PLAN:計画停止します。

reason_code

任意の理由コードを設定します。本関数で設定した理由コードは,クローズトランザクション,終了/停止UOC,再開始UOCで参照できます。

postprocessing

本関数を実行したノーマルトランザクションで処理していたバッチデータを処理済みとするか,未処理のままとするかを設定します。イベント型OBMの場合は,EEOBM_DATA_RETRYを設定してください。EEOBM_DATA_SKIPを設定しても無視します。

EEOBM_DATA_SKIP:バッチデータを処理済みとします。

EEOBM_DATA_RETRY:バッチデータを未処理のままとします。

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

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

EECOMER_CNDUOC

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

EECOMER_CNDBPP

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

EEOBMER_ARGUMENT

引数に設定した値が間違っています。

EEOBMER_CONDITION

発行条件が不正です。

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

  • OBM機能を使用していません。

  • ノーマルトランザクションではありません。

  • 停止要因に計画停止が設定されていますが,イベント型OBMではありません。

  • ee_trn_rollback_mark関数を発行済みです。

EEOBMER_ORDER_INJUSTICE

同一トランザクションで次のどれかの関数を発行済みです。

  • ee_obm_lot_end()

  • ee_obm_lot_stop()

  • ee_obm_stop()

注意事項
  1. 複数のトランザクションでOBMの停止要求を実行した場合,最初にコミット決着したトランザクションで設定した停止要因,理由コードで停止します。

  2. 本関数を実行したトランザクションがコミット決着した場合でも,停止処理中に障害が発生した場合は,停止要因,理由コードは障害による停止要因,理由コードとなります。

(4) ee_obm_any_stop

名称

任意のOBMの停止要求

形式

ANSI C,C++の形式

#include <eeobm.h>
int ee_obm_any_stop(char *obm_name, char stop_factor, EELONG reason_code, EELONG flags);
機能

OBMの停止を要求します。実行中状態,初期化中状態,および再開始処理中状態のOBMに対して要求できます。

本関数が正常に終了すると,OBMを停止します。

本関数は,OBMのトランザクション以外のトランザクションからも実行できます。BCSのTP1/EEから実行する場合は,BCMとネゴシエーションが完了している必要があります。ネゴシエーションが完了していない場合に実行すると本関数はエラーリターンします。

OBMのノーマルトランザクションから該当OBMに対して停止要求を実行する場合は,ee_obm_stop()を使用することを推奨します。OBMのノーマルトランザクションから該当OBMに対して停止要求を実行した場合は,タイミングによっては,該当OBMが停止する前に本関数を実行したロットのノーマルトランザクションが何回か起動される場合があります。

OBMのオープントランザクションから該当OBMに対しての停止要求は,該当OBMのノーマルトランザクションが起動されることなくOBMが停止します。

UAPで値を設定する引数

obm_name

OBM名を8バイト以内のアスキー文字列で設定します。文字列の末尾にはヌル文字を付けてください。この空白は文字列の長さには数えません。

stop_factor

ロットの停止要因を設定します。計画停止は,イベント型OBMの場合だけ設定できます。

EEOBM_STOP_FORCE:強制停止します。

EEOBM_STOP_PLAN:計画停止します。

reason_code

任意の理由コードを設定します。本関数で設定した理由コードは,クローズトランザクション,終了/停止UOC,再開始UOCで参照できます。

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

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

EECOMER_CNDUOC

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

EECOMER_CNDBPP

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

EEOBMER_ARGUMENT

引数に設定した値が間違っています。

EEOBMER_CONDITION

発行条件が不正です。

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

  • OBM機能を使用していません。

  • ノーマルトランザクションではありません。

  • 停止要因に計画停止が設定されていますが,イベント型OBMではありません。

EEOBMER_STATE_INJUSTICE

状態不正。実行中状態ではありません。

EEOBMER_TIMING

  • タイミング不正。BCMとのネゴシエーションが未完了です。

  • テーブル排他の取得ができません。

EEOBMER_NO_SUCH_LOT

指定したOBM名は定義されていません。

EEOBMER_COMMUNICATE

BCMへの送信処理で障害が発生しました。

EEOBMER_TIMED_OUT

BCMからの応答待ち時間切れ(タイムアウト)になりました。

注意事項
  1. 複数のトランザクションでOBMの停止要求を実行した場合,最初に本関数を実行したトランザクションで設定した停止要因,理由コードで停止します。

  2. 本関数を実行後のOBMの停止処理中に障害が発生した場合は,停止要因,理由コードは障害による停止要因,理由コードとなります。

  3. EEOBMER_TIMED_OUTでリターンした場合は,停止要求は受け付けられていることがあります。

    再実行するか,BCMのTP1/EEでeeobmstslsコマンドを実行して状態を確認してください。

  4. 複数のBCMと接続しているBCSで本関数を実行した場合,通常使用BCM,切替用BCMの順番で停止要求を送信します。どちらかが停止要求を受け付ければ,本関数は,EE_OKでリターンします。両方でエラーとなった場合は,通常使用BCMからの応答に合わせてリターン値を設定します。ただし,通常使用BCMとは通信できずに,切替用BCMと通信できた場合は,切替用BCMからの応答に合わせてリターン値を設定します。

(5) ee_obm_recv

名称

バッチデータの受信

形式

ANSI C,C++の形式

#include <eeobm.h>
int ee_obm_recv(EEOBMKEY* data_key, EELONG *data_size, char **data_addr, EELONG flags);
 
typedef struct ee_obm_key{
  EELONG              key_len[7];       /* バッチデータのキー長 */
  char                key[7][8];        /* バッチデータのキー   */
  EELONG              data_no;          /* バッチデータの通番   */
} EEOBMKEY;
機能

ブロック送信機能を使用している場合に,ブロック内の後続レコードを受信します。データ型OBMのノーマルトランザクションで実行できます。

UAPで値を設定する引数

data_key

受信するバッチデータキーを格納する領域を指定します。

data_size

受信するバッチデータ長を格納する領域を指定します。

data_addr

受信するバッチデータを格納するエリアのアドレスを格納する領域を指定します。

flags

EENOFLAGSを設定します。

TP1/EEから値が返される引数

key_len

受信したバッチデータのキーの長さが返されます。リターン値がEE_OK,またはEEOBMER_OVERFLOWのときに参照できます。配列の3番目以降は今後の拡張用です。

key

受信したバッチデータのキーが返されます。リターン値がEE_OK,またはEEOBMER_OVERFLOWのときに参照できます。配列の3番目以降は今後の拡張用です。

data_no

受信したバッチデータの一連通番が返されます。リターン値がEE_OK,またはEEOBMER_OVERFLOWのときに参照できます。

data_size

受信したバッチデータの長さが返されます。リターン値がEE_OK,またはEEOBMER_OVERFLOWのときに参照できます。

data_addr

受信したバッチデータを格納したエリアのアドレスが返されます。リターン値がEE_OK,またはEEOBMER_OVERFLOWのときに参照できます。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

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

EECOMER_CNDUOC

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

EECOMER_CNDBPP

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

EEOBMER_ARGUMENT

引数に設定した値が間違っています。

EEOBMER_CONDITION

発行条件が不正です。

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

  • OBM機能を使用していません。

  • 本関数を実行できるトランザクションではありません。

  • ee_trn_rollback_mark関数を発行済みです。

  • データ型OBMではありません。

EEOBMER_OVERFLOW

入力メッセージ引き渡しエリア(IMA)がオーバフローしました

EEOBMER_NO_DATA

ブロックの全バッチデータを受信済みです。

注※

data_sizeにはdata_addrが指すアドレスに格納できたバッチデータのサイズが返されます。

注意事項
  1. 本関数では,トランザクション起動時にサービスプログラムにバッチデータを設定した領域(入力パラメタ,入力パラメタ長)を再利用します。本関数実行後に,前のバッチデータを参照したい場合は,あらかじめ別の領域に複写してください。