目次に戻る RNPC

サーバー上のNOMADプロシージャが別のサーバー上のNOMADプロシージャをリモートコールするときのRNPC(Remote NOMAD Procedure Call)に関する説明です。

RNPCの使用方法
RNPC(Remote NOMAD Procedure Call)の機能を利用することにより、別の分散サーバー上のプロシージャを呼び出すことができます。
RNPCは、NOMADの「REMOTE」コマンドと、「CALL」コマンドを使用します。

以下にRNPCの使用例を示します。


/* リモートサーバー上のプロシージャ [ sample.nom ] */
entry sample(&a);
dec &a as a20;

file define aa='result.txt ';
file open aa create;
write "I accept the following string." on aa;
write &a on aa;
file close aa;

return;



/* ローカル上の呼び出し側のプロシージャ */
remote REMSERV nomadserver userid username password userpass server tasmania;
file open aa='result.txt' create;
call sample("Hello!!") remote REMSERV sesoff on aa;
file close aa;

この例では、リモートの分散サーバー[tasmania]上にある[sample.nom]ファイルを実行して、[sample.nom]が出力するファイル[result.txt]をローカルに転送します。
分散サーバー[tasmania]には、あらかじめユーザー名/パスワードがusername/userpassと登録されている必要があります。
ユーザー名/パスワードは、分散サーバー上のコンソールで「dsm /r」として登録してください。
実行後、分散サーバー上のB/NOMADセッションを解放します。

RNPCのコールは通常のローカルCALLと違い、結果をローカルにて取得する場合には、その内容をリモートプロシージャ内でファイルに出力する必要があります。
また、そのファイル名と同名のファイルをローカルでオープンする必要があります。
OUTPUTウィンドウに表示される内容が、そのままローカルに転送されてくるという仕様にはなっておりません。


RNPCでのエラーメッセージ


RNPCでの処理に失敗したときに返されるエラーメッセージは以下の種類があります。

エラーメッセージ内容
RNPCNOAPP 21000
アプリケーションID xxx に対する分散サーバーが見つかりません。
Remoteホスト名の代わりにアプリケーションIDを指定してアクセスしたとき、指定したアプリケーションIDがDSMメインサーバーに登録されていなかった等の理由でサーバーを特定できなかった時に発生します。
RNPCNOCON 21001
分散サーバー xxx に接続できません。
Remoteホスト上のDSMサーバーにアクセスできなかった場合に発生します。
RNPCBNOM 21002
分散サーバー上のB/NOMADに障害が発生しました。(B/NOMADコード xxx)
RemoteホストのDSMサーバーにアクセスできましたが、Remoteホスト上のB/NOMADに何らかの異常があった場合に発生します。(B/NOMADが起動できない・B/NOMADから応答がない、など)
B/NOMADコードは異常の原因を表すコードを示します。
RNPCBUSY 21004
分散先のB/NOMADが起動できないか、あるいはBUSYな状態です。
RemoteNOMADProcedureCallを実行した際、リモート先で、B/NOMADが起動できない、あるいは、現在Busyな状態(Working)の時に発生します。
TXTSRVDB 9001
DSM LOGINエラー;UserID/Password はリモート xxx に対して無効なユーザー/パスワードです。ユーザー/パスワードを入力してください。
Remoteホスト上のDSMサーバーに登録されていないユーザー、あるいは誤ったパスワードをもってRemoteホスト上のDSMサーバーにアクセスしたときに発生します。