在本地执行rsubmit语句

时间:2018-12-06 15:34:33

标签: sas

我有许多.sas脚本,它们打算在本地运行,并使用rsubmit-endrsubmit块将作业提交到远程服务器。尝试在远程服务器本身上运行脚本时,《 SAS企业指南》偶然发现以下这些语句并抱怨:

ERROR: Invalid or unspecified remote session ID. Set OPTIONS REMOTE=session_id.
NOTE: Subsequent lines will be ignored until ENDRSUBMIT.

有什么办法可以告诉SAS,因此只需在本地执行代码块?

2 个答案:

答案 0 :(得分:2)

您需要添加宏逻辑以确定是否需要提交RSUBMIT行。

您可以使用自动宏变量: SYSHOSTNAME或SYSENV确定您使用的是哪个系统,然后使用它来控制逻辑。

%if &syshostname = somevalue %then %do;
          rsubmit .....;
%end;

如果您使用的是SAS 9.4 M5 +,则可以在oepn代码中使用%IF /%THEN。您必须进行一些测试和研究,以确定在每个系统中获得的价值以及确切的“ someValue”应为您提供。

答案 1 :(得分:0)

RSUBMIT也可以使用与本地服务器的连接。通常在实现多处理时完成。您可以在网上看到它的示例,例如Michelle Buchecker's Hands on Workshop

如果要这样做,可以设置特定于站点的连接脚本,其中在本地PC上,连接脚本说要连接到Unix服务器,而在Unix服务器上,连接脚本...仍然说要连接。到该Unix服务器。然后只需确保已对这些连接进行相同的命名,那么当它在本地计算机上还是在服务器上时,它将使用正确的连接。

注意-这可能是不正确的解决方案,具体取决于您为什么要从服务器上运行它。如果您只是将其转换为始终从服务器运行,请摆脱RSUBMITS。如果您希望有时从一个地方有时从另一个地方运行它,那么您是否执行Reeza所说的(使用%if等来控制是否执行RSUBMIT)或此答案取决于其余地方您的代码。如果只修改%if东西会更简单,那就这样做;如果允许RSUBMIT发生更简单,请执行此操作(例如,如果您具有使用rsubmit-work目录执行操作的大量代码,等等)