SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 588|回复: 2
打印 上一主题 下一主题

是bug吗?后一个日期读不进来

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2005-10-29 11:09:49 | 只看该作者

是bug吗?后一个日期读不进来

初学sas,遇到好多困惑,在论坛里获益良多,真是好地方。
作下面程序时
data interest.weekbond;
infile datalines  ;

input date yymmdd10. code $8. start yymmdd10.  maturity yymmdd10.  volume;
format date yymmdd10. start yymmdd10. maturity yymmdd10.;
datalines;
2002-04-19        100203 2002-04-18        2012-04-18 2000000
2003-09-19        000002 2003-09-17        2013-09-17 1638000
;
run;
第二个日期读入是错误的 读成 2002-04-01 和2003-09-01,不是所要的日期,莫名其妙的加个零,第三个日期就读不进来,提示Invalid data for maturity in
line

date            code      start         maturity volume
2002-04-19  100203 2002-04-01        . .
2003-09-19  000002 2003-09-01        . .
这是bug,还是程序有错,达人指点
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2005-10-29 21:12:51 | 只看该作者

数据间空格问题

在input语句中指定变量长度时,输入方式将采用列输入的形式,即数据间的分隔符将被忽略。

该数据块中,
2002-04-19 100203 2002-04-18 2012-04-18 2000000
2003-09-19 000002 2003-09-17 2013-09-17 1638000
包含了各变量值间的分隔符――空格,此时该空格将被当作变量值的一部分输入。

第一个变量date长度为10,读取前10个字符“2002-04-19”;第二个变量code长度为8,读取随后的8个字符“ 100203 ”,注意包含了两侧的空格;第三个变量start长度为10,读取随后的10个字符“2002-04-18”;第四个变量maturity长度为10,读取随后的10个字符“ 2012-04-1”,注意包含了首位的一个空格;最后一个变量volumn没有指定长度,则读取随后的字符到之后的第一个默认分隔符――空格之前的部分。

现在你应该明白你的问题出在哪里了吧!

要么把数据块中的空格进行合理的安排,要么将input语句中的长度设定去掉。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2005-10-30 01:08:09 | 只看该作者

thx!

多谢!  <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 07:07 , Processed in 0.071355 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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