此宏字符串比较以神秘的方式为我工作。对我来说很明显,%test1(intotest)
和%test2(intotest)
的结果是相等的。sas宏字符串比较不等同于相同的方式
%macro test1(intotest=);
%str(&intotest) = %str("b");
%mend;
%macro test2(intotest);
%if %str(&intotest) = %str("b") %then
1;
%else 0;
%mend EAF;
data datatable;
fromtable = 'b';
test1 = %test1(intotest=fromtable);
test2 = %test2(intotest=fromtable);
run;
输出是 fromtable=b,test1=1,test2=0
我将如何改写%test2()
,以便它给出了相同的结果%test1()
并仍然使用信息的数据表作为输入?
这是一个可怕的宏代码使用。请不要使用这个。除非这是一项学术活动,否则你真的想做什么? Proc fcmp用于功能。 – Reeza
'%修补EAF'是什么意思?我只使用没有参数的'%mend'或者你想结束的宏的名字。 –
@StigEide“警告:对宏定义TEST1忽略了%MEND语句上的无关文本。” –