Hitachi

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


ee_dbq_obsstart

〈このページの構成〉

名称

オンラインバッチ処理の開始

形式

ANSI C,C++の形式

#include <eedbq.h>
int ee_dbq_obsstart(char *batchque_name, char *lot_name,
                    EEDBQOBSST *start_inf, EELONG flags)

機能

オンラインバッチ処理の開始要求を行います。

UAPで値を設定する引数

●batchque_name

DBキュー名を27バイト以内のアスキー文字列で設定します。文字列の末尾にはNULL文字を付けてください。このNULL文字は文字列の長さに数えません。

データ型オンラインバッチ処理を起動する場合は,定義ファイルで定義されているDBキュー名を指定してください。イベント型オンラインバッチ処理を起動する場合は,任意のDBキュー名を指定してください。オンラインバッチ処理開始以降の関数を呼び出すときに指定するDBキュー名は,この関数で指定したDBキュー名を指定します。

●lot_name

ロット名を23バイト以内のアスキー文字列で設定します。文字列の末尾にはNULL文字を付けてください。このNULL文字は文字列の長さに数えません。

●start_inf

DBキュー情報を構造体EEDBQOBSSTで設定します。構造体の形式は次のとおりです。

32ビットアーキテクチャの場合
struct  ee_dbq_obsstart_t{
  char    service_name[32];
  EEULONG lot_type;
  char    *cont_pt;
  EEULONG cont_sz;
}EEDBQOBSST;
64ビットアーキテクチャの場合
struct  ee_dbq_obsstart_t{
  char    service_name[32];
  EEULONG lot_type;
  char    yobi_1[4];
  char    *cont_pt;
  EEULONG cont_sz;
  char    yobi_2[4];
}EEDBQOBSST;
  • service_name(サービス名)

    該当するロットでの読み出しトランザクションを起動するサービス名を31バイト以内のアスキー文字列で設定します。文字列の末尾にはNULL文字を付けてください。このNULL文字は文字列の長さに数えません。文字列の先頭にNULL文字を設定した場合,定義の指定を有効にします。

  • lot_type(ロットのオンラインバッチ処理形態)

    次のフラグを設定します。

    EEDBQ_OBS_TYPE_DATA

    データ型オンラインバッチ処理を起動します。

    EEDBQ_OBS_TYPE_EVNT

    イベント型オンラインバッチ処理を起動します。

  • cont_pt(引き継ぎ情報を格納している領域のアドレス)

    引き継ぎ情報を格納している領域のアドレスを設定します。アドレスを設定する必要がない場合は,NULL文字を設定してください。

  • cont_sz(引き継ぎ情報を格納している領域のサイズ)

    引き継ぎ情報を格納している領域のサイズを設定します。0〜256バイトの範囲で設定できます。

●flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_CNDBPP

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

EECOMER_CNDUOC

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

EECOMER_ENVIRON

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

EEDBQER_ARGUMENT

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

EEDBQER_BEFORE_ROLLBACK

同一トランザクションで以前に行われた開始要求がエラーリターンしたあと,ロールバック処理が行われていないため,要求を受け付けません。

EEDBQER_CONDITION

関数の呼び出し条件が不正です。

EEDBQER_CONT_LEN

引き継ぎ情報を格納している領域のサイズが指定範囲外です。

EEDBQER_ENDSERVICE_STOP

オンラインバッチ処理を終了するためのサービスにエントリポイントが存在しないため,要求を受け付けません。

EEDBQER_LOT_SHORT

ロット管理テーブル面数が不足しました。

EEDBQER_MEMORY_SHORT

メモリが不足しました。

EEDBQER_NO_DBQUE

引数に設定したDBキュー名は存在しません。

EEDBQER_NO_LIBRARY

オンラインバッチ機能のライブラリがリンケージされていません。

EEDBQER_NO_LOT

引数に設定したロット名は存在しません。または,対象のロットではありません。

EEDBQER_NO_OPTION

オンラインバッチ機能は使用できません。

EEDBQER_NO_SERVICE

引数に設定したサービス名は存在しません。

EEDBQER_PROHIBIT

該当するロットが次に示す状態ではないため,要求を受け付けられません。

  • 初期状態

  • 該当するロットに対してAPI関数を呼び出したトランザクションが,コミットまたはロールバックしている

EEDBQER_RM_ACCESS

リソースマネジャへのアクセス時にエラーが発生しました。

EEDBQER_RM_CONNECT

該当するスレッドではリソースマネジャに接続されていません。

EEDBQER_SERVICE_STOP

引数に設定したサービス名はエントリポイントが存在しないため使用できません。

EEDBQER_TIMING

このAPI関数を呼び出せる状態ではありません。

EEDBQER_UNRESOLVABLE

そのほかのエラーが発生しました。

注意事項

  1. リターン値がEE_OK以外の場合,必ずロールバックを行ってください。

  2. 呼び出し元トランザクションがコミットしたときに,オンラインバッチ処理は開始します。

  3. 呼び出し元トランザクションがロールバックまたはコミットするまでの間,該当するロットが受け付けられるオンラインバッチのAPI関数は,ee_dbq_obsinquire関数だけです。ほかのオンラインバッチのAPI関数は受け付けません。