gpt4 book ai didi

sas - 在 RSUBMIT block 中调用本地 SAS 宏?

转载 作者:行者123 更新时间:2023-12-04 17:53:12 25 4
gpt4 key购买 nike

我有一个在本地计算机上创建的 .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 block 传输到服务器,但我不知道如何。我看过 %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= "&macro_file."
outfile= "&server_file."
; run;

%include "&server_file.";
endrsubmit;

%mend include_on_server;

这让我只需调用 %include_on_server(file="C:\my_file.sas")然后它现在包含在我的远程 session 中。

最佳答案

如何使用 Proc Upload

 rsubmit;
Proc Upload
infile='C:\my_sas_macro.sas'
outfile='//server/my_sas_macro.sas' ;
run;

%include '//server/my_sas_macro.sas';
%my_sas_macro(my_data=remotelib.remotedata)

或者您可以将整个宏分配给宏变量,然后使用 %syslput

关于sas - 在 RSUBMIT block 中调用本地 SAS 宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12557435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com