我在Windows 7上使用SAS 9.4。以批处理模式运行任何内容时,例如SASUnit,我将看到一个对话框,指出
此窗口在行模式下不可用。
我的AUTOEXEC.sas
包含这两行,它们打开工作库并最大化IDE窗口:
dm 'dmsexp; expand libraries; expand work;';
dm 'awsmaximize on';
发生错误是因为批量运行时没有窗口环境。 dm
语句不适用。
看来,显而易见的解决方案(即测试SAS是否以批处理模式运行)不适用于Windows。 SYSENV变量“报告SAS是否正在交互式运行”。然而on Windows,SYSENV
始终包含值FORE
,该值指示“当您通过窗口环境交互式运行SAS时”。
除了打开AUTOEXE.sas
并在每 次要批处理的地方注释掉这两行之外,还有其他解决方法吗?也许有命令行开关,例如Emacs的--no-init-file
,跳过了运行AUTOEXEC.sas
的地方?
答案 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
选项。
也:
注意:-NOSTATUSWIN选项使您能够以批处理模式运行SAS,以便不显示任何窗口。您可以添加-NOTERMINAL,-NOSPLASH,-NOSTATUSWIN和-NOICON等选项,以防止显示窗口。