本サンプルは、プロセスバインド機能に特化したものです。本機能に影響のない異常時の対応などの処理は簡略化されています。
機能として、初期化処理でセションが開始され、後処理でセションが終了します。その間、クライアントからの参照オペレーション、加算オペレーションおよび減算オペレーションの依頼を受け付け、その処理結果をクライアントに通知するものです。クライアントからの依頼オペレーションは、サーバでセションIDごとに管理している【変数】の値を通知、またはその【変数】に加算/減算するものです。
なお、開発言語がC言語、またはCOBOLの本サンプルの場合、セション管理できるクライアント数は3つです。そのため、4つ目以降のクライアントからの依頼は、失敗してしまいます。
なお、開発言語がC言語の本サンプルの場合、セション管理できるクライアント数は3つです。そのため、4つ目以降のクライアントからの依頼は、失敗してしまいます。
IDL定義
セションID獲得用オペレーション。
サーバで採番したセションIDをクライアントに通知します。獲得したセションIDは、クライアントオブジェクトとサーバオブジェクト内のプロセスをバインドするために、入力パラメタとして「OP0000」~「OP0090」で使用します。
初期化用オペレーション。
サーバアプリケーション内で管理している【変数】の初期値を設定しています。また、開発言語がC言語、COBOLの場合、セションIDをキーとする管理テーブルの初期化処理も行います。なお、COBOLはWindows(R)版、Solaris版のみです。
本オペレーションより、セションが開始されます。
参照用オペレーション。
サーバアプリケーション内で管理している【変数】をクライアントに通知するものです。
加算用オペレーション。
サーバアプリケーション内で管理している【変数】に、クライアントからの入力値を加算し、その結果をクライアントに通知するものです。
減算用オペレーション。
サーバアプリケーション内で管理している【変数】に、クライアントからの入力値で減算し、その結果をクライアントに通知するものです。
後処理用オペレーション。
サーバアプリケーション内で管理している【変数】の初期化を行っています。また、開発言語がC言語、COBOLの場合、セションIDをキーとする管理テーブルの解放処理も行います。なお、COBOLはWindows(R)版、Solaris版のみです。
本オペレーションで、セションが終了します。
操作手順
以下に本サンプルのクライアントアプリケーションの操作手順を示します。
IDL定義ファイルのオペレーション発行契機は、以下のようになります。
1. ユーザIDが入力されると((1))、セションID獲得オペレーション「OP0000」を発行します。そして、獲得したセションIDで初期化依頼用オペレーション「OP0010」を発行し、セションを開始します。
2. リクエストIDが入力されると((2))、以下のように依頼種別ごとにオペレーションを発行します。このオペレーションは、セションが終了しない限り繰り返し発行することができます。
「1(Reference)」:参照用オペレーション「OP0020」
「2(Add)」:加算用オペレーション「OP0030」
「3(Delimte)」:減算用オペレーション「OP0040」
3. ただし、「9(End)」、「X(Program Terminated)」の終了用のリクエストIDが入力されると((3)、(4))、後処理用のオペレーション「OP0090」を発行し、セションを終了します。
プロセスバインドとセション管理の関連
ワークユニット定義で多重度に2以上を定義している場合、サーバオブジェクトは複数存在することになります。その場合、クライアントアプリケーションからの各オペレーションは、どのサーバオブジェクトに依頼されるか解かりません。
プロセスバインド機能は、セションIDをキーに、セション中に依頼されたオペレーションは、必ずセションを開始したサーバオブジェクトに依頼されるように制御されます。
本サンプルを使用するにあたり、提供ファイルを任意のディレクトリに複写し、複写先の環境に合わせて各ファイルをカストマイズすることをお勧めします。
なお、COBOLのサンプルを使用する場合は、空白を含まないフォルダに複写してください。
説明にあたり、コマンドなどの例題には、以下の記号を使用して説明します。
$CURRENTは、本アプリケーションで使用する機能ごとのディレクトリを示します。
‘コンパイルする’は各プロジェクトファイルを使用して実施します。
“%”は、一般ユーザ時のプロンプトを示します。