全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3360 8
2012-08-21
使用的SAS版本是 9.13

我有 一张描述信用卡信息的  卡表(Cards),有  卡号、信用额度、余额 等字段
现在模拟交易的交易:
1、随机取一张卡
2、随机产生一个消费金额
3、判断消费额度是否超过信用卡的余额
4.1、如果未超过,则 将 原来的余额减去 这次的消费金额  为新的 余额
4.2、如果超过,则此次不消费,只对此张信用卡还款。
5、循环上面的过程,直至完成需要的次数。

我写的代码见后面。

现在存在的问题是,call execute 是在我的DATA步骤结束后,再去执行相关的MACRO。
请问在我如何在尽量小改小的前提下,实现我的目的。

%macro updatetable(Cardnum=,AfterUpdateBal=);
proc sql;
  update Cards
     set Bal=&AfterUpdateBal.
         where Card_num="&Cardnum.";
quit;
%mend;

%macro repay(Cardnum=);
proc sql;
  update Cards
     set Bal=LIMIT_AMT
         where Card_num="&Cardnum.";
quit;
%mend;


data trans;
  do i=1 to 100;
    mycardpoint=CEIL(RANUNI(0)*mycardnobs);
          set Cards POINT=mycardpoint nobs=mycardnobs;  /*随机取一张卡*/
    Tx_Amt=1000*rand('uniform');                  /*随机产生一个消费金额*/

          if(Bal>=Tx_Amt) then do;                      /*如果余额为够此次消费,则更新余额*/
            Bal=Bal-Tx_Amt;                             /*更新  “余额” */
      call execute('%updatetable(Cardnum='||Card_num||',AfterUpdateBal='||Bal||');');
          end;
          else do;                                      /*如果余额不够此次消费,则存款,使得余额 等于 信用额度 */
            Tx_Amt=Bal-LIMIT_AMT;                       /*这里 Tx_Amt 表示存入的金额*/
            call execute('%repay(Cardnum='||Card_num||');');
          end;
    output;
  end;
  stop;
run;

二维码

扫码加我 拉你入群

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

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

全部回复
2012-8-21 17:53:33
为什么非得使用call execute?
这对于处理一些小的宏比较方便
如同主贴的情况则有些吃力了
二维码

扫码加我 拉你入群

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

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

2012-8-22 09:17:24
不一定非要。
要实现我现在的目的,有什么方法最好?
二维码

扫码加我 拉你入群

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

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

2012-8-22 09:34:01
你的程序应该是对的啊,为什么要改呢?京剧
二维码

扫码加我 拉你入群

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

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

2012-8-22 10:11:32
这是不对的   call execute是在执行完data之后才执行的。我需要 每次刷消费完之后要立刻更新余额 。

如果是 9.2版本也很容易解决这个问题 .参照下面文档
http://support.sas.com/resources ... ings12/227-2012.pdf
二维码

扫码加我 拉你入群

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

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

2012-8-22 10:45:43
我还是觉得你的没有什么错误。当然TRANS这个数据意义不大。你的程序不就是根据条件对不同的信用卡(有可能重复)反复更新吗?京剧
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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