Single Stub Generation 機能には、必要なパラメータ定義を入力するか、必要なパラメータ定義を既存のサブプログラムから読み込むスタブ生成のウィンドウを使用して、単一スタブサブプログラムをオンラインで生成するオプションがあります。
このセクションでは、次のトピックについて説明します。
このセクションでは、Single Stub Generation 機能を使用して単一スタブサブプログラムを生成する手順について説明します。
単一スタブサブプログラムを生成するには
[SYSRPC - Remote Procedure Call]ウィンドウで、[Tools]メニューの[Single Stub Generation]を選択します。
または:
[SYSRPC - Remote Procedure Call]ウィンドウで、Ctrl キーを押したまま F8 キーを押します。
[Input for Stub Generation]ダイアログボックスが表示されます。
[Name]テキストボックスに、生成するスタブサブプログラムの名前を入力します。
スタブサブプログラムの名前は、リモート CALLNAT
プログラムの名前と一致する必要があります。
必要な場合は、スタブサブプログラムの生成先にするライブラリの名前を[ライブラリ]テキストボックスに入力します。 このテキストボックスは、現在のライブラリの名前で事前設定されています。
[DBID, FNR]は変更不可のテキストボックスで、データベース ID(DBID)、ファイル番号(FNR)、および指定したライブラリの Natural ファイルのタイプ(FNAT
はシステム、FUSER
はユーザー)が表示されます。
[Compression]ドロップダウンリストボックスから、圧縮タイプ 0、1、または 2(デフォルトは 1)を選択します。『Natural リモートプロシージャコール(RPC)』ドキュメントの「Natural RPC 環境の運用」にある「圧縮の使用」の記載を参照してください。
[OK]を選択します。
[Name]テキストボックスに入力した名前が、指定したライブラリにすでに存在するオブジェクトの名前に一致した場合、ウィンドウが開いて該当するメッセージが表示されます。
既存のパラメータ定義を変更する場合は、[Yes]を選択します。 指定した名前が、サブプログラムタイプのカタログ化オブジェクトと同一の場合、[Stub Generation]ウィンドウが開き、それぞれのサブプログラムのパラメータ定義が表に示されます。 指定した名前が、ソースオブジェクトも存在するスタブサブプログラムと同一の場合、以前のスタブ生成の全フィールド属性(「パラメータの指定」も参照)が継承されます。 これに該当しない場合、すべてのフィールド属性は M
(変更可能)に設定されます。
または:
新しいパラメータ定義を作成する場合は、[No]を選択します。 [Stub Generation]ウィンドウが開き、空のテーブルセルが表示されます。
[Cancel]をクリックして実行を中断すると、新しい値を入力した後でも古い定義を保持できることに注意してください。
[Name]ボックスに入力した名前が、指定したライブラリに含まれるオブジェクトの名前と一致しない場合、からの[Stub Generation]ウィンドウが表示されます。
[Stub Generation]ウィンドウで、スタブサブプログラムで使用されるパラメータを追加または変更します。値を入力するか、ドロップダウンリストボックスから値を選択します(「パラメータの指定」を参照)。
[OK]を選択して、スタブサブプログラムを生成し[Stub Generation]ウィンドウを終了します。
指定したライブラリにスタブサブプログラムが生成されたことを確認するウィンドウが表示されます。 さらに、このウィンドウには、クライアントからサーバーへ(またはその逆へ)データを送信するために必要なスタブサブプログラムのサイズが示されます。 このサイズには、スタブサブプログラムで使用される内部 RPC 情報が含まれます。 サイズがわかっていると、EntireX Broker 使用時の Broker 属性ファイルなど、ミドルウェア層を構成する際に役立ちます。
サンプルサブプログラム TESTS5(下記の「例 1」を参照)からスタブサブプログラムを生成すると、ウィンドウに次のメッセージが表示されます。
Stub TESTS5 is generated in library TEST It requires: Send length: 2249 bytes Receive length: 2221 bytes
ダイナミックパラメータの X-array または X-group 配列を使用すると、このメッセージで示されるのは最小長の要件のみとなります。 実際の長さの要件はプログラムの実行時に初めて決まりますが、呼び出しごとに長さが異なる可能性があります。
[Send length]
または[Receive length]
の値が Entire Net-Work の上限である 32000 バイトを超えている場合、ウィンドウが開いて警告が表示されます。
「Y」(Yes)を入力して続行するか、または「N」(No)を入力して生成をキャンセルします。
「Y」(Yes)を入力した場合、この設定は SYSRPC セッション全体で有効になります。つまり、これ以降は警告が表示されることなく、スタブサブプログラムの生成を続けることができます。
送受信されるデータの合計(内部 RPC 情報を含まない)が 1073739357 バイト(1 GB から内部 RPC 情報の 2467 バイトを引いた数値)を超えた場合、SYSRPC は処理を停止してエラーメッセージを発行します。 このエラーメッセージには、小計計算の基準になるフィールドで転送できたデータの量が、小計としてバイト単位で表示されます。 次に、対応するフィールドがマークされます。 この場合は、データの量を減らしてスタブサブプログラムの生成を続行します。
スタブサブプログラムが Natural システムライブラリ SYSRPC で生成された場合、Natural 転送ユーティリティの SYSMAIN またはオブジェクトハンドラを使用して、スタブサブプログラムをアプリケーションライブラリまたは steplib に移動する必要があります。 状況によっては、ターゲット環境でスタブサブプログラムのソースを再カタログする必要がありますので注意してください。
[Stub Generation]ウィンドウ表示されるテーブルセルに、スタブサブプログラムで使用されるパラメータ定義を入力できます。 最大 5000 パラメータ指定できます。 次の表に示されていない場合、ボックスへの入力は必須です。
フィールド | 説明 |
---|---|
Level |
フィールドのレベル。 レベルには、 |
Attribute |
パラメータを指定する属性。
スタブサブプログラムがサブプログラムから生成された場合、属性はデフォルトの スタブサブプログラムが別のスタブサブプログラムから生成された場合、元のスタブサブプログラムに指定された属性値が維持されます。 生成されたスタブサブプログラムには、パラメータに指定された属性の |
Type |
Natural データフォーマットの詳細については、『プログラミングガイド』の「ユーザー定義変数」セクションの「ユーザー定義変数のフォーマットおよび長さ」および「特別なフォーマット」を参照してください。 |
Length |
パラメータまたは このフィールドは、 Natural データフォーマット |
Precision |
Natural データフォーマット パラメータの精度、つまり、小数点の後の桁数。 |
Dimension ½/3 | 配列のみに適用されます。 任意です。
パラメータの 1 次元、2 次元、および 3 次元。 X-array または X-Group 配列は、次元にアスタリスク(*)を入力して指定します。 「X-array および X-Group 配列の定義」も参照してください。 |
以降のセクションでは、次の項目について説明します。
EntireX RPC サーバー上の Natural 以外のオブジェクトを呼び出すクライアント Natural オブジェクトのグループ構造のみを定義する必要があります。 グループ構造は、EntireX の IDL 定義に対応している必要があります。 Natural RPC サーバー上のサブプログラムを呼び出すクライアント Natural オブジェクトには、グループ構造は必要ありません。
クライアント Natural オブジェクトからスタブサブプログラムに渡されるグループ配列および X-Group 配列は連続している必要があります。 このため、常に全次元用のアスタリスク(*)表記を使用して、スタブサブプログラムに完全な配列を渡すことを強くお勧めします。 また、クライアント Natural プログラム、スタブサブプログラム、およびサーバープログラムに同一のデータ定義を使用することを強くお勧めします。
注意: このサブプログラムからスタブサブプログラムが生成される場合、サブプログラムのすべてのグループ定義が無視されます。 その場合、[Stub Generation]画面でグループを再度定義し、それに従ってグループ要素の次元を適応させる必要があります (グループ内で定義された次元は、下位レベルでパラメータ定義に伝播します)。グループを含む別のスタブサブプログラムからスタブサブプログラムを生成する場合、グループ定義は保持されます。 |
グループ定義の例については、「例 2」も参照してください。
パラメータのいずれかの次元が拡張可能な場合、そのパラメータの他のすべての次元も拡張可能です。 サブプログラムでパラメータに拡張可能な固定次元を定義すると、スタブ生成機能によって警告が発行され、自動的に固定次元が拡張可能な次元に変更されます(「例 3」を参照)。 グループ構造では、レベルごとに拡張可能な次元または固定次元のいずれかを定義できます。 レベル間で固定次元が拡張可能な次元に自動的に変更されることはありません。
Natural RPC では、拡張可能な上限のみがサポートされます。 このため、スタブサブプログラムの生成された DEFINE DATA PARAMETER
エリアのすべての X-array と X-Group 配列は、(1:*)
として定義されます。
注意: 拡張可能な下限を持つ X-array または X-group array を含むサブプログラムからスタブサブプログラムを生成した場合、拡張可能な下限は拡張可能な上限に変換されます。 |
拡張可能な次元を持つグループの詳細については、「例 3」を参照してください。
このセクションでは、Natural サブプログラムおよびそれらのサブプログラムから生成されるスタブサブプログラムの例を示します。
次に示すパラメータ定義は、Natural システムライブラリ SYSRPC で提供されるサンプルサブプログラムから抽出されています。
次の DEFINE DATA PARAMETER
エリア(サンプルサブプログラム TESTS5)は、[Stub Generation]ウィンドウの 4 つの変更可能なパラメータおよび対応するパラメータ定義を示しています。
DEFINE DATA PARAMETER 01 #IDENTIFIER (A10) 01 #N-OF-ID (I4) 01 #FREQ (P5.2) 01 #A100 (A100/5,4)
スタブ生成 | ||||||||
---|---|---|---|---|---|---|---|---|
Level | Attribute | Type | Length | Precision | 次元 1 | 次元 2 | 次元 3 | |
1 | 01 | M | A | 10 | ||||
2 | 01 | M | I | 4 | ||||
3 | 01 | M | P | 5 | 2 | |||
4 | 01 | M | A | 100 | 5 | 4 |
次の DEFINE DATA PARAMETER
エリア(サンプルサブプログラム TESTS6)は、[Stub Generation]ウィンドウのネストされたグループ構造および対応するパラメータ定義を示しています。
DEFINE DATA PARAMETER 01 GROUP-1(10) 02 A (A20) 02 B (A20) 02 GROUP-2(20) 03 C (A10/5) 03 D (A10) 01 LINE (A) DYNAMIC
スタブ生成 | ||||||||
---|---|---|---|---|---|---|---|---|
Level | Attribute | Type | Length | Precision | 次元 1 | 次元 2 | 次元 3 | |
1 | 01 | M | G | 10 | ||||
2 | 02 | M | A | 20 | ||||
3 | 02 | M | A | 20 | ||||
4 | 02 | M | G | 20 | ||||
5 | 03 | M | A | 10 | 5 | |||
6 | 03 | M | A | 10 | ||||
7 | 01 | M | A | DYNAMIC |
次の DEFINE DATA PARAMETER
エリア(サンプルサブプログラム TESTS7)は、[Stub Generation]ウィンドウの拡張可能な次元があるネストされたグループ構造および対応するパラメータ定義を示しています。
DEFINE DATA PARAMETER 01 GROUP-1(10) 02 A (A20) 02 B (A20) 02 GROUP-2(0:*) 03 C (A10/5) 03 D (A10) 01 LINE (A) DYNAMIC
スタブ生成 | ||||||||
---|---|---|---|---|---|---|---|---|
Level | Attribute | Type | Length | Precision | 次元 1 | 次元 2 | 次元 3 | |
1 | 01 | M | G | 10 | ||||
2 | 02 | M | A | 20 | ||||
3 | 02 | M | A | 20 | ||||
4 | 02 | M | G | * | ||||
5 | 03 | M | A | 10 | 5 | |||
6 | 03 | M | A | 10 | ||||
7 | 01 | M | A | DYNAMIC |