是否有SAS程序/功能可用于将文本文件从一个位置复制到另一个位置?使用SAS复制文本文件
当然这可以使用OS命令(%sysexec副本)来实现,但是肯定必须有一个操作系统不可知的方式来做到这一点?
从我可以通过查看文件告诉,PROC副本(或PROC CPORT)只涉及到SAS文件..
是否有SAS程序/功能可用于将文本文件从一个位置复制到另一个位置?使用SAS复制文本文件
当然这可以使用OS命令(%sysexec副本)来实现,但是肯定必须有一个操作系统不可知的方式来做到这一点?
从我可以通过查看文件告诉,PROC副本(或PROC CPORT)只涉及到SAS文件..
最简单的方法是这样的:
data _null_;
infile 'c:\input.txt';
file 'c:\output.txt';
input;
put _infile_;
run;
通过RawFocus提出将在同一时间从输入复制任何文件,二进制,一个字节输出的方法。对于文本文件,这不是必需的,并且执行上述操作将一次复制文件一行。您可能要稍微小心记录长度,我相信,默认记录长度是256,所以你可能需要把明确的
lrecl=32767
选项或在infile
声明相似,如
infile 'c:\input.txt' lrecl=32767;
似乎Chris Hemedinger有答案!
/* these IN and OUT filerefs can point to anything */
filename in "c:\dataIn\input.xlsx";
filename out "c:\dataOut\output.xlsx";
/* copy the file byte-for-byte */
data _null_;
length filein 8 fileid 8;
filein = fopen('in','I',1,'B');
fileid = fopen('out','O',1,'B');
rec = '20'x;
do while(fread(filein)=0);
rc = fget(filein,rec,1);
rc = fput(fileid, rec);
rc =fwrite(fileid);
end;
rc = fclose(filein);
rc = fclose(fileid);
run;
filename in clear;
filename out clear;
感谢克里斯
对于SAS 9.4和正向使用FCOPY功能。使用recfm = n(n表示无或二进制)来执行真正的副本。
filename src "path-to-src" recfm=n;
filename dst "path-to-dst" recfm=n;
%let rc = %sysfunc(FCOPY(src,dst));
%put %sysfunc(SYSMSG());
如果filerefs不使用RECFM = n选项FCOPY将把它们作为一个文本文件,从而通过控制字符和文件结束标志的影响。
原始的,你现在应该能够标记你的答案是正确的 - 可能想要的,否则这看起来像没有答案:)另外,我建议你将它添加到常见问题解答中,因为它是一个常用的概念(IMO,对'普通'的定义非常有限)。 – Joe
完成 - 感谢乔 - 我有点想确保没有'更好'的答案,但如果真是这样的话,会觉得有点厚颜无耻地标记我自己的答案'正确'!另外 - 你提到'添加到常见问题'是什么? –
我指的是对FAQ如何工作的不准确理解:) – Joe