SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1422|回复: 3
打印 上一主题 下一主题

求助在SAS9.2版macro下运行的sql命令的问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-5-2 12:04:17 | 只看该作者

求助在SAS9.2版macro下运行的sql命令的问题

这是我的code:
proc sql;
create table d_cash as

select

d_all.permno,

d_all.ret,
d_all.beta,
d_all.month,
d_cash.cash_holding_prev_year as cash_holding,
(d_all.ret-d_all.alpha-d_all.beta*d_all.month_mkt_ret) as ab_ret
from
d_cash left join d_all
on
d_cash.permno=d_all.permno
and
49<=i<=60
order by
permno, month;

data d_cash;
set d_cash;
if 0<cash_holding<0.20
then
sample=1;
else
if
cash_holding>=0.20
then
sample=2;
else
sample=0;

这是log里的报错:
MPRINT(CASH_STUDY):  proc sql;
NOTE: Line generated by the invoked macro "CASH_STUDY".
11    's cash holding;data d_cash;set d_cash_holding;where year(date)=&year_cycle;run;proc sql;
11  ! create table d_cash
11  ! asselectd_all.permno,d_all.ret,d_all.beta,d_all.month,d_cash.cash_holding_prev_year as
      -------------
      79
11  ! cash_holding,
ERROR 79-322: Expecting a LIKE.

NOTE 137-205: Line generated by the invoked macro "CASH_STUDY".
11    's cash holding;data d_cash;set d_cash_holding;where year(date)=&year_cycle;run;proc sql;
11  ! create table d_cash
11  ! asselectd_all.permno,d_all.ret,d_all.beta,d_all.month,d_cash.cash_holding_prev_year as
                          -
                          22
11  ! cash_holding,
ERROR 22-322: Syntax error, expecting one of the following: (, AS, LIKE.

NOTE: Line generated by the invoked macro "CASH_STUDY".
11    's cash holding;data d_cash;set d_cash_holding;where year(date)=&year_cycle;run;proc sql;
11  ! create table d_cash
11  ! asselectd_all.permno,d_all.ret,d_all.beta,d_all.month,d_cash.cash_holding_prev_year as
                          -
                          200
11  ! cash_holding,
ERROR 200-322: The symbol is not recognized and will be ignored.

NOTE 137-205: Line generated by the invoked macro "CASH_STUDY".
11    's cash holding;data d_cash;set d_cash_holding;where year(date)=&year_cycle;run;proc sql;
11  ! create table d_cash
11  ! asselectd_all.permno,d_all.ret,d_all.beta,d_all.month,d_cash.cash_holding_prev_year as
                                                                                          --
                                                                                          22
11  ! cash_holding,
ERROR 22-322: Syntax error, expecting one of the following: ;, (, ','.

NOTE: Line generated by the invoked macro "CASH_STUDY".
11    's cash holding;data d_cash;set d_cash_holding;where year(date)=&year_cycle;run;proc sql;
11  ! create table d_cash
11  ! asselectd_all.permno,d_all.ret,d_all.beta,d_all.month,d_cash.cash_holding_prev_year as
                                                                                          --
                                                                                          76
11  ! cash_holding,
ERROR 76-322: Syntax error, statement will be ignored.

MPRINT(CASH_STUDY):  create table d_cash asselectd_all.permno,,
,d_all.month,d_cash.cash_holding_prev_year as
cash_holding,(-d_all.alpha-d_all.beta*d_all.month_mkt_ret) as ab_retfromd_cash left join
d_allond_cash.permno=d_all.permnoand49<=i<=60order bypermno, month;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.03 seconds
      cpu time            0.01 seconds



NOTE: Line generated by the invoked macro "CASH_STUDY".
12    data d_cash;set d_cash;if 0<cash_holding<0.20thensample=1;

----------
-

1
180

------------------

180
12  ! elseifcash_holding>=0.20thensample=2
MPRINT(CASH_STUDY):  data d_cash;
MPRINT(CASH_STUDY):  set d_cash;
MPRINT(CASH_STUDY):  if 0<cash_holding<0.20thensample=1;
MPRINT(CASH_STUDY):  elseifcash_holding>=0.20thensample=2;
MPRINT(CASH_STUDY):  elsesample=0;
MPRINT(CASH_STUDY):  retain sample;

WARNING 1-322: Assuming the symbol THEN was misspelled as thensample.

ERROR 180-322: Statement is not valid or it is used out of proper order.

貌似是分不出as select以及把
then 语句和变量sample 当成了thensample这个变量。
总之,有点长,谢谢知情人的回答。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-5-2 12:34:58 | 只看该作者

Re: 求助在SAS9.2版macro下运行的sql命令的问题

log第3行
[code:26lt1lk2]11 's cash holding;data d_cash;set d_cash_holding;where year(date)=&year_cycle;run;proc sql;[/code:26lt1lk2]
[quote:26lt1lk2]'s cash holding;[/quote:26lt1lk2]
是什么东西?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-5-2 13:11:39 | 只看该作者

Re: 求助在SAS9.2版macro下运行的sql命令的问题

sorry
在sql之前还有一个data step没有读出来:

data d_cash;
set d_cash_holding;
where year(date)=&year_cycle;
run;

proc sql;
create table d_cash as
…………等等如上
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-5-2 14:11:55 | 只看该作者

Re: 求助在SAS9.2版macro下运行的sql命令的问题

[quote:3v3rf2pv]'s cash holding;[/quote:3v3rf2pv]
这半句是怎么来的? 从%macro CASH_STUDY; 到data d_cash;之间还有什么?
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-4 06:43 , Processed in 0.065468 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表