[2-4] User-Defined Macro Variables
안녕하세요^^
오늘은 사용자 지정 매크로 변수에 대해 알아보도록 하겠습니다.
%let문을 사용하면 매크로 변수를 지정할 수 있습니다.
%let문은 일반적으로 다음과 같이 사용합니다.
%LET variable = value; |
Variable에는 SAS에서 사용할 이름을 지정하며, 만약 variable이 이미 존재하면 value값은 원래의 값을 덮어쓰게 됩니다.
- %let문은 프로그램의 어디에서 실행되어도 유효합니다.
- Value값의 특징은 최대 길이 65,534문자(64k)까지 가능하며, 최소길이는 0(null value)까지 가능합니다.
- 수치연산은 계산된 값으로 가능하지 않고, numeric 토큰도 character strings으로 저장되며, 인용마크 또한 값의 일부로 저장됩니다.
예를들어 다음과 같은 코드를 실행시켜 봅시다.
Name은 Ed Norton 의 value를 갖습니다.
앞서 말씀드렸듯이, 인용부호 또한 value의 일부로 인식한다는 설명처럼,
Name2는 ‘ Ed Norton ‘ 의 value를, Title은 “Joan’s Report”의 value를 갖습니다.
Start는 공백을 value로 갖게 되며, sum은 수치연산이 아닌 3+4의 값 그대로를 value로 갖게 됩니다.
Total은 처음에는 0이라는 값을 갖게되며, 두번째 total의 값은 첫번째 total의 값을 덮어쓰게 되므로 0+3+4의 값을 total의 값으로 갖게 됩니다.
또한 x는 varlist라는 값을 value로 갖게 되며, &x에 값을 지정해주시는 매크로 문에서는 &x에 해당하는 varlist 변수가 name age height의 value를 갖게 됩니다.
다음 예제를 통해 매크로 변수로 numeric value를 지정하는 경우를 살펴보겠습니다.
위와 같이 코드를 실행시키면,
위와 같이 코드를 실행시키면,
결과 또한 age at start 가 30 이상인 경우의 status와 death cause에 관한 table이 작성된 것을 확인하실 수 있습니다.
다음 예제를 통해 매크로 변수로 character value를 지정하는 경우를 살펴보겠습니다.
위와 같이 코드를 실행시키면,
로그창에 에러 없이 실행되는 것을 확인하실 수 있으며,
결과는 status가 “Death”인 경우의 성별의 빈도에 관한 table이 작성된 것을 확인하실 수 있습니다.
다음으로 매크로 변수로 date를 지정하는 경우를 살펴보겠습니다.
위와 같이 코드를 실행시키면,
로그창에 에러 없이 실행되는 것을 확인하실 수 있으며,
결과는 날짜가 04jan00에서 07jan00 사이인 경우의 Xn, Xc, Y값을 확인하실 수 있습니다.
추가적으로,
를 통해서, 사용자 지정 매크로 변수가 어떤 것들이 있는지 확인할 수 있습니다.
또한,
을 통해서, 사용자 지정 매크로 변수 이외의 자동으로 저장되어 있는 매크로 변수들까지 확인하실 수 있습니다.
또한,
을 통해서, 매크로 지정 변수가 프로그램 안에서 어떤 변수로 변환되는지 설명해줍니다.
예를들면,
앞서 실행하였던 같은 코드를 options symbolgen 옵션을 사용하여 실행해보도록 하겠습니다.
위와 같은 결과를 얻을 수 있으며, 다만, log창을 보면 매크로 변수가 어떤 값으로 변환되어 계산되었는지 알 수 있게 됩니다.
%put _user_로 사용자가 지정한 매크로 변수가 위와 같이 존재하는 것을 확인할 수 있습니다.
이 때,
%SYMDEL macro-variables; |
을 사용하여, 사용자가 지정한 매크로 변수를 삭제할 수 있습니다.
예를 들어, units 매크로 변수를 삭제하려면,
을 실행시킵니다.
위와 같이 매크로 변수 units이 삭제된 것을 확인하실 수 있습니다.
이상 사용자 지정 매크로 변수에 대해 알아보았습니다.
Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.