1.2.2 スタブの作成方法
OpenTP1で使うUAPには,UAP間のサービス要求を実現するためのライブラリが必要となります。このライブラリをスタブといいます。
ここでは,OpenTP1のリモートプロシジャコール(dc_rpc_call関数)を使うUAP(SUP,SPP)と,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のオブジェクトファイルに結合させてください。
スタブの作成手順を次の図に示します。
(3) RPCインタフェース定義ファイルの作成
スタブを作成するには,SPPおよびMHPのサービスのエントリポイント(入り口点)を定義したファイルを作成します。定義内容をRPCインタフェース定義といい,定義を格納するファイルをRPCインタフェース定義ファイルといいます。
RPCインタフェース定義ファイルは,SPPまたはMHPの一つの実行形式ファイルごとに作成します。
(a) RPCインタフェース定義の形式
RPCインタフェース定義は,次のように記述します。
- 形式
entry "エントリポイント名"〔"エントリポイント名"…〕;
- 機能
-
SPPおよびMHPのサービス関数のエントリポイント名(入り口点)を指定します。エントリポイント名として,C言語の関数名を指定します。
エントリポイントは,20文字以内としてください。
エントリポイント名とサービス名の対応は,ユーザサービス定義で指定している名称と合わせてください。
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インタフェース定義ファイルは使えません。