2014-04-09 65 views
9

我一直在試圖用49個變量導出SAS數據集。每個變量可能有32767個字符長。我想將這個數據集寫入一個txt文件,但SAS限制我在lrecl選項32767個字符。有沒有辦法做到這一點?我嘗試使用數據步驟。導出行記錄長度大於32767個字符的txt文件?

data _null_; 
%let _EFIERR_ = 0; /* set the ERROR detection macro variable */ 
%let _EFIREC_ = 0;  /* clear export record count macro variable */ 
file 'C:path\TEST.txt'; 
if _n_ = 1 then do; 
    put "<BLAH>" 
    ; 
end; 
set WORK.SAS_DATASET end=EFIEOD; 
    format raw1 $32767. ; 
    format raw2 $32767. ; 

    etc... 
do; 
    EFIOUT + 1; 
    put raw1 $ @; 
    put raw2 $ @; 

    etc... 
    ; 
end; 
if _ERROR_ then call symputx('_EFIERR_',1); /* set ERROR detection macro variable */ 
if EFIEOD then 
do; 
    put "</BLAH>" 
    ; 
    call symputx('_EFIREC_',EFIOUT); 
end; 
run; 

回答

5

當然。你只需要自己指定LRECL。

filename test temp; 
data _null_; 
set sashelp.class; 
file test lrecl=999999; 
put 
@1 name $32767. 
@32768 sex $32767. 
@65535 age 8. 
;;;; 
run; 

某些操作系統可能會限制您的邏輯記錄長度,但它在Windows中至少爲1e6,所以您應該沒問題。

+0

太棒了......我在使用'options lrecl = 10000000;'語句給我一個錯誤之前,在我的數據步驟之前定義它的錯誤。 –

+1

由於某些原因,OPTIONS LRECL只允許高達32767,儘管LRECL在'FILE'語句中肯定是合法的。 – Joe

+0

好吧...運行代碼,但它只寫入每個變量的前8000個字符。這是爲什麼?我需要改變另一個選項嗎? –

相關問題