выполнять инструкции rsubmit локально - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть ряд .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 так просто выполнить блоки кода локально?

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

RSUBMIT также может использовать соединение с локальным сервером.Обычно это делается при реализации многопроцессорной обработки.Вы можете увидеть примеры этого довольно часто в сети, например, на Мишель Бучекер Hands on Workshop .

Если вы хотите сделать это, вы можете настроить специфичные для сайта сценарии подключения, где на локальном ПК сценарий подключения говорит о подключении к серверу Unix, а на сервере Unix сценарий подключения ... все ещеговорит, чтобы подключиться к этому серверу Unix.Затем просто убедитесь, что вы назвали эти соединения одинаково, поэтому он использует правильное соединение, когда он находится на локальном компьютере, а не на сервере.

Примечание. Это может быть или не быть правильным решением для вас, в зависимости ото том, почему вы запускаете это с сервера.Если вы просто переводите его для запуска с сервера, просто избавьтесь от RSUBMITS.Если вы хотите запустить его иногда из одного места, иногда из другого, то, будете ли вы делать то, что говорит Reeza (используйте %if и т. Д., Чтобы контролировать, выполняется ли RSUBMIT или нет), или этот ответ зависит от остальной части вашего кода,Если будет проще изменить на%, если это не так, сделайте это;если будет проще разрешить возникновение RSUBMIT, сделайте это (например, если у вас есть обширный код, использующий директорию rsubmit-work, и т. д.)

0 голосов
/ 06 декабря 2018

Вам нужно добавить макрос-логику, чтобы определить, нужно ли отправлять строки RSUBMIT.

Вы можете использовать автоматические макропеременные: SYSHOSTNAME или SYSENV, чтобы определить, в какой системе вы находитесь, а затем использовать ее для управления логикой.

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

Если вы используете SAS 9.4M5 + теперь вы можете использовать% IF /% THEN в коде oepn.Вам нужно будет провести некоторое тестирование и исследование, чтобы определить, какое значение вы получаете в каждой системе и какое именно «someValue» должно быть для вас.

...