【发布时间】:2015-04-09 09:21:34
【问题描述】:
我有一个宏 CVI,它为给定的 x 返回一个 y。为了简化它,假设
%macro CVI(Nt);
%local result;
%let result = %sysevalf(2*&Nt**2-&Nt);
&Result;
%mend;
这按预期工作
%macro run;
data _null_;
%do i = 1 %to 5;
%let s = %CVI(&i);
%put &i &s;
%end;
run;
%mend;
但我试图在给定的时间间隔内找到最大值,比如在 9 和 25 之间。
我修改了%run一点,但没有运气。
%macro run2;
data _null_;
retain max;
%do i = 9 %to 25;
%if max < %CVI(&i) %then max = %CVI(&i);
%else max = max;
%end;
run;
%mend;
我是否遗漏了宏内部的任何内容?
【问题讨论】:
-
不是答案,但我认为这可能通过 proc rcmp 而不是宏来更好地完成
-
@Reeza
proc fcmp?我会调查的。 -
糟糕,是的,proc FCMP。