我在 SAS Viya 中有一堆程序(至少 50 个),并且正在使用 PRINTTO 语句将日志保存到文件中,以供以后参考。
我想使用相同的语句,并让 SAS Viya 插入文件名和日期。 我已经用自动宏变量完成了日期。
我已经尝试过以下方法: https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/mcrolref/p1ns5wvyfxbca8n1l3konj0yj6nq.htm, https://support.sas.com/kb/24/301.html, https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/mcrolref/p1ns5wvyfxbca8n1l3konj0yj6nq.htm和https://www.sfu.ca/sasdoc/sashtml/macro/z1071968.htm
它们都不起作用:
这个 %put 当前程序是 %sysfunc(getoption(sysin));
产量:
The current program is 84 85
这个:
%sysget(SAS_EXECFILENAME);
WARNING: The argument to macro function %SYSGET is not defined as a system variable.
这个:
%put "Current program: &_SASPROGRAMFILE";
SYMBOLGEN: Macro variable _SASPROGRAMFILE resolves to SYMBOLGEN: Some characters in the above value which were subject to macro quoting have been unquoted for printing. "Current program: "
如果您有任何帮助,我将不胜感激。
真诚的,
巴里
解决这个问题最简单的方法是让每个程序负责告诉你它的名字是什么。因此,选择您要使用的宏变量名称,例如 MYNAMEIS,然后将 %LET 语句添加到每个程序文件的顶部。因此,如果您的程序文件名为 fred.sas,您可以添加以下行:
%let mynameis=fred;
稍后当您构建标题或脚注或任何内容时,您可以将该宏变量引用为 &mynameis。