2014-04-09 7 views
9

Próbowałem wyeksportować zestaw danych SAS z 49 zmiennymi. Każda z tych zmiennych może mieć długość 32767 znaków. Chcę zapisać ten zestaw danych do pliku txt, ale SAS ogranicza mnie opcją lrecl na 32767 znaków. Czy jest jakiś sposób na zrobienie tego? Próbowałem użyć kroku danych.Eksportowanie pliku txt o długości rekordu linii większej niż 32767 znaków?

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; 

Odpowiedz

5

Pewnie. Musisz sam określić LRECL.

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

Niektóre systemy operacyjne mogą ograniczać długość logicznego rekordu, ale w systemie Windows jest to co najmniej 1e6, więc powinieneś być w porządku.

+0

Awesome ... Popełniłem błąd definiując go przed krokiem danych, używając instrukcji 'options lrecl = 10000000;', która spowodowała błąd. –

+1

Z jakiegoś powodu OPCJE LRECL dopuszcza tylko do 32767, mimo że wyższe LRECL z pewnością są legalne na wyciągu 'FILE'. – Joe

+0

OK ... uruchomiłem kod, ale zapisuje się tylko pierwsze 8000 znaków każdej zmiennej. Dlaczego? Czy istnieje inna opcja, którą muszę zmienić? –