全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3885 2
2015-10-04
楼主打算用%do %while循环在做一个损益方面的优化。以下代码:
  • 第一部分是用来生成一个例子数据集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

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-10-4 22:53:07
复制代码


在比较大小或有小数加减时用%sysevalf   
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-10-5 16:58:34
sas那个石家庄人 发表于 2015-10-4 22:53
在比较大小或有小数加减时用%sysevalf
就是这个问题,改正后已经可以正常循环了。
十分感谢!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群