我有许多.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,因此只需在本地执行代码块?
答案 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目录执行操作的大量代码,等等)