SAS: переключать команды DM при работе в пакетном режиме - PullRequest
0 голосов
/ 03 июля 2018

Я использую SAS 9.4 для Windows 7. Когда я запускаю что-либо в пакетном режиме, например, SASUnit , я получаю диалоговое окно с сообщением

Это окно недоступно в линейном режиме.

My AUTOEXEC.sas содержит эти две строки, которые открывают рабочую библиотеку и максимизируют окно IDE:

dm 'dmsexp; expand libraries; expand work;';
dm 'awsmaximize on';

Ошибка возникает из-за отсутствия оконной среды при запуске в пакетном режиме. dm заявления не применяются.

Кажется, что очевидное решение, то есть проверка, работает ли SAS в пакетном режиме или нет, не применимо в Windows. Переменная SYSENV «сообщает, работает ли SAS в интерактивном режиме». Тем не менее, в Windows , SYSENV всегда содержит значение FORE, значение, которое указывает «когда вы запускаете SAS интерактивно через оконную среду».

Есть ли обходной путь для этого, кроме открытия моего AUTOEXE.sas и комментирования этих двух строк каждый раз, когда мне нужно запустить что-то в пакетном режиме? Может быть, есть ключ командной строки, например --no-init-file для Emacs, который пропускает AUTOEXEC.sas?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Если вы хотите узнать, можете ли вы использовать команды диспетчера дисплеев, просто проверьте, работает диспетчер дисплеев или нет.

%if DMS=%sysfunc(getoption(dms)) %then %do;
  dm 'dmsexp; expand libraries; expand work;';
  dm 'awsmaximize on';
%end;

Обратите внимание, что начиная с SAS 9.4M5, вы можете включить этот точный код в файл autoexec.sas без необходимости сначала оборачивать его в макрос.

Если вы используете старую версию SAS, вы можете использовать шаг данных вместо call execute().

data _null_;
  if 'DMS'=getoption('dms') then call execute(
  "dm 'dmsexp; expand libraries; expand work';dm 'awsmaximize on';"
  );
run;
0 голосов
/ 04 июля 2018

Просто используйте параметр -noterminal при вызове SAS в качестве пакетного задания.

https://support.sas.com/documentation/cdl/en/hostwin/69955/HTML/default/viewer.htm#p16esisc4nrd5sn1ps5l6u8f79k6.htm

Также:

Примечание. Параметр -NOSTATUSWIN позволяет запускать SAS в пакетном режиме, чтобы окна не отображались. Вы можете добавить такие параметры, как -NOTERMINAL, -NOSPLASH, -NOSTATUSWIN и -NOICON, чтобы предотвратить отображение окон.

...