SAS EG LRECL Limit?



我有一个平面文件(ACC格式),每个观测值的LrecL为8000,该文件有大约30k个观测值。当我读取datausing@和Length语句时,我能够正确读取第一条记录,但不能读取其余记录。这是我的代码:

Data InterA;
infile "\serverDataABC.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;

我的问题是,如何读取整个文件?

提前感谢!

与LRECL相关的企业指南没有什么特别之处,8000-9000不足以解决与操作系统或类似系统相关的任何可能的特殊问题。

我怀疑您的问题与记录分隔符有关。最有可能的是,您期望的是CR+LF(例如,在Windows机器上),而数据具有LF(Unix)或类似的内容。或者,它没有记录分隔符。现在的情况是,SAS认为你有一条非常非常长的队伍,却不知道你还有另一条队伍;所以它在一次迭代后停止读取。

你可以用几种方法来处理这个问题。

首先,在INFILE中,您有TERMSR=选项。

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

其次,如果你的行是固定长度的(每行都是相同的),那么使用RECFM=F强制SAS以8764的块读取它。

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

如果有记录分隔符,可能需要增加一个。如果没有记录分隔符,这就是您需要的解决方案,不过,其他任何东西都无法轻松使用您的当前代码。

最新更新