2015-04-06 59 views
0

我有平面文件(ACC格式),每个观测的LrecL值为8000,文件有大约30k个观测值。当我读取数据a @和长度语句时,我能够正确读取第一条记录,但不能读取剩余的记录。 继承人我的代码:SAS EG LRECL限制?

Data InterA; 
infile "\\server\Data\ABC.acc" lrecl =8764; 

input 
@ 1 a 12. 
@ 548 b 4. 
@ 552 c 4. 
@ 556 d 4. 
@ 560 e 4. 
@ 585 f 3. 
@ 588 g 3. 
. 
. 
. 
. 
.; 
run; 

我已经是一个问题,如何读取整个文件?

在此先感谢!

回答

2

关于LRECLs的企业指南没有什么特别的特别之处,8000-9000不足以击中任何与OS或类似的特殊问题。

我怀疑你的问题与记录分隔符有关。很可能,您期望的是CR + LF(例如在Windows机器上),数据有LF(Unix)或类似的东西。或者,它没有记录分隔符。发生了什么事是SAS认为你有一条真正的长线,并且不知道你有另一条线;所以它在一次迭代后停止阅读。

您可以通过几种方法处理这个问题。

首先,在INFILE中,您有TERMSTR= option

infile "//whatever/whatever.dat" termstr=LF lrecl=8764; 

其次,如果你的线的长度是固定的(每行是相同的),然后使用RECFM=F强制SAS在正好8764

infile "//whatever/whatever.dat" recfm=f lrecl=8764; 

块读它这可能需要如果有记录分隔符,则加1。如果有没有记录分隔符,那么这是您需要的解决方案,但是,其他任何内容都不会轻松地与您当前的代码一起使用。

+0

哦,我的天啊,你用一个简单的选项RECFM = F解决了我的问题。奇迹般有效。非常感谢! – user4755307