无法访问子句中的 char 变量
char variable in clause cannot be accessed
我想像下面这样在 where 子句中访问 char 变量-->
%macro obs(indsn=, outdsn=, clause=, col=, optr=, subset_val=);
data &outdsn;
set &indsn;
&clause &col &optr &subset_val;
run;
proc print data= &outdsn;run;
%mend obs;
%obs(indsn=infos, outdsn=ch,clause=where,col=name,optr=?, subset_val=Namo);
我正在尝试将 "in contains like" 运算符合并到 where 子句中,但它不起作用会导致语法错误...但是缺少 eq ne le gt 运算符正在工作...
我该如何解决这个问题。感谢您的帮助。
一定要在需要字符串的地方传递(引用)文字,例如:
%obs(indsn=infos, outdsn=ch,clause=where,col=name,optr=?, subset_val='Namo');
您的目标可能是过于自动化。利用 WHERE 可以独立存在的事实,我建议修改如下:
%macro obs(indsn=, outdsn=, filter=);
data &outdsn;
set &indsn;;
Where &filter;
run;
proc print data= &outdsn;run;
%mend obs;
%obs(indsn=infos, outdsn=ch, filter=name ? 'Namo');
如果您最终遇到非常复杂的过滤器,并且在解析过程中遇到问题,您可能需要屏蔽 FILTER 字符串
我想像下面这样在 where 子句中访问 char 变量-->
%macro obs(indsn=, outdsn=, clause=, col=, optr=, subset_val=);
data &outdsn;
set &indsn;
&clause &col &optr &subset_val;
run;
proc print data= &outdsn;run;
%mend obs;
%obs(indsn=infos, outdsn=ch,clause=where,col=name,optr=?, subset_val=Namo);
我正在尝试将 "in contains like" 运算符合并到 where 子句中,但它不起作用会导致语法错误...但是缺少 eq ne le gt 运算符正在工作... 我该如何解决这个问题。感谢您的帮助。
一定要在需要字符串的地方传递(引用)文字,例如:
%obs(indsn=infos, outdsn=ch,clause=where,col=name,optr=?, subset_val='Namo');
您的目标可能是过于自动化。利用 WHERE 可以独立存在的事实,我建议修改如下:
%macro obs(indsn=, outdsn=, filter=);
data &outdsn;
set &indsn;;
Where &filter;
run;
proc print data= &outdsn;run;
%mend obs;
%obs(indsn=infos, outdsn=ch, filter=name ? 'Namo');
如果您最终遇到非常复杂的过滤器,并且在解析过程中遇到问题,您可能需要屏蔽 FILTER 字符串