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

【SAS Statement】 LINK 구문

by 기서무나구물 2022. 2. 2.

포스팅 목차

    o LINK 구문

     


    1. 목 적

       LINK 구문은 프로그램 실행이 지정된 구문 레이블로 바로 이동하여 일련의 SAS 문장을 실행한다. 만약 구문 레이블 뒤에 RETURN 구문이 존재하면, LINK 구문 바로 뒤의 문장으로 프로그램 실행을 다시 반환한다.

     


    2. 문 법


    LINK 
    label
    ;

     

    1) label

       LINK 구문의 실행 도착지를 확인하기 위한 구문 레이블을 지정한다. Label 인수를 반드시 지정해야 한다.

     


    3. 범 주

    SAS 기본 구문 (제어 구문)

     


    4. 상세 설명

    • LINK 구문은 바로 LINK 구문에 지정된 구문 레이블로 SAS 실행을 이동 시키고, RETURN 구문이 실행되기 전까지 SAS 구문을 계속 실행한다. RETURN 구문은 프로그램 통제권을 LINK 구문 바로 뒤의 문장으로 전달한다.
    • LINK 구문과 해당하는 실행 도착지는 동일 데이터 스텝에 존재해야 한다. 실행 도착지는 LINK 구문의 구문 레이블에 의하여 확인된다.
    • LINK 구문은 내부에 또 다른 LINK 구문으로 구성된 구문으로 분기(branch) 할 수 있다. 이와 같은 형태를 중첩(내포)이라고 한다. 무한 반복(LOOPING) 상태를 피하기 위하여, 중첩되는 LINK 구문의 기본적인 개수를 제한한다. 중간에 위치하는 RETURN 구문 사용하지 않고 LINK 구문을 10개까지 중첩하여 사용 할 수 있다.
    • 다수의 LINK 구문이 실행되는 경우에 RETURN 구문은 마지막으로 실행된 LINK 구문 바로 뒤의 문장으로 반환된다. 그러나, 중첩된 LINK 구문의 개수 증가시키기 위하여 DATA 구문에 /STACK 옵션을 사용 할 수 있다.

     


    5. 비교 사항

    • LINK 구문과 GO TO 구문의 차이는 이후의 RETURN 구문이 취하는 행동이다. LINK 구문 뒤의 RETURN 구문은 SAS 실행을 LINK 구문 바로 뒤의 문장으로 반환한다. 만약 LINK 구문이 GO TO 구문에 앞에 위치하지 않으면, GO TO 구문 뒤의 RETURN 구문은 SAS 실행을 데이터 스텝의 시작으로 반환한다. LINK 구문이 GO TO 구문 앞에 위치하면, LINK 구문 이후의 첫 문장으로 프로그램 실행을 반환한다. 추가적으로, LINK 구문은 일반적으로 명시적인 RETURN 구문과 함께 사용되지만, 반면에 GO TO 구문은 RETURN 구문 없이 사용 될 수 있다.
    • 프로그램 데이터 스텝 내의 여러 지점에서 반복적으로 그룹 문장을 실행하는 경우에 LINK 구문을 사용하여 프로그램 코딩을 간단하게 하고, 이후의 프로그램 로직을 더 쉽게 만든다. 프로그램에서 단지 한 곳에서 그룹 문장을 실행한다면, DO 그룹 로직을 사용하는 것이 LINK-RETURN 로직을 사용하는 것 보다 더 효율적이다.

     


    6. 관련 구문

    구문명 구문내용
    구문 레이블 GOTO 구문이나 LINK 구문 등의 다른 구문에 의해 참조되는 구문의 위치를 표시한다.
    DO 구문 그룹 단위로 실행하기 위한 SAS 문장의 그룹을 지정하라.
    DO 반복 구문 인덱스 변수의 값에 따라서 DO 구문과 END 구문 사이에 작성한 구문을 반복하여서 실행한다.
    DO UNTIL 구문 지정한 조건식이 참이 될 때까지 반복적으로 DO 반복문 안의 문장을 실행한다.
    DO WHILE 구문 지정한 조건식이 참일 동안에 반복적으로 DO 반복문 안의 문장을 실행한다.
    GO TO 구문 label 인수에서 지정된 LABEL 구문으로 프로그램을 이동하여서 계속 처리한다.
    LINK 구문 프로그램 실행이 지정된 구문 레이블로 바로 이동하여 일련의 SAS 문장을 실행한다.
    RETURN 구문 데이터 스텝의 현재 위치에서 SAS 문장의 실행을 중지하고, 데이터 스텝에서 사전에 정의된 위치로 프로세스의 실행을 이동한다.

     


    7. 예 제

    예제 : 프로그램 실행 전환

    다음 예제에서, TYPE변수의 값이 aluv일 때, LINK 구문은 구문 레이블 CALCU에 지정된 문장으로 프로그램 실행을 전환한다. 프로그램은 LINK 구문 뒤의 처음 문장으로 프로그램 실행을 보내는 RETURN 구문을 만날 때까지 실행한다. RETURN 구문이 실행되기 전까지 프로그램을 실행하고, RETURN 구문이 실행된 이후에 LINK 구문 뒤의 처음 문장으로 프로그램 실행을 반환한다. 

    SAS는 할당문(date=today();)을 실행하고, 관측치를 작성한 후에, 다음 레코드를 읽기 위하여 데이터 스텝의 처음으로 실행을 반환한다. TYPE 변수의 값이 aluv가 아닌 경우에 SAS는 할당문(date=today();)을 실행하고 관측치를 작성한 후에, 데이터 스텝의 처음으로 실행을 반환한다.

    SAS Statements
    data hydro;
       input type $ depth station $;
          /* 구문 레이블 calcu:로 이동 */
       if type ='aluv' then link calcu; 
       date=today();
          /* 실행을 데이터 스텝의 시작으로 반환 */
       return;                         
       calcu: if station='site_1' 
          then elevatn=6650-depth;
       else if station='site_2' 
          then elevatn=5500-depth;
             /* date=today(); 으로 반환 */
       return;                           
       datalines;
    aluv 523 site_1
    uppa 234 site_2
    aluv 666 site_2
    ...more data lines...
    ;​

     


    SAS Statements
    data back;
    input gender $ score;
    cards;
    남자 100
    여자 90
    남자 85
    남자 70
    여자 65
    ;
    
    data back2;
         retain cum_scr 0;
     set back;
         IF gender = '여자' THEN LINK A;
         elss link b;
         return;
    
         A:
           cum_scr=cum_scr;
         RETURN;
    
         B:
           cum_scr=cum_scr+score;
         RETURN;
    RUN;

     


     


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

     

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

    'SAS > SAS 구문사전' 카테고리의 다른 글

    [SAS Statement] LOCK 구문  (0) 2022.02.03
    【SAS Statement】 LIST 구문  (0) 2022.02.03
    【SAS Statement】 LIBNAME 구문  (0) 2022.02.02
    【SAS Statement】 LENGTH 구문  (0) 2022.02.02
    【SAS Statement】 LEAVE 구문  (0) 2022.02.02

    댓글