5

テキストファイルをある場所から別の場所にコピーするために使用できる SAS プロシージャ/関数はありますか?

もちろん、これは OS コマンド (%sysexec コピー) を使用して実現できますが、OS に依存しない方法でこれを行う必要がありますか?

ドキュメントを見るとわかることから、proc copy (または proc cport) は SAS ファイルにのみ関連しています。

4

3 に答える 3

10

最も簡単な方法は次のようなものです。

 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;
于 2012-10-25T07:35:49.620 に答える
6

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;

ありがとうクリス

于 2012-10-24T09:20:06.797 に答える