我有许多打算在本地运行的.sas
脚本,它们使用rsubmit
-endrsubmit
块将作业提交到远程服务器。当试图在远程服务器本身上运行该脚本时,SAS Enterprise Guide遇到以下语句并抱怨:
ERROR: Invalid or unspecified remote session ID. Set OPTIONS REMOTE=session_id.
NOTE: Subsequent lines will be ignored until ENDRSUBMIT.
有没有办法告诉SAS只需在本地执行代码块?
发布于 2018-12-06 23:59:25
您需要添加宏逻辑来确定是否需要提交RSUBMIT行。
您可以使用自动宏变量SYSHOSTNAME或SYSENV来确定您所在的系统,然后使用它来控制逻辑。
%if &syshostname = somevalue %then %do;
rsubmit .....;
%end;
如果你使用的是SAS9.4 M5+,你现在可以在oepn代码中使用% If /%THEN。您必须做一些测试和研究,以确定您在每个系统中获得了什么价值,以及确切的“someValue”应该是什么。
发布于 2018-12-07 04:33:54
RSUBMIT还可以使用到本地服务器的连接。这通常是在实现多处理时完成的。你可以在网上看到很常见的例子,例如在Michelle Buchecker's Hands on Workshop。
如果您想这样做,您可以设置特定于站点的连接脚本,在本地PC上连接脚本指示连接到Unix服务器,而在Unix服务器上设置连接脚本...仍然说要连接到那个Unix服务器。然后,只需确保您以相同的名称命名这些连接,以便它在本地机器上使用正确的名称,而不是在服务器上。
注意--这可能是也可能不是适合你的解决方案,这取决于你为什么要从服务器上运行它。如果您只是将其转换为总是从服务器运行,那么就去掉RSUBMITS。如果你想有时从一个地方运行它,有时从另一个地方运行,那么你是按照Reeza说的做(使用%if
等来控制是否执行RSUBMIT ),还是这个答案取决于你代码的其余部分。如果修改为仅%if out事情会更简单,那么就这样做;如果允许rsubmit发生,就这样做(例如,如果您有大量使用just work目录来做事情的代码,等等)。
https://stackoverflow.com/questions/53654751
复制相似问题