分散トランザクション処理機能 OpenTP1 使用の手引 Windows(R)編
ここでは,HiRDBと連携するために必要な設定について説明します。
OpenTP1システムにHiRDBを登録します。OpenTP1システムへのHiRDBの登録には,trnlnkrmコマンドを使用します。
HiRDB Version 8の場合のtrnlnkrmコマンドの実行例を次に示します。
trnlnkrm -a HiRDB_DB_SERVER -s pdtxa_switch -o pdcltx32.lib |
trnlnkrmコマンドについては,「7. 運用コマンド」を参照してください。また,trnlnkrmコマンドに指定する「RM名」,「RMスイッチ名」,「RM関連オブジェクト名」などについては,マニュアル「スケーラブルデータベースサーバ HiRDB システム導入・設計ガイド」を参照してください。
trnlnkrmコマンドを実行する場合の注意事項を次に示します。
prcsvpath c:\hirdb_s\client\utl |
HiRDBにアクセスするために,HiRDBの環境変数に値を設定します。環境変数は,次に示すOpenTP1のシステム定義にputenv形式で設定します。
トランザクションサービス定義の定義例を次に示します。
putenv PDHOST host1 putenv PDNAMEPORT 22200 putenv PDTMID smpl putenv PDSWAITTIME 6000 |
ユーザサービス定義またはユーザサービスデフォルト定義の定義例を次に示します。
putenv PDHOST host1 putenv PDNAMEPORT 22200 putenv PDTMID smpl putenv PDSWAITTIME 6000 putenv PDUSER '"root"/"root"' putenv PDXAMODE 1 |
OpenTP1のシステム定義については,「5. システム定義」を参照してください。設定が必要な環境変数名や設定値などについては,HiRDBのインストール時の設定値や,マニュアル「スケーラブルデータベースサーバ HiRDB UAP開発ガイド」を参照してください。
トランザクションサービス定義のtrnstring定義コマンドで,リソースマネジャにアクセスするための情報を指定します。HiRDBと連携する場合は,trnstring定義コマンドの-nオプション,および必要に応じて-dオプションを指定してください。
なお,xa_open関数用文字列,およびxa_close関数用文字列(trnstring定義コマンドの-oオプション,-Oオプション,-cオプション,および-Cオプションで指定)については,指定する必要はありません。
トランザクションサービス定義の定義例を次に示します。
trnstring -n HiRDB_DB_SERVER |
HiRDBにアクセスするUAPを翻訳(コンパイル)および結合(リンケージ)する場合,trnmkobjコマンドで%DCDIR%\spool\trnrmcmd\userobj下に作成したトランザクション制御用オブジェクトをリンケージする必要があります。
コンパイルとリンケージの手順については,「3.2 UAPの翻訳と結合」,マニュアル「OpenTP1 プログラム作成リファレンス」の該当する言語編,およびマニュアル「スケーラブルデータベースサーバ HiRDB UAP開発ガイド」を参照してください。trnmkobjコマンドについては,「7. 運用コマンド」を参照してください。
HiRDBにアクセスするUAP用トランザクション制御用オブジェクトの作成例を,C言語の場合とCOBOL言語の場合に分けて次に示します。
trnmkobj -o rm_obj -r HiRDB_DB_SERVER |
trnmkobj -o rm_obj -C "/Zl" -r HiRDB_DB_SERVER |
C言語でSPPを作成する場合のメイクファイルの例を示します。
メイクファイルの例中で使用するソースファイル名を次に示します。
メイクファイルの例を次に示します。
NODEBUG = 1
!include <ntwin32.mak>
#TP1TEST Make File
SYSLIB = $(conlibsdll)
TP1LIB = [libdam.lib]※1 [libtam.lib]※2 libbetran.lib
HIRDBLIB = pdcltx32.lib
all:TP1TEST.exe
#コンパイル
exmain.obj:exmain.c
$(cc) $(cflags) $(cvarsdll) $*.c
exsv1.obj:exsv1.c
$(cc) $(cflags) $(cvarsdll) $*.c
exsv2.obj:exsv2.c
$(cc) $(cflags) $(cvarsdll) $*.c
ex_sstb.obj:ex_sstb.c
$(cc) $(cflags) $(cvarsdll) $*.c
exproc.obj:exproc.c
$(cc) $(cflags) $(cvarsdll) $*.c
#スタブソースファイルの作成
ex_sstb.c:ex.def
$(DCDIR)\bin\stbmake $?
#プリコンパイルの実行
exproc.c:exproc.ec
$(PDDIR)\client\utl\pdcpp /XA $?
#リンケージ
TP1TEST.exe: exmain.obj exsv1.obj exsv2.obj ex_sstb.obj exproc.obj
$(link) $(conflags) -out:$*.exe $** \
[$(DCDIR)\spool\trnrmcmd\userobj\rm_obj.obj \]※3
$(TP1LIB) $(SYSLIB) $(HIRDBLIB)
|
COBOL言語でSPPを作成する場合のメイクファイルの例を示します。
メイクファイルの例中で使用するソースファイル名を次に示します。
メイクファイルの例を次に示します。
!include <ntwin32.mak>
#TP1TEST Make File
CBLFG1 = -Compile,NoLink -Comp5 -Lib,CUI -SQL,ODBC -Main,System
CBLFG2 = -Compile,NoLink -Comp5 -Lib,CUI -SQL,ODBC
SYSLIB = $(conlibsdll)
TP1LIB = [libdam.lib]※1 [libtam.lib]※2 libbetran.lib
HIRDBLIB = pdcltx32.lib
CCBL = ccbl2002
LK = ccbl2002 -Lib,CUI
all:TP1TEST.exe
#コンパイル
main.obj:main.cbl
$(CCBL) $(CBLFG1) main.cbl
sev1.obj:sev1.cbl
$(CCBL) $(CBLFG2) sev1.cbl
sev2.obj:sev2.cbl
$(CCBL) $(CBLFG2) sev2.cbl
exprocb1.obj:exprocb1.cbl
$(CCBL) $(CBLFG2) exprocb1.cbl
exprocb2.obj:exprocb2.cbl
$(CCBL) $(CBLFG2) exprocb2.cbl
ex_sstb.obj:ex_sstb.c
$(cc) $(cflags) /Zl $(cvarsdll) $*.c
#スタブソースファイルの作成
ex_sstb.c:ex.def
$(DCDIR)\bin\stbmake $?
#プリコンパイルの実行
exprocb1.cbl:exprocb1.ecb
$(PDDIR)\client\utl\pdcbl /XA $?
exprocb2.cbl:exprocb2.ecb
$(PDDIR)\client\utl\pdcbl /XA $?
#リンケージ
TP1TEST.exe: main.obj sev1.obj sev2.obj ex_sstb.obj \
exprocb1.obj exprocb2.obj
$(LK) -OutputFile $*.exe $** \
[$(DCDIR)\spool\trnrmcmd\userobj\rm_obj.obj \]※3
$(TP1LIB) $(SYSLIB) $(HIRDBLIB)
|
All Rights Reserved. Copyright (C) 2010, 2013, Hitachi, Ltd.