前のページ|次のページ

%SYSRPUTステートメント

リモートホスト上にあるマクロ変数の値を、ローカルホスト上にあるマクロ変数に割り当てます。

種類: マクロステートメント
制限事項: マクロ定義またはオープンコードで使用可能
要件 SAS/CONNECT
参照項目: Using the Macro Facility with SAS/CONNECT (SAS/CONNECT User's Guide)
SYSERR自動マクロ変数SYSINFO自動マクロ変数、および %SYSLPUTステートメント

構文

%SYSRPUT local-macro-variable=remote-macro-variable;

必須引数

local-macro-variable

先頭にアンパサンドが付いていないマクロ変数名か、またはそのようなマクロ変数名を生成するテキスト式を指定します。この名前は、ローカルホスト上に保存されているマクロ変数名でなければなりません。

remote-macro-variable

先頭にアンパサンドが付いていないマクロ変数名か、またはそのようなマクロ変数名を生成するテキスト式を指定します。この名前は、リモートホスト上に保存されているマクロ変数名でなければなりません。

詳細

SAS/CONNECTソフトウェアを使用して%SYSRPUTステートメントをリモートホストにサブミットすることで、リモートホスト上に保存されているマクロ変数の値を取得できます。%SYSRPUTステートメントは、その取得した値をローカルホスト上にあるマクロ変数に割り当てます。%SYSRPUTステートメントは、マクロ変数に値を割り当てるという意味では、%LETマクロステートメントに似ています。ただし、%SYSRPUTステートメントは、同ステートメントが処理されるリモートホスト上の変数に対してではなく、ローカルホスト上の変数に値を割り当てます。%%SYSRPUTステートメントは、割り当て対象となるマクロ変数を、クライアントセッションにおけるグローバルシンボルテーブルに配置します。
注: リモートホストおよびローカルホスト上のマクロ変数名の先頭には、アンパサンドを付けません。
%SYSRPUTステートメントは、自動マクロ変数SYSINFOの値を取得し、その値をローカルホストに渡す場合に使用すると便利です。SYSINFOには、一部のSASプロシジャが出力したリターンコードの情報が格納されます。SAS/CONNECTのUPLOADプロシジャとDOWNLOADプロシジャは、どちらもマクロ変数SYSINFOを更新できます。これらのプロシジャがエラーで終了した場合、この変数には0以外の値が設定されます。リモートホスト上で%SYSRPUTステートメントを使用すると、SYSINFOマクロ変数の値をローカルSASセッションに送り返すことができます。このようなジョブをリモートホストに対してサブミットすることにより、リモートホストまたはローカルホスト上で別のステップを開始する前に、PROC UPLOADステップまたはPROC DOWNLOADステップが正常終了したかどうかをチェックできます。
%SYSRPUTステートメントの使い方の詳細については、SAS/CONNECTソフトウェアのドキュメントを参照してください。
リモートホスト(サーバー)上で新しいマクロ変数を作成するか、またはリモートホスト上に保存されている既存のマクロ変数の値を変更するには、%SYSLPUTマクロステートメントを使用します。

例: リモートホストのリターンコード値のチェック

次の例では、ファイルをダウンロードし、非対話型のジョブに含まれているステップの成否に関する情報を戻す方法を示します。リモート処理が完了した後、このジョブは変数RETCODEに保存されているリターンコードの値をチェックします。リモート処理が成功した場合、ローカルホスト上の処理を続行します。
%SYSRPUTステートメントは、自動マクロ変数SYSINFOに戻された値を取得し、その値をローカルホストに渡す場合に使用すると便利です。自動マクロ変数SYSINFOには、SASプロシジャで生成されるリターンコード情報が含まれています。次の例では、PROC DOWNLOADステップに続いて%SYSRPUTステートメントを実行しています。その後、変数SYSINFOに戻された値をチェックすることにより、先に実行したPROC DOWNLOADステップが成功したかどうかを調べています。
rsubmit;
   %macro download;
      proc download data=remote.mydata out=local.mydata;
      run;
      %sysrput retcode=&sysinfo;
   %mend download;
   %download
endrsubmit;
%macro checkit;
   %if &retcode = 0 %then %do;
      further processing on local host
   %end;
%mend checkit;
%checkit
SAS/CONNECTのバッチ(非対話型)ジョブは、システム状態コードとして常に0を返します。このため、SAS/CONNECTの非対話型ジョブの成否を判定するには、%SYSRPUTマクロステートメントを使用して、自動マクロ変数SYSERRの値をチェックする必要があります。SAS/CONNECT会話の接続先がどのリモートシステムであるかを決定するには、次のステートメントをリモートサブミットします。
%sysrput rhost=&sysscp;
前のページ|次のページ|ページの先頭へ