2015-04-06 61 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