* 출처 : http://cafe.daum.net/statsas/3F8j/248
FILENAME FOO 'C:\WORK\TEMP1.TXT';
* 방법1 : COMPRESS 함수로 TAG 처리하기;
DATA BACK_1;
INFILE FOO FIRSTOBS=2 OBS=24;
INPUT /
#2 @'<patcit num="' VAR1 : $5.
/
#4 @'<country>' VAR2 : $20.
#5 @'<doc-number>' VAR3 : $7.
#6 @'<kind>' VAR4 : $5.
#7 @'<name>' VAR5 : $20.
#8 @'<date>' VAR6 : $8.
/
/
/
;
* COMPRESS 함수를 사용하여서 TGA제거;
LENGTH PATCIT_NUM $5. COUNTRY $10. DOC_NUMBER $6. KIND $1. NAME $15.;
PATCIT_NUM = VAR1;
COUNTRY = TRANWRD(VAR2,'</country>','');
DOC_NUMBER = VAR3;
KIND = TRANWRD(VAR4,'</kind>','');
NAME = TRANWRD(VAR5,'</name>','');
DATE = VAR6;
DROP VAR:;
RUN;
* 방법2 : 정규식 함수로 TAG 처리하기;
DATA BACK_2;
INFILE FOO FIRSTOBS=2 OBS=24;
INPUT /
#2 @14 PATCIT_NUM :$5.
/
#4 COUNTRY :$35.
#5 DOC_NUMBER :$40.
#6 KIND :$30.
#7 NAME :$30.
#8 DATE :$30.
/
/
/
;
ARRAY HTML PATCIT_NUM--DATE;
* 정규식 정의;
RX1=PRXPARSE("s/<.*?>//");
* 정규식을 사용하여서 TAG 제거;
DO I=1 TO DIM(HTML);
call prxchange(rx1,10,HTML[I]);
END;
DROP I RX1;
RUN;
* 방법3 : 동일한 형태의 다수 파일 읽기;
DATA BACK_3;
LENGTH FILEPOS MYINFILE $ 300;
INPUT FILEPOS $ ;
infile DUMMY filevar=FILEPOS filename=myinfile EOF=CHK EOV=FIR;
PUT 'STEP-1 : ' _ALL_;
do while(not done);
INPUT /
/ @'<patcit num="' VAR1 : $5.
/
/ @'<country>' VAR2 : $20.
/ @'<doc-number>' VAR3 : $7.
/ @'<kind>' VAR4 : $5.
/ @'<name>' VAR5 : $20.
/ @'<date>' VAR6 : $8.
/
/
/ @@
;
* COMPRESS 함수를 사용하여서 TGA제거;
LENGTH PATCIT_NUM $5. COUNTRY $10. DOC_NUMBER $6. KIND $1. NAME $15.;
PATCIT_NUM = VAR1;
COUNTRY = TRANWRD(VAR2,'</country>','');
DOC_NUMBER = VAR3;
KIND = TRANWRD(VAR4,'</kind>','');
NAME = TRANWRD(VAR5,'</name>','');
DATE = VAR6;
DROP VAR: DONE;
OUTPUT;
END;
RETURN;
CHK:
DONE=1;
PUT _ALL_;
RETURN;
CARDS;
C:\WORK\TEMP1.TXT
C:\WORK\TEMP2.TXT
;
RUN;
* 방법4 : FILENAME 구문 사용하기;
FILENAME FILES PIPE "DIR ""C:\WORK\TEMP*.TXT"" /S /B ";
DATA BACK_4;
INFILE FILES PAD TRUNCOVER;
INPUT FILEPOS $25.;
infile DUMMY filevar=FILEPOS filename=myinfile EOF=CHK;
do while(not done);
INPUT /
/ @'<patcit num="' VAR1 : $5.
/
/ @'<country>' VAR2 : $20.
/ @'<doc-number>' VAR3 : $7.
/ @'<kind>' VAR4 : $5.
/ @'<name>' VAR5 : $20.
/ @'<date>' VAR6 : $8.
/
/
/ @@
;
* COMPRESS 함수를 사용하여서 TGA제거;
LENGTH PATCIT_NUM $5. COUNTRY $10. DOC_NUMBER $6. KIND $1. NAME $15.;
PATCIT_NUM = VAR1;
COUNTRY = TRANWRD(VAR2,'</country>','');
DOC_NUMBER = VAR3;
KIND = TRANWRD(VAR4,'</kind>','');
NAME = TRANWRD(VAR5,'</name>','');
DATE = VAR6;
DROP VAR: DONE;
OUTPUT;
END;
RETURN;
CHK:
DONE=1;
PUT _ALL_;
RETURN;
RUN;
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.