楼主: playmore
2478 7

[原创博文] 请问这段宏程序为什么会出错? [推广有奖]

已卖:1645份资源

学科带头人

2%

还不是VIP/贵宾

-

TA的文库  其他...

R相关

经济学相关

金融工程

威望
1
论坛币
16356 个
通用积分
8.6697
学术水平
372 点
热心指数
394 点
信用等级
341 点
经验
15297 点
帖子
1194
精华
1
在线时间
1332 小时
注册时间
2007-1-11
最后登录
2025-12-1

初级学术勋章 初级热心勋章 中级热心勋章

楼主
playmore 发表于 2011-9-28 13:37:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. %macro ab();

  2. %let VarNum=3;
  3. %let Var1=20;
  4. %let Var2=40;
  5. %let Var3=40;

  6. %do i=1 %to &VarNum;
  7. %if &i=1 %then %let CumValue&i=&&Var&i.;
  8. %else %let CumValue&i.=%EVAL(&&CumValue%EVAL(&i-1)+&&Var&i);
  9. %end;
  10. %mend;
复制代码

我想得到CumValue1=20,CumValue2=60,CumValue3=100,运行宏之后结果是对的,但是连续出现两次下面的Warning
WARNING: Apparent symbolic reference CUMVALUE not resolved.

我想这可能是由于宏所造成的,请问具体是什么原因呢?谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:宏程序 Reference Symbolic resolved apparent

沙发
fengdingyi 发表于 2011-9-28 13:48:41
楼主,写宏程序难不难啊

藤椅
chai_prime 发表于 2011-9-28 14:14:26
%else %let CumValue&i.=%EVAL(&&CumValue%EVAL(&i-1)+&&Var&i);

第十行里引用宏变量

cumvalue,

这个没有定义过~~无法解析...这句里还是有问题的呀...括号里感觉怪怪的

板凳
chai_prime 发表于 2011-9-28 14:25:05
  1. %macro ab();

  2. %let VarNum=3;
  3. %let Var1=20;
  4. %let Var2=40;
  5. %let Var3=40;

  6. %let CumValue0 = 0;

  7. %do i=1 %to &VarNum.;
  8.         %let j = %eval(&i.-1);
  9.         %let CumValue&i.=%EVAL(&&CumValue&j.+&&Var&i);

  10.         %put &&CumValue&i.;
  11. %end;


  12. %mend;

  13. %ab;
复制代码
一步一步来吧...着急总是容易出错...

报纸
playmore 发表于 2011-9-28 14:25:15
chai_prime 发表于 2011-9-28 14:14
%else %let CumValue&i.=%EVAL(&&CumValue%EVAL(&i-1)+&&Var&i);

第十行里引用宏变量
这个CumValue我是想一步步计算得到的累计值
用%let定义并赋值的
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

地板
chai_prime 发表于 2011-9-28 14:30:35
playmore 发表于 2011-9-28 14:25
这个CumValue我是想一步步计算得到的累计值
用%let定义并赋值的
%EVAL(&&CumValue%EVAL(&i-1)+&&Var&i)

这句里的,
&&CumValue%EVAL(&i-1)

我觉得是不好实现的...字段连接起来,不一定能实现你想要的结果,没准中间就出现个空格....

所怪,宏变量解析不了

7
chai_prime 发表于 2011-9-28 14:32:42
playmore 发表于 2011-9-28 14:25
这个CumValue我是想一步步计算得到的累计值
用%let定义并赋值的
再者,你存放的不是累计值...而是加和得到的一个新结果存放在新变量里

每次你都用一个新变量来存放计算所得之和~~~

是:&&CumValue&i.

8
soporaeternus 发表于 2011-9-28 14:46:20
我也觉得是macro的执行顺序问题......
Let them be hard, but never unjust

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

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