簡體   English   中英

如何在SAS中libname語句的帶引號的字符串內調用宏變量

[英]How do I invoke a macro variable inside the quoted string of a libname statement in SAS

我的libname每年都有所不同,因此我想制作一個可以對此進行自動調整的程序。 但是,為了使一切正常,我必須在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;

我該怎么做對?

總是必須是前一年,或者是否要基於數據集中的值。 您不需要宏即可解決此問題。

去年最短的方法如下

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";

call symput是你的朋友。 在創建變量srvyr2之后,將以下內容放入數據步驟:

call symput('srvyr_path', srvyr2);

然后在宏之外

libname stuff &srvyr_path;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM