- 第一部分是用来生成一个例子数据集a,只有一个变量PnL,值为-391.66;
- 第二部分是生成宏变量loop,并对其赋值为数据集a中PnL的值-391.66;
- 第三部分定义宏test。目的是当损益(PnL)小于0时,执行一段代码将其改进,这里用简化处理用&loop+100代替。
问题是执行值出现以下错误提示,似乎宏变量loop不能被解析。请教该如何处理?十分感谢!
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: &loop<0
ERROR: %DO %WHILE 循环中的条件 &loop<0 生成无效或缺失值 ,宏将终止执行。
ERROR: 宏 LOOP 将终止执行。
data a;
input PnL;
cards;
-391.66
;
run;
proc sql noprint;
select PnL into : loop
from a;
quit;
%macro test;
%do %while (&loop<0);
%let loop = %eval(&loop+100);
%put &loop;
%end;
%mend;
%test