このセクションでは、Natural RPC 環境の操作に必要なタスクを説明します。 これらのタスクのいくつかは SYSRPC ユーティリティで実行されます。 SYSRPC
ユーティリティが提供する機能の手順については、Natural『SYSRPC ユーティリティ』ドキュメントを参照してください。
このセクションでは、次のトピックについて説明します。
各リモート CALLNAT
要求に対して、CALLNAT
が実行されるサーバーが割り当てられます(servername
および nodename
で識別される)。 したがって、リモートにアクセスされるすべてのサブプログラムは以下で定義する必要があります。
クライアント側のローカルサービスディレクトリ
または、リモートディレクトリサーバー経由でアクセスされるリモートディレクトリ
または、プロファイルパラメータ DFS
でアドレスされるデフォルトサーバー経由
または、デフォルトサーバーアドレッシング経由でクライアントアプリケーション自身内
上記のメソッドに加えて、代替サーバーを指定できます。
EntireX Broker を使用する場合、EntireX ロケーショントランスペアレンシを使用してサーバーを定義することも可能です。「EntireX ロケーショントランスペアレンシの使用」を参照してください。
以下に参考情報を示します。
クライアントのローカルサービスディレクトリのすべてのデータは、サブプログラム NATCLTGS
に保存されます。 実行時、このサブプログラムは、ターゲットサーバーを検索するために使用されます。 結果として、NATCLTGS
は、クライアントアプリケーションまたはアプリケーション用に定義された Natural steplib の 1 つで有効にする必要があります。
NATCLTGS
が steplib に生成されなかったか、または別のマシンに存在する場合、適切な Natural ユーティリティ(SYSMAIN
または Natural オブジェクトハンドラ)を使用して、NATCLTGS
をアプリケーション用に定義された steplib のいずれかに移動してください。
共同使用のために NATCLTGS
を使用している場合、例えば、そのサブプログラムをライブラリ SYSTEM
にコピーして、すべてのクライアント環境に有効にする必要があります。または、クライアントごとに個々のコピーが使用される場合、SYSRPC
ユーティリティのサービスディレクトリメンテナンス機能を使用してこのクライアントのためにメンテナンスする必要があります。
RPC サービスエントリを定義し、編集するには、『SYSRPC ユーティリティ』ドキュメントの「サービスディレクトリメンテナンス」を参照してください。
リモートディレクトリには、各種 Natural クライアントに有効にできるサービスエントリが含まれています。 Natural クライアントは、リモートディレクトリサーバーからこれらのサービスエントリを検索できます。 リモートディレクトリサーバーの目的およびインストールについては、「リモートディレクトリサーバーの使用」を参照してください。
ローカルまたはリモートサービスディレクトリを使用してサーバーにアドレスする代わりに、プロファイルパラメータ DFS
(Natural『オペレーション』ドキュメントを参照)でデフォルトサーバーを事前に設定することができます。 サブプログラムがローカルでもリモートサービスディレクトリでも検出できない場合、このサーバーアドレスが使用されます。
DFS
設定によって、セッション全体に対するデフォルトサーバー、またはそれをダイナミックに上書きするまでのデフォルトサーバーが決定されます。
DFS
設定が存在せず、与えられたリモートプロシージャコールのサーバーアドレスがサービスディレクトリに見つからない場合、Natural エラーメッセージが返されます。
別のライブラリにログオンしたり、Natural エラーが発生したりする場合でも、クライアントアプリケーション内で定義されたデフォルトサーバーアドレスは、アクティブな状態のままです。
クライアントアプリケーション自体はランタイム時にデフォルトサーバーアドレスをダイナミックに指定できます。 この目的のために、Natural はアプリケーションプログラミングインターフェイス USR2007N
を提供します。 インターフェイスにより、リモートプログラムがサービスディレクトリ経由でアドレスできないときに使用されるデフォルトのサーバーアドレスを決定することが可能です。
USR2007N
を使用するには
サブプログラム USR2007N
を、ライブラリ SYSEXT
からライブラリ SYSTEM
または steplib ライブラリまたはサーバー環境の任意のアプリケーションにコピーします。
DEFINE DATA PARAMETER
ステートメントをストラクチャードモードで使用するか、または RESET
ステートメントをレポーティングモードで使用して、次のパラメータを指定します。
パラメータ | フォーマット | 説明 | |
---|---|---|---|
function |
A1 | 関数。設定可能値は次のとおりです。 | |
P |
Put - サーバーアドレス(パラメータ nodename および servername で構成、下記参照)が、サービスディレクトリに定義されていないすべての後続のリモートプロシージャコールに対するデフォルトアドレスであることを決定します。デフォルトサーバーアドレスを削除するには、 |
||
G |
Get - 機能 P で設定した現在のデフォルトサーバーアドレスを取得します。 | ||
nodename |
A192 |
アドレスされるサーバーノードの名前を指定/返します。 物理ノード名の場合は最大 32 文字、論理ノード名の場合は最大 192 文字をノード名に含めることができます。 「EntireX ロケーショントランスペアレンシの使用」を参照してください。 注意: ライブラリ |
|
servername |
A192 |
アドレスされるサーバー名を指定/返します。 物理サーバー名の場合は最大 32 文字、論理サービス名の場合は最大 192 文字をサーバー名に含めることができます。 「EntireX ロケーショントランスペアレンシの使用」を参照してください。 注意: ライブラリ |
|
logon |
A1 | ログオンオプションを指定/返します。「ログオンオプションの使用」を参照してください。 | |
protocol |
A1 | トランスポートプロトコルを指定/返します。 有効な値:B(=EntireX Broker) |
|
noservdir |
A1 | サービスディレクトリオプションを指定/返します。プロファイルパラメータ DFS を参照してください。
|
|
Y |
サービスディレクトリが存在していない必要があります。 | ||
N |
サービスディレクトリが存在する必要があります。 |
クライアント側の呼び出し元プログラムで、次のステートメントを指定します。
CALLNAT 'USR2007N' function nodename servername logon protocol [noservdir]
注意:
ライブラリ SYSRPC
の Natural サブプログラム NATCLTPS
は、互換性保持のためにのみメンテナンスされます。
接続の失敗を回避するために、リモート CALLNAT
のために代替サーバーを定義できます。 そのような代替サーバーを指定すると、Natural は次のように処理します。
クライアントは最初に接続の設定を試みます。
この試みに失敗すると、エラーメッセージの代わりに、2 回目の試みが別のサーバー上で行われます。 サービスディレクトリが現在のエントリから再度検索される代わりに、指定したサービスを提供する別のサーバーが有効かどうかを検出します。
2 番目のエントリが検出されると、Natural はこのサーバーへの接続の設定を試行します。 リモートプロシージャコールが正常に実行された場合は、クライアントアプリケーションは実行状態を保持します。 ユーザーは最初のサーバーまたは代替サーバーのどちらの接続が結果を生じたかは認識しません。
他のエントリが検出されなかったり、代替サーバーへの接続に失敗すると、Natural は対応するエラーメッセージを発行します。
代替サーバーの使用を可能にするには
同じサービスに対するサービスディレクトリ内に複数のサーバーを定義します。
代替サーバーの使用を許可するために、プロファイルパラメータ TRYALT
を ON に設定します。
このパラメータは、現在のセッションに対して Natural システムコマンド GLOBALS
(『システムコマンド』ドキュメントを参照)でダイナミックに設定することもできます。
EntireX ロケーショントランスペアレンシを使用すると、何かを構成したり、クライアントやサーバーのプログラムを変更しなくても、物理的なノードおよびサーバーの名前を変更できます。 現在、物理ノードや物理サーバーの名前を使用する代わりに、論理的な名前でサーバーをアドレスすることができます。 論理名は、ディレクトリサービスを使って物理的なノードとサーバーの名前にマップされます。
ロケーショントランスペアレンシを利用するため、以前にノードとサーバー名のみが指定された場合でも、Natural RPC では論理名の受け入れが可能となりました。 論理名は、最初に使用される前に EntireX Broker に渡されます。
論理名の最大長は 192 文字です。 新規 Natural プロファイルパラメータを避けるために、論理名は既存パラメータのサーバー名の部分に指定されます。 2 種類の論理名があります。
論理ノード名
論理ノード名で、実際のサーバー名だけに関連してノードに対する論理名を指定します。 実際のノード名も使用できるすべての場所で、論理ノード名は使用できます。 論理ノード名を定義するにはキーワード LOGBROKER
を使用する必要があります。
例:
SRVNVODE='LOGBROKER=logical_node_name,my_set'
論理サービス
論理サービスで、ノードとサーバーの論理名を指定します。 実際のノードとサーバーの名前を使用できるすべての場所で、論理サービスは使用できます。 論理サービスを定義するには、ノード名を *(意図的に空にされる)に設定する必要があります。そしてサーバー名には論理サービス名を含みます。
例:
SRVNVODE='*' SRVNAME='logical_service_name,my_set'
Natural アプリケーションプログラミングインターフェイス USR2071N
が使用される場合、フィールド broker-id
の論理サービス名とともにキーワード LOGSERVICE
を使って論理サービス名に LOGON
できます。
EntireX ロケーショントランスペアレンシの詳細については、EntireX ドキュメントを参照してください。
次のコンポーネントはノードとサーバーの名前を参照します。
SYSRPC
ユーティリティのサービスディレクトリメンテナンス機能
サービスディレクトリ(NATCLTGS
)
『SYSRPC ユーティリティ』ドキュメントの「サービスディレクトリメンテナンス」機能の「ロケーショントランスペアレンシ」も参照してください。
Natural RPC 自動実行が使用される場合、「Natural RPC 自動実行の操作」に説明されているスタブは必要ありません。
ただし、スタブを生成すると、リモートに実行する CALLNAT
(複数可)の制御を有利にし、エラー診断を容易にします。 不正な CALLNAT
名のためにリモートコールが失敗すると、その後に発行された Natural エラーメッセージは、問題の原因を即座に識別するために役立ちます。 スタブがないと、不正な CALLNAT
に対して、トランスポート層または Natural サーバーから返される追加のエラーを受け取ることがあります。
リモート CALLNAT
実行によって EntireX RPC サーバーを呼び出す場合、スタブサブプログラムを使用することを強くお勧めします。 EntireX RPC サーバーで呼び出すサブプログラムの IDL(Interface Definition Language)定義にグループ構造が含まれている場合、スタブサブプログラムが必要です。
この場合、[Stub Generation]画面でスタブ生成中に同じグループ構造を定義するか、EntireX IDL ファイルからスタブサブプログラムを生成する必要があります(Windows のみ)。
以下に参考情報を示します。
SYSRPC
ユーティリティのスタブ生成機能では、クライアントの呼び出し元プログラムをサーバー上のサブプログラムへ接続するために使用する Natural スタブサブプログラムを生成することができます。 スタブは、パラメータデータエリア(PDA)およびサーバーコールロジックで構成されます。『SYSRPC ユーティリティ』ドキュメントのスタブ生成に関するセクションを参照してください。
PDA は呼び出し元プログラムの CALLNAT
ステートメントで使用されるパラメータと同じものを含み、スタブ生成機能の[Stub Generation]画面で定義されている必要があります。 同一名でコンパイルした Natural サブプログラムがすでに存在する場合は、このサブプログラムにより使用される
PDA が画面を事前に設定するために使用されます。 サーバーコールロジックは、PDA が定義された後にスタブ生成機能により自動的に生成されます。
実行時に、CALLNAT
ステートメントを持っている Natural アプリケーションプログラムおよびスタブサブプログラムは、クライアント側に存在する必要があります。 Natural アプリケーションサブプログラムは、サーバー側に存在する必要があります。 スタブおよびサーバーサブプログラムは、同じ名前にする必要があります。
Natural RPC スタブを生成する必要はありませんが、Natural スタブを使用せずに、Natural RPC 自動実行で操作することは可能です。 Natural RPC 自動実行で操作するには、次のようにプロファイルパラメータ AUTORPC
を設定します。
AUTORPC=ON
この場合は、RPC 使用のための準備中にクライアントスタブの生成を省略することができます。 Natural RPC 自動実行が有効(AUTORPC=ON
)のとき、Natural は次のように動作します。
サブプログラムがローカルで検出できない場合、Natural ではリモートでの実行が試行されます(スタブ生成の必要なし)。
その後パラメータデータエリアは、実行中にダイナミックに生成されます。
クライアントプログラムに対してのみスタブが存在する場合、この機能はサーバー上の CALLNAT
プログラムには何も影響しません。
プロファイルパラメータ AUTORPC
が ON
に設定されており、Natural スタブが存在する場合は、そのスタブが使用されます。
Natural システムコマンド GLOBALS
で、現在のセッションに対する Natural プロファイルパラメータモジュール内の RPC プロファイルパラメータのいくつかを、セッション内でダイナミックに修正できます。
注意:
これらの修正はユーザーセッションがアクティブである限り保持されます。セッションが終了すると削除されます。 スタティックな設定は Natural プロファイルパラメータを使用して行います。
サービスディレクトリで定義されたアクティブサーバー(「RPC サーバーアドレスの指定」を参照)は、SYSRPC
サーバーコマンド実行機能で制御できます(『SYSRPC ユーティリティ』ドキュメントの関連するセクションを参照)。
CALLNAT
が実行されるサーバーライブラリは、クライアント側の RPC のログオンオプションおよびサーバー側の 1 組のパラメータに依存します。
次の表に、適切なパラメータとそれらがライブラリ設定にどのように影響するかを示します。
クライアント | サーバー | ||||||
---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | |
*library-id | サーバーエントリの RPC LOGON フラグ の設定 |
LOGONRQ の設定 |
STACK= で起動される サーバー |
NSC または ネイティブ Natural |
NSC: ライブラリ プロファイル内の RPC ログオン オプション |
サーバー *library-id |
|
1 | Lib1 | × | × | logon lib1 | 影響なし | N/-- | Lib1 |
2 | Lib1 | × | × | logon lib2 | 影響なし | N/-- | Lib2 |
3 | Lib1 | × | ○ | (クライアント LOGON フラグ = NO )かつ(LOGONRQ=YES )は不可。 |
|||
4 | Lib1 | ○ | 影響なし | 影響なし | NSC | AUTO |
Lib1 |
5 | Lib1 | ○ | 影響なし | 影響なし | NSC | N | Lib1 |
6 | Lib1 | ○ | 影響なし | 影響なし | ネイティブ Natural | -- | Lib1 |
表の項目の説明:
CALLNAT
が開始されるクライアントアプリケーションのライブラリ ID。
RPC LOGON
フラグの値。 ノードまたはサーバー全体に対して設定できます。
このフラグは次のものを使用して設定できます。
SYSRPC
ユーティリティのサービスディレクトリメンテナンス機能
または、プロファイルパラメータ DFS
または、アプリケーションプログラミングインターフェイス USR2007N
LOGONRQ
Natural プロファイルパラメータは、サーバー起動時に設定できます。
その起動時にサーバーが位置付けられるライブラリ ID。
サーバーは Natural Security(NSC)下で実行されるかどうか(「Natural Security での Natural RPC の使用」を参照)
NSC サーバーアプリケーションの NSC ライブラリプロファイル項目(セッションオプション > Natural RPC 制限)のログオンオプションの設定。 NSC ログオンオプションが "A"(AUTO
)に設定されると、ライブラリとユーザー ID だけが取得されます。 "N"(デフォルト)に設定されると、ライブラリ、ユーザー ID、およびパスワードパラメータが評価されます。
最終的に CALLNAT
プログラムが実行されるサーバーのライブラリ。
ログオンオプションは、リモートサブプログラムが実行されるライブラリを定義します。 「サーバーライブラリへのログオン」も参照してください。
注意:
ログオンオプションを使用しないとき、CALLNAT
は、サーバーが現在ログオンしているライブラリで実行されます。 このサーバーログオンは、Natural プロファイルパラメータ STACK
=(LOGON library)
で定義されます。 サーバーは、library
(および library
に定義されたすべての関連 steplib)で実行される CALLNAT
を検索します。
クライアントアプリケーションは、このサブプログラムにログオンオプションを設定することによって、異なるライブラリのサブプログラムの実行を可能にします。 これにより、クライアントは、このログオンオプションとともにその現在のライブラリの名前をサーバーに渡します。 そして、サーバーは、このライブラリへログオンし、必要なサブプログラムを検索します。後者が見つかった場合、それを実行します。 その後、前のライブラリからログオフします。
クライアントの現在のライブラリ以外のライブラリにサーバーがログオンする必要がある場合、リモート CALLNAT
が実行される前に、クライアントはアプリケーションプログラミングインターフェイス USR4008N
を呼び出す必要があります。 USR4008N
によって、クライアントはサーバーがログオンするライブラリの代替名を指定します。 このライブラリの名前は、ログオンオプションが適用されるリモートサブプログラムへの後続のすべてのコールに使用されます。 ライブラリ名に空白が指定された場合は、現在のクライアントライブラリの名前が再度使用されます。
USR4008N
を使用するには
サブプログラム USR4008N
を、ライブラリ SYSEXT
からライブラリ SYSTEM
または steplib ライブラリまたはサーバー環境の任意のアプリケーションにコピーします。
DEFINE DATA PARAMETER
ステートメントを使用して、次のパラメータを指定します。
パラメータ | I/O | フォーマット | 説明 | |
---|---|---|---|---|
P-FUNC |
I | A01 |
ファンクションコード。設定可能値は次のとおりです。 |
|
P |
Put - リモート CALLNAT 実行のために新しいライブラリを指定します。
|
|||
G |
Get - リモート CALLNAT 実行のために以前に指定されたライブラリを取得します。
|
|||
P-LIB |
I | A8 | リモート CALLNAT 実行のためのサーバー上のライブラリ。
|
クライアント側の呼び出し元プログラムで、次のステートメントを指定します。
CALLNAT 'USR4008N' P-FUNC P-LIB
注意:
Natural RPC クライアントがリモート CALLNAT
を呼び出す前に、呼び出し元プログラムを実行する必要があります。
ログオンオプションを設定するには、SYSRPC サービスディレクトリメンテナンス機能(『SYSRPC ユーティリティ』ドキュメントの関連するセクションを参照)、または(デフォルトサーバーを使用しているときは)プロファイルパラメータ DFS やインターフェイス USR2007N を使用できます。
サーバー側に設定は必要ありません。
圧縮タイプは、0
、1
、または 2
です。 COMPR
=1
または 2
で生成したスタブは、データ転送率の削減を支援します。
圧縮タイプ | 説明 |
---|---|
COMPR=0 |
全 CALLNAT パラメータ値が送信され、サーバーから返信されます。つまり、圧縮は実行されません。
|
COMPR=1 |
M タイプのパラメータが送信され、サーバーから返信されます。一方、O タイプのパラメータは送信バッファ内でのみ転送されます。 A タイプのパラメータは返信バッファ内にのみ含まれます。 返信バッファにはフォーマット記述は含まれません。 これはデフォルト設定です。 |
COMPR=2 |
サーバー返信メッセージが CALLNAT パラメータのフォーマット記述を含むことを除いては、COMP=1 と同じです。 これは、EntireX Broker によるデータ変換に対して特定のオプションを使用する場合に便利です(詳細については、EntireX Broker ドキュメントの変換サービスの説明を参照してください)。
|
Natural RPC では、EntireX Broker への TCP/IP 通信のために Secure Socket Layer(SSL)がサポートされています。
TCP/IP 通信で SSL を使用する必要があることを EntireX Broker に認識させるには、次の方法の 1 つを使用する必要があります。
文字列 :SSL
をノード名に付加します。 ノード名にすでに接尾辞 :TCP
が付加されていた場合、:TCP
を :SSL
に置き換える必要があります。
ノード名に接頭辞 //SSL:
を付加します。
例:
SRVNODE='157.189.160.95:1971:SSL'
必要な SSL パラメータ文字列を設定するには、SSL を使用して EntireX Broker にアクセスする前に、アプリケーションプログラミングインターフェイス USR2035N
を最初に呼び出す必要があります。
USR2035N
を使用するには
サブプログラム USR2035N
を、ライブラリ SYSEXT
からライブラリ SYSTEM
または steplib ライブラリまたはサーバー環境の任意のアプリケーションにコピーします。
DEFINE DATA PARAMETER
ステートメントを使用して、次のパラメータを指定します。
パラメータ | I/O | フォーマット | 説明 | |
---|---|---|---|---|
FUNCTION |
I | A01 | ファンクションコード。設定可能値は次のとおりです。 | |
P |
Put - 新規 SSL パラメータ文字列を指定します。
SSL パラメータ文字列は内部的に保存され、SSL 通信を使って EntireX Broker が初めて参照されるたびに、EntireX に渡されます。 複数の EntireX Broker 接続に対し、EntireX Broker に最初にアクセスする前に、毎回
アプリケーションプログラミングインターフェイス 例:
FUNCTION := 'P' SSLPARMS := 'TRUST_STORE=FILE://DDN:CACERT&VERIFY_SERVER=N' CALLNAT 'USR2035N' USING FUNCTION SSLPARMS Natural RPC サーバーの場合に SSL パラメータを設定するには、サーバーを起動するときに、呼び出し元プログラムの名前を Natural スタックに置いてください。 例:
STACK=(LOGON server-library;set-SSL-parms) set-SSL-parms は、SSL パラメータ文字列を設定するためにユーザーアプリケーションプログラミングインターフェイス |
|||
G |
Get - 前に指定した SSL パラメータ文字列を取り出します。
前に指定した SSL パラメータ文字列は、呼び出し元に返されます。 SSL パラメータ文字列の詳細については、EntireX ドキュメントを参照してください。 |
|||
SSLPARMS |
I | A128 | EntireX Broker に必要な SSL パラメータ文字列 |
クライアント側の呼び出し元プログラムで、次のステートメントを指定します。
CALLNAT 'USR2035N' FUNCTION SSLPARMS
次のセクションで構成されています。
RPCERR
プログラムは、コマンド行から実行するか、または Natural プログラム内から FETCH
ステートメントを使用して呼び出すことができます。 RPCERR
によって次の情報が表示されます。
RPC に関連する場合に最後の Natural エラー番号およびメッセージ
このエラーに関連付けられた最後の EntireX Broker メッセージ
さらに、最後の EntireX Broker コールからのノードおよびサーバー名も取得可能です。
Natural error number: NAT6972 Natural error text : Directory error on Client, reason 3. RPC error information: No additional information available. Server Node: Library: SYSTEM Server Name: Program: NATCLT3 Line No: 1010
現在の RPC セッションの状態に関する情報を取得するために、アプリケーションプログラム内で RPCINFO
サブプログラムを使用できます。 これは、特定のエラークラスに対処することでより適切にエラーを制御することもできます。
RPCINFO
サブプログラムは、RPCINFO
を呼び出すサンプルプログラム TESTINFO
とともに SYSRPC
ライブラリ 内に含まれます。
DEFINE DATA LOCAL USING RPCINFOL LOCAL 1 PARM (A1) 1 TEXT (A80) 1 REDEFINE TEXT 2 CLASS (A4) 2 REASON (A4) END-DEFINE ... OPEN CONVERSATION USING SUBPROGRAM 'APPLSUB1' CALLNAT 'APPLSUB1' PARM CLOSE CONVERSATION *CONVID ... ON ERROR CALLNAT 'RPCINFO' SERVER-PARMS CLIENT-PARMS ASSIGN TEXT=C-ERROR-TEXT DISPLAY CLASS REASON END-ERROR ... END
RPCINFO
には、パラメータデータエリア RPCINFOL
内で提供されている次のパラメータがあります。
パラメータ | フォーマット | 説明 | |
---|---|---|---|
SERVER-PARMS |
サーバーとして動作しているときに、Natural セッションに関する情報を含みます 。 RPC サーバー上でリモートに RPCINFO を実行する場合のみ SERVER-PARMS を適用します。
|
||
S-BIKE |
A1 |
使用されたトランスポートプロトコル。設定可能値は次のとおりです。 |
|
B |
EntireX Broker | ||
S-NODE |
A8 | サーバーのノード名です。 | |
S-NAME |
A8 | サーバー名です。 | |
S-ERROR-TEXT |
A80 | トランスポート層から返されたメッセージテキストを含みます。 | |
S-CON-ID |
I4 | 現在の会話 ID です。 これは、論理 Natural ID ではなく、EntireX Broker の物理的な ID であることに注意してください。 このパラメータは、常に会話型および非会話型コールの両方に対して EntireX Broker が生成する ID としての値を含みます。 物理会話 ID が非数値または I4 より大きい場合は、"-1" が返されます。 |
|
S-CON-OPEN |
L | オープンな会話があるかどうかを示します。 会話が継続中の場合は、このパラメータに値 "TRUE" が含まれます。それ以外の場合は、"FALSE" が含まれます。 | |
CLIENT-PARMS |
クライアントとして動作しているときに、Natural セッションに関する情報を含みます。 RPC クライアント上でリモートに RPCINFO を実行する場合のみ CLIENT-PARMS を適用します。
|
||
C-BIKE |
A1 |
使用されたトランスポートプロトコル。設定可能値は次のとおりです。 |
|
B | EntireX Broker | ||
C-NODE |
A8 | 事前にアドレスされたサーバーのノード名です。 | |
C-NAME |
A8 | 事前にアドレスされたサーバー名です。 | |
C-ERROR-TEXT |
A80 | トランスポート層から返されたメッセージテキストを含みます。 | |
C-CON-ID |
I4 | 最後のサーバーコールの会話 ID です。 これは、論理 Natural ID ではなく、EntireX Broker の物理的な ID であることに注意してください。 会話が開かれていない場合は、このパラメータの値は 0 以下になります。 物理会話 ID が非数値または I4 より大きい場合は、"-1" が返されます。 |
|
C-CON-OPEN |
L | オープンな会話があるかどうかを示します。 会話が継続中の場合は、このパラメータに値 "TRUE" が含まれます。それ以外の場合は、"FALSE" が含まれます。 |
Natural RPC には、サーバーアクティビティのモニタおよび可能性のあるエラー状況のトレースを有効にするトレース機能が含まれています。
サーバートレース機能を起動/停止するには、以下のオプションでサーバーを開始します。
TRACE=n
整数値 n
" は、必要なトレースレベルを意味します。つまり、トレースに記録されるサーバーの詳細の程度です。 可能な値は次のとおりです。
値 | トレースレベル |
---|---|
0 |
トレースは実行されません(デフォルト)。 |
1 |
すべてのクライアント要求および対応するサーバーレスポンスがトレースされ、記録されます。 |
2 |
すべてのクライアント要求および対応するサーバーレスポンスがトレースされ、記録されます。さらに、全 RPC データがトレースファイルへ書き込まれます。 |
RPC トレース機能によって、Natural レポート番号 10 にトレースデータが書き込まれます。
次の情報は、メインフレーム環境にのみ適用されます。
Natural RPC サーバーセッションで TS=ON
が指定された場合、Natural RPC サーバートレース内のすべてのメッセージは大文字に変換されます。 クライアント間のデータのトレースに TS=ON
の影響はなく、何も変更されることはありません。
トレースファイル定義は環境に依存します。
メインフレームでは、環境に適したトレースファイルを定義します。『パラメータリファレンス』ドキュメントの NTPRINT
マクロも参照してください。
サーバー起動ジョブで、z/OS データセットを Natural 追加レポート CMPRT10 に割り当てます。
//NATRPC JOB CLASS=K,MSGCLASS=X //NATSTEP EXEC PGM=NATOS //STEPLIB DD DISP=SHR,DSN=SAG.NAT.LOAD // DD DISP=SHR,DSN=SAG.EXX.LOAD //CMPRMIN DD * IM=D,MADIO=0,MT=0,OBJIN=R,AUTO=OFF,MAXCL=0,ID=',',INTENS=1, PRINT=((10),AM=STD) /* //SYSUDUMP DD SYSOUT=X //CMPRT10 DD SYSOUT=X //CMPRINT DD SYSOUT=X /*
RPC パラメータ NTASKS
を 1 より大きな値に設定します。
CMPRMIN
を DISP=SHR
のデータセットまたは *
に割り当てます。
各タスクが別々の CMPRINT
データセットに書き込むため、次の DD カード名を定義します。
CMPRINT
(メインタスク用)
CMPRINT1
~CMPRINT9
(最初の 9 個のサブタスク用)
CMPRIN10
~CMPRINnn
(次の 2 桁の番号のサブタスク用)。nn=NTASKS-1
。
RPC サブパラメータ TRACE
が設定されている場合は、トレース機能によってプリンタ 10 に書き込まれます。
次の DD カード名を定義する必要があります。
CMPRT10
(メインタスク用)
CMPRT101
~CMPRT1nn
(すべてのサブタスク用)nn=NTASKS-1
。
//NATRPC JOB CLASS=K,MSGCLASS=X //NATSTEP EXEC PGM=NATOS,REGION=8M //steplib DD DISP=SHR,DSN=SAG.NAT.LOAD // DD DISP=SHR,DSN=SAG.EXX.LOAD //CMPRMIN DD * IM=D,MADIO=0,MT=0,OBJIN=R,AUTO=OFF,MAXCL=0,ID=',',INTENS=1, PRINT=((10),AM=STD) /* //SYSUDUMP DD SYSOUT=X //CMPRT10 DD SYSOUT=X //CMPRT101 DD SYSOUT=X //CMPRT102 DD SYSOUT=X //CMPRT103 DD SYSOUT=X //CMPRINT DD SYSOUT=X //CMPRINT1 DD SYSOUT=X //CMPRINT2 DD SYSOUT=X //CMPRINT3 DD SYSOUT=X /*
CICS 環境では、トレースファイルは出力ファイル 10 に書き込まれます(このファイルが存在する場合)。 出力ファイル 10 が定義されていない場合、トレースファイルはワークファイル 10 に書き込まれます(このファイルが存在する場合)。 出力ファイル 10 もワークファイル 10 も定義されていない場合は、トレースは無効です。
Natural 出力ファイルは、特別パーティション一時データキューに割り当てる必要があります。
Natural definition: NTPRINT ((10),AM=CICS,DEST=RPCT,TYPE=TD) CICS definition: RPCTRAC DFHDCT TYPE=SDSCI, X BLKSIZE=136, X BUFNO=1, X DSCNAME=RPCTRACE, X RECFORM=VARUNB, X RECSIZE=132, X TYPEFLE=OUTPUT SPACE RPCT DFHDCT TYPE=EXTRA, X DSCNAME=RPCTRACE, X DESTID=RPCT, X OPEN=INITIAL CICS Startup JCL: RPCTRACE DD SYSOUT=*
z/VSE バッチモードでは、トレースファイルをプリンタ番号 10 に割り当てます。
// LIBDEF PHASE,SEARCH=(SAGLIB.NATvrs,SAGLIB.ETBvrs),TEMP // ASSGN SYS000,READER // ASSGN SYSLST,FEE // ASSGN SYS050,FEF // EXEC NATVSE,SIZE=AUTO,PARM='SYSRDR' IM=D,MADIO=0,MT=0,OBJIN=R,AUTO=OFF,MAXCL=0,ID=',',INTENS=1, PRINT=((10),AM=STD,SYSNR=50) /*
vrs は、バージョン、リリース、システムメンテナンスレベルを表します。
BS2000/OSD バッチモードでは、トレースファイルをプリンタ番号 10 に割り当てます。
/.NATRPC LOGON / SYSFILE SYSOUT=output-file / SYSFILE SYSDTA=(SYSCMD) / SYSFILE SYSIPT=(SYSCMD) / FILE trace-file,LINK=P10,OPEN=EXTEND */server trace file / STEP / SETSW ON=2 / EXEC NATBS2 MADIO=O,IM=D,ID=',',PRINT=((10),AM=STD)
個別にトレースできるように、サーバーごとに異なるファイル名(つまり、異なる NATPARM
パラメータファイル)を使用することをお勧めします。 トレースファイルは、Natural サーバーの NATPARM
パラメータファイルに定義されます。
レポート割り当て
論理デバイス LPT10
をレポート番号 10 に割り当てます。
デバイスパラメータ割り当てLPT10
に物理プリンタ指定を選択する代わりに、トレースファイルの名前を示すファイル名を指定します。
/bin/sh -c cat>>/filename
filename は、トレースファイルの名前です。
nattmp:filename
filename は、トレースファイルの名前です。
個別にトレースできるように、サーバーごとに異なるファイル名(つまり、異なる NATPARM
パラメータファイル)を使用することをお勧めします。 トレースファイルは、Natural サーバーの NATPARM
パラメータファイルに定義されます(『コンフィグレーションユーティリティ』の「デバイス/レポート割り当て」を参照)。
レポート
論理デバイス LPT10 をレポート番号 10 に割り当てます。
デバイス
LPT10 に物理プリンタ指定を選択する代わりに、トレースファイルの名前を示すファイル名を指定します。 デフォルトで、同じ名前で新しいファイルが作成されるときに、古いトレースファイルは削除されます。
既存のファイルに新しいログを追加する場合は、以下を指定します。
>>filename
Natural アプリケーションプログラミングインターフェイス(API)USR4010N
によって、次のようなサーバーのランタイム設定を取得できます。
FUSER
、FNAT
、および FSEC
のシステムファイル割り当て
steplib チェーン
USR4010N
を使用するには
サブプログラム USR4010N
を、ライブラリ SYSEXT
からライブラリ SYSTEM
または steplib ライブラリまたはサーバー環境の任意のアプリケーションにコピーします。
DEFINE DATA PARAMETER
ステートメントを使用して、次のパラメータを指定します。
パラメータ | フォーマット | 説明 |
---|---|---|
FUSER-DBID |
N5 | システムファイル FUSER のデータベース ID。
|
FUSER-FNR |
N5 | システムファイル FUSER のファイル番号。
|
FNAT-DBID |
N5 | システムファイル FNAT のデータベース ID。
|
FNAT-FNR |
N5 | システムファイル FNAT のファイル番号。
|
FSEC-DBID |
N5 | システムファイル FSEC のデータベース ID。
|
FSEC-FNR |
N5 | システムファイル FSEC のファイル番号。
|
STEP-NAME |
A8/15 | steplib の名前。 |
STEP-DBID |
N5/15 | steplib のデータベース ID。 |
STEP-FNR |
N5/15 | steplib のファイル番号。 |
クライアント側の呼び出し元プログラムで、次のステートメントを指定します。
CALLNAT 'USR4010' USR4010-PARM
CALLNAT
ステートメントの「構文の説明」も参照してください。
RPC パラメータ AUTORPC=OFF
の場合、スタブ USR4010X
をクライアント環境にコピーします。
RPC パラメータ AUTORPC=ON
の場合、API はクライアント環境で使用可能にできません。使用可能にすると、API はローカルで呼び出されます。
USR4010N
が呼び出されるとき、上記の指定されたパラメータの値はフィールドグループ USR4010-PARM
に出力されます。
アプリケーションプログラミングインターフェイス(API)USR4009N
によって、Natural RPC で現在サポートされている EntireX パラメータを設定または取得できます。 次のものがあります。
圧縮レベル
暗号化レベル
USR4009N
を使用するには
サブプログラム USR4009N
を、ライブラリ SYSEXT
からライブラリ SYSTEM
または steplib ライブラリまたはサーバー環境の任意のアプリケーションにコピーします。
DEFINE DATA PARAMETER
ステートメントを使用して、次のパラメータを指定します。
パラメータ | フォーマット | I/O | 説明 | |
---|---|---|---|---|
FUNCTION |
A01 | I | 関数。設定可能値は次のとおりです。 | |
G |
Get - EntireX パラメータにすでに設定されている値が返されます。 Natural セッションの前に PUT が呼び出されていない場合、すべての値はゼロまたは空白です。
|
|||
P |
Put - EntireX パラメータに対して指定した値が保存され、EntireX の後続のすべてのコールで使用されます。 | |||
ENVIRONMENT |
A01 | I | 環境。設定可能値は次のとおりです。 | |
S |
サーバー | |||
C |
クライアント | |||
B |
両方 | |||
COMPRESSLEVEL |
A01 | I/O | 圧縮レベル。 | |
ENCRYPTION-LEVEL |
I01 | I/O | 暗号化レベル。 | |
ACIVERS |
B02 | O | 使用される ACI バージョン。 | |
RC |
B01 | O | リターンコード(ゼロではない場合)。 要求されたパラメータを設定するために必要な ACI バージョンが含まれています。 | |
0 |
機能は成功しました。 | |||
6 |
暗号化レベルに ACI バージョン 6 が必要です。 | |||
7 |
圧縮レベルに ACI バージョン 7 が必要です。 |
インターフェイスは次の 2 つの方法で呼び出すことができます。
プログラム内から:
CALLNAT 'USR4009N' FUNCTION ENVIRONMENT COMPRESSLEVEL ENCRYPTION-LEVEL ACIVERS RC
コマンドプロンプトから、または上記のパラメータの値とともにステートメント STACK
を使用して:
例:
USR4009P P,C,ENCRYPTION-LEVEL=1 USR4009P P,C,,2 USR4009P P,C,ENCRYPTION-LEVEL=1,COMPRESSLEVEL=6
コマンドモードで、keyword=value
表記を使用して EntireX パラメータのサブセットのみを設定できます。 参照されないパラメータの値は、変更されないままです。
現在の Natural セッションで使用されている ACI バージョンが、要求されたパラメータをサポートするのに十分に大きくない場合は、要求は拒否されて値は保存されません。 この場合、必要な ACI バージョンが RC に含まれます。
EntireX パラメータは、Natural RPC でのみ有効です。
サーバー上の Natural エラーは、次のようにクライアントへ返されます。
Natural RPC は、適切なエラー番号を *ERROR-NR
システム変数へ移動します。
エラーがローカルで発生したかのように Natural が対処します。
注意:
プロファイルパラメータ AUTORPC
が ON に設定されており、サブプログラムがローカル環境内で検出できない場合は、Natural はこれをリモートプロシージャコールであると解釈します。 その後、サービスディレクトリ内でこのサブプログラムの検出を試行します。 そこで検出されない場合は、NAT6972
エラーが発行されます。 そのため、サブプログラムが検出できない場合に NAT0082 エラーは発行されません。
「RPCERR プログラムの使用」も参照してください。
サーバーアプリケーションプログラムが長時間データベースコールを発行しない場合は、次のデータベースコールが NAT3009 エラーメッセージを返します。
この問題を回避するには、次の手順に従います。
SYSRPC
ライブラリ内の NATRPC39
プログラム内に FIND FIRST
または HISTOGRAM
ステートメントを追加します。
更新したプログラムを FUSER
のライブラリ SYSTEM
へコピーします。
サーバーが現在ログオンしているライブラリの STEPLIB 連結は評価されません。
ユーザー出口 NATRPC01
は、Natural がエラーを発行したとき、実際には、エラーが Natural RPC ランタイムによって処理された後、およびレスポンスがクライアントに送り返される直前に呼び出されます。 これは、エラートランザクションと同じ論理ポイント、つまり、Natural
エラー処理の終了時、すべての ON ERROR
ブロックが処理された後に出口が呼び出されることを意味します。
エラートランザクションと違って、この出口は CALLNAT
ステートメントで呼び出されます。したがって、これはサブプログラムであり、その呼び出し元に戻る必要があります。
この出口へのインターフェイスは、エラートランザクションのインターフェイスに類似しています。 さらに、出口は、Natural RPC ランタイムによってトレースされる情報を 10 行まで戻すことができます。 空白以外の文字で始まる行だけがトレースされます。
NATRPC01
は FUSER
のライブラリ SYSTEM
に存在させる必要があります。 サーバーが現在ログオンしているライブラリの STEPLIB 連結は評価されません。
DEFINE DATA PARAMETER
ステートメントブロックを変更しないでください。
管理者がサービスの実行(リモート CALLNAT
)をより制御できるようにするために、オプションの 2 つのユーザー出口が Natural RPC サーバー側で呼び出されます。
これらの出口は相互に独立しており、別々に使用できます。
両方の出口に次のルールが適用されます。
出口は、FUSER
システムファイルのライブラリ SYSTEM
に置く必要があります。
Natural RPC サーバーの起動時に出口が見つかった場合、出口の有効化を示すメッセージが Natural RPC サーバートレースに書き込まれます。 出口は、後で無条件に呼び出されます。 サーバーセッションの存続期間に出口が削除された場合は、永久 NAT0082 エラーが発生します。
Natural RPC サーバーの起動時に出口が見つからなかった場合、サーバーセッションの存続期間に出口が呼び出されることはありません。 出口はダイナミックに有効にできません。
出口は、ユーザーによってサブプログラムとして実装される必要があります。 出口は、単一のダイナミック変数によってパラメータとして呼び出されます。 ダイナミック変数の内容は、リモートサブプログラムの 8 文字の名前です。
ダイナミック変数を使用すると、ユーザーによって書かれた既存の出口での問題を起こすことなく、渡される情報についての将来の拡張を実装できます。
出口は、会話内でも呼び出されます。
Natural RPC サーバーは、出口内の処理されないエラーをインターセプトしません。 処理されないエラーが出口で発生した場合、エラーはクライアントに伝播されます。
出口は、監査やトレースのために使用できます。 NATRPC02
を追加のセキュリティチェックのために使用することもできます。
NATRPC02
の例:
DEFINE DATA PARAMETER 1 SUBPROGRAM (A8) BY VALUE END-DEFINE IF *USER <> 'DBA' AND SUBPROGRAM = 'PRIVATE' *ERROR-NR := 999 END-IF END