我正在通过将when语句作为宏变量的情况进行参数化,然后将这些语句随后注入另一个宏中。因此,我需要将字符串转换为全局变量,但正在努力掩盖所有内容。我的代码的简化版本如下所示:
%macro test();
%let x_var =
case when var = 'Red' then 1
when var = 'Black***' then 2
when var = 'Deep Purple' then 3
else 4
end as var_sort
;
%global var = %nrbquote(&x_reg.);
%mend;
%test;
...但是,由于我收到该命令的日志错误,因此无法掩盖所有内容:
ERROR: Invalid symbolic variable name =.
ERROR: Invalid symbolic variable name =.
ERROR: Invalid symbolic variable name '.
ERROR: Invalid symbolic variable name '.
ERROR: Invalid symbolic variable name 1.
任何人都可以提出修复建议吗?尝试掩盖特殊字符时,总是会感到困惑,因为这是正确的使用方法。
谢谢
答案 0 :(得分:3)
%global
语句用于定义宏变量(符号)。如果要为其分配值,请使用%let
语句。
%global var ;
%let var = %nrbquote(&x_reg.);
如果要将var
设置为字面&_rx_reg.
,请使用数据步骤。
data _null_;
call symputx('var','&x_reg.','g');
run;