XATMIインタフェース用のスタブの作成方法について説明します。XATMIインタフェースの通信をするUAPの場合は,クライアントUAPとサーバUAPの両方に,スタブが必要です。
スタブを作成するときは,XATMIインタフェース定義を格納したファイル(XATMIインタフェース定義ファイル)を作成して,スタブを生成するコマンドを実行します。スタブを生成するコマンドを,次に示します。
作成したスタブのソースファイルは,C言語のコンパイラで翻訳して,UAPのオブジェクトファイルに結合させます。
XATMIインタフェース用スタブの作成手順を次の図に示します。
図1-9 XATMIインタフェース用スタブの作成手順(TCP/IP通信,OSI TP通信)
クライアントUAP(SUP,またはSPP)用のXATMIインタフェース定義の形式について説明します。
called_servers = { "サーバの定義ファイル名"
〔,"サーバの定義ファイル名"〕…};
called_servers = { "serv1.def","serv2.def"};
called_servers = { "serv1.def"};
called_servers = { "serv2.def"};
サーバUAPのXATMIインタフェース定義に指定する項目を次に示します。指定は順不同です。
タイプ名 サブタイプ名{
データ型 データ名;
〔データ型 データ名;〕
:
:
};
表1-6 タイプで使えるデータ型の一覧
タイプ | 識別子 | COBOL言語のデータ | 通信プロトコル | 備考 | |
---|---|---|---|---|---|
TCP/IP | OSI TP | ||||
X_OCTET | -※1 | -※1 | ○ | ○ | なし |
X_COMMON | short a | PIC S9(9) COMP-5 | ○ | ○ | なし |
short a[n] | PIC S9(9) COMP-5 OCCURS n TIMES | ○ | ○ | なし | |
long a | PIC S9(9) COMP-5 | ○ | ○ | なし | |
long a[n] | PIC S9(9) COMP-5 OCCURS n TIMES | ○ | ○ | なし | |
char a※2 | PIC X | ○ | ○ | 無変換配列 | |
octet a | PIC X | ○ | ○ | 無変換配列 | |
tchar a | PIC X | - | ○ | 変換配列 | |
char a[n]※2 | PIC X(n) | ○ | ○ | 無変換配列 | |
octet a[n] | PIC X(n) | ○ | ○ | 無変換配列 | |
tchar a[n] | PIC X(n) | - | ○ | 変換配列 | |
X_C_TYPE | -※3 | -※3 | × | × | なし |
X_COMMON subtype1 {
char name[8];
long data[10];
long flags;
};
service サービスプログラム名{
(タイプ名 〔サブタイプ名〕)|(ALL)|(〔void〕)};
service svc_func1(X_COMMON subtype1);
service svc_func2(X_OCTET);
service svc_func3(void); または service svc_func3();
service svc_func4(ALL);
クライアントUAPのXATMIインタフェース定義(called_servers文)を指定します。
ファイル名には,XATMIインタフェース定義ファイルを示すサフィックス ".def" を必ず付けてください。XATMIインタフェース定義ファイルを格納するディレクトリは,スタブを生成するコマンド(stbmakeコマンドまたはtpstbmkコマンド)が探せるパスであれば,特に制限はありません。
XATMIインタフェース定義ファイルのファイル名の長さは,最大255文字です。ただし,OSの制限で255文字まで指定できないことがあります。
スタブを生成するコマンド(stbmakeコマンドまたはtpstbmkコマンド)を実行したあと,スタブのソースファイルはXATMIインタフェース定義ファイルとは別の名称で作成されます。そのため,OpenTP1の稼働中にはXATMIインタフェース定義ファイルは使われません。
異なるプロセスで同じレコード型を使うときは,共通のレコード型の定義ファイルを一つ作成して,それを各プロセスの定義ファイルにインクルードできます。
インクルードする文は,C言語と同じ書式です。次のように記述します。
#include <ファイル名> または #include "ファイル名"
インクルードファイルは,スタブを生成するコマンド(stbmakeコマンドまたはtpstbmkコマンド)の-iオプションで指定したサーチパスから読み込まれます。サーチパス内に該当するファイルがない場合は,最後にカレントディレクトリを探します。
インクルードするファイルの名称は任意です(サフィックスが .h でなくてもかまいません)。ただし,そのファイルをXATMIインタフェース定義ファイルとして直接 スタブを生成するコマンド(stbmakeコマンドまたはtpstbmkコマンド)に指定する場合は,その定義の名称規則に従ってください。
インクルードするファイルの内容は,XATMIインタフェース定義ファイルと同じです。ただし,名称が重複することもありますので,自プロセス内のサービス関数の定義は含めないことをお勧めします。