Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス C言語編


1.2.2 スタブの作成方法

OpenTP1で使うUAPには,UAP間のサービス要求を実現するためのライブラリが必要となります。このライブラリをスタブといいます。

ここでは,OpenTP1のリモートプロシジャコール(dc_rpc_call関数)を使うUAP(SUPSPP)と,MHPのスタブについて説明します。XATMIインタフェースを使った通信をする場合のスタブの作成方法については,「1.3 XATMIインタフェースを使うアプリケーションプログラムの作成(TCP/IP通信,OSI TP通信)」を参照してください。

〈この項の構成〉

(1) スタブが必要となるアプリケーションプログラム

OpenTP1で使うUAPのうち,サービス関数を持つUAP(SPP,MHP)には,スタブが必要です。ただし,すべてのサービス関数をUAP共用ライブラリ化してサービス関数動的ローディング機能を使う場合は,スタブは不要です。UAP共用ライブラリ化とは,UAPのソースファイルを翻訳(コンパイル)して作成したUAPオブジェクトファイルを結合(リンケージ)して,共用ライブラリとしてまとめることです。

また,SUPとオフラインの業務をするUAPは,サービス関数がないので,作成する必要はありません。

(2) スタブの作成手順

スタブを作成するときは,まず,UAPのサービス関数を定義したファイル(RPCインタフェース定義ファイル)を作成します。そのファイルを引数にしてstbmakeコマンドを実行します。

stbmakeコマンドを実行すると,スタブのソースファイル(C言語のソースファイル)が作成されます。このファイルをC言語のコンパイラで翻訳して,UAPのオブジェクトファイルに結合させます。

スタブの内容を変更するときは,UAPを作成する一連の作業をやり直します。RPCインタフェース定義ファイルの内容を変更して,スタブを作り直してから,コンパイルし直したUAPのオブジェクトファイルに結合させてください。

スタブの作成手順を次の図に示します。

図1‒7 スタブの作成手順

[図データ]

(3) RPCインタフェース定義ファイルの作成

スタブを作成するには,SPPおよびMHPのサービスのエントリポイント(入り口点)を定義したファイルを作成します。定義内容をRPCインタフェース定義といい,定義を格納するファイルをRPCインタフェース定義ファイルといいます。

RPCインタフェース定義ファイルは,SPPまたはMHPの一つの実行形式ファイルごとに作成します。

(a) RPCインタフェース定義の形式

RPCインタフェース定義は,次のように記述します。

形式
 entry "エントリポイント名"〔"エントリポイント名"…〕;
機能

SPPおよびMHPのサービス関数のエントリポイント名入り口点)を指定します。エントリポイント名として,C言語の関数名を指定します。

エントリポイントは,20文字以内としてください。

エントリポイント名とサービス名の対応は,ユーザサービス定義で指定している名称と合わせてください。

RPCインタフェース定義に注釈文を記述するときは,"/*"で始めて,"*/"で終わらせてください。注釈文のネストはできません。また,注釈文はキーワードや識別子など,文字列の中には記述できません。

entryの文は,一つのファイルに複数行にわたって定義できます。RPCインタフェース定義の作成例を次に示します。

使用例

エントリポイント名が「sv01」と「sv02」の関数があるUAPのRPCインタフェースの指定(次に示すどちらかの形式で指定します)

形式1
 entry "sv01" ;
 entry "sv02" ;
 
形式2
 entry "sv01" "sv02" ;

(4) RPCインタフェース定義ファイルの名称

ファイル名には,RPCインタフェース定義ファイルを示すサフィックス".def"を必ず付けてください。RPCインタフェース定義ファイルを格納するディレクトリは,stbmakeコマンドが探せるパスであれば,特に制限はありません。

RPCインタフェース定義ファイルのファイル名の長さは,最大255文字です。ただし,OSの制限で255文字まで指定できないことがあります。

stbmakeコマンドを実行したあと,スタブのソースファイルはRPCインタフェース定義ファイルとは別の名称で作成されます。そのため,OpenTP1の稼働中にはRPCインタフェース定義ファイルは使えません。