파일을 한 위치에서 다른 위치로 복사하는 데 사용할 수있는 SAS 프로 시저/기능이 있습니까?SAS를 사용하여 텍스트 파일 복사
물론 이것은 OS 명령 (% sysexec copy)을 사용하여 달성 할 수 있지만 확실하게 OS를 인식 할 수없는 방법이 있어야합니다. 나는이 문서를보고 무엇을 말할 수에서
는 PROC 사본 (또는 PROC의 cport)는 단지
파일을 한 위치에서 다른 위치로 복사하는 데 사용할 수있는 SAS 프로 시저/기능이 있습니까?SAS를 사용하여 텍스트 파일 복사
물론 이것은 OS 명령 (% sysexec copy)을 사용하여 달성 할 수 있지만 확실하게 OS를 인식 할 수없는 방법이 있어야합니다. 나는이 문서를보고 무엇을 말할 수에서
는 PROC 사본 (또는 PROC의 cport)는 단지
가장 간단한 방법은 같은 : 입력에서 출력 한 번에, 진, 한 바이트를 모든 파일을 복사합니다 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;
이 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;
감사 크리스
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 옵션을 사용하지 않는 경우
는 제어 문자와 파일 마커의 말에 의해 영향을받을.
원시, 이제 답을 정확하게 표시 할 수 있어야합니다. 그렇지 않은 경우 답변이없는 것처럼 보일 수도 있습니다 :) 또한 자주 묻는 질문에이 질문을 추가하는 것이 좋습니다 (IMO, 아주 한정된 '공통'정의). – Joe
완료 - 감사합니다. Joe - 좀 더 '좋은'답변이 먼저 나오지 않았는지 확인하고 싶습니다. 내 자신의 답변을 '정확함'으로 표시하는 것처럼 느껴질 수 있습니다. 또한 - 'FAQ에 추가 하시겠습니까?'라고 말하는 것은 무엇입니까? –
나는 FAQ가 어떻게 작동했는지에 대한 부정확 한 이해를 언급했다. :) – Joe