在SAS中命名文件时更新variables

我对SAS有点新鲜。 我试图更新文件名通过循环写入Excel文件,但无法分配文件名。 这是我的代码:

%MACRO loop; %DO year1 = 1995 %TO 2008; DATA _NULL_; dailyret = catx(STRIP(&year1), '''/h1/usr11/angeli/finland/haz/phreg_dailyret_', '.csv'''); *to save output to excel; ODS TAGSETS.EXCELXP file= %QUOTE(dailyret) STYLE=minimal OPTIONS ( Orientation = 'landscape' FitToPage = 'yes' Pages_FitWidth = '1' Pages_FitHeight = '100' ); *a block of code that runs the program, irrelevant to my question; ods tagsets.excelxp close; RUN; %END; %MEND loop; %loop; 

我已经尝试了许多变化,但每次我总是收到错误消息“错误:没有逻辑分配文件名DAILYRET”。

有没有什么办法可以做到这一点,所以我不需要在“file =”中添加实体引号,并且能够更新年份?

非常感谢!

-天使

要引用一个macrosvariables,用一个&前缀。 请确保使用双引号字符"来引用文件名,因为macros触发器不能在单引号内parsing。

您还可以select在macros名称后添加一个句点,以便parsing器知道macrosvariables名称结束的位置,并重新开始常规文本。 这意味着当你想附加一个以句点开头的扩展时,你需要有两个句点,因为第一个句点将被用来标记macrosvariables引用的结尾。

 %MACRO loop; %DO year1 = 1995 %TO 2008; ODS TAGSETS.EXCELXP file= "/h1/usr11/angeli/finland/haz/phreg_dailyret_&year1..xml" STYLE=minimal OPTIONS ( Orientation = 'landscape' FitToPage = 'yes' Pages_FitWidth = '1' Pages_FitHeight = '100' ) ; *-------------------; *a block of code that runs the program, irrelevant to my question; *-------------------; ods tagsets.excelxp close; %END; %MEND loop;