BookmarkSubscribeRSS Feed

[SAS 프로그래밍 고수 백승민] [INFILE] 행포인터 조절자를 사용하여 데이터 읽기

Started ‎06-11-2020 by
Modified ‎06-11-2020 by
Views 65

* 출처 : 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;

Version history
Last update:
‎06-11-2020 10:20 PM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

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.


Register now!

Article Labels
Article Tags