バージョン 6.3.3
 —  ツールおよびユーティリティ  —

パラメータ指定による単一スタブの生成

Single Stub Generation 機能には、必要なパラメータ定義を入力するか、必要なパラメータ定義を既存のサブプログラムから読み込むスタブ生成のウィンドウを使用して、単一スタブサブプログラムをオンラインで生成するオプションがあります。

このセクションでは、次のトピックについて説明します。


Single Stub Generation 機能の使用

このセクションでは、Single Stub Generation 機能を使用して単一スタブサブプログラムを生成する手順について説明します。

Start of instruction set 単一スタブサブプログラムを生成するには

  1. [SYSRPC - Remote Procedure Call]ウィンドウで、[Tools]メニューの[Single Stub Generation]を選択します。

    または:
    [SYSRPC - Remote Procedure Call]ウィンドウで、Ctrl キーを押したまま F8 キーを押します。

    [Input for Stub Generation]ダイアログボックスが表示されます。

  2. [Name]テキストボックスに、生成するスタブサブプログラムの名前を入力します。

    スタブサブプログラムの名前は、リモート CALLNAT プログラムの名前と一致する必要があります。

    必要な場合は、スタブサブプログラムの生成先にするライブラリの名前を[ライブラリ]テキストボックスに入力します。 このテキストボックスは、現在のライブラリの名前で事前設定されています。

    [DBID, FNR]は変更不可のテキストボックスで、データベース ID(DBID)、ファイル番号(FNR)、および指定したライブラリの Natural ファイルのタイプ(FNAT はシステム、FUSER はユーザー)が表示されます。

    [Compression]ドロップダウンリストボックスから、圧縮タイプ 01、または 2(デフォルトは 1)を選択します。『Natural リモートプロシージャコール(RPC)』ドキュメントの「Natural RPC 環境の運用」にある「圧縮の使用」の記載を参照してください。

  3. [OK]を選択します。

  4. [Stub Generation]ウィンドウで、スタブサブプログラムで使用されるパラメータを追加または変更します。値を入力するか、ドロップダウンリストボックスから値を選択します(「パラメータの指定」を参照)。

  5. [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 に移動する必要があります。 状況によっては、ターゲット環境でスタブサブプログラムのソースを再カタログする必要がありますので注意してください。

Top of page

パラメータの指定

[Stub Generation]ウィンドウ表示されるテーブルセルに、スタブサブプログラムで使用されるパラメータ定義を入力できます。 最大 5000 パラメータ指定できます。 次の表に示されていない場合、ボックスへの入力は必須です。

フィールド 説明
Level

フィールドのレベル。

レベルには、01(最高レベル)~99(最低レベル)の範囲の数を指定できます。 先頭の 0 は任意です。

グループ定義の例については、「グループの定義」および「例 2」を参照してください。

Attribute

パラメータを指定する属性。

M(可変フィールド)、O(出力フィールド - OUT)、または I(入力フィールド)。

2 以上のレベル番号を割り当てられたパラメータは、グループの一部であるとみなされます。 グループ内のパラメータは、1 レベル上を割り当てられた直前のグループと同じ属性である必要があります。 ネスト構造のグループでは、この属性は最高レベルのグループの属性です。 グループ定義の例については、「例 2」を参照してください。

スタブサブプログラムがサブプログラムから生成された場合、属性はデフォルトの M で、変更が必要な場合があります。

スタブサブプログラムが別のスタブサブプログラムから生成された場合、元のスタブサブプログラムに指定された属性値が維持されます。

生成されたスタブサブプログラムには、パラメータに指定された属性の INOUT、または INOUT を示すコメントが含まれます。

Type

N(数値)と G(グループ)、または K(漢字)などの Natural データフォーマット。 Natural データフォーマット C(属性制御)および Handle は使用できません。

Natural データフォーマットの詳細については、『プログラミングガイド』の「ユーザー定義変数」セクションの「ユーザー定義変数のフォーマットおよび長さ」および「特別なフォーマット」を参照してください。

Length

パラメータまたは DYNAMIC の長さ。

このフィールドは、D(日付)、G(グループ)、L(論理)、および T(時間)の Natural データフォーマットには適用されません。

Natural データフォーマット A は 1073739357 バイトに制限されており、Natural データフォーマット B は 536869678 バイトに制限されています。

DYNAMIC はダイナミックパラメータを示し、Natural データフォーマット A および B に適用されます。

Precision

Natural データフォーマット N(数値)および P(パック)のみに適用されます。 任意です。

パラメータの精度、つまり、小数点の後の桁数。

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」も参照してください。

X-array および X-Group 配列の定義

パラメータのいずれかの次元が拡張可能な場合、そのパラメータの他のすべての次元も拡張可能です。 サブプログラムでパラメータに拡張可能な固定次元を定義すると、スタブ生成機能によって警告が発行され、自動的に固定次元が拡張可能な次元に変更されます(「例 3」を参照)。 グループ構造では、レベルごとに拡張可能な次元または固定次元のいずれかを定義できます。 レベル間で固定次元が拡張可能な次元に自動的に変更されることはありません。

Natural RPC では、拡張可能な上限のみがサポートされます。 このため、スタブサブプログラムの生成された DEFINE DATA PARAMETER エリアのすべての X-array と X-Group 配列は、(1:*) として定義されます。

注意:
拡張可能な下限を持つ X-array または X-group array を含むサブプログラムからスタブサブプログラムを生成した場合、拡張可能な下限は拡張可能な上限に変換されます。

拡張可能な次元を持つグループの詳細については、「例 3」を参照してください。

Top of page

スタブ生成の例

このセクションでは、Natural サブプログラムおよびそれらのサブプログラムから生成されるスタブサブプログラムの例を示します。

次に示すパラメータ定義は、Natural システムライブラリ SYSRPC で提供されるサンプルサブプログラムから抽出されています。

例 1

次の 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  

例 2

次の 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        

例 3

次の 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        

Top of page