楼主: november
3514 2

[问答] 请教一个关于宏的问题 %do %while [推广有奖]

  • 2关注
  • 1粉丝

本科生

86%

还不是VIP/贵宾

-

威望
0
论坛币
1422 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
1 点
经验
2231 点
帖子
111
精华
0
在线时间
86 小时
注册时间
2005-6-17
最后登录
2021-12-20

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
楼主打算用%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

二维码

扫码加我 拉你入群

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

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

关键词:while Hil Error loop 错误提示 ERROR 如何

回帖推荐

sas那个石家庄人 发表于2楼  查看完整内容

在比较大小或有小数加减时用%sysevalf
  1. data a;
  2.         input PnL;
  3.         cards;
  4.         -391.66
  5.         ;
  6. run;

  7. proc sql noprint;
  8. select PnL into : loop
  9.         from a;
  10. quit;

  11. %macro test;
  12. %do %while (%sysevalf(&loop<0,boolean));
  13.         %let loop = %sysevalf(&loop+100);
  14.         %put &loop;
  15. %end;
  16. %mend;
  17. %test
复制代码


在比较大小或有小数加减时用%sysevalf   
已有 1 人评分论坛币 学术水平 热心指数 收起 理由
november + 5 + 1 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1   查看全部评分

使用道具

藤椅
november 发表于 2015-10-5 16:58:34 |只看作者 |坛友微信交流群
sas那个石家庄人 发表于 2015-10-4 22:53
在比较大小或有小数加减时用%sysevalf
就是这个问题,改正后已经可以正常循环了。
十分感谢!!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-30 18:35