スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

[目次][索引][前へ][次へ]

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

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

なお,Linux for AP8000版のクライアントの場合,X/Openに従ったAPI(TX_関数)を使用したUAPの実行はできません。

<この項の構成>
(1) X/Openに従ったAPI(TX_関数)を使用したUAPのプリプロセス
(2) OpenTP1を使用する場合
(3) TPBroker for C++を使用する場合
(4) TUXEDOを使用する場合
(5) TP1/EEを使用する場合(UNIX版限定)

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

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

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

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

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

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

C言語の場合のコマンド指定例:
 
PDCPP SAMPLE /XA
 

COBOL言語の場合のコマンド指定例:
 
PDCBL SAMPLE.ECB /XAD
 

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

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

注3
HiRDBがX/Openに従ったAPIを使用したUAPのために提供するライブラリは,OLTPへ登録する方法によって次に示す4種類があります。リンケージで指定するライブラリ名は,OLTPへ登録する方法に合わせた名称を指定してください。
  • -lzcltx(動的登録)
  • -lzclty(静的登録/動的登録)
  • -lzcltxs(動的登録で,複数接続機能を使用する場合)
  • -lzcltys(静的登録/動的登録で,複数接続機能を使用する場合)
静的登録/動的登録は,TMに登録するスイッチ名称で静的登録又は動的登録のどちらかに切り替えられます。なお,登録方法については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」の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 8 システム導入・設計ガイド」の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
UAP作成時とUAP実行時とで,HiRDBの提供ライブラリのディ
レクトリが異なる場合,オプション(-Wl,+s)を必ず指定してください。また,リンケージ時と実行時とで提供ライブラリのディレクトリが異なるので,実行時には環境変数SHLIB_PATHで,提供ライブラリがあるディレクトリを設定する必要があります。

注3
HiRDBがX/Openに従ったAPIを使用したUAPのために提供するライブラリは,OLTPへ登録する方法によって次に示す4種類があります。リンケージで指定するライブラリ名は,OLTPへ登録する方法に合わせた名称を指定してください。
  • -lzcltx(動的登録)
  • -lzclty(静的登録/動的登録)
  • -lzcltxs(動的登録で,複数接続機能を使用する場合)
  • -lzcltys(静的登録/動的登録で,複数接続機能を使用する場合)
静的登録/動的登録は,TMに登録するスイッチ名称で静的登録又は動的登録のどちらかに切り替えられます。なお,登録方法については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」の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 8 システム導入・設計ガイド」の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
UAP作成時とUAP実行時とで,HiRDBの提供ライブラリのディレクトリが異なる場合,オプション(-Wl,+s)を必ず指定してください。また,リンケージのときと実行時とで提供ライブラリのディレクトリが異なるので,実行時には環境変数SHLIB_PATHで,提供ライブラリがあるディレクトリを設定する必要があります。

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

(4) TUXEDOを使用する場合

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

(a) UNIX版の場合
(b) Windows版の場合

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

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

(a) C言語の場合
(b) COBOL言語の場合