OpenTP1で使うUAPには,UAP間のサービス要求をするためのライブラリが必要となります。このライブラリをスタブといいます。
OpenTP1で使うUAPのうち,サービスプログラムを持つUAP(SPP,MHP)には,スタブが必要です。ただし,すべてのサービス関数をUAP共用ライブラリ化してサービス関数動的ローディング機能を使う場合は,スタブは不要です。UAP共用ライブラリ化とは,UAPのソースファイルを翻訳(コンパイル)して作成したUAPオブジェクトファイルを結合(リンケージ)して,共用ライブラリとしてまとめることです。
また,SUPとオフラインの業務をするUAPは,サービス関数がないので,作成する必要はありません。
スタブを作成するときは,まず,UAPのサービスプログラムのプログラムIDを定義したファイル(RPCインタフェース定義ファイル)を作成します。そして,そのファイルを引数にしてstbmakeコマンドを実行します。
stbmakeコマンドを実行すると,スタブのソースファイル(C言語のソースファイル)が作成されます。このファイルをC言語のコンパイラで翻訳して,UAPのオブジェクトファイルに結合させます。
スタブの内容を変更するときは,UAPを作成する一連の作業をやり直します。RPCインタフェース定義ファイルの内容を変更して,スタブを作り直してから,コンパイルし直したUAPのオブジェクトファイルに結合させてください。
スタブの作成手順を次の図に示します。
図1-7 スタブの作成手順
スタブを作成するには,SPP,またはMHPのサービスプログラムのプログラムID(入り口点)を定義したファイルを作成します。定義内容をRPCインタフェース定義といい,定義を格納するファイルをRPCインタフェース定義ファイルといいます。
RPCインタフェース定義ファイルは,SPP,またはMHPの一つの実行形式ファイルごとに作成します。
RPCインタフェース定義は,次のように記述します。
entry "プログラムID"〔"プログラムID"…〕;
形式1
entry "sv01" ;
entry "sv02" ;
形式2
entry "sv01" "sv02" ;
ファイル名には,RPCインタフェース定義ファイルを示すサフィックス".def" を必ず付けてください。RPCインタフェース定義ファイルを格納するディレクトリは,stbmakeコマンドが探せるパスであれば,特に制限はありません。
RPCインタフェース定義ファイルのファイル名の長さは,最大255文字です。ただし,OSの制限で255文字まで指定できないことがあります。
stbmakeコマンドを実行したあと,スタブのソースファイルはRPCインタフェース定義ファイルとは別の名称で作成されます。そのため,OpenTP1の稼働中にはRPCインタフェース定義ファイルは使われません。