본문 바로가기
SAS/SAS 구문사전

【SAS Statement】 FILENAME 구문, FTP 접근 방법

by 기서무나구물 2022. 1. 30.

포스팅 목차

    o FILENAME 구문, FTP 접근 방법

     


    1. 목 적 

    FILENAME 구문, FTP 접근 방법은 FTP 프로토콜(protocol)을 사용하여 원격(remote) 파일에 접근하여서 파일 다운로드와 업로드 작업을 수행할 수 있다.

     


    2. 문 법 


    FILENAME
     fileref FTP 'external-file' <ftp-options>;

    1) Fileref 

      유효한 파일참조자의 이름을 지정한다.

     

    Tip : 파일참조자와 외부파일 사이의 관계는 SAS 세션이 연결되고 있는 동안이나 또는 다른 FILENAME 구문을 사용하여 관계를 변경하거나 해제 때까지 유지된다. 원하는 경우에 수시로 파일에 대한 파일참조자를 변경 있다.

     

    2) FTP

      FILE TRANSFER Protocol(FTP) 접근 방법을 지정하면 FTP 서버 운영 체제가 실행 중인 네트워크상의 host 시스템 사이에서 파일 읽기와 쓰기 작업을 수행할 수 있다.

     

    Tip : FTP 서버의 로그인, 읽기와 쓰기 작업을 위하여 지정된 파일에 레코드 생성, host 컴퓨터에서 연결 종료 등의 작업을 수행하기 위하여 host 컴퓨터에 연결이 필요한 경우에 FTP FILENAME 구문을 함께 사용하라.

     

    3) ‘external-file’

      읽기와 쓰기 작업을 위한 외부 파일의 물리적 이름을 지정하라. 파일을 전송하지 않고 디렉터리 목록 검색 등의 작업을 수행한다면, 외부 파일의 이름을 지정할 필요 없이 인용부호 안에 공백을 작성하라. 파일참조자에 단일 파일이나 파일이 저장되어 있는 집합 병합소를 연결할 수 있다. FTP서버의 목록 출력을 위하여 DIR옵션을 사용하는 경우에는 이 인수에 디렉터리를 지정하라.

     

    운영환경정보 : 외부파일의 물리적 이름 지정에 대한 상세한 사항은 운영환경에 대한 도움말 참조.
    Tip : 파일을 전송하지 않고 디렉토리 목록 검색 등의 작업을 수행한다면, filename 구문을 지정할 필요가 없다. 대신에 구문에서 인용부호 안에 공백을 작성하라. 예제1 : 디렉토리 목록 검색 참조
    Tip : 파일참조자와 단일 파일 또는 파일이 저장되어 있는 집합 병합소를 연결 있다.
    Tip : DIR옵션을 사용하는 경우에는 인수에 디렉토리를 지정하라.

     


    4) ftp-options

      파일 속성이나 처리 속성 등의 운영 환경과 관련된 옵션을 지정하라.

     

     

    (1) AUTHDOMAIN=’auth-domain’

       FTP 서버에 연결하기 위해 사용되는 인증 도메인 메타데이터 객체의 이름을 지정하라. 인증 도메인은 인증정보 (사용자 ID와 비밀번호)를 참조한다. AUTHDOMAIN=을 지정하면, USER=와 PASS=를 지정할 필요가 없다.

     

    필요사항 : 인증 도메인과 연관된 로그인 정의는 메타데이터 레파지토리에 저장되어 있어야 하고, 메타데이터 서버는 메타데이터 객체 지정자를 처리하기 위하여 실행 중이어야 한다.
    영향 : AUTHDOMAIN= 지정하면, USER= PASS= 지정 필요가 없다.
    관련사항 : 인증 도메인 생성과 사용에 대한 상세한 정보는 SAS Intelligence Platform: Security Administration Guide discussion on credential management “를 참조.

     

    (2) BINARY (별칭 : RECFM=F)

       고정 레코드 형식을 지정한다. 이에 따라서, 모든 레코드의 크기는 라인 구분자를 포함하지 않은 LRECL 크기이다. 데이터는 이미지(binary)모드로 전송된다. BINARY옵션은 (지정된 경우에) FILENAME FTP 구문에 지정된 RECFM= 값을 제어하고, binary 형식으로 전송한다.

     

    별칭 : RECFM=F
    영향 : BINARY 옵션과 S370V 또는 S370VS 옵션을 지정하면, SAS BINARY옵션을 사용하지 않는다.

     

    (3) BLOCKSIZE = blocksize

       Blocksize는 데이터 버퍼의 크기를 byte 단위로 지정한다. 기본값은 32768 이다.

     

    (4) CD=’directory’

       파일 전송을 위한 작업 디렉터리를 현재 지정한 디렉터리(directory)로 변경하도록 지정한다. 여기서 지정한 디렉터리에 대상 파일을 전송한다. CD와 DIR 옵션은 상호 배타적인 옵션이므로, 양쪽 모두 지정되면 FTP는 CD 옵션을 사용하지 않는다.

     

    (5) DEBUG

       SAS 로그에 FTP 서버와 주고받는 정보성 메시지를 작성한다.

     

    (6) DIR

       디렉터리 파일이나 PDF/PDSE 구성원에 접근할 수 있도록 지정한다. External-file 인수에 디렉터리 이름을 함께 지정하라. 

       디렉터리 생성을 원하면 DIR 옵션과 함께 NEW 옵션을 사용해야 하는데,  디렉터리가 이미 존재한다면 NEW 옵션은 적용되지 않는다.

     

    Tip : FILE 또는 INFILE 구문에서 지정된 구성원 이름에 데이터의 파일 확장자를 추가하기를 원한다면, DIR 옵션과 함께 FILEEXT옵션을 사용하라. 만약 FILE 또는 INFILE 구문에서 파일 확장자를 지정하는 경우에는 FILEEXT옵션은 적용되지 않는다.
    Tip : 디렉토리 생성을 원하면 DIR옵션과 함께 NEW옵션을 사용하라. 디렉토리가 이미 존재한다면 NEW 옵션은 적용되지 않을 것이다.
    Tip : NEW 옵션이 생략되고, 유효하지 않은 디렉토리를 지정하면, 새로운 디렉토리는 생성되지 않고 에러 메시지가 생성 것이다.
    Tip : 동시에 열수 있는 디렉토리 또는 z/OS PDSE 구성원의 최대 숫자는 FTP 서버에서 동시에 열수 있는 sockets 개수에 의하여 제한된다. 동시에 열수 있는 socket 개수는 FTP 서버를 설치하면서 설정한 커넥션의 개수에 비례한다. 성능 저하를 피하기 위하여 동시에 열수 있는 socket 개수를 적절하게 제한하는 것이 효율적일 수도 있다.
    영향 : CD옵션과 DIR옵션은 상호 배타적이다. 양쪽 모두가 지정되면, FTP CD옵션을 제어하고, 로그에 정보성 Note 작성한다.
    주요기능 : 예제10 : 디렉토리에서 읽고 쓰기.

     

    (7) ENCODING=encoding-value

       외부파일에 데이터를 읽고 쓰는 경우에 사용하기 위한 인코딩을 지정한다. ENCODING= 값을 지정하는 것은 외부 파일이 현재 세션 인코딩과 다른 인코딩으로 구성되어 있다는 것을 표시한다.

      외부 파일에서 데이터를 읽는 경우에, SAS 지정된 인코딩에서 세션 인코딩으로 데이터를 변환한다. 외부 파일에 데이터를 작성하는 경우에는 세션 인코딩에서 지정된 인코딩으로 데이터를 변환한다.

     

    기본사항 : SAS 기본적으로 외부 파일이 세션 인코딩과 동일한 인코딩으로 존재한다고 가정한다.
    Tip : 데이터는 image 또는 binary 형식으로 전송되고, local 데이터 형식으로 존재한다.
    관련사항 : SAS National Language Support (NLS): Reference Guide 에서 "Encoding Values in SAS Language Elements" 참조

     

     

    (8) FILEEXT

       DIR 옵션과 함께 사용하는 경우에 FILE 또는 INFILE 구문에서 지정된 구성원 이름에 데이터의 파일 확장자를 자동으로 추가하도록 지정한다. LOWCASE_MEMNAME 옵션을 참조하라.

     

    Tip : FILE 또는 INFILE 구문에서 파일 확장자를 지정한 경우에는 FILEEXT 옵션은 적용되지 않는다.
    관련사항 : LOWCASE_MEMNAME 옵션
    주요기능 : 예제10 : 디렉토리에서 읽고 쓰기.

     

    (9) HOST=’host’

       ‘host’에는 FTP 서버가 실행 중인 원격 호스트의 네트워크 이름을 지정한다.

       Host의 이름(예, server.pc.mydomain.com) 또는 컴퓨터의 IP주소(예, 2001:db8: :) 중 하나를 지정할 수 있다.

     

    (10) HOSTRESPONSELEN=’size’

       Size는 FTP 서버의 응답 메시지의 길이를 지정한다. 기본값은 2048 byte 이다.

     

    기본값 : 2048 bytes
    범위 : 2048 ~ 16384 bytes
    제한사항 : 2048 보다 작거나 16384보다 사이즈를 지정하면, size 자동으로 2048 설정된다.

     

    (11) LIST

       FTP 서버에 LIST 명령어를 발행하다. LIST 명령어가 실행되면 개별 파일에 대한 특성과 작업 디렉터리의 항목을 레코드로 반환하여 출력한다.

     

    Tip : 반환되는 파일 속성은 접근하는 FTP서버에 따라 달라진다.

     

    (12) LOWCASE_MEMNAME

       자동호출 매크로를 사용하여 FTP 서버에서 소문자로 구성된 디렉터리 또는 구성원의 이름에서 검색할 수 있도록 지원한다.

       기본적으로 SAS 자동호출 매크로를 사용하여서 이름을 검색하는 경우에 항상 대문자 디렉터리 구성원 이름을 검색한다. %INCLUDE, FILE, INFILE 또는 데이터 스텝의 입/출력 구문을 사용하여 FTP 서버의 파일에 접근하면, 대소문자로 구성되어 있는 디렉터리 또는 구성원에 접근할 수 있다.

     

    제한사항 : 기본적으로 SAS 자동호출 매크로 검색은 항상 대문자 디렉토리 구성원 이름을 검색한다. 대소문자가 혼합된 디렉토리 또는 구성원 이름은 지원하지 않는다.
    영향 : %INCLUDE, FILE, INFILE 또는 데이터 스텝의 /출력 구문을 사용하여 FTP 서버의 파일을 접근하면, 대소문자로 구성되어 있는 디렉토리 또는 구성원에 접근이 가능하다.
    관련사항 : FILEEXT 옵션

     

    (13) LRECL=lrecl

       데이터의 논리 레코드 길이를 지정한다.

     

    기본값 : 256
    영향 : 대안으로, LRECL=시스템 옵션을 사용하여 전역 논리 레코드 길이를 지정 있다.

     

    (14) LS

       FTP서버에 LS 명령어를 발행한다. LS명령어는 파일 특성을 제외한 작업 디렉터리의 항목을 레코드로 반환하여 작성한다. 파일의 일부 목록을 반환하기 위하여, LS명령어와 LSILES=옵션을 함께 사용해야 한다.

     

    Tip : 반환되는 파일 속성은 접근하는 FTP서버에 따라 달라진다.
    Tip : 파일의 일부 목록을 반환하기 위하여, LS 추가적으로 LSILES=옵션을 사용하라.

     

    (15) LSFILES=’character-string’

       LS 옵션과 함께 사용하여서, 작업 디렉터리에서 파일의 일부 목록을 요청하기 위하여서 사용되는 문자열을 지정한다. ‘character-string’에는 와일드카드 문자를 함께 지정할 수 있다.

     

    제한사항 : LSFILE= LS 지정된 경우에 사용 있다.
    Tip : ‘character-string’ 일부로 와일드카드 문자를 지정 있다.
    Tip : 반환되는 파일 속성은 접근하는 FTP서버에 따라 달라진다.
    예제 다음 예제는 sales 시작하고 sas 확장자로 끝나는 모든 파일 목록을 나열한다.
     
    filename myfile ftp '' ls lsfile='sales*.sas' other-ftp-options;

     

    (16) MGET

       FTP 명령어인 MGET과 유사하게 다중 파일을 전송한다. 전송되는 전체 파일을 하나의 파일로 취급한다. 그러나 개별 파일이 새롭게 전송 작업을 시작할 때에 EOV= 변수는 1로 설정된다.

     

    Tip : 전송하기 위한 전체 파일을 하나의 파일로 취급한다. 그러나, 개별 파일이 새롭게 전송 작업을 시작 때에 EOV= 변수는 1 설정된다.
    Tip : 개별 파일을 전송하기 전에, 사용자에게 확인 메시지를 표시하기 위하여 MPROMPT옵션을 지정하라.

     

     

    (17) MPROMPT

       MGET 옵션을 실행하는 경우에 개별 파일을 전송하기 전에 파일 읽기 작업을 계속 수행 할지 여부를 확인하기 위한 메시지를 표시한다.

     

    제한사항 : MPROMPT옵션은 배치처리를 위한 z/OS에서는 사용되지 못한다.

     

    (18) NEW

       DIR 옵션을 사용하는 경우에 FTP에 디렉터리를 생성하도록 지정한다.

     

    Tip : 디렉토리가 존재한다면 NEW옵션은 적용되지 않을 것이다.
    제한사항 : NEW옵션은 z/OS에서 사용되지 못한다.

     

    (19) PASS=’password’

       Password는 USER=옵션에서 지정된 사용자 이름과 함께 사용되는 비밀번호를 지정한다.

     

    Tip : 비밀번호를 입력하는 메시지 창을 표시하도록 하기 위하여 PASS옵션 대신에 PROMPT옵션을 지정 있다.
    Tip : 사용자 이름을 anonymous으로 사용하면, remote host 비밀번호를 대신하여 이메일 주소의 작성을 요청 있다.
    Tip : 암호화된 비밀번호를 사용하기 위하여, PWENCODE 프로시져를 통하여 텍스트 문자열을 암호화하고, 암호화된 비밀번호를 PASS= 옵션에 입력하라.
    주요기능 : 예제 6 : 암호화된 비밀번호 사용하기

     

    (20) PORT=portno

       개별 호스트에서 FTP 데몬이 모니터링하는 port를 지정한다.

     

    Tip : 인터넷 상에서, 특정 서비스에 대하여 포트 번호가 사전에 정의된다. 예를 들어, FTP 대한 기본 port 21이다. Port 번호 목록은 일반적으로 UNIX 컴퓨터의 /etc/services파일에서 정의된다.

     

    (21) PROMPT

       사용자 로그인 비밀번호를 입력하는 메시지 창을 표시하도록 지정한다.

     

    제한사항 PROMPT옵션은 z/OS에서 배치 처리를 위하여 사용 없다.
    영향 : PROMPT USER=옵션 없이 지정되면, 사용자에게 비밀번호뿐만 아니라 ID 요청하는 메시지 창이 표시된다.
    Tip : 사용자 ID 비밀번호를 요청하는 메시지 창에 ID 비밀번호를 입력하여 성공적으로 실행된 후에 사용자 ID 비밀번호를 저장 하기 위하여 SAVEUSER 옵션을 사용 있다.

     

    (22) RCMD = ‘command’

       Command에는 FTP 서버에 전송하기 위한 FTP ‘SITE’ 또는 ‘service’ 명령어를 지정한다. FTP 서버의 SITE 명령어를 사용하여서 시스템에 특정 서비스를 제공하거나 파일 전송을 위하여 필수적인 서비스를 제공할 수 있다.

     

    영향 : 일부 FTP 서비스 명령어는 보안 허가와 명령어 유효성에 따라 특정 client 사이트에서 실행되지 않을 있다.
    Tip : FTP 접근 방법으로 파일을 전송하지만 파일을 읽을 없으면, FTP 서버의 UMASK 설정을 변경해야 한다. FTP서버가 SITE UMASK 설정을 지원하면, 다음 예제처럼 파일의 권한을 변경 있다.
     
    filename in ftp '/mydir/accounting/file2.dat'
       host="xxx.fyi.xxx.com"
       user="john"
       rcmd='site umask 022'
       prompt;
     
    data _null;
    file in;
    put a $80;
    run;
    Tip : 세미콜론으로 명령어를 분리하여 지정하면, 다수의 FTP 서비스 명령어를 지정 있다. 다음은 일부 예제이다.
     
    rcmd='ascii;site umask 002'
    rcmd='stat;site chmod 0400 ~mydir/abc.txt'

     

    (23) RECFM=recfm

       Recfm은 다음 3가지 레코드 형식(formats) 중의 하나를 지정할 수 있다. 기본값은 V이다.

    기본값 : V
    영향 : RECFM=옵션과 S370S 또는 S370VS옵션을 같이 사용하면, SAS RECFM=옵션을 제어한다.

     

    • F : 고정 레코드 형식(Fixed-record format). 모든 레코드의 크기는 라인 구분자를 포함하지 않은 LRECL 크기이다. 데이터는 이미지(binary) 모드로 전송된다.
    별칭 : BINARY
     
    BINARY옵션은 FILENAME FTP 구문에서 RECFM= 값이 지정되어 있다면 그것을 제어하고, binary 전송을 시행한다.

     

    • S : S는 스트림 레코드 형식(stream-record format)이다. 데이터는 이미지(binary) 모드로 전송된다.
    영향 : 읽을 데이터의 양은 현재 LRECL 값과 INFILE 구문에서 지정된 NBYTE=variable 값에 의해 제어된다. NBYTE=variable 읽을 데이터의 크기와 동일한 변수를 지정한다. 지정된 데이터의 양은 LRECL보다 같거나 작아야 한다.
    관련사항 : INFILE 구문에서 NBYTE=옵션을 참조하라.

     

    • V : V는 기본적으로 가변 레코드 형식(variable-record format)이다. 이 형식에서 레코드는 다양한 길이를 가지고, 데이터는 텍스트(stream) 모드로 전송된다.
    영향 : LRECL 지정된 크기보다 레코드는 잘린다.
    Tip : IBM 370 변수 형식 또는 IBM 370 Spanned 변수 형식의 파일을 사용하는 경우에 RECFM=옵션 대신에 S370V 또는 S370VS옵션을 사용하라.

     

    (24) RHELP

       FTP 서버에 HELP 명령어를 실행하여서 결과를 레코드로 반환받는다.

     

    (25) RSTAT

       FTP 서버에 RSTAT 명령어를 실행하여서 결과를 레코드로 반환받는다.

     

    (26) SAVEUSER

       사용자 ID와 비밀번호를 요청하는 창에 ID와 비밀번호를 입력하여 성공적으로 실행된 후에 사용자 ID와 비밀번호를 저장하도록 지시한다.

     

    영향 : 사용자 ID 비밀번호는 SAS 세션이 연결되고 있는 동안이나 파일참조자와 외부 파일 사이의 관계를 변경할 때까지 또는 다른 FILENAME 구문으로 연결을 취소할 때까지 저장된다.

     

    (27) USER=’username’

       FTP 서버에 로그인하기 위하여 사용되는 사용자 이름(Username)을 지정한다.

     

    제한사항 : FTP 접근 방법은 사용자 ID 인증이 필요한 FTP proxy 서버를 지원하지 않는다.
    영향 : PROMPT옵션을 지정하고 USER= 옵션을 지정하지 않으면, 사용자 ID 요청하는 메시지 창이 표시된다.
    Tip : FTP 접근 방법을 사용 경우에 proxy 서버와 FTP서버에 대한 인증정보를 지정 있다. FTP서버에 로그인 하기 위해 필요한 사용자 ID 비밀번호는 user=’userid@ftpservername pass=password host=proxy.server.xxx.com 형식을 사용하여 proxy 서버를 통하여 전송된다. 익명(Anonymous) 사용자 ID 형태가 모두 지원된다.

     

    (28) TERMSTR=’eol-char’

       Eol-char은 RECFM=V이 지정된 경우에 사용되는 라인 구분자이다. 다음은 사용 가능한 유효한 값이다. 기본값은 LF 이다.

     

    • CRLF : 줄바꿈 문자(LF-LINE feed)가 인쇄 복귀 문자(CR-carriage return)의 뒤에 존재한다.
    • LF : 줄바꿈(line feed)
    • NULL : NULL문자(0x00)
    기본값 : LF
    제한사항 : RECFM=V 경우에만 옵션을 사용하라.

     

    (29) WAIT_MILLISECONDS=milliseconds

       FTP 응답 시간을 MS(0.001) 초 단위로 지정하라.

    기본값 : 1,000 milliseconds
    Tip : 로그에 connection closed;transfer aborted 또는 network name is no longer abailable 메시지가 출력되는 경우에 반응 시간을 증가시키기 위하여 WAIT_MILLISECONDS 사용하라.

     


    3. 범 주

    SAS 기본 구문 (데이터 접근)

     

    4. 비교 사항

    • FTP 명령어 get과 put 처럼, FTP 접근 방법을 사용하면 파일 다운로드와 업로드가 가능하다. 그러나, 이 방법은 시스템에 먼저 파일을 저장하지 않고, SAS 세션으로 파일을 직접 읽는다.

     


    5. 관련 구문

    구문명 구문 내용
    FILENAME 구문 SAS 파일 참조자(fileref)를 외부 파일 또는 출력 장치와 연결한다. 이와 반대로 파일 참조자(Fileref)와 외부 파일의 관계를 해제할 수 있으며, 외부 파일 속성을 출력할 수 있다.
    FILENAME 구문, CATALOG 접근 방법 SAS 파일참조자(fileref)가 SAS 카탈로그를 참조하도록 지정한다. 외부 파일에 접근하는 방식과 유사하게 SAS 명령어, SAS 문장, 프로시져를 사용하여 SAS 카탈로그에 접근할 수 있다. 이 접근 방법은 SAS 카탈로그에 존재하는 자동 호출 매크로를 직접 호출할 수 있다.
    FILENAME 구문, CLIPBOARD 접근 방법
    HOST 컴퓨터의 클립보드에서 데이터를 읽고, 반대로 클립보드에 데이터를 작성한다. 동일하게 마우스를 사용하여서 탐색기의 Pop-up 메뉴에서 “클립보드에 복사”(Copy contents to Clipboard)를 사용하여 데이터를 클립보드에 복사할 수 있다.(Ctrl+C / Ctrl+V)
    FILENAME 구문, EMAIL(SMTP) 접근 방법 간이 전자 이메일 전송 프로토콜(Simple Mail Transfer Protocol, SMTP) 인터페이스를 사용하여 SAS 프로그래밍 구문에서 전자 메일을 전송한다.
    FILENAME 구문, FTP 접근 방법 FTP 프로토콜(protocol)을 사용하여 원격(remote) 파일에 접근하여서 파일 다운로드와 업로드 작업을 수행할 수 있다.
    FILENAME 구문, SOCKET 접근 방법  
    FILENAME 구문, SFTP 접근 방법 SFTP 프로토콜을 사용하여 원격(remote) 파일에 접근하여서 파일 다운로드와 업로드 작업을 수행할 수 있다. 
    FILENAME 구문, URL 접근 방법 URL 접근 방법을 사용하여 원격(remote) 파일에 접근하여 작업을 수행할 수 있다.
    LIBNAME 구문
    SAS 라이브러리에 라이브러리 참조자(libref-단축이름)를 할당하거나 해제한다.

     


    6. 예 제

     

    예제1 : 디렉토리 목록 검색

    다음 예제는 mshost1 호스트에서 사용자 이름은 smythe”을 사용하고, 비밀번호는 입력 프롬프트(Prompt) 창을 표시하여 입력한 후에 디렉토리 목록을 검색한다.

    SAS Statements
    filename dir ftp '' ls user='smythe'
             host='mvshost1.mvs.sas.com' prompt;
     
    data _null_;
       infile dir;
       input;
       put _INFILE_;
    run;

     

    참고 : 파일이 전송되지 않기 때문에 인용부호는 비어 있지만, 구문에서 인용 부호를 필요로 하기 때문에 포함해야 한다.

     

    예제2 : Remote host에서 파일 읽기.

    다음 예제는 remote UNIX host hp720 디렉토리 /u/kudzu/mydata에서 sales 파일을 읽는다.

    SAS Statements
    filename myfile ftp 'sales' cd='/u/kudzu/mydata'
             user='guest' host='hp720.hp.sas.com'
             recfm=v prompt;
     
    data mydata / view=mydata;   /* Create a view */
       infile myfile;
       input x $10. y 4.;
    run;
     
    proc print data=mydata;     /* Print the data */
    run;

     

    예제3: Remote host에 파일 생성

    다음 예제는 사용자 계정 bbailey 사용하여 host winnt.pc c:\remote 디렉토리에 test.dat파일을 생성한다.

    SAS Statements
    filename create ftp 'c:\remote\test.dat'
             host='winnt.pc'
             user='bbailey' prompt recfm=v;
     
    data _null_;
       file create;
       do i=1 to 10;
          put i=;
       end;
    run;

     

    예제4 : z/OS S370V 형식 파일 읽기

    다음 예제는 z/OS시스템에서 S370V 형식의 파일을 읽는다. RCMD=’site rdw’ 대한 상세한 정보는 RCMD=참조

    SAS Statements
    filename viewdata ftp 'sluggo.stat.data'
             user='sluggo' host='zoshost1'
             s370v prompt rcmd='site rdw';
     
    data mydata / view=mydata;   /* Create a view */
       infile viewdata;
       input x $ebcdic8.;
    run;
     
    proc print data=mydata;     /* Print the data */
    run;

     

    예제5 : FTP에 익명으로 로그인 하기

    다음 예제는 Host 익명 로그인을 허용하는 경우에 익명 로그인 사용 방법을 보여준다.

     

    참고 : 일부 익명 FTP 서버는 비밀번호를 요구한다. 만약 비밀번호 요구시에는 일반적으로 이메일 주소가 사용된다. FTP 옵션 PASS=옵션 참조.

     

    SAS Statements
    filename anon ftp '' ls host='130.96.6.1'
             user='anonymous';
     
    data _null_;
       infile anon;
       input;
       list;
    run;

     

    참고 : 인수 FTP 뒤의 인용부호는 비어 있다. 파일 이름은 파일 전송시에만 필요로 하기 때문에, 명령어 전달시에는 필요하지 않는다. 그러나, 구문에서는 인용부호를 필요로 한다

     

    예제6 : 암호화된 비밀번호 사용하기

    다음 예제는 FILENAME 구문에서 암호화된 비밀번호 사용 방법을 보여준다.

     

    별도의 SAS 세션에서 비밀번호를 암호화 하기 위하여 PWENCODE 프로시져를 사용한다. 출력창에 암호화 결과를 보여준다.

    SAS Statements
    proc pwencode in= "MyPass1";
    
    run;

     

    SAS 로그에 다음 출력물이 나타난다.

    Results
    (sas001)TX1QYXNzMQ==

     

    BATCH 프로그램에서 전체 암호화된 password 문자열을 사용 있다.

    SAS Statements
    filename myfile ftp 'sales' cd='/u/kudzu/mydata'
    
       user='tjbarry' host='hp720.hp.mycompany.com'
    
       pass="(sas001)TX1QYXMZ==";

     

    예제7 : 전송 데이터 세트 가져오기

    다음 예제는 사용자 calvin계정으로 host myshost1에서 전송 데이터 세트를 가져오기 위하여 CIMPORT 프로시져 사용한다. 새로운 데이터 세트는 SASUSER라이브러리에 상주할 것이다. 참고로 사용자(USER) 비밀번호(Password) 대하여 SAS macro변수를 사용하여 작성 있다. 완전한 4단계 데이터 세트 이름을 지정하기 위하여, 이중 인용부호와 단일 인용부호를 함께 사용하라. 그렇지 않으면, 시스템은 지정한 이름에 profile 접두사를 추가 것이다.

    SAS Statements
    %let user=calvin;
    %let pw=xxxxx;
    filename inp ftp "'calvin.mat1.cpo'" user="&user"
             pass="&pw" rcmd='binary'
             host='mvshost1';
     
    proc cimport library=sasuser infile=inp;
    run;

     

    예제8 : SAS 라이브러리 전송하기

    다음 예제는 SAS 라이브러리를 host mvshost1(사용자 calvin) 전송하기 위하여 CPORT 프로시져를 사용한다. Recfm =fb, lrecl=80, blocksize=8000 옵션으로 host userid.mat64.cpo 새로운 순차 파일(Sequential file) 생성한다.

    SAS Statements
    filename inp ftp 'mat64.cpo' user='calvin'
             pass="xxxx" host='mvshost1'
             lrecl=80 recfm=f blocksize=8000
             rcmd='site blocksize=800 recfm=fb lrecl=80';
     
    proc cport library=mylib file=inp;
    run;

     

    예제9 : 전송엔진을 사용하여 전송 라이브러리 생성

    다음 예제는 host mvshost1 새로운 SAS 라이브러리를 생성한다. FILENAME 구문은 새로운 데이터 세트에 파일참조자를 할당한다. 중요한 파일 속성을 지정하기 위하여 RCMD=옵션을 사용한다. LIBNAME 구문은 파일참조자와 동일한 라이브러리 참조자(libref) 사용하고, XPORT엔진에서 그것을 할당한다. PROC COPY스텝은 라이브러리 MYLIB 모든 데이터 세트를 XPORT엔진으로 복사한다. PROC CONTENTS스텝의 결과에서 복사 성공여부를 확인하라.

    SAS Statements
    filename inp ftp  'mat65.cpo' user='calvin'
               pass="xxxx"  host='mvshost1'
               lrecl=80 recfm=f blocksize=8000
           rcmd='site blocksize=8000 recfm=fb lrecl=80';
     
      libname mylib 'SAS-library';
      libname inp xport;
     
      proc copy in=mylib out=inp mt=data;
      run;
     
      proc contents data=inp._all_;
      run;

     

    참고 : XPORT엔진에 대하여 Moving and Accessing SAS Files 참조.

     

    예제10 : 디렉토리에서 읽고 쓰기.

    다음 예제는 UNIX host 디렉토리에서 ftpmem1 파일을 읽어서 다른 UNIX host 다른 디렉토리에 ftpout1 파일을 작성한다.

    SAS Statements
    filename indir ftp '/usr/proj2/dir1' DIR
                       host="host1.mycompany.com"
                       user="xxxx" prompt;
    
    
    filename outdir ftp '/usr/proj2/dir2' DIR FILEEXT
                        host="host2.mycompany.com"
                        user="xxxx" prompt;
    
    
    data _null_;
       infile indir(ftpmem1) truncover;
       input;
       file outdir(ftpout1);
       put _infile_;
    run;

     

    파일 ftpout1 /usr/proj2/dir2/ftpout1.DATA으로 작성된다. 출력파일의 FILENAME 구문에 FILEEXT옵션이 지정되었기 때문에 ftpout1 파일에 DATA 구성원 유형이 추가된다. 상세 정보는 FILEEXT참조.

     

    참고 : DIR 옵션은 일부 ODS 대상(destinations)에서 필요하지 않는다.

     

    다음 예제는 출력 파일을 작성하고, 그것을 ODS 지정된 대상에 전송한다. DIR옵션은 필요하지 않는다.

    SAS Statements
    filename output ftp "~user/ftpdir/" host="host.fyi.company.com" user="userid" 
    pass="userpass" recfm=s debug;
     
    ods listing close;
    ods html body='body.html' path=output;
    proc print data=sashelp.class;run;
    ods html close;
    ods listing;

     

    원격 디렉토리 위치에 다중 그래프 파일을 전송하기 위하여, FILENAME 구문에 DIR옵션이 지정되어야 한다. 따라서, ODS HTML 대상을 사용하여서 외부 그래프 파일을 생성하기 위하여 2개의 FILENAME 구문이 필요하다. 하나는 HTML 파일에 대하여 사용되고, 다른 하나는 그래프 파일에 대하여 사용된다. 다음 예제는 가지 FILENAME 구문의 필요성을 설명한다.

    SAS Statements
    filename output1 ftp "~user/dir" fileext host="host.unx.company.com"
       user="userid" pass="userpass" recfm=s debug;
    filename output2 ftp "~user/dir" dir fileext host="host.unx.company.com"
       user="userid" pass="userpass" recfm=s debug;
    ods listing close;
    ods html body='body.html' path=output1 gpath=output2
       frame='frames.html' contents='contents.html';
    proc gtestit;run;quit;
    ods html close;
    ods listing;

     

    예제11 : Proxy 서버 이용

    다음 예제는 FTP접근 방법으로 proxy 서버를 사용한다. 사용자 ID 비밀번호는 proxy 서버를 통하여 전송된다.

    SAS Statements
    filename test ftp ' ' ls
       host='proxy.server.xxx.com'
       user='userid@ftpservername'
       pass='xxxxxx'
       cd='pubsdir/';
     
    data _null_;
       infile test truncover;
       input a $256.;
       put a=;
    run;

     


     

     


    [SAS Statement] SAS 데이터 스텝 구문 사전 목록]

     

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

    댓글