楼主: guanglei
2560 2

[原创博文] Macro中的循环 [推广有奖]

  • 3关注
  • 9粉丝

已卖:1149份资源

副教授

14%

还不是VIP/贵宾

-

威望
0
论坛币
15815 个
通用积分
15.1713
学术水平
10 点
热心指数
12 点
信用等级
10 点
经验
296 点
帖子
606
精华
0
在线时间
802 小时
注册时间
2007-8-29
最后登录
2023-9-22

楼主
guanglei 发表于 2011-9-13 11:16:52 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
在Macro中的%Do %While() 循环为何有问题呢?
提示错误为:
ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric
       operand is required. The condition was: &d<=1
ERROR: The condition in the %DO %WHILE loop, , yielded an invalid or missing value, .  The
       macro will stop executing.
ERROR: The macro ERR will stop executing.


  1. %macro err();
  2. %let  d = -1;

  3. %do %while(&d<=1);
  4.        
  5.         %put &d;
  6.        
  7.         %let d = %sysevalf(&d+0.01);

  8. %end;

  9. %mend err;

  10. %err();
复制代码

我尝试将%While改为 %do %while(%nrstr(&d) <=1); 则条件就不起作用了,会一直执行下去。

哪位仁兄能指点一下呀?
二维码

扫码加我 拉你入群

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

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

关键词:Macro acr CRO Mac condition

沙发
soporaeternus 发表于 2011-9-13 11:21:15
  1. %macro err();
  2. %let  d = -1;
  3. %do %while (%sysevalf(&d<=1));
  4.         %put &d;
  5.         %let d = %sysevalf(&d+0.01);
  6. %end;
  7. %mend err;
  8. %err();
复制代码
macro是文本,尤其作比较运算的时候注意使用%eval或%sysevalf
Let them be hard, but never unjust

藤椅
guanglei 发表于 2011-9-13 12:18:11
soporaeternus 发表于 2011-9-13 11:21
macro是文本,尤其作比较运算的时候注意使用%eval或%sysevalf
谢谢教授,呵呵
三人行,必有我师焉;择其善者而从之,其不善者而改之

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-21 17:23