テキストファイルをある場所から別の場所にコピーするために使用できる SAS プロシージャ/関数はありますか?
もちろん、これは OS コマンド (%sysexec コピー) を使用して実現できますが、OS に依存しない方法でこれを行う必要がありますか?
ドキュメントを見るとわかることから、proc copy (または proc cport) は SAS ファイルにのみ関連しています。
テキストファイルをある場所から別の場所にコピーするために使用できる SAS プロシージャ/関数はありますか?
もちろん、これは OS コマンド (%sysexec コピー) を使用して実現できますが、OS に依存しない方法でこれを行う必要がありますか?
ドキュメントを見るとわかることから、proc copy (または proc cport) は SAS ファイルにのみ関連しています。
最も簡単な方法は次のようなものです。
data _null_;
infile 'c:\input.txt';
file 'c:\output.txt';
input;
put _infile_;
run;
RawFocus が提供するメソッドは、ファイルをバイナリ形式で一度に 1 バイトずつ入力から出力にコピーします。テキスト ファイルの場合、これは必要ありません。上記を実行すると、一度に 1 行ずつファイルがコピーされます。レコード長には少し注意する必要があるかもしれません.デフォルトのレコード長は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;
ありがとうクリス