楼主: edle
1574 2

[问答] 宏变量引用出错,请各位指正,谢谢 [推广有奖]

  • 0关注
  • 0粉丝

已卖:1309份资源

本科生

18%

还不是VIP/贵宾

-

威望
0
论坛币
2987 个
通用积分
0.6602
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
1331 点
帖子
92
精华
0
在线时间
29 小时
注册时间
2006-2-8
最后登录
2017-12-8

楼主
edle 发表于 2010-12-12 08:57:48 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
%macro nlp (start=,end=,step=,v1=,v2=,out=);
%let w1=&v1.;
%let w2=&v2.;
%let i=&start.;
%do   %while(&i.<=&end.);
  proc nlp out=_sheet;
     max y;
     PARMS b;
     bounds 0<=b<=1;
     Y1= exp(w1);
     y=y1*w2;
  run;
data temp1;
  set _sheet;
run;
%if &i. = &start. %then %do;/*initialize the date*/
   data &out;
     set temp1;
   run;
%end;
%else %do;
   data &out;
     set &out temp1; /*append more date to result*/
   run;
%end;
%let i=%sysfunc(sum(&i.,&step.));
%end;
%mend nlp;
%nlp (start=0.05,end=20, step=0.5,v1=0.2,v2=0.5,out=result)

但日志报错:请各位给看看,为啥?搞不懂
ERROR: The variable w1 was referenced but not given a value.
ERROR: The variable w2 was referenced but not given a value.
WARNING: Your program statements contain 2 symbols used but not given a value.
NOTE: Initial value of parameter b is set randomly to 0.7902130768.
ERROR: There are references to missing variables when the program code is executed for _OBS_= 1
二维码

扫码加我 拉你入群

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

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

关键词:Start Macro while STAR Step 宏变量赋值

沙发
baoaibaobao 发表于 2010-12-12 11:13:23
没弄明白你这段代码的目的。只发现其中的w1和w2应改为&w1.和&w2.
还有为什么不直接用&v1 &v2~

藤椅
edle 发表于 2010-12-13 05:46:54
目的: v1是从外面给定数值, w1是 Proc nlp要用的变量,之所以分开是为了区分,便于理解。

请高手再给讲下为啥w1前加个&就行了呢?

是啥原理?

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

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