2012-10-24 4 views
4

파일을 한 위치에서 다른 위치로 복사하는 데 사용할 수있는 SAS 프로 시저/기능이 있습니까?SAS를 사용하여 텍스트 파일 복사

물론 이것은 OS 명령 (% sysexec copy)을 사용하여 달성 할 수 있지만 확실하게 OS를 인식 할 수없는 방법이 있어야합니다. 나는이 문서를보고 무엇을 말할 수에서

는 PROC 사본 (또는 PROC의 cport)는 단지

답변

8

가장 간단한 방법은 같은 : 입력에서 출력 한 번에, 진, 한 바이트를 모든 파일을 복사합니다 RawFocus 제시

data _null_; 
    infile 'c:\input.txt'; 
    file 'c:\output.txt'; 
    input; 
    put _infile_; 
run; 

방법. 텍스트 파일의 경우이 작업은 필요하지 않으며 위 작업을 수행하면 한 번에 한 줄씩 파일이 복사됩니다. 당신은 내가 기본 레코드 길이가 256이라고 생각, 레코드 길이와 약간 조심해야 할 수도 있습니다, 그래서 당신은에서와 같이 infile 문에 유사한 명시 적

lrecl=32767 

옵션 또는를 둘 필요가 있습니다

infile 'c:\input.txt' lrecl=32767; 
5

Chris Hemedinger을 보인다 답을 가지고 ... SAS 파일 관련!

/* 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; 

감사 크리스

+0

원시, 이제 답을 정확하게 표시 할 수 있어야합니다. 그렇지 않은 경우 답변이없는 것처럼 보일 수도 있습니다 :) 또한 자주 묻는 질문에이 질문을 추가하는 것이 좋습니다 (IMO, 아주 한정된 '공통'정의). – Joe

+0

완료 - 감사합니다. Joe - 좀 더 '좋은'답변이 먼저 나오지 않았는지 확인하고 싶습니다. 내 자신의 답변을 '정확함'으로 표시하는 것처럼 느껴질 수 있습니다. 또한 - 'FAQ에 추가 하시겠습니까?'라고 말하는 것은 무엇입니까? –

+0

나는 FAQ가 어떻게 작동했는지에 대한 부정확 한 이해를 언급했다. :) – Joe

2

SAS 9.4의 경우 FCOPY 기능을 사용하십시오. recfm = n (none 또는 binary의 경우 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이 FCOPY 따라서 텍스트 파일로 취급됩니다 RECFM = N 옵션을 사용하지 않는 경우

는 제어 문자와 파일 마커의 말에 의해 영향을받을.