|
|
6#

楼主 |
发表于 2008-4-11 13:41:32
|
只看该作者
Re: 大家能不能帮看看宏程序问题出在哪里?
谢谢施板和lili,我把程序在我的机器上运行的log贴了出来
NOTE: Copyright (c) 2002-2003 by SAS Institute Inc., Cary, NC, USA.
NOTE: SAS (r) 9.1 (TS1M3 DBCS3054)
Licensed to DANKOOK UNIVERSITY, Site 0038249001.
NOTE: 该会话正在执行,平台: XP_PRO
NOTE: SAS 9.1.3 SP4 (E9BX01)
NOTE: SAS 初始化所用时间:
实际时间 4.46 秒
CPU 时间 0.65 秒
NOTE: 从数据集 _EXP0_.INDEX 读取了 534 个观测。
NOTE: 数据集 WORK.INDEX 有 534 个观测和 2 个变量。
NOTE: 从数据集 _EXP0_.SH180PARAME 读取了 2 个观测。
NOTE: 数据集 WORK.SH180PARAME 有 2 个观测和 2 个变量。
NOTE: 从数据集 _EXP0_.TEST 读取了 1068 个观测。
NOTE: 数据集 WORK.TEST 有 1068 个观测和 3 个变量。
1
2
3 %macro calcu(eventzqdm,eventdate);/*isolate subset of data for a given company, calc Beta on
3 ! releveant range;
4 calc CAR on event window; append event period data to Results dataset*/
5
6 data test1;
7 set test;
8 if zqdm ^=&eventzqdm&i then delete; /*判断eventzqdm并删除无关数据*/
9 obs=_n_;
10 run;
11
12
13 proc sql noprint;
14 select obs into:num from test1
15 where tradedate=&eventdate&i; /*判断eventdate*/
16 quit;
17
18 data betafirm;
19 set test1;
20 where %eval(&num-10)<=obs<=%eval(&num+10);
21 run;
22
23 data index1;
24 set index;
25 obs=_n_;
26 run;
27
28
29 proc sql noprint;
30 select obs into:num from index1
31 where tradedate=&eventdate;
32 quit;
33
34 data beta_mkt;
35 set index1;
36 where %eval(&num-10)<=obs<=%eval(&num+10);
37 run;
38
39 data betaboth;
40 merge betafirm beta_mkt;
41 run;
42
43 proc reg noprint data=betaboth outest=Coefout;
44 model ret=indexret;
45 quit;
46
47 data _null_;
48 set coefout;
49 call symput('nextalpha',intercept);
50 call symput('nextbeta',indexret);
51 run;
52
53
54 data eventfirm;
55 set test1;
56 where %eval(&num-30)<=obs<=%eval(&num-11);
57 run;
58
59 data event_mkt;
60 set index1;
61 where %eval(&num-30)<=obs<=%eval(&num-11);
62 run;
63
64 data Car_calc;
65 merge eventfirm event_mkt;
66 by tradedate;
67 if _N_=1 then Car=ret-(&nextalpha + &nextbeta*indexret);
68 else car =ret-(&nextalpha + &nextbeta*indexret)+holdcar;
69 holdcar=car;
70 retain holdcar;
71 alpha=&nextalpha;
72 beta=&nextbeta;
73 run;
74
75 proc append base= Cars data=Car_calc(drop=holdcar);
76
77 %mend calcu;
78
79
80 %macro main;
81 %global num nextalpha nextbeta betanobs;
82 data _null_;
83 set sh180parame end=last;
84 call symput (('eventzqdm'||compress(_n_)),zqdm);
85 call symput(('eventdate'||compress(_n_)),ltdate);
86 if last then call symput('num',_n_);
87 run;
88 %do i=1 %to &num;
89 %calcu(&&eventzqdm&i,&&eventdate&i);
90 %end;
91 %mend main;
92
93 %main;
NOTE: 数字值已转换为字符值,位置:(行:列)。
1:91 1:146 1:198
NOTE: 从数据集 WORK.SH180PARAME 读取了 2 个观测。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.46 秒
CPU 时间 0.04 秒
NOTE: 字符值已转换为数字值,位置:(行:列)。
1:29
NOTE: 从数据集 WORK.TEST 读取了 1068 个观测。
NOTE: 数据集 WORK.TEST1 有 0 个观测和 4 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.01 秒
CPU 时间 0.01 秒
ERROR: 用 等于 (=) 的表达式具有不同数据类型的组件。
NOTE: SAS 系统由于错误而停止了该步的处理。
NOTE: “PROCEDURE SQL”所用时间(总处理时间):
实际时间 0.26 秒
CPU 时间 0.00 秒
NOTE: 从数据集 WORK.TEST1 读取了 0 个观测。
WHERE (obs>=-8 and obs<=12);
NOTE: 数据集 WORK.BETAFIRM 有 0 个观测和 4 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
NOTE: 从数据集 WORK.INDEX 读取了 534 个观测。
NOTE: 数据集 WORK.INDEX1 有 534 个观测和 3 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
ERROR: 用 等于 (=) 的表达式具有不同数据类型的组件。
NOTE: SAS 系统由于错误而停止了该步的处理。
NOTE: “PROCEDURE SQL”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
NOTE: 从数据集 WORK.INDEX1 读取了 12 个观测。
WHERE (obs>=-8 and obs<=12);
NOTE: 数据集 WORK.BETA_MKT 有 12 个观测和 3 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
NOTE: 从数据集 WORK.BETAFIRM 读取了 0 个观测。
NOTE: 从数据集 WORK.BETA_MKT 读取了 12 个观测。
NOTE: 数据集 WORK.BETABOTH 有 12 个观测和 5 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
ERROR: No valid observations are found.
NOTE: 数据集 WORK.COEFOUT 有 0 个观测和 7 个变量。
NOTE: “PROCEDURE REG”所用时间(总处理时间):
实际时间 0.43 秒
CPU 时间 0.00 秒
NOTE: 数字值已转换为字符值,位置:(行:列)。
5:116 5:153
NOTE: 从数据集 WORK.COEFOUT 读取了 0 个观测。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.01 秒
CPU 时间 0.01 秒
NOTE: 从数据集 WORK.TEST1 读取了 0 个观测。
WHERE (obs>=-28 and obs<=-9);
NOTE: 数据集 WORK.EVENTFIRM 有 0 个观测和 4 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
NOTE: 从数据集 WORK.INDEX1 读取了 0 个观测。
WHERE (obs>=-28 and obs<=-9);
NOTE: 数据集 WORK.EVENT_MKT 有 0 个观测和 3 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
22: 无法确定 LINE 和 COLUMN。
NOTE 242-205: NOSPOOL 已打开。用 OPTION SPOOL 重新运行可恢复出错的 LINE 和 COLUMN。
ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值, INPUT,
PUT.
22: 无法确定 LINE 和 COLUMN。
NOTE 242-205: NOSPOOL 已打开。用 OPTION SPOOL 重新运行可恢复出错的 LINE 和 COLUMN。
ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值, INPUT,
PUT.
NOTE: 由调用宏“NEXTALPHA”生成行。
7 holdcar=car; retain holdcar; alpha=&nextalpha; beta=&nextbeta; run;
- -
22 22
ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值, INPUT,
PUT.
NOTE: SAS 系统由于错误而停止了该步的处理。
WARNING: 数据集 WORK.CAR_CALC 可能不完整。该步停止时,共有 0 个观测和 9 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.12 秒
CPU 时间 0.03 秒
NOTE: 正在追加 WORK.CAR_CALC 至 WORK.CARS。
NOTE: BASE 数据集不存在。 正将 DATA 文件复制到 BASE 文件。
NOTE: 从数据集 WORK.CAR_CALC 读取了 0 个观测。
NOTE: 数据集 WORK.CARS 有 0 个观测和 8 个变量。
NOTE: “PROCEDURE APPEND”所用时间(总处理时间):
实际时间 0.04 秒
CPU 时间 0.01 秒
NOTE: 字符值已转换为数字值,位置:(行:列)。
1:29
NOTE: 从数据集 WORK.TEST 读取了 1068 个观测。
NOTE: 数据集 WORK.TEST1 有 0 个观测和 4 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
ERROR: 用 等于 (=) 的表达式具有不同数据类型的组件。
NOTE: SAS 系统由于错误而停止了该步的处理。
NOTE: “PROCEDURE SQL”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
NOTE: 从数据集 WORK.TEST1 读取了 0 个观测。
WHERE (obs>=-8 and obs<=12);
NOTE: 数据集 WORK.BETAFIRM 有 0 个观测和 4 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.01 秒
CPU 时间 0.01 秒
NOTE: 从数据集 WORK.INDEX 读取了 534 个观测。
NOTE: 数据集 WORK.INDEX1 有 534 个观测和 3 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
ERROR: 用 等于 (=) 的表达式具有不同数据类型的组件。
NOTE: SAS 系统由于错误而停止了该步的处理。
NOTE: “PROCEDURE SQL”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
NOTE: 从数据集 WORK.INDEX1 读取了 12 个观测。
WHERE (obs>=-8 and obs<=12);
NOTE: 数据集 WORK.BETA_MKT 有 12 个观测和 3 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.01 秒
CPU 时间 0.01 秒
NOTE: 从数据集 WORK.BETAFIRM 读取了 0 个观测。
NOTE: 从数据集 WORK.BETA_MKT 读取了 12 个观测。
NOTE: 数据集 WORK.BETABOTH 有 12 个观测和 5 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.01 秒
CPU 时间 0.01 秒
ERROR: No valid observations are found.
NOTE: 数据集 WORK.COEFOUT 有 0 个观测和 7 个变量。
NOTE: “PROCEDURE REG”所用时间(总处理时间):
实际时间 0.03 秒
CPU 时间 0.03 秒
NOTE: 数字值已转换为字符值,位置:(行:列)。
5:116 5:153
NOTE: 从数据集 WORK.COEFOUT 读取了 0 个观测。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
NOTE: 从数据集 WORK.TEST1 读取了 0 个观测。
WHERE (obs>=-28 and obs<=-9);
NOTE: 数据集 WORK.EVENTFIRM 有 0 个观测和 4 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.01 秒
CPU 时间 0.01 秒
NOTE: 从数据集 WORK.INDEX1 读取了 0 个观测。
WHERE (obs>=-28 and obs<=-9);
NOTE: 数据集 WORK.EVENT_MKT 有 0 个观测和 3 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒
22: 无法确定 LINE 和 COLUMN。
NOTE 242-205: NOSPOOL 已打开。用 OPTION SPOOL 重新运行可恢复出错的 LINE 和 COLUMN。
ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值, INPUT,
PUT.
22: 无法确定 LINE 和 COLUMN。
NOTE 242-205: NOSPOOL 已打开。用 OPTION SPOOL 重新运行可恢复出错的 LINE 和 COLUMN。
ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值, INPUT,
PUT.
NOTE: 由调用宏“NEXTALPHA”生成行。
7 holdcar=car; retain holdcar; alpha=&nextalpha; beta=&nextbeta; run;
- -
22 22
ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值, INPUT,
PUT.
NOTE: SAS 系统由于错误而停止了该步的处理。
WARNING: 数据集 WORK.CAR_CALC 可能不完整。该步停止时,共有 0 个观测和 9 个变量。
WARNING: 数据集 WORK.CAR_CALC 由于该步已停止,而没有被替换。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.00 秒
CPU 时间 0.00 秒 |
|