%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 中存在。
由于技术和理论知识有限,实在是找不出原因,还请高手指点,谢谢了!