楼主: xiezuosheng
6372 14

[原创博文] 关于宏运行出错,请高手指教 [推广有奖]

  • 0关注
  • 0粉丝

高中生

45%

还不是VIP/贵宾

-

威望
0
论坛币
30 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
382 点
帖子
34
精华
0
在线时间
20 小时
注册时间
2007-10-4
最后登录
2013-8-9

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位大虾们,下面是我运行朱世武教授书上的程序如下:
%macro create;
data=temp;
set Resdat.&dat end=final;
if year(date)=&year then do;
n+1;
output;
end;
if final then call symput("number",n);
/*创建的宏变量为number,其值为n*/
run;

%mend create;
%macro plot;
proc gplot data=temp;
title2"&pr &year1时序图";
plot &price*date=1;
symbol1 v=star i=join r=1 c=red;
%mend plot;
run;

%macro analyze(getdata,dat,year,pr,price,year1);
%if %upcase(&getdata)=yes %then %create;
footnote "plot of &number of observations";
%plot;
%mend analyze;
run;

%analyze(yes,Idx000001,1999,收盘价,clpr,1999);
%analyze(yes,Idx000002,1999,收盘价,clpr,1999);
%analyze(yes,Idx000001,1999,收盘价,clpr,2000);
%analyze(yes,Idx000002,1999,收盘价,clpr,2000);
run;


在前面编译都非常正常,但
是运行到宏analyse时出错,log上面显示错误如下:

597  %analyze(yes,Idx000001,1999,收盘价,clpr,1999);
WARNING: Apparent symbolic reference NUMBER not resolved.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE GPLOT used:
      real time           8.80 seconds
      cpu time            0.01 seconds

ERROR:File WORK.TEMP.DATA does not exist.
WARNING: Apparent symbolic reference YEAR1时序图 not resolved.
WARNING: The TITLE statement is ambiguous due to invalid options or unquoted text.
598  %analyze(yes,Idx000002,1999,收盘价,clpr,1999);
WARNING: Apparent symbolic reference NUMBER not resolved.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE GPLOT used:
      real time           0.01 seconds
      cpu time            0.01 seconds

ERROR: File WORK.TEMP.DATA does not exist.
WARNING: Apparent symbolic reference YEAR1时序图 not resolved.
WARNING: The TITLE statement is ambiguous due to invalid options or unquoted text.
599  %analyze(yes,Idx000001,1999,收盘价,clpr,2000);
WARNING: Apparent symbolic reference NUMBER not resolved.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE GPLOT used:
      real time           0.01 seconds
      cpu time            0.00 seconds

ERROR: File WORK.TEMP.DATA does not exist.
WARNING: Apparent symbolic reference YEAR1时序图 not resolved.
WARNING: The TITLE statement is ambiguous due to invalid options or unquoted text.
600  %analyze(yes,Idx000002,1999,收盘价,clpr,2000);
WARNING: Apparent symbolic reference NUMBER not resolved.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE GPLOT used:
      real time           0.01 seconds
      cpu time            0.00 seconds

ERROR: File WORK.TEMP.DATA does not exist.
WARNING: Apparent symbolic reference YEAR1时序图 not resolved.
WARNING: The TITLE statement is ambiguous due to invalid options or unquoted text.
601  run;
WARNING: RUN statement ignored due to previous errors. Submit QUIT; to terminate the procedure.
二维码

扫码加我 拉你入群

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

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

关键词:运行出错 observations observation Processing Reference number create price star 程序

沙发
hopewell 发表于 2010-10-7 11:54:55 |只看作者 |坛友微信交流群
这是你自己写的还是抄书上的?
data=temp;
=可能是空格
title2"&pr &year1时序图";
全角分号大概是半角分号; macro variable的引用后面是不是少了个点, "&year1.时序图"
%mend plot;
run;
类似的run语句可以不写吧

使用道具

藤椅
PharmD 发表于 2010-10-7 12:09:17 |只看作者 |坛友微信交流群
xiezuosheng 发表于 2010-10-6 20:36
  1. %if %upcase(&getdata)=yes %then %create;
复制代码

这句应该是
  1. %if %upcase(&getdata)="YES" %then %create;
复制代码


还有楼上说的前两处也要改正。他说的第三处那个run;是多余的,但不会引起出错。

使用道具

板凳
liudeng2005 发表于 2010-10-7 12:49:51 |只看作者 |坛友微信交流群
宏值的比较不需要加引号:)另外你需要学习下宏程序的调试。
我就是我@!

使用道具

报纸
monsterdonald 发表于 2010-10-7 18:46:37 |只看作者 |坛友微信交流群
o,u open up my eyes@@

使用道具

地板
xiezuosheng 发表于 2010-10-8 11:58:43 |只看作者 |坛友微信交流群
太好了,非常感谢各位!

使用道具

7
xiezuosheng 发表于 2010-10-9 00:33:11 |只看作者 |坛友微信交流群
hopewell 发表于 2010-10-7 11:54
这是你自己写的还是抄书上的?
data=temp;
=可能是空格
title2"&pr &year1时序图";
全角分号大概是半角分号; macro variable的引用后面是不是少了个点, "&year1.时序图"
%mend plot;
run;
类似的run语句可以不写吧
这些都是我直接抄书的,按照你的提示后还是显示错误!比如,ERROR: File WORK.TEMP.DATA does not exist.,这个地方我不太理解,我的文件是直接放在
ResDat数据集中的,为什么会显示这样的错误呢?请指导一下,谢谢!

58   %analyze(yes,Idx000001,1999,收盘价,clpr,1999);
WARNING: Apparent symbolic reference NUMBER not resolved.

NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE GPLOT used:
      real time           1:28.55
      cpu time            0.03 seconds



ERROR: File WORK.TEMP.DATA does not exist.
ERROR: No data set open to look up variables.
ERROR: No data set open to look up variables.
NOTE: The previous statement has been deleted.
59   %analyze(yes,Idx000002,1999,收盘价,clpr,1999);
WARNING: Apparent symbolic reference NUMBER not resolved.

使用道具

8
xiezuosheng 发表于 2010-10-9 00:35:35 |只看作者 |坛友微信交流群
3# PharmD 按照你们的提示修改后还是 %analyze(yes,Idx000001,1999,收盘价,clpr,1999);
这个地方出错,我是刚刚开始学习宏,对错误的原因不太明白,请多多指导,谢谢!

使用道具

9
jingju11 发表于 2010-10-9 00:47:28 |只看作者 |坛友微信交流群
xiezuosheng 发表于 2010-10-9 00:35
3# PharmD 按照你们的提示修改后还是 %analyze(yes,Idx000001,1999,收盘价,clpr,1999);
这个地方出错,我是刚刚开始学习宏,对错误的原因不太明白,请多多指导,谢谢!
1.
%upcase(...) = YES
2
globalize 'number'
for exmpale in %create:
%global number;
...

使用道具

10
hopewell 发表于 2010-10-9 08:51:22 |只看作者 |坛友微信交流群
  1. options mprint mcompilenote=all mlogic symbolgen;
复制代码
加上这些选项再看log,应该能找到出错的地方了

使用道具

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

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

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

GMT+8, 2024-4-25 13:04