본문 바로가기
SAS/SAS 함수

【SAS 함수】 278. MOPEN

by 기서무나구물 2021. 10. 4.

포스팅 목차

    MOPEN

     


    디렉토리 아이디와 멤버 이름에 의해 파일을 연다.

    Category: 외부 파일 접근 및 처리 함수 (External Files)

     


    문 법


    MOPEN
     (directory-id,member-name<open-mode<,record-length<,record-format>>>)


    Arguments

         - directory

         는 DOPEN함수에 의해 반환되는 인식자.

         - open-mode

    A  현재 파일의 끝에 새로운 레코드를 기록가능한 모드.
    I  입력 모드로 오픈한다.(기본)
    O  출력 모드로 오픈한다.
    S  순차적 입력모드로 오픈한다.
    U  읽기와 쓰기모두 가능한 업데이트 모드로 오픈한다.
    W  순차적 업데이트 모드로 오픈한다.

         - record-format

    B  데이터를 이항 데이터로 처리한다.
    D  디폴트 레크드 포맷을 이용한다.
    E  편집 가능한 레코드 포맷을 이용한다.
    F  파일은 고정된 length 레코드를 포함한다.
    P  파일은 호스트에 의존하는 레코드 포맷에서 프린터 캐리지 제어를 포함한다.
    V  파일은 변수 length 레코드를 포함한다.

     


    관련 함수

    함수명 함수내용
    CEXIST
    SAS 카탈로그나 SAS 카탈로그 엔트리의 존재성을 확인후에 반환한다.
    DCLOSE
    DOPEN 함수에 의해 열었던 디렉토리를 닫는다.
    DNUM
    디렉토리에서 멤버의 수를 반환한다.
    DOPEN 디렉토리 OPEN하여서 0보다 큰 directory identifier value을 반환한다.
    DREAD
    디렉토리 구성원의 이름을 반환한다.
    EXIST
    SAS 데이터 라이브러리 멤버의 존재성을 확인한다.
    FCLOSE
    외부파일, 디렉토리, 디렉토리 멤버를 닫는다.
    FETCH SAS 데이터 세트로부터 현재 관측치 다음의 관측치를 데이터 세트 데이터 벡터(DDV) 안으로 관측치를 읽는다.
    FETCHOBS SAS 데이터 세트로부터 지정한 관측치를 데이터 SET 데이터 벡터(DDV)로 읽는다.
    FGET
    파일 데이터 벡터(FDB)로부터 변수에 데이터를 복사한다.
    FILEEXIST
    외부 파일의 물리적 이름에 의해 외부 파일의 존재성을 확인한다.
    FILENAME SAS 파일 참조자(fileref)를 외부 파일 또는 출력 장치와 연결한다. 이와 반대로 파일 참조자(Fileref)와 외부 파일의 관계를 해제할 수 있으며, 외부 파일 속성을 출력할 수 있다. 
    FILEREF
    현재 SAS섹션에 fileref이 할당되었는지 확인한다.
    FOPEN
    외부파일을 연다.
    FPOS
    파일 데이터 버퍼(FDB)에서 칼럼 포인터의 위치를 설정한다.
    FPUT
    SAS 데이터 세트에서 FDB로 데이터를 이동한다.
    FREAD 외부파일에서 FDB로 레코드를 읽는다.
    FREWIND
    파일의 시작에 파일 포인터를 배치하고 값을 반환한다.
    FSEP
    FGET함수를 위한 구분자를 설정한다.
    FWRITE
    외부파일에 레코드를 기록한다.
    MOPEN
    디렉토리 아이디와 멤버 이름에 의해 파일을 연다.
    NOTE
    SAS 데이터 세트의 현재 관측치에 대한 관측치 아이디를 반환한다.
    OPEN SAS 데이터 세트를 OPEN하고, 데이터 세트 ID를 반환한다.
    POINT NOTE함수에 의해 확인된 위치에 관측치를 이동시키고, 값을 반환한다.
    SYSMSG 마지막 데이터 세트나 외부 파일 함수 실행으로부터 에러메시지나 경고 메시지 반환한다.

     


    예 제

     

    예 제 1 :

    디렉토리를 오픈하여, 멤버의 수를 반환받고, 첫 번째 인수의 이름을 받아서, 첫 번째 멤버(WINNT)를 열었다가 닫는다.

    SAS Statements
    data MOPEN;
         rc  = filename('mydir','c:\');
         did = dopen('mydir');
         length frstname $20.;
         frstname = ' ';
         memcount = dnum(did);
    
         if (memcount>0) then do;
            frstname = dread(did,1);
            fid = mopen(did,frstname,'i');
            put fid=;
            put '출력';
            rc = fclose(fid);
         end;
         else _msg_=sysmsg();
         rc=dclose(did);
    run;

     

    Results
    * 로그 :  
    fid=0  
    출력  
    
    * 아웃풋 :  
    frstname    memcount   
    WINNT         49

     


    예 제 2 :

    멤버의 file+확장자명, file명, 확장자명을 반환한다.

    SAS Statements
    filename dir "c:\";
    data files;
         length file $100 ext $10 filenm $50;
         did=dopen('dir');
         rc=dnum(did);
         put rc=;
    
         do i = 1 to dnum(did);
            file=dread(did,i);
            put file=;
            ext=lowcase(reverse(scan(reverse(file),1,'.')));
            put ext=;
    
            filenm = lowcase(scan(file,1,'.'));
            put filenm=;
    
            fid = mopen(did,file);
            put fid=;
            if fid then do;
               rc=fclose(fid);
               output;
            end;
         end;
         rc=dclose(did);
         keep file filenm ext;
    run;

     

    Results
    rc=44
    file=WINNT
    ext=winnt
    filenm=winnt
    0
    file=MWASPI
    ext=mwaspi
    filenm=mwaspi
    0
    file=FOUND.000
    ext=000
    filenm=found
    0
    file=Program Files
    ext=program fi
    filenm=program files
    0
    file=back.txt
    ext=txt
    filenm=back
    2
    - 생 략 -

     


    예 제 3 :

    C드라이브를 오픈한후에 mopen.txt를 OPEN(생성)하여서 “This is a test.”를 추가한 후에 닫는다.

    SAS Statements
    %let rc  = %sysfunc(filename(file,c:\));
    %let did = %sysfunc(dopen(&file));
    %let fid = %sysfunc(mopen(&did,mopen.txt,o,0,d));
    %let rc  = %sysfunc(fput(&fid,This is a test.));
    %let rc  = %sysfunc(fwrite(&fid));
    %let rc  = %sysfunc(fclose(&fid));

     

    Results
    * 외부파일:
    This is a test.

     


    엑셀(EXCEL)과 SAS 함수(SAS Function) 비교 리스트 링크

     

    SAS 함수(SAS Function) 리스트 링크
    반응형

    'SAS > SAS 함수' 카테고리의 다른 글

    【SAS 함수】 280. N  (0) 2021.10.05
    【SAS 함수】 279. MORT  (0) 2021.10.05
    【SAS 함수】 277. MONTH  (0) 2021.10.04
    【SAS 함수】 276. MODZ  (0) 2021.10.04
    [SAS 함수] 275. MODULEN  (0) 2021.10.04

    댓글