【发布时间】:2021-01-01 20:19:51
【问题描述】:
我正在更新一个使用哈希表的程序。并且程序有很多重复的变量,这些变量会定期更改。 我一直在更新它们以引用包含这些变量的宏代码的程序,因此我们不必一一更改它们,并且它在我所有其他项目中一直像魅力一样工作,但我正在努力处理这些哈希表 例如
%let year = x2020;
data acute &year.;
if 0 then set a_&syear.;
if _n_=1 then do;
declare has Tx(dataset:"Ty");
Tx.defineData("city","&year.");
Tx.define();
call missing(city,&year.);
end;
....
run;
我已将其范围缩小到使用 &year。在 Tx.defineData 行中。 它似乎没有在引号内选择宏,并且出现此错误:
未声明的数据符号 &year。因为有对象
虽然我通常对引号内的宏没有问题。
我尝试将 let 函数更改为 %let year = "x2020"; 并将 dequote() 用于不需要引号的区域,我也尝试使用 quote(&year.) 代替但得到
未声明的数据符号“。”对于哈希对象....
有没有人想出在这种情况下使用 let 宏的方法?
【问题讨论】:
标签: hash sas hashtable sas-macro