楼主: 陈苑利
1180 4

[原创博文] 求高人改改程序使其可以执行呀!! [推广有奖]

  • 1关注
  • 0粉丝

高中生

65%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.0001
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
180 点
帖子
19
精华
0
在线时间
25 小时
注册时间
2011-10-31
最后登录
2017-9-14

楼主
陈苑利 发表于 2011-11-8 23:01:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data a;
input tstart date10. tend date10. huoqi;
datalines;
10JUN1999 21FEB2002 1
21FEB2002 29OCT2004 2
29OCT2004 19AUG2006 4
;
run;                                /*建立数据集a*/


data ding200(keep=x y z );                  
x=100000;
a='23feb2000'd;
b='23mar2000'd;
d1=12*yrdif(a,b,'act/act'); /*a,b实际相差的月数*/
d2=datdif(a,b,'act/act');    /*a,b实际相差的天数*/
set a;
%macro tiqian(x1);
    %if x=&x1 %then %do;
    if tstart< b <=tend then do;
       y=x*d5*huoqi/360/100;z=x+y;output;end;
    %end;

  %else  %if &x1<x %then %do;
     if tstart< b <=tend then do;
       y=%eval(&x1*d2*huoqi/360/100);
          z=x+y;
     if tstart< a<=tend then do;
       y=%eval(x-&x1*d1*huoqi/12/100);    /*我想弄出x1的值进行运算*/            
       z=z+y;output;end;
     end;
     %end;
     %mend tiqian;
     %tiqian(100000);
     run;
我在上面建立一个关于x1的宏参数,上面标红的应该就是我出错的地方,只是不知道怎么改才是正确的。希望大家帮帮忙呀!!!
二维码

扫码加我 拉你入群

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

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

关键词:Start Lines Input Macro Data 程序

沙发
hubertweir 发表于 2011-11-8 23:10:01
你能直接说你要干嘛么?

就语法而言:
%if后面 &x1->%sysevalf(&x1*1.0)
再后面的%eval直接去掉吧。。。

藤椅
xjg1983 发表于 2011-11-8 23:26:01
学习SAS中!

板凳
playmore 发表于 2011-11-9 09:15:35
%EVAL是在对宏变量进行数值运算时才用到
比如 %let a=%EVAL(&b+&c);
你这里用不到
你这里的x,y,z都只是表中的变量而已,不是宏变量
我看你这个程序是算存完活期后的本金和利息和?
如果是这样的话,程序可以改写下
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

报纸
陈苑利 发表于 2011-11-9 13:37:49
playmore 发表于 2011-11-9 09:15
%EVAL是在对宏变量进行数值运算时才用到
比如 %let a=%EVAL(&b+&c);
你这里用不到
不知道可以怎样改一下?

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-4 06:15