全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3379 2
2015-09-16

%macro SUMPRO(classify,time,value,output);

proc freq data=disq(where=(&time.="&value.")) noprint;

    tables &classify.*LOANTYPE/out=temp5(drop=percent)missprint;

run;

proc freq data=disq(where=(&time.="&value.")) noprint;

    tables &classify.*LOANTYPE/out=temp6(drop=percent)missprint;

    weight loanamts;

run;

proc freq data=disq(where=(&time.="&value." and ODFMT="3:m2+")) noprint;

    tables &classify.*LOANTYPE/out=temp7(drop=percent)missprint;

run;

proc freq data=disq(where=(&time.="&value." and ODFMT="3:m2+")) noprint;

    tables &classify.*LOANTYPE/out=temp8(drop=percent)missprint;

    weight OUTSTANDING_IRR;

run;

proc sort data=temp5;by &classify.;run;

proc sort data=temp6;by &classify.;run;

proc sort data=temp7;by &classify.;run;

proc sort data=temp8;by &classify.;run;

data temp_amt1;

    merge

       temp8(rename=(count=&value._odamt))

       temp6(rename=(count=&value._amt));

    by &classify.LOANTYPE;

    format &value._amt &value._odamt comma14.;

    label

       &value._amt = "&value._amt_$"

       &value._odamt = "&value._odamt_$"

    ;

run;

datat emp_amt1;

    set temp_amt1;

    rename &classify.=variable;

run;

proc sort data=temp_amt1;by variable;run;

data temp_acct1;

    merge

       temp7(rename=(count=&value._odacct))

       temp5(rename=(count=&value._acct));

    by &classify.LOANTYPE;

    format &value._acct &value._odacct comma14.;

    label

       &value._acct = "&value._acct_#"

       &value._odacct = "&value._odacct_#"

    ;

run;

data temp_acct1;

    set temp_acct1;

    rename &classify.=variable;

run;

proc sort data=temp_acct1;by variable;run;

/*将每个变量数据集的时间进行横向合并*/

%if %sysfunc(exist(&classify._&output._3))%then %do;

    data &classify._&output._3;

       merge &classify._&output._3 temp_amt1;

       by variable;

    run;

%end;

%else %do;

    data &classify._&output._3;

       set temp_amt;

    run;

%end;

%if %sysfunc(exist(&classify._&output._4))%then %do;

    data &classify._&output._4;

       merge &classify._&output._4 temp_acct1;

       by variable;

    run;

%end;

%else %do;

    data  &classify._&output._4;

       set temp_acct1;

    run;

%end;  

      

data &classify._&output.;

    merge &classify._&output._3 &classify._&output._4;

run;

%mend SUMPRO;

%macro SUMPRO1(classify,output);

%SUMPRO(&CLASSIFY.,FDMARK,SXH,&OUTPUT.);

%SUMPRO(&CLASSIFY.,LOANQTR,Q_2012Q1,&OUTPUT.);

%SUMPRO(&CLASSIFY.,LOANQTR,Q_2012Q2,&OUTPUT.);

%SUMPRO(&CLASSIFY.,LOANQTR,Q_2012Q3,&OUTPUT.);

%SUMPRO(&CLASSIFY.,LOANQTR,Q_2012Q4,&OUTPUT.);

%SUMPRO(&CLASSIFY.,LOANQTR,Q_2013Q1,&OUTPUT.);

%SUMPRO(&CLASSIFY.,LOANQTR,Q_2013Q2,&OUTPUT.);

%SUMPRO(&CLASSIFY.,LOANQTR,Q_2013Q3,&OUTPUT.);

%SUMPRO(&CLASSIFY.,LOANQTR,Q_2013Q4,&OUTPUT.);

%SUMPRO(&CLASSIFY.,LOANQTR,Q_2014Q1,&OUTPUT.);

%SUMPRO(&CLASSIFY.,LOANQTR,Q_2014Q2,&OUTPUT.);

%SUMPRO(&CLASSIFY.,LOANQTR,Q_2014Q3,&OUTPUT.);

%SUMPRO(&CLASSIFY.,LOANQTR,Q_2014Q4,&OUTPUT.);

%SUMPRO(&CLASSIFY.,LOANQTR,Q_2015Q1,&OUTPUT.);

%SUMPRO(&CLASSIFY.,LOANQTR,Q_2015Q2,&OUTPUT.);

%SUMPRO(&CLASSIFY.,LOANQTR,Q_2015Q3,&OUTPUT.);

/*%SUMPRO(&CLASSIFY.,LOANQTR,Q_2015Q4,&OUTPUT.);*/

%MEND SUMPRO1;

%SUMPRO1((F_3P,F3P);

%SUMPRO1((F_5P,F5P);

以上程序运行第一遍时无反应,第二遍时报如下错误:

ERROR: 条目锁定不可用于 SUMPRO1.MACRO(目录 WORK.SASMACR 中),由 DMS Process 锁定。

ERROR: 条目 SUMPRO1.MACRO 已经在目录 WORK.SASMACR 中存在。

由于技术和理论知识有限,实在是找不出原因,还请高手指点,谢谢了!


二维码

扫码加我 拉你入群

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

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

全部回复
2017-2-27 12:35:08
楼主现在这个问题解决了么?求教如何结局,一直都是只在日志中出现,之前重启sas还能好,现在怎么折腾都不好,但宏程序之前运行还是好的。
二维码

扫码加我 拉你入群

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

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

2017-3-6 10:03:24
不好意思,是由于我的粗心,在“%SUMPRO1((F_3P,F3P);%SUMPRO1((F_5P,F5P);”宏程序中多加了左半括号导致的,改正之后就没问题了
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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