Stub Generation機能には、必要なパラメータ定義を入力するか、必要なパラメータ定義を既存のサブプログラムまたはパラメータデータエリア(PDA)から読み込むスタブ生成の画面を使用して、単一スタブサブプログラムをオンラインで生成するオプションがあります。
スタブサブプログラムを PDA から生成する場合、スタブサブプログラムを生成する前にサブプログラムを作成し、内部パラメータデータエリアを定義する手間を省くことができます。
このセクションでは、次のトピックについて説明します。
スタブサブプログラムは、現在のシステムファイルの現在の Natural ライブラリに作成されます。 このため、リモート CALLNAT
の実行時にクライアントで使用されるアプリケーションライブラリまたはその steplib のいずれかにログオンすることを強くお勧めします。
重要:
スタブ生成機能では、ソースワークエリアに含まれるすべてのデータが上書きされます。 スタブ生成機能を呼び出す場合、該当するメッセージで、不用意に既存のデータを削除しないよう警告されます。PF12 キーを押して機能をキャンセルするか、Enter キーを押して操作を確認し、ソースワークエリアの内容を上書きします。
SYSRPC ユーティリティを呼び出す前に、次の点を考慮してください。
スタブサブプログラムを生成するライブラリにログオンします。
PDA からスタブサブプログラムを生成するときは、スタブサブプログラムの生成元の PDA を参照するオブジェクトがクライアント側にある場合、その PDA の名前を変更するか、またはコピーします。 PDA の新しい名前は、リモート CALLNAT
プログラムの名前と一致する必要があります。
[Client Maintenance]メニューの[Code]フィールドに、次のコマンドを入力します。
SG
ENTER キーを押します。
[Generate Client Stub Routine]ウィンドウが表示されます。
[Program Name]フィールドに、生成するスタブサブプログラムの名前を入力します。
スタブサブプログラムの名前は、リモート CALLNAT
プログラムの名前と一致する必要があります。
[Library]フィールドは現在のライブラリの名前で事前設定されており、変更できません。
[Compression]フィールドに、圧縮タイプ 0
、1
、または 2
(デフォルトは 1
)を入力します。『Natural リモートプロシージャコール(RPC)』ドキュメントの「Natural RPC 環境の運用」にある「圧縮の使用」の記載を参照してください。
ENTER キーを押します。
[Program Name]フィールドに入力した名前が、割り当てられたライブラリにすでに存在するオブジェクトの名前に一致した場合、ウィンドウが開いて該当するメッセージが表示されます。
操作をキャンセルする場合は、「N
」(No)を入力して Enter キーを押します。 [Client Maintenance]メニューに戻ります。
または:
スタブの生成を続行する場合は、「Y
」(はい)を入力して ENTER キーを押します。
指定した名前が、サブプログラムタイプのカタログ化オブジェクトまたは PDA と同一の場合、それぞれのサブプログラムのパラメータ定義または PDA が[Stub Generation]画面に表示されます。
指定した名前が、ソースオブジェクトも存在するスタブサブプログラムと同一の場合、以前のスタブ生成の全フィールド属性(「パラメータの指定」も参照)が継承されます。 これに該当しない場合、すべてのフィールド属性は M
(変更可能)に設定されます。
[Program Name]フィールドに入力した名前が、割り当てられたライブラリにすでに存在するオブジェクトの名前に一致しない場合、空の[Stub Generation]画面が表示されます。
[Stub Generation]画面において、スタブサブプログラムで使用するパラメータの追加または変更を行います。詳細については、「パラメータの指定」を参照してください。
[Stub Generation]画面で使用できるコマンドは、「Service Directory Maintenance」セクションのコマンドと PF キーに関する項目で説明されているコマンドに対応します。
例外:
ダイレクトコマンド | 機能 |
---|---|
EXPIRATION |
スタブ生成には適用できません。 |
|
サイズの上限を 32000 バイトまたは 1 GB に設定します。 サイズ表示のない |
ENTER キーを押してスタブサブプログラムを生成し、手順を終了します。 スタブサブプログラムは割り当てられたライブラリに生成されます。
[SYSRPC - Information]ウィンドウが表示され、クライアントとサーバー間でデータを送受信するためにスタブサブプログラムで必要となるサイズが示されます。 このサイズには、スタブサブプログラムで使用される内部 RPC 情報が含まれます。 サイズがわかっていると、EntireX Broker 使用時の Broker 属性ファイルなど、ミドルウェア層を構成する際に役立ちます。
サンプルサブプログラム TESTS5(下記の「例 1」を参照)からスタブサブプログラムを生成すると、[SYSRPC – Information]ウィンドウに次のメッセージが表示されます。
Stub TESTS5 is generated in library SAGTEST (99,49). It requires: Send length: 2249 bytes Receive length: 2221 bytes
ダイナミックパラメータの X-array または X-group 配列を使用すると、このメッセージで示されるのは最小長の要件のみとなります。 実際の長さの要件はプログラムの実行時に初めて決まりますが、呼び出しごとに長さが異なる可能性があります。
[Send length]
または[Receive length]
の値が Entire Net-Work の上限である 32000 バイトを超えている場合、ウィンドウが開いて警告が表示されます。
「Y
」(はい)を入力して続行するか、「N
」(いいえ)を入力して生成をキャンセルします。 「Y
」を入力した場合、この設定は SYSRPC セッション全体で有効になります。つまり、これ以降は警告が表示されることなく、スタブサブプログラムの生成を続けることができます。
送受信されるデータの合計(内部 RPC 情報を含まない)が 1073739357 バイト(1 GB から内部 RPC 情報の 2467 バイトを引いた数値)を超えた場合、SYSRPC は処理を停止してエラーメッセージを発行します。 このエラーメッセージには、小計計算の基準になるフィールドで転送できたデータの量が、小計としてバイト単位で表示されます。 次に、対応するフィールドがマークされます。 この場合は、データの量を減らしてスタブサブプログラムの生成を続行します。
スタブサブプログラムが Natural システムライブラリ SYSRPC で生成された場合、Natural 転送ユーティリティの SYSMAIN またはオブジェクトハンドラを使用して、スタブサブプログラムをアプリケーションライブラリまたは steplib に移動する必要があります。 状況によっては、ターゲット環境でスタブサブプログラムのソースを再カタログする必要がありますので注意してください。
[Stub Generation]画面に表示される入力フィールドに、スタブサブプログラムで使用されるパラメータ定義を入力できます。 最大 5000 パラメータ指定できます。 次の表に示されていない場合、フィールドへの入力は必須です。
フィールド | 説明 |
---|---|
Level |
フィールドのレベル。 レベルには、 |
Attr |
パラメータを指定する属性。
スタブサブプログラムがサブプログラムまたは PDA から生成された場合、属性はデフォルトの スタブサブプログラムが別のスタブサブプログラムから生成された場合、元のスタブサブプログラムに指定された属性値が維持されます。 生成されたスタブサブプログラムには、パラメータに指定された属性の |
Type |
Natural データフォーマットの詳細については、『プログラミングガイド』の「ユーザー定義変数」セクションの「ユーザー定義変数のフォーマットおよび長さ」および「特別なフォーマット」を参照してください。 |
Length |
パラメータまたは このフィールドは、 Natural データフォーマット
|
Prec |
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 プログラム、スタブサブプログラム、およびサーバープログラムに同一のデータ定義を使用することを強くお勧めします。
グループ定義の例については、「例 2」も参照してください。
パラメータのいずれかの次元が拡張可能な場合、そのパラメータの他のすべての次元も拡張可能です。 サブプログラムでパラメータに拡張可能な固定次元を定義すると、スタブ生成機能によって警告が発行され、自動的に固定次元が拡張可能な次元に変更されます(「例 3」を参照)。 グループ構造では、レベルごとに拡張可能な次元または固定次元のいずれかを定義できます。 レベル間で固定次元が拡張可能な次元に自動的に変更されることはありません。
Natural RPC では、拡張可能な上限のみがサポートされます。 このため、スタブサブプログラムの生成された DEFINE DATA PARAMETER
エリアのすべての X-array と X-Group 配列は、(1:*)
として定義されます。
注意: 拡張可能な下限を持つ X-array または X-group array を含むサブプログラムまたは PDA からスタブサブプログラムを生成した場合、拡張可能な下限は拡張可能な上限に変換されます。 |
拡張可能な次元を持つグループの詳細については、「例 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 | Attr | Type | Length | Prec | 次元 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 | Attr | Type | Length | Prec | 次元 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 | Attr | Type | Length | Prec | 次元 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 |