下面是我的一段程序:
%macro F(x); /*定义一个计算函数F*/
%local y;
%let y=%sysevalf(100/(1+&x)**1 + 100/(1+&x)**2 + 100/(1+&x)**3 + 1100/(1+&x)**4);
&y
%mend F;
%macro absD(x,y); /*计算x,y差的绝对值*/
%if &x > &y %then %do;
%let D=%sysevalf(&x-&y);
&D
%end;
%else %do;
%let D=%sysevalf(&y-&x);
&D
%end;
%mend;
%put %absD(1000,%F(0.1));
可我发现结果奇怪了,他输出的结果是负的, 可我明明用%absD处理了,要求只输出正值的,好像if的判断力实效了,这是为什么呢?请高手指点.感激呀!