【发布时间】:2020-08-12 13:54:17
【问题描述】:
在我的情况下我无法理解这个错误,因为我可以执行宏并且它运行良好,我尝试在它给我这个错误后 10 分钟再次运行它,有时我执行它四次给我第五次一个正确的结果。 这是我的代码:
%let list = &Control_1.
&Control_2.
&Control_3.
&Control_4.
;
%macro print_control_2(list) / minoperator ;
%let Control_2=Control_2;
%IF &Control_2. in &list. %THEN %DO;
proc sql;
...
;quit;
%end;
%mend;
%print_control_2(&list);
【问题讨论】:
-
&control_1-&control_4解决了什么问题? -
实际上是一个验证宏变量是否存在的列表,因为我有很多文件,每个文件都有一个特定的列表。
-
宏 IN 运算符的分隔符设置了什么?
-
无,因为它有时会起作用,我认为我不应该设置分隔符。
-
您需要知道它使用什么分隔符才能了解它是否会在 IN 运算符右侧看到正确数量的值。我认为如果您没有在宏中设置分隔符,那么它使用的将基于系统设置,如果您在调用之间更改它可能会有所不同。你确定你在 IN 运算符的两边都有价值观吗?
标签: sas eval sas-macro in-operator