ローカル マシンの .sas ファイルにマクロを作成しました。マクロのテストに使用しているローカル データセットも用意しました。このデータセットは、リモート データセットと同じ記述子を持ちますが、観測が少ないだけです。今、リモート データセットに対してローカル マクロを実行しようとしています。これが基本的に私が持っているものです:
これは期待どおりに機能します。
%include "C:\my_sas_macro.sas";
%my_sas_macro(my_data=work.localdata)
しかし、これはエラーを生成します (エラーが続きます):
%include "C:\my_sas_macro.sas";
rsubmit;
%my_sas_macro(my_data=remotelib.remotedata)
endrsubmit;
エラーのあるログ:
125 %include "C:\my_sas_macro.sas";
136
137 rsubmit;
NOTE: Remote submit to REMOTEID.__7551 commencing.
WARNING: Apparent invocation of macro MY_SAS_MACRO not resolved.
83 %my_sas_macro(my_data=remotelib.remotedata)
-
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
84 endrsubmit;
NOTE: Remote submit to REMOTEID.__7551 complete.
どうにかして %macro/%mend ブロックをサーバーに転送する必要があると確信していますが、その方法がわかりません。を見た%SYSLPUT
ことがありますが、それはマクロ変数用であり、完全なマクロ用ではありません。
とにかく、コードと%include
そこに SSH を介してサーバー上でマクロを実行できる方法はありますか?
ありがとう!
[編集] 実装されたソリューション
したがって、@ CarolinaJay65 の回答に基づいて、これまでのところかなりうまく機能している次のマクロを思いつきました。
%macro include_on_server(file=);
%let server_file = ~/temp.sas;
%SYSLPUT macro_file=&file;
%SYSLPUT server_file = &server_file;
rsubmit;
proc upload
infile= "¯o_file."
outfile= "&server_file."
; run;
%include "&server_file.";
endrsubmit;
%mend include_on_server;
これにより、電話をかけるだけ%include_on_server(file="C:\my_file.sas")
で、リモート セッションに含まれるようになりました。