簡體   English   中英

SAS中的粘性宏變量

[英]Sticky Macro variables in SAS

我正在運行一個包含如下宏函數的宏循環:

%macro loop;
%do j=1 %to 1000;
%macro variable;
%end;
%mend;

宏變量本身包含一些宏函數,如下所示:

%macro variable;

%macro rename(x);

proc sql;
create table Renamed&j&x as
select *,

rename1 as rename1,
rename2 as rename2,
...

from rename&j&x
quit;

%rename(1);
%rename(2);
....

%mend;
%mend;

這些粘性嵌套宏循環和變量的正確語法是什么? 我似乎記得使用&& j和&x,但是出現錯誤。

如果我將所有&j替換為2,則代碼可以正常工作,因此代碼很好,循環的遞歸性質無法正確注入變量。 TIA。

確保定義您的宏用作本地的宏變量。

舉例來說,一種宏變量I你還不如一個循環計數器使用。 如果您沒有先將其聲明為本地變量,則如果已經存在一個名為I的宏變量,SAS將修改該宏變量,而不是創建新的本地變量。 然后,當您的宏停止並且調用它的宏嘗試繼續時, &I的值已更改。

PS不要嵌套宏定義。 那只會引起混亂。

暫無
暫無

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

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