【发布时间】:2018-07-05 13:34:21
【问题描述】:
我通过将 case 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.
有人可以就修复方法提出建议吗?当我试图掩盖特殊字符时,我总是有点困惑,什么是正确的使用方法。
谢谢
【问题讨论】:
-
X_VAR 中没有需要屏蔽的内容。
-
您创建了一个名为
x_var的宏变量,然后将x_reg用于全局宏变量?此外,格式可能会有所帮助,而不是 case/if then 逻辑。它更简单,不需要宏。