sas - 如何在 SAS 中的 libname 语句的引用字符串中调用宏变量

标签 sas

我有一个每年都不同的库名,我想制作一个程序来自动调整它。但是为了让一切正常工作,我必须在 libname 语句中引用的字符串中调用一个宏。我该怎么做?

%macro srvyr;

data work.whatever;

length srvyr $4.;

srvyr = (left(year(date()))-1);


srvyr2 = "'C:\Documents and Settings\user\Desktop\sas\d"||srvyr||"a1'";


run;

%mend;

%srvyr;  

/*Everything above sets configures the pathname the way I need it*/

然后我想运行这个:

libname stuff &srvyr;run;

好像是

libname stuff 'C:\Documents and Settings\user\Desktop\sas\d2010a1';
run;

我该如何正确执行此操作?

最佳答案

Does 总是必须是前一年,或者您想将它基于数据集中的值。你不需要宏来解决这个问题。

获取去年的最短方法如下

libname stuff "C:\Documents and Settings\user\Desktop\sas\d%eval(%sysfunc(year(%sysfunc(date())))-1)a1";

如果你想把它分解来让它更具可读性,它可能是这样的

%let lastyear = %eval(%sysfunc(year(%sysfunc(date())))-1);
%let libpath = C:\Documents and Settings\user\Desktop\sas\d&lastyear.a1;

libname stuff "&libpath";

关于sas - 如何在 SAS 中的 libname 语句的引用字符串中调用宏变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5240295/

相关文章:

SAS EG - 在流程流中打开表而不创建表链接

sas - 如何在 SAS University Edition 中直接导入 PC 上的文件?

linux - 在 Crontab 中运行多个相互依赖的 sas 程序

email - 在 SAS SQL 中计算电子邮件地址中的连续辅音

sas - 如何停止加载输入/输出表并返回到 SAS EG 中的流程?

r - 我如何使用 gls 将 SAS 中的 PROC MIXED 翻译成 R? (MMRM, AR1)

sql - 如何在Hadoop中使用sql将所有联合与多个表一起使用?

date - 提示:日期,%Sysfunc(year(&myvar.));

sas teradata 快速加载问题

sas - 使用 symget 与使用 & 取消引用