SAS:以批处理模式运行时切换DM命令

时间:2018-07-03 18:51:42

标签: sas

我在Windows 7上使用SAS 9.4。以批处理模式运行任何内容时,例如SASUnit,我将看到一个对话框,指出

  

此窗口在行模式下不可用。

我的AUTOEXEC.sas包含这两行,它们打开工作库并最大化IDE窗口:

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

发生错误是因为批量运行时没有窗口环境。 dm语句不适用。

看来,显而易见的解决方案(即测试SAS是否以批处理模式运行)不适用于Windows。 SYSENV变量“报告SAS是否正在交互式运行”。然而on WindowsSYSENV始终包含值FORE,该值指示“当您通过窗口环境交互式运行SAS时”。

除了打开AUTOEXE.sas并在每 次要批处理的地方注释掉这两行之外,还有其他解决方法吗?也许有命令行开关,例如Emacs的--no-init-file,跳过了运行AUTOEXEC.sas的地方?

2 个答案:

答案 0 :(得分:4)

如果您想知道是否可以使用“显示管理器”命令,只需检查“显示管理器”是否正在运行。

%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;

答案 1 :(得分:2)

将SAS作为批处理作业调用时,只需使用-noterminal选项。

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

也:

  

注意:-NOSTATUSWIN选项使您能够以批处理模式运行SAS,以便不显示任何窗口。您可以添加-NOTERMINAL,-NOSPLASH,-NOSTATUSWIN和-NOICON等选项,以防止显示窗口。