我需要将当前运行的SAS程序的名称和文件路径转换为局部变量。我使用SAS_EXECFILEPATH
和SAS_EXECFILEPATH
命令完成了这项工作。我通过Windows SAS运行它,它工作。
但是当我试图在批处理模式下在服务器上运行它时,它失败了。然后我尝试了&_SASPROGRAMFILE
参数,该参数在SAS EG
上运行良好,但是当我在批处理模式下在服务器上触发它时失败。
是否有可能在服务器上以批处理模式完成此操作?
答案 0 :(得分:2)
如果您使用%sysfunc(getoption(sysin))
启动该计划,则可能正在寻找sas -sysin path/to/file.sas
(Usage Note 24301: How to retrieve the program name that is currently running in batch mode or interactively)。
答案 1 :(得分:0)
我知道这是延迟的,但是您可以生成一个调用正确代码的宏,具体取决于您是在编辑器中运行还是在批处理模式下运行程序。 Art Carpenter创建了一个很好的宏来解决此问题。
%macro ExecPrg;
%if %sysfunc(getoption(sysin)) ne %str() %then %do;
/* Batch Execution */
%sysfunc(getoption(sysin))
%end;
%else %do;
/* Interactive Execution */
%sysget(SAS_EXECFILEPATH)
%end;
%mend execprg;