BookmarkSubscribeRSS Feed

SAS Macro - %SCAN

Started ‎11-02-2025 by
Modified ‎11-02-2025 by
Views 157

%SCAN은 문자열과 관련된 함수로 원하는 부분을 추출해서 변수의 텍스트 값을 처리할 때 사용합니다.

공백이나 구분자로 구분된 문자열 중에서 n번째 단어를 선택하거나 추출할 때 사용됩니다.

기본 Syntax는 다음과 같습니다.

 

 

%SCAN(문자열, 위치, 구분자)

 

  • 문자열: 단어를 추출할 문자열

  • 위치: 가져올 단어의 순서

  • 구분자: 옵션으로 단어를 구분하는 문자열

 

■ 예시 1) 공백을 기준으로 문자열을 구분하고 단어를 추출

 

%LET str = Amber Ciara Delilah;

%PUT %SCAN(&str, 1);  
%PUT %SCAN(&str, 2);  
%PUT %SCAN(&str, 3);  

 

 

image.png

 

 

 

■ 예시 2) 공백을 기준으로 문자열을 구분하고 단어를 추출

 

%LET name = Amber,Ciara,Delilah;
%PUT %SCAN(%SUPERQ(name), 2, %STR(,));

%LET name = Amber,Ciara,Delilah;

매크로 변수 이름을 name 이라고 설정합니다. 값은 쉼표(,) 로 설정되어 있습니다.

%SUPERQ(name)

매크로 변수 값을 그대로 반환하는 함수입니다. 특수문자, 공백, 따옴표 등 문자 이외의 값이 포함되어 있어도 매크로 함수로 인식하지 않고 문자 그대로 출력합니다.

즉, name 변수에 입력된 값 Amber,Ciara,Delilah 그대로 출력합니다.

%SCAN(%SUPERQ(name), 2, %STR(,))

scan 함수가 원본 문자열 Amber,Ciara,Delilah 중 2번째 단어를 추출하고, 구분자를 쉼표로 지정합니다.

%PUT

매크로 결과값을 로그 창에 출력합니다.

 

 

■ 예시 3) 문자열 일부 추출

 

%MACRO parse_date(datestr);
    %LET year = %SUBSTR(&datestr, 1, 4);
    %LET month = %SUBSTR(&datestr, 5, 2);
    %LET day = %SUBSTR(&datestr, 7, 2);
    
    %PUT 연도: &year;
    %PUT 월: &month;
    %PUT 일: &day;
    
    %LET formatted_date = &year-&month-&day;
    %PUT 포맷된 날짜: &formatted_date;
%MEND;

%parse_date(20251231);

 


image.png

 

%MACRO parse_date(datestr);

parse_data 이름으로 매크로를 생성합니다. datestr은 매크로가 실행될 때 입력될 매개변수입니다.

%LET year = %SUBSTR(&datestr, 1, 4);

&datestr로 받은 매개변수에서 1번째부터 4번째 글자를 추출하여 &year 이라는 매크로 변수로 저장합니다.

%LET month = %SUBSTR(&datestr, 5, 2);

&datestr로 받은 매개변수에서 5번째부터 2글자를 추출하여 &month 라는 변수에 저장합니다.

%LET day = %SUBSTR(&datestr, 7, 2);

&datestr로 받은 매개변수에서 7번째부터 2글자를 추출하여 &day라는 변수에 저장합니다.

%PUT

로그창에 &year, &month, &day 값을 출력합니다.

%parse_date(20251231);

par_date 매크로를 실행하여 20251231 이라는 문자열 값을 출력합니다.