1.2.2 スタブの作成方法
OpenTP1で使うUAPには,UAP間のサービス要求をするためのライブラリが必要となります。このライブラリをスタブといいます。
(1) スタブが必要になるアプリケーションプログラム
OpenTP1で使うUAPのうち,サービスプログラムを持つUAP(SPP,MHP)には,スタブが必要です。ただし,すべてのサービス関数をUAP共用ライブラリ化してサービス関数動的ローディング機能を使う場合は,スタブは不要です。UAP共用ライブラリ化とは,UAPのソースファイルを翻訳(コンパイル)して作成したUAPオブジェクトファイルを結合(リンケージ)して,共用ライブラリとしてまとめることです。
また,SUPとオフラインの業務をするUAPは,サービス関数がないので,作成する必要はありません。
(2) スタブの作成手順
スタブを作成するときは,まず,UAPのサービスプログラムのプログラムIDを定義したファイル(RPCインタフェース定義ファイル)を作成します。そして,そのファイルを引数にしてstbmakeコマンドを実行します。
stbmakeコマンドを実行すると,スタブのソースファイル(C言語のソースファイル)が作成されます。このファイルをC言語のコンパイラで翻訳して,UAPのオブジェクトファイルに結合させます。
スタブの内容を変更するときは,UAPを作成する一連の作業をやり直します。RPCインタフェース定義ファイルの内容を変更して,スタブを作り直してから,コンパイルし直したUAPのオブジェクトファイルに結合させてください。
スタブの作成手順を次の図に示します。
|
(3) RPCインタフェース定義ファイルの作成
スタブを作成するには,SPP,またはMHPのサービスプログラムのプログラムID(入り口点)を定義したファイルを作成します。定義内容をRPCインタフェース定義といい,定義を格納するファイルをRPCインタフェース定義ファイルといいます。
RPCインタフェース定義ファイルは,SPP,またはMHPの一つの実行形式ファイルごとに作成します。
(a) RPCインタフェース定義の形式
RPCインタフェース定義は,次のように記述します。
- 形式
entry "プログラムID"〔"プログラムID"…〕;
- 機能
-
SPP,またはMHPのサービスプログラムのプログラムID(入り口点)を指定します。プログラムIDとして,COBOL言語のプログラムIDを指定します。プログラムID(入り口点)は20文字以内としてください。
プログラムIDとサービス名の対応は,ユーザサービス定義で指定している名称と合わせてください。
RPCインタフェース定義に注釈文を記述するときは,"/*"で始めて,"*/"で終わらせてください。注釈文のネストはできません。また,注釈文はキーワードや識別子など,文字列の中には記述できません。
- 使用例
-
プログラムIDが「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インタフェース定義ファイルは使われません。