BookmarkSubscribeRSS Feed

[2-4] User-Defined Macro Variables

Started ‎06-16-2020 by
Modified ‎06-16-2020 by
Views 297

[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으로 저장되며, 인용마크 또한 값의 일부로 저장됩니다.

 

예를들어 다음과 같은 코드를 실행시켜 봅시다.

 

SE22016071923263570.jpg

 

SE22016071923264670.jpg

 

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를 지정하는 경우를 살펴보겠습니다.

 

SE22016071923312370.jpg

 

위와 같이 코드를 실행시키면,

 

 

SE22016071923313970.jpg

 

위와 같이 코드를 실행시키면,

 

SE22016071923321670.jpg

 

결과 또한 age at start 가 30 이상인 경우의 status와 death cause에 관한 table이 작성된 것을 확인하실 수 있습니다.

 

 

 

 

 

다음 예제를 통해 매크로 변수로 character value를 지정하는 경우를 살펴보겠습니다.

 

SE22016071923330270.jpg

 

위와 같이 코드를 실행시키면,

 

SE22016071923332270.jpg

 

로그창에 에러 없이 실행되는 것을 확인하실 수 있으며,

SE22016071923334170.jpg

 

결과는 status가 “Death”인 경우의 성별의 빈도에 관한 table이 작성된 것을 확인하실 수 있습니다.

 

 

 

 

 다음으로 매크로 변수로 date를 지정하는 경우를 살펴보겠습니다.

 

SE22016071923340670.jpg

 

위와 같이 코드를 실행시키면,

SE22016071923342370.jpg

 

로그창에 에러 없이 실행되는 것을 확인하실 수 있으며,

 

SE22016071923343670.jpg

 

결과는 날짜가 04jan00에서 07jan00 사이인 경우의 Xn, Xc, Y값을 확인하실 수 있습니다.

 

 

 

 

추가적으로,

SE22016071923352270.jpg

를 통해서, 사용자 지정 매크로 변수가 어떤 것들이 있는지 확인할 수 있습니다.

 

 

또한,

SE22016071923353770.jpg

을 통해서, 사용자 지정 매크로 변수 이외의 자동으로 저장되어 있는 매크로 변수들까지 확인하실 수 있습니다.

 

 

또한,

SE22016071923355570.jpg

을 통해서, 매크로 지정 변수가 프로그램 안에서 어떤 변수로 변환되는지 설명해줍니다.

 

 

 

예를들면,

 

SE22016071923362270.jpg

 

앞서 실행하였던 같은 코드를 options symbolgen 옵션을 사용하여 실행해보도록 하겠습니다.

 

SE22016071923363470.jpg

 

SE22016071923364970.jpg

 

위와 같은 결과를 얻을 수 있으며, 다만, log창을 보면 매크로 변수가 어떤 값으로 변환되어 계산되었는지 알 수 있게 됩니다.

 

 

 

SE22016071923371170.jpg

 

%put _user_로 사용자가 지정한 매크로 변수가 위와 같이 존재하는 것을 확인할 수 있습니다.


이 때,

 

 %SYMDEL macro-variables;

을 사용하여, 사용자가 지정한 매크로 변수를 삭제할 수 있습니다.

​예를 들어, units 매크로 변수를 삭제하려면,

SE22016071923384370.jpg을 실행시킵니다.

 

 

 

SE22016071923390270.jpg

 

위와 같이 매크로 변수 units이 삭제된 것을 확인하실 수 있습니다.

 

 

 

 

이상 사용자 지정 매크로 변수에 대해 알아보았습니다.

 

 

Version history
Last update:
‎06-16-2020 06:06 AM
Updated by:
Contributors

sas-innovate-white.png

Missed SAS Innovate in Orlando?

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.

 

Register now

Article Labels
Article Tags