Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 テスタ・UAPトレース使用の手引


4.1 UAPの作成

MCFシミュレート機能を使用しないUAPは,実業務用のUAPと同様に作成してください。実業務用のUAPの作成方法は,マニュアル「OpenTP1 プログラム作成の手引」を参照してください。

MCFシミュレート機能を使用するUAPは,オンラインテスタが提供するシミュレート関数ライブラリを使用して作成します。ただし,リソースマネジャにTP1/Message Controlを登録してあるかどうかで,作成方法が変わります。

リソースマネジャにTP1/Message Controlを登録していない場合は,TP1/Message Controlの提供するライブラリ(libmcf.aまたはlibmcf2.a)の代わりに,オンラインテスタが提供するMCFシミュレート関数ライブラリとリンケージします※1※2

そのため,MCFシミュレート関数のライブラリとのリンケージを示す,'-lmuto'を指定します。TP1/Message Controlの提供するライブラリとのリンケージを示す,'-lmcf'(または'-lmcf2')を指定する必要はありません。

また,COBOL言語やDMLで作成したUAPについても,同様に'-lmcf'(または'-lmcf2')を'-lmuto'に変更してください。

リソースマネジャにTP1/Message Controlを登録している場合は,MCFシミュレート関数ライブラリ(libmuto.a)のあとに,TP1/Message Controlの提供するライブラリ(libmcf.aまたはlibmcf2.a)を付けてリンケージします。

MCFシミュレート機能を使用するUAPのコンパイルコマンドの例を,次に示します。

● リソースマネジャにTP1/Message Controlを登録していない場合

cc -qchars=signed -o example exmain.c exsv1.c exsv2.c ex_sstb.c
   -I$DCDIR/include -brtl -bexpall -L$DCDIR/lib
   -lmuto -lbetran2 -ltactk -lc
(凡例)

exmain.c:メイン関数

exsv1.c:サービス関数1

exsv2.c:サービス関数2

ex_sstb.c:スタブで作成したスタブソース

● リソースマネジャにTP1/Message Controlを登録している場合※3

cc -qchars=signed -o example exmain.c exsv1.c exsv2.c ex_sstb.c
   $DCDIR/spool/trnrmcmd/userobj/extrn.o
   -I$DCDIR/include -brtl -bexpall -L$DCDIR/lib
   -lmuto -lmcf2 -lmnet -lbetran2 -ltactk -lc
(凡例)

exmain.c:メイン関数

exsv1.c:サービス関数1

exsv2.c:サービス関数2

ex_sstb.c:スタブで作成したスタブソース

extrn.o:trnmkobjコマンドで作成したトランザクション制御用オブジェクトファイル名

注※1

アーカイブライブラリを使用する場合はlibmuto.a,共用ライブラリを使用する場合はlibmuto.soまたはlibmuto.slとリンケージしてください。ただし,AIX版ではアーカイブライブラリだけ提供します。

注※2

次の表に示すMCF関数を使用するUAPの場合は,libmuto.aの代わりにlibnpmuto.aとリンケージします。リンケージオプションは'-lmuto'の代わりに'-lnpmuto'を指定してください。

これらの関数をUAPで発行した場合,次のように動作します。

  • C言語の場合,リターン値には「0」を返し,OpenTP1が引数に返す値のうち,数値データには「0」,文字データには「\0」を返します。

  • COBOL言語の場合,ステータスコードには「00000」,OpenTP1が引数に返す値のうち,数値データには「0」,文字データには「半角スペース」を返します。

  • トレース情報の取得やMCF関数のシミュレートは処理しません。

    表4‒1 オンラインテスタが提供するシミュレート機能未サポートのMCF関数一覧

    関数名(C言語)

    関数名(COBOL言語)

    dc_mcf_adltap()

    CBLDCMCF('ADLTAP ')

    dc_mcf_ap_info()

    CBLDCMCF('APINFO ')

    dc_mcf_tactcn()

    CBLDCMCF('TDCTCN ')

    dc_mcf_tactle()

    CBLDCMCF('TACTLE ')

    dc_mcf_tdctcn()

    CBLDCMCF('TDCTCN ')

    dc_mcf_tdctle()

    CBLDCMCF('TDCTLE ')

    dc_mcf_tdlqle()

    CBLDCMCF('TDLQLE ')

    dc_mcf_timer_cancel()

    CBLDCMCF('TIMERCAN ')

    dc_mcf_timer_set()

    CBLDCMCF('TIMERSET ')

    dc_mcf_tlscn()

    CBLDCMCF('TLSCN ')

    dc_mcf_tlscom()

    CBLDCMCF('TLSCOM ')

    dc_mcf_tlsle()

    CBLDCMCF('TLSLE ')

    dc_mcf_tlsln()

    CBLDCMCF('TLSLN ')

    dc_mcf_tofln()

    CBLDCMCF('TOFLN ')

    dc_mcf_tonln()

    CBLDCMCF('TONLN ')

なお,上記以外のTP1/Message Control 03-03より前にサポートされたMCF関数については,「2.4 MCFのシミュレート」に示すように動作します。ただし,TP1/Message Control 03-03以降に追加された機能には対応していません。

注※3

TP1/Message Controlに関するコンパイルコマンドのオプションについては,TP1/Message Controlのリリースノートを参照してください。