File 是否导出行记录长度大于32767个字符的txt文件?

File 是否导出行记录长度大于32767个字符的txt文件?,file,sas,File,Sas,我一直在尝试导出一个包含49个变量的SAS数据集。每个变量的长度可能为32767个字符。我想将此数据集写入txt文件,但SAS将我的lrecl选项限制为32767个字符。有办法做到这一点吗?我尝试使用数据步骤 data _null_; %let _EFIERR_ = 0; /* set the ERROR detection macro variable */ %let _EFIREC_ = 0; /* clear export record count macro variable *

我一直在尝试导出一个包含49个变量的SAS数据集。每个变量的长度可能为32767个字符。我想将此数据集写入txt文件,但SAS将我的
lrecl
选项限制为32767个字符。有办法做到这一点吗?我尝试使用数据步骤

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;
数据\u空\u;
%设f=0;/*设置错误检测宏变量*/
%设_EFIREC_=0;/*清除导出记录计数宏变量*/
文件'C:path\TEST.txt';
如果_n_=1,则执行;
放置“”
;
结束;
set WORK.SAS_DATASET end=EFIEOD;
格式raw1$32767;
格式raw2$32767;
等
做
EFIOUT+1;
投入1$@;
投入2$@;
等
;
结束;
如果出现“错误”,则调用symputx(“错误”,1);/*设置错误检测宏变量*/
如果是EFIEOD那么
做
放置“”
;
调用symputx(“EFIREC”,EFIOUT);
结束;
跑

当然可以。您只需要自己指定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,所以您应该可以。

太棒了。。。我犯了一个错误,在我的数据步骤之前使用
options lrecl=10000000定义它语句,它给了我一个错误。出于某种原因,选项LRECL最多只允许32767,尽管较高的LRECL在
文件
语句上肯定是合法的。好的。。。运行代码,但它只写入每个变量的前8000个字符。为什么呢?是否还有其他选项需要更改?格式/长度是什么?我希望能找到8000美元。格式在变量上-或者可能是上游的某个东西正在截断它们。你确定它们在SAS中显示所有32767个字符吗?这很有效。。。我发现截断问题不是SAS问题。我通过ODBC从SQL server中提取一个表,这就是数据被截断的地方。