CALL コマンド(RNPC)

REMOTE(RNPC)で指定された分散サーバーに対して、指定のプロシージャを呼び出して実行します。
このREMOTE〜CALLの機能を、RNPC(Remote NOMAD Procedure Call)と呼びます。

CALL プロシージャ名 ( 式 [ , 式 ] ... )
REMOTE リモートID
[ SESON / SESOFF ]
[ ON ファイルID [ NOTDISP ] ]
[ TRANSMIT [ ファイル名 ] ] ;


必須パラメータ
プロシージャ名
リモートNOMADで実行されるプロシージャ名(エントリー名)を指定します。
REMOTE リモートID
REMOTE文で定義されたリモートIDを指定します。

オプションパラメータ
SESON/SESOFF
SESONを指定すると、リモートプロシージャの終了後、セッションを保持します。デフォルトはSESON です。
SESOFFを指定すると、リモートプロシージャ終了後、セッションを切断します。
ON ファイルID
ファイルIDで示されたリモートマシン上のファイルを、ローカルに転送します。 ただし、事前にファイルIDで示されるファイルをオープンしておく必要があります。
NOTDISP
「ON ファイルID」で転送されたファイルの内容をOUTPUTウィンドウに出力しません。
デフォルトでは、OUTPUTウィンドウに内容が出力されます。
TRANSMIT [ファイル名]
「ファイル名」で示されたローカルファイルの内容をリモートマシンに転送します。
「ファイル名」が省略されたとき、カレントディレクトリに存在する "プロシージャ名.nom" ファイルを転送します。
もしも、TRANSMITの指定がない場合は、サーバー上のプロシージャを利用します。

解説
分散DSMCGI環境において、リモートマシン上でNOMADプロシージャ(Entry)を実行するためのコマンドです。
このCALL文はREMOTE(RNPC)と組み合わせて使用されます。
RNPCのコールは通常のローカルCALLと違い、結果をローカルにて取得する場合には、 その内容をリモートプロシージャ内でファイルに出力する必要があります。
また、そのファイル名と同名のファイルをローカルでオープンする必要があります。 OUTPUTウィンドウに表示される内容が、そのままローカルに転送されてくるという仕様にはなっておりません。

RNPCによってリモートマシン上で使用されるB/NOMADセッションは、1マシンからのリモートCALLに対し1つのみです。
同じマシンから連続してリモートCALLを行う場合でも、同じB/NOMADセッションが利用されます。
これは、セッション保持状態(SESONオプション指定)でリモートCALLする場合でも同様です。
このため、異なるリモートプロシージャ内で同じ変数を定義(declare)し、セッション保持状態で連続してリモートCALLを実行すると、異なるプロシージャをCALLしたときにエラーになります。
例えば、[ sample1.nom ] ・ [ sample2.nom ] というプロシージャを作成し、両方のプロシージャ内で同じ変数を定義(declare)します。
このプロシージャファイルをリモートマシンに置き、別のマシンからセッション保持状態(SESONオプションを指定)で [ sample1.nom ] をリモートCALLします。そのあと、同様に [ sample2.nom ] をリモートCALLすると、エラー「分散サーバー上のB/NOMADに障害が発生しました。」とエラーメッセージが返ってきます(変数が、先に [ sample1.nom ] 内で定義されているため)。
これは、RNPCの仕様です。この現象を避けるには、セッションを切断する状態(SESOFFオプションを指定)でリモートCALLを行うようにしてください。


プログラム例
REMOTE(RNPC)文のプログラム例を参照してください。