获取正在运行的代码的文件名和文件路径

时间:2018-01-11 02:53:05

标签: sas

我需要将当前运行的SAS程序的名称和文件路径转换为局部变量。我使用SAS_EXECFILEPATHSAS_EXECFILEPATH命令完成了这项工作。我通过Windows SAS运行它,它工作。

但是当我试图在批处理模式下在服务器上运行它时,它失败了。然后我尝试了&_SASPROGRAMFILE参数,该参数在SAS EG上运行良好,但是当我在批处理模式下在服务器上触发它时失败。

是否有可能在服务器上以批处理模式完成此操作?

2 个答案:

答案 0 :(得分:2)

如果您使用%sysfunc(getoption(sysin))启动该计划,则可能正在寻找sas -sysin path/to/file.sasUsage 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;