バージョン 4.2.5
 —  Natural リモートプロシージャコール(RPC)  —

リモートディレクトリサーバーの使用 - RDS

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


RDS オペレーションの原則

サービスディレクトリを使用するために 2 つのオプションがあります。

  1. Natural サブプログラム内のサービスディレクトリの使用

    通常、サービスを見つけるには、Natural RPC では Natural サブプログラム内のサービスディレクトリを使用します。 このディレクトリは、SYSRPC リモートディレクトリメンテナンスサービスディレクトリメンテナンス機能で生成した NATCLTGS プログラム内の初期化した LDA データ構造であり、すべての RPC クライアントアプリケーションに有効にする必要があります。

  2. リモートディレクトリの使用

    サービスを見つけるには、リモートディレクトリを使用します。 リモートディレクトリサーバー(RDS)を使用すると、そのサービスを RPC 環境内の全クライアントが使用できるよう、1 つの場所にディレクトリ定義を定めることができます。

このセクションでは、サービスを見つけるためのリモートディレクトリサーバーの使用方法を説明します。

リモートディレクトリサーバーは、Natural サブプログラムとして実装されます。

そのようなサブプログラムのサンプルが、SYSRPC ライブラリ内に提供されています。 このサブプログラムは RDSSCDIR と呼ばれ、必要なディレクトリ情報はワークファイルから読み取られます。 このサブプログラムのインターフェイスは、独自のリモートディレクトリサービスの開発を可能にするためにドキュメント化されています。 詳細については、「RDS インターフェイスの作成」を参照してください。

RDS インターフェイスは、Natural サブプログラムの Natural パラメータデータエリアであり、ディレクトリサービスルーチンは Natural サブプログラムのコードセクションです。 リモート CALLNAT がローカルサービスディレクトリ内で検出されない場合、RPC ランタイムは内部的なリモート CALLNAT を実行することでリモートディレクトリサーバーと通信します。

内部ディレクトリキャッシュは、リモートディレクトリへのアクセスを最小にします。 キャッシュ情報は、リモートディレクトリサーバーにより定義された有効時間で制御されます。

Top of page

リモートディレクトリサーバーの使用

Start of instruction setリモートディレクトリサーバーを使用するには

  1. ディレクトリファイルの作成

    SYSRPC ユーティリティのリモートディレクトリメンテナンスサービスディレクトリメンテナンス機能を使用して、リモートディレクトリサービスのディレクトリファイルを作成します。 サブプログラム RDSSCDIR は SYSRPC ライブラリ内に提供されており、Natural ワークファイル(固定ブロック、レコード長 80 バイト)からディレクトリ情報を読み取ります。 これは、サーバー起動 JCL 内の適切なデータセットに割り当てられたワークファイル CMWKF01 です。

  2. リモートディレクトリサーバーの起動

    リモートディレクトリサーバーを起動し、次の手順へ進んでください。

  3. RDS の定義

    以下の 2 つのオプションがあります。

次に示すのは、サービスディレクトリ NATCLTGS 内のリモートディレクトリサーバーの定義方法の例です。

サービスディレクトリ
  NODE SERVER LIBRARY PROGRAM LOGON
1 NODE1        
2   SERVER1      
3     SYSTEM    
4       TESTS1  
5       TESTS2  
6 RDSNODE        
7   DIRSRV1      
8     #ACI    
9       RDSSCDIR  

この例では、ローカルに SERVER1 という名前のサーバーを定義します。 このサーバーは、サービス TEST1 および TEST2 を実行します。

さらに、リモートディレクトリサーバー DIRSRV1 に対する定義があります。 リモートディレクトリサーバーは、ライブラリ定義用にハッシュ(#)記号が先行することで識別されます。

NODE および SERVER の定義は、通常どおり Natural RPC 内で使用されます。 ライブラリ定義では、RDS との接続のために必ず使用されるトランスポートプロトコル(ACI)が定義されます。

最後に、PROGRAM エントリにはリモートディレクトリサービスを提供するリモートサブプログラムの名前が含まれます(この場合は、サンプルサブプログラム RDSSCDIR を参照します)。

Top of page

RDS インターフェイスの作成

RDS インターフェイスは、Natural サブプログラムのパラメータデータエリア(PDA)です。

独自の RDS インターフェイスを作成するには、次に示すパラメータデータエリアを使用できます。

DEFINE DATA PARAMETER
  1 P_UDID(B8)                      /* OUT
  1 P_UDID_EXPIRATION(I4)           /* OUT
  1 P_CURSOR(I4)                    /* INOUT   
  1 P_ENTRIES(I4)                   /* IN
  1 P_REQUEST(A16/1:250)            /* IN
  1 P_EXTENT (A16/1:250)            /* OUT
  1 P_RESULT(A32)                   /* OUT
  1 REDEFINE P_RESULT
    2 SRV_NODE(A8)
    2 SRV_NODE_EXT(A8)
    2 SRV_NAME(A8)
    2 SRV_NAME_EXT(A8)
END-DEFINE

パラメータの説明については、次の表を参照してください。

パラメータ フォーマット/長さ 説明
P_UDID B8 一意のディレクトリ ID です。ディレクトリ情報の変更後に増加します。 クライアントは、この ID をキャッシュ内に保存します。 このバイナリ番号が 1 つのクライアント要求から次へと増える場合、リモートディレクトリ情報と対応しなくなるため、クライアントはそのローカルキャッシュ情報を削除します。
P_UDID_EXPIRATION I4 これは、有効時間を秒単位で定義します。つまり、UDID 設定の確認のために RDS に接続することなく、ローカルキャッシュ情報をクライアントが使用できる秒数です。 全クライアントに対してディレクトリ修正がアクティブにされることを保証できた後の時間制限の定義を可能にします。 この時間を不用意に低い値に設定すると、多数の RDS へのネットワークトラフィックを引き起こすことになります。
P_CURSOR I4 リモートプロシージャコールには、以前のサーバーへの接続が設定できない場合に別のサーバーをスキャンするためのオプションがあります。(プロファイルパラメータ RPC またはパラメータマクロ NTRPC のキーワードサブパラメータ TRYALT を参照してください。

このパラメータは上部からの検索用にゼロを含み、スキャンを継続するためにレコード位置を記憶するよう、RDS により修正されることがあります。 値はクライアントにより評価されません。スキャンを継続するためにキャッシュからのみ挿入されます。

P_ENTRIES I4 このパラメータは、P_REQUEST 内のサービス定義の数を含みます。
P_REQUEST A16/1:250 スキャン可能なサーバーアドレスに対するサービスのリストです。 エントリは次のように構成されます。

プログラム名(A8)
ライブラリ名(A8)

P_EXTENT A16/1:250 予約済み(将来的に使用される予定)です。
SRV_NODE A8 サーバーノードを含みます。
SRV_NODE_EXT A8 サーバーノード拡張を含みます。
SRV_NAME A8 サーバー名を含みます。
SRV_NAME_EXT A8 サーバー名拡張を含みます。

Top of page

リモートディレクトリサービスルーチンの作成

リモートディレクトリサービスルーチンは、Natural サブプログラムのコードエリアです(このコードエリアのデフォルトバージョンは SYSRPC ライブラリ内のプログラム RDSSCDIR です)。

Start of instruction set独自の RDS ルーチンを作成するには

Set UDID and UDID_EXPIRATION values
IF P_ENTRIES = 0
    ESCAPE ROUTINE
IF P_CURSOR != 0
   position to next server entry after P_CURSOR   
   Scan for server which may execute P_REQUEST(*)
IF found
   SRV_NODE        = found node name
   SRV_NODE_EXT    = node extension
   SRV_NAME        = found server name
   SRV_NAME_EXT    = server extension
   P_CURSOR        = position of found server
ELSE
   P_CURSOR = 0

Top of page

リモートディレクトリサービスプログラム RDSSCDIR

このプログラムは、SYSRPC ライブラリ内にあります。 ワークファイル(固定ブロック、レコード長 80 バイト)からディレクトリ情報を読み込みます。

独自のプログラムは、どこ(例:データベース)からでもディレクトリ情報を読み込むことができます。 配布バージョンの RDSSCDIR の場合、これはワークファイル CMWKF01 であり、サーバー起動 JCL 内の適切なデータセットに割り当てられます。

ディレクトリワークファイルの構造

* comment
UDID definition
UDID_EXPIRATION definition 
node definition
...
node definition

UDID 定義

(UDID)
   binary number            

UDID_EXPIRATION 定義

(UDID_EXPIRATION)
   number of seconds        

ノード定義

(NODE)
   namevalue     (logon-option) 
   server definition  
   ...
   server definition

サーバー定義

(SERVER)
   namevalue     (logon-option) 
   library definition   
   ...
   library definition

ライブラリ定義

(LIBRARY)
   namevalue 
   program definition    
   ...
   program definition

プログラム定義

(PROGRAM)
   namevalue             
   ...
   namevalue

namevalue

Max. 8 characters in uppercase

namevalue の後の logon-option は、次の定義行と同様にオプションです。 logon-option の有効な値については、『SYSRPC ユーティリティ』ドキュメントの「サービスディレクトリメンテナンス」を参照してください。

例:ワークファイルからディレクトリ情報を読み込む

(UDID)
ACB8AAB4777CA000
  (UDID_EXPIRATION)
  3600
  * this is a comment
  (NODE)
  NODE1
         (SERVER)
         SERVER1
             (LIBRARY)
             SYSTEM
                  (PROGRAM)
                  TESTS1
                  TESTS2 
                  TESTS3
         (SERVER)
         SERVER2   (logon-option)         
               (LIBRARY)
               SYSTEM
                    (PROGRAM)
                    TESTS4
  (NODE)
  NODE2   (logon-option)
        (SERVER)
        SERVER1
              (LIBRARY)
              SYSTEM
                   (PROGRAM)
                   TESTS1
                   TESTS2
                   TESTS3
                   TESTS4    

上記例では、ディレクトリは以下を含みます。

上記例内の行のインデントは必須ではありません。 すべての行は、任意の位置(1)で開始できます。 このファイルは手動で修正することができます。または、SYSRPC リモートディレクトリメンテナンス機能を使用して生成できます。

Top of page