全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2140 4
2012-02-13
/*清算日处于两个付息日之间的到期收益率计算*/
data;
date0='01mar1997'd;
date1='17Jul1997'd;
date2='01sep1997'd;
days02=datdif(date0,date2,'30/360');
days12=datdif(date1,date2,'30/360');
n=2*(2003-1997);
w=days12/days02;
call symput('n',n);
call symput('w',w);
data a;
delete;
%macro a(r);
data a1;
pl=0;
%do i=1 to &n;
p1=p1+5/(1+&r)**(i-1+&w);
output;
end;
data a1;
set a1 end=lasobs;
if lasobs;
p2=100/(1+&r)**(&n-1+&w);
p=p1+p2;
r=200*&r;
r1=100*&r;
data a(drop=i);
set a a1;
w=&w;
n=&n;
%mend a;
%a(0.0363);
proc print data=a;
run;

这段程序编译没有通过-ERROR: 在 %DO 语句中未找到期望的 %TO,将编译哑宏。
原因出在call symput程序上,请大家帮忙,如何改正。谢谢

二维码

扫码加我 拉你入群

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

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

全部回复
2012-2-13 12:56:30
ERROR 里已经写出来了。将to, end 前面加上%再试试看,和call symput 貌似没什么关系
二维码

扫码加我 拉你入群

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

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

2012-2-13 13:00:23
这个好像是data步的,把do前面的%去掉。。。
二维码

扫码加我 拉你入群

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

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

2012-2-13 14:19:03
MARK 学习下
二维码

扫码加我 拉你入群

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

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

2012-2-13 18:40:03
2楼说得很对。把百分号去掉,多谢
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群