SAS中文论坛
标题:
是bug吗?后一个日期读不进来
[打印本页]
作者:
shiyiming
时间:
2005-10-29 11:09
标题:
是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,还是程序有错,达人指点
作者:
shiyiming
时间:
2005-10-29 21:12
标题:
数据间空格问题
在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语句中的长度设定去掉。
作者:
shiyiming
时间:
2005-10-30 01:08
标题:
thx!
多谢! <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
欢迎光临 SAS中文论坛 (http://mysas.net/forum/)
Powered by Discuz! X3.2