Hitachi

ノンストップデータベース HiRDB Version 9 UAP開発ガイド


8.4.2 X/Openに従ったAPI(TX_関数)を使用したUAPの実行

X/Openに従ったAPI(TX_関数)を使用したUAPは,専用のライブラリを使用します。TX_関数を使用したUAPをコンパイル,及びリンケージする場合,TX_関数専用のライブラリとHiRDBが提供するライブラリとを結合させる必要があります。

〈この項の構成〉

(1) X/Openに従ったAPI(TX_関数)を使用したUAPのプリプロセス

TP1/LiNK(トランザクション制御)と連携しているHiRDBでUAPを実行する場合の注意事項について説明します。

TP1/LiNKと連携できるのは,HiRDBサーバ,HiRDBクライアントが,Windows同士の場合です。

(a) UAPのプリプロセス,リンケージ

TP1/LiNK環境下で実行するUAPをプリプロセス,リンケージする場合,次のようにしてください。

  • プリプロセス

    SQLプリプロセサ実行時に,次のオプションを指定してください。

    • /XAD:COBOL言語でUAPをDLLとして作成する場合に指定してください。

    • /XA:上記以外の場合はすべてこちらを指定してください。

    C言語の場合のコマンド指定例:

      PDCPP SAMPLE /XA

    COBOL言語の場合のコマンド指定例:

      PDCBL SAMPLE.ECB /XAD
  • リンケージ

    UAPをリンケージする場合に,次のライブラリをリンクしてください。

    • %PDDIR%\CLIENT\LIB\PDCLTX32.LIB

    CLTDLL.LIBはリンクしないでください。

(2) OpenTP1を使用する場合

OpenTP1を使用した場合の,UAPのコンパイル及びリンケージについて説明します。

なお,OpenTP1でのコンパイル,及びリンケージの詳細については,マニュアル「OpenTP1 プログラム作成リファレンス C言語編」,又はマニュアル「OpenTP1 プログラム作成リファレンス COBOL言語編」を参照してください。

(a) C言語の場合

  • トランザクションオブジェクトファイルの作成

OpenTP1でHiRDBをアクセスするUAPを作成するとき,OpenTP1運用コマンドでトランザクション制御用オブジェクトファイルを作成する必要があります。

トランザクション制御用オブジェクトファイルは,trnmkobjコマンドを使用します。トランザクション制御用オブジェクトファイルを作成する場合,次のように指定します。

  trnmkobj -o 制御用オブジェクトファイル名称 -r HiRDB_DB_SERVER
<例>
  • トランザクション制御用オブジェクトファイル名称をseigyoとする場合

     trnmkobj -o seigyo -r HiRDB_DB_SERVER
  • コンパイル,及びリンケージ

APIを使用したUAPをコンパイル,及びリンケージする場合,次のように指定します。

共用ライブラリを使用する場合:
/usr/bin/cc -c -I$DCDIR/include -I/HiRDB/include ファイル名称.c
 
  /usr/bin/cc -o UAP実行形式ファイル名称 UAPファイル名称.o
  $DCDIR/spool/trnrmcmd/userobj/制御用オブジェクトファイル名称.o
  -L/HiRDB/client/lib -lzclty -L$DCDIR/lib -Wl,-B,immediate
  -Wl,-a,default -lbetran -L/usr/lib -ltactk -lbsd -lc
注1

下線で示す部分はHiRDBのインストールディレクトリです。

注2

HP-UX版の場合で,かつUAP作成時とUAP実行時とでHiRDBの提供ライブラリのディレクトリが異なるときは,オプション(-Wl,+s)を指定してください。また,リンケージ時と実行時とで提供ライブラリのディレクトリが異なるので,実行時には環境変数SHLIB_PATHで,提供ライブラリがあるディレクトリを設定する必要があります。

注3

HiRDBがX/Openに従ったAPIを使用したUAPのために提供するライブラリは,OLTPへ登録する方法によって次に示す4種類があります。リンケージで指定するライブラリ名は,OLTPへ登録する方法に合わせた名称を指定してください。

  • -lzcltx(動的登録)

  • -lzclty(静的登録/動的登録)

  • -lzcltxs(動的登録で,複数接続機能を使用する場合)

  • -lzcltys(静的登録/動的登録で,複数接続機能を使用する場合)

静的登録/動的登録は,TMに登録するスイッチ名称で静的登録又は動的登録のどちらかに切り替えられます。なお,登録方法については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」のHiRDBをトランザクションマネジャに登録する方法を参照してください。

注4

AIXで,X/Openに従ったAPIを使用したUAPを作成する場合,リンケージオプションに-brtlを指定する必要があります。

<例>

ファイル名称(UAP名)をsample,UAP実行形式ファイル名称をSAMPLE,トランザクション制御用オブジェクトファイル名称をseigyoとする場合

/usr/bin/cc -c -I$DCDIR/include -I/HiRDB/include sample.c
 
  /usr/bin/cc -o SAMPLE sample.o $DCDIR/spool/trnrmcmd/userobj/
  seigyo.o -L/HiRDB/client/lib -lzclty -L$DCDIR/lib
  -Wl,-B,immediate -Wl,-a,default
  -lbetran -L/usr/lib -ltactk -lbsd -lc
アーカイブライブラリを使用する場合:
/usr/bin/cc -c -I$DCDIR/include -I/HiRDB/include ファイル名称.c
 
  /usr/bin/cc -o UAP実行形式ファイル名称 UAPファイル名称.o
  $DCDIR/spool/trnrmcmd/userobj/制御用オブジェクトファイル名称.o
  -L/HiRDB/client/lib -lcltxa -L$DCDIR/lib -Wl,-B,immediate
  -Wl,-a,default -lbetran -L/usr/lib -ltactk -lbsd -lc
注1

下線で示す部分は,HiRDBのインストールディレクトリを指定してください。

注2

HiRDBが提供するアーカイブライブラリ(-lcltxa)は,OpenTP1が提供するライブラリ(-lbetran)より前に指定してください。

注3

HiRDBがX/Openに従ったAPIを使用したUAPのために提供するライブラリは,OLTPへ登録する方法によって次に示す2種類があります。リンケージで指定するライブラリ名は,OLTPへ登録する方法に合わせた名称を指定してください。

  • -lcltxa(動的登録)

  • -lcltya(静的登録/動的登録)

静的登録/動的登録は,TMに登録するスイッチ名称で静的登録又は動的登録のどちらかに切り替えられます。なお,登録方法については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」のHiRDBをトランザクションマネジャに登録する方法を参照してください。

<例>

ファイル名称(UAP名)をsample,UAP実行形式ファイル名称をSAMPLE,トランザクション制御用オブジェクトファイル名称をseigyoとする場合

/usr/bin/cc -c -I$DCDIR/include -I/HiRDB/include sample.c
 
  /usr/bin/cc -o SAMPLE sample.o $DCDIR/spool/trnrmcmd/userobj/
  seigyo.o -L/HiRDB/client/lib -lcltxa -L$DCDIR/lib
  -Wl,-B,immediate -Wl,-a,default
  -lbetran -L/usr/lib -ltactk -lbsd -lc

(b) COBOL言語の場合

  • トランザクションオブジェクトファイルの作成

OpenTP1でHiRDBをアクセスするUAPを作成するとき,OpenTP1運用コマンドでトランザクション制御用オブジェクトファイルを作成する必要があります。

トランザクション制御用オブジェクトファイルは,trnmkobjコマンドを使用します。トランザクション制御用オブジェクトファイルを作成する場合,次のように指定します。

  trnmkobj -o 制御用オブジェクトファイル名称 -r HiRDB_DB_SERVER
<例>
  • トランザクション制御用オブジェクトファイル名称をseigyoとする場合

  trnmkobj -o seigyo -r HiRDB_DB_SERVER
  • コンパイル,及びリンケージ

APIを使用したUAPをコンパイル,及びリンケージする場合,次のように指定します。

共用ライブラリの場合:
ccbl -o UAP実行形式ファイル名称 -Mw ファイル名称.cbl
  $DCDIR/spool/trnrmcmd/userobj/制御用オブジェクトファイル名称.o
  -L/HiRDB/client/lib -lzclty -L$DCDIR/lib -Wl,-B,immediate 
  -Wl,-a,default -lbetran -L/usr/lib -ltactk -lbsd -lc
注1

下線で示す部分は,HiRDBのインストールディレクトリを指定してください。

注2

HP-UX版の場合で,かつUAP作成時とUAP実行時とでHiRDBの提供ライブラリのディレクトリが異なるときは,オプション(-Wl,+s)を指定してください。また,リンケージ時と実行時とで提供ライブラリのディレクトリが異なるので,実行時には環境変数SHLIB_PATHで,提供ライブラリがあるディレクトリを設定する必要があります。

注3

HiRDBがX/Openに従ったAPIを使用したUAPのために提供するライブラリは,OLTPへ登録する方法によって次に示す4種類があります。リンケージで指定するライブラリ名は,OLTPへ登録する方法に合わせた名称を指定してください。

  • -lzcltx(動的登録)

  • -lzclty(静的登録/動的登録)

  • -lzcltxs(動的登録で,複数接続機能を使用する場合)

  • -lzcltys(静的登録/動的登録で,複数接続機能を使用する場合)

静的登録/動的登録は,TMに登録するスイッチ名称で静的登録又は動的登録のどちらかに切り替えられます。なお,登録方法については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」のHiRDBをトランザクションマネジャに登録する方法を参照してください。

注4

AIX版で,X/Openに従ったAPIを使用したUAPを作成する場合,リンケージオプションに-brtlを指定する必要があります。

<例>

ファイル名称(UAP名)をsample,UAP実行形式ファイル名称をSAMPLE,トランザクション制御用オブジェクトファイル名称をseigyoとする場合

ccbl -o SAMPLE -Mw sample.cbl 
  $DCDIR/spool/trnrmcmd/userobj/seigyo.o
  -L/HiRDB/client/lib -lzclty -L$DCDIR/lib -Wl,-B,immediate 
  -Wl,-a,default -lbetran -L/usr/lib -ltactk -lbsd -lc
アーカイブライブラリの場合:
ccbl -o UAP実行形式ファイル名称 -Mw ファイル名称.cbl
  $DCDIR/spool/trnrmcmd/userobj/制御用オブジェクトファイル名称.o
  -L/HiRDB/client/lib -lcltxa -L$DCDIR/lib -Wl,-B,immediate 
  -Wl,-a,default -lbetran -L/usr/lib -ltactk -lbsd -lc
注1

下線で示す部分は,HiRDBのインストールディレクトリを指定してください。

注2

HiRDBが提供するアーカイブライブラリ(-lcltxa)は,OpenTP1が提供するライブラリ(-lbetran)より前に指定してください。

注3

HiRDBがX/Openに従ったAPIを使用したUAPのために提供するライブラリは,OLTPへ登録する方法によって次に示す2種類があります。リンケージで指定するライブラリ名は,OLTPへ登録する方法に合わせた名称を指定してください。

  • -lcltxa(動的登録)

  • -lcltya(静的登録/動的登録)

静的登録/動的登録は,TMに登録するスイッチ名称で静的登録又は動的登録のどちらかに切り替えられます。なお,登録方法については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」のHiRDBをトランザクションマネジャに登録する方法を参照してください。

<例>

ファイル名称(UAP名)をsample,UAP実行形式ファイル名称をSAMPLE,トランザクション制御用オブジェクトファイル名称をseigyoとする場合

ccbl -o SAMPLE -Mw sample.cbl 
  $DCDIR/spool/trnrmcmd/userobj/seigyo.o
  -L/HiRDB/client/lib -lcltxa -L$DCDIR/lib -Wl,-B,immediate 
  -Wl,-a,default -lbetran -L/usr/lib -ltactk -lbsd -lc

(3) TPBroker for C++を使用する場合

TPBroker for C++を使用した場合の,UAPのコンパイル及びリンケージについて説明します。なお,UAPはマルチスレッド対応のXAインタフェースを使用しているものとします。

なお,TPBroker for C++でのコンパイル及びリンケージ方法については,マニュアル「TPBroker ユーザーズガイド」を参照してください。

また,マルチスレッド対応のXAインタフェース専用ライブラリは,C言語及びC++言語にだけ対応しています。

(a) トランザクションオブジェクトファイルの作成

TPBroker for C++でHiRDBをアクセスするUAPを作成するとき,TPBroker for C++のコマンド(tsmkobjコマンド)でトランザクション制御用オブジェクトファイルを作成します。指定例を次に示します。

tsmkobj -o 制御用オブジェクトファイル名 -r HiRDB_DB_SERVER

(b) コンパイル及びリンケージ

UAPをコンパイル及びリンケージする場合の指定例を次に示します。

aCC +inst_implicit_include +DAportable -c -I$TPDIR/include
    -I$TPDIR/include/dispatch -I/HiRDB/include -D_REENTRANT
    -D_HP_UX_SOURCE -D_POSIX_C_SOURCE=199506Lファイル名.c
aCC +inst_implicit_include +Daportable -o UAP実行形式ファイル名 UAPファイル名.o
    $TPDIR/otsspool/XA/制御用オブジェクトファイル名称.o
    -L/HiRDB/client/lib -lzcltxk -L$TPDIR/lib -Wl,+s -lots_r -lorb_r
    -Wl,-B,immediate -Wl,-a,default -L/usr/lib -lpthread
注1

下線で示す部分は,HiRDBクライアントのインストールディレクトリを指定してください。

注2

HP-UX版の場合で,かつUAP作成時とUAP実行時とでHiRDBの提供ライブラリのディレクトリが異なるときは,オプション(-Wl,+s)を指定してください。また,リンケージのときと実行時とで提供ライブラリのディレクトリが異なるので,実行時には環境変数SHLIB_PATHで,提供ライブラリがあるディレクトリを設定する必要があります。

注3

マルチスレッド対応のXAインタフェースを使用したUAPのため,HiRDBが提供するライブラリは,OLTPへ登録する方法(動的登録又は静的登録)によって,二種類(-lzcltxk又は-lzcltyk)あります。リンケージで指定するライブラリ名は,それに合わせた名称を指定してください。

(4) TUXEDOを使用する場合

TUXEDOを使用した場合の,UAPのコンパイル及びリンケージについて説明します。なお,XAインタフェース専用のライブラリは,C言語又はC++言語にだけ対応しています。

(a) UNIX版の場合

  • トランザクションマネジャサーバ(TMS)のロードモジュールの構築

    buildtms -r HiRDB_DB_SERVER -o TMSロードモジュールファイル名
  • TUXEDOシステムのサーバのロードモジュールの構築

    buildserver -r HiRDB_DB_SERVER -s サービス名 -o サーバロードモジュールファイル名
               -f サーバファイル名.o
  • TUXEDOクライアントモジュールの作成

    buildclient -o クライアントロードモジュール名 -f クライアントファイル名.c

(b) Windows版の場合

  • トランザクションマネジャサーバ(TMS)のロードモジュールの構築

    set LINK=/EXPORT:_imp_pdtxa_switch=pdtxa_switch
                /EXPORT:_inp_pdtxa_switch_y=pdtxa_switch_y
    buildtms -r HiRDB_DB_SERVER -o TMSロードモジュールファイル名
  • TUXEDOシステムのサーバのロードモジュールの構築

    set LINK=/EXPORT:_imp_pdtxa_switch=pdtxa_switch
                /EXPORT:_inp_pdtxa_switch_y=pdtxa_switch_y
    buildserver -r HiRDB_DB_SERVER -s サービス名 -o サーバロードモジュールファイル名
               -f サーバファイル名.obj
  • TUXEDOクライアントモジュールの作成

    buildclient -o クライアントロードモジュール名 -f クライアントファイル名.c

(5) TP1/EEを使用する場合(UNIX版限定)

TP1/EEを使用した場合の,UAPのコンパイル及びリンケージについて説明します。なお,TP1/EEのコマンドについては,マニュアル「TP1/Server Base Enterprise Option 使用の手引」を参照してください。

(a) C言語の場合

  • リソースマネジャ連携用オブジェクトファイルの作成

    TP1/EEでHiRDBをアクセスするUAPを作成する場合,TP1/EE運用コマンドでリソースマネジャ連携用オブジェクトファイルを作成する必要があります。リソースマネジャ連携用オブジェクトファイルは,eetrnmkobjコマンドで作成します。

    リソースマネジャ連携用オブジェクトファイルを作成する場合,次のように指定します。

    eetrnmkobj -o リソースマネジャ連携用オブジェクトファイル名称 -r HiRDB_DB_SERVER  \
               -s RMスイッチ名称 -O RM関連オブジェクトファイル名称  \
               -i HiRDB提供ヘッダパス
    <例>

    リソースマネジャ連携用オブジェクトファイル名称をseigyoとして,静的登録方式で作成する場合

    eetrnmkobj -o seigyo -r HiRDB_DB_SERVER -s pdtxa_switch_y  \
               -O /HiRDB/client/lib/libzcltyk.sl -i /HiRDB/include
  • コンパイル,及びリンケージ

    マルチスレッド対応XAインタフェースを使用したUAPをコンパイル,及びリンケージする場合,次のように指定します。

    • 共用ライブラリを使用する場合

      /usr/vac/bin/xlc_r -o 実行形式ファイル名 $DCDIR/lib/ee_main.o
          リソースマネジャ連携用オブジェクト -brtl -bdynamic -L/HiRDB/lib -L/HiRDB/client/lib
          -L$DCDIR/lib -lpthread -lisode -lc_r -ldl -lzcltyk -lee -lee_rm
          -lbetran2 -ltactk
    注1

    下線で示す部分は,HiRDBクライアントのインストールディレクトリを指定してください。

    注2

    マルチスレッド対応XAインタフェースを使用した,TP1/EEのUAPのためのライブラリとして,-lzcltykを使用します。リンケージで指定するライブラリ名は,それに合わせた名称を指定してください。なお,登録方法については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照してください。

    <例>

    UAP実行形式ファイル名称をSAMPLE,リソースマネジャ連携用オブジェクトファイル名称をseigyoとする場合

    /usr/vac/bin/xlc_r -o SAMPLE $DCDIR/lib/ee_main.o seigyo.o
         -brtl -bdynamic -L/HiRDB/lib -L/HiRDB/client/lib -L$DCDIR/lib
         -lpthread -lisode -lc_r -ldl -lzcltyk -lee -lee_rm -lbetran2 -ltactk

(b) COBOL言語の場合

  • リソースマネジャ連携用オブジェクトファイルの作成

    TP1/EEでHiRDBをアクセスするUAPを作成する場合,TP1/EE運用コマンドでリソースマネジャ連携用オブジェクトファイルを作成する必要があります。リソースマネジャ連携用オブジェクトファイルは,eetrnmkobjコマンドで作成します。

    リソースマネジャ連携用オブジェクトファイルを作成する場合,次のように指定します。

    eetrnmkobj -o リソースマネジャ連携用オブジェクトファイル名称 -r HiRDB_DB_SERVER  \
               -s RMスイッチ名称 -O RM関連オブジェクトファイル名称  \
               -i HiRDB提供ヘッダパス
    <例>

    リソースマネジャ連携用オブジェクトファイル名称をseigyoとして,静的登録方式で作成する場合

    eetrnmkobj -o seigyo -r HiRDB_DB_SERVER -s pdtxa_switch_y  \
               -O /HiRDB/client/lib/libzcltyk.sl -i /HiRDB/include
  • コンパイル,及びリンケージ

    マルチスレッド対応XAインタフェースを使用したUAPをコンパイル,及びリンケージについては,マニュアル「TP1/Server Base Enterprise Option 使用の手引」を参照してください。