4.4.1 Creating Macro Variables in the DATA Step
안녕하세요^^
이번 시간부터 두 번에 걸쳐 DATA Step에서 적절하게 매크로 변수를 생성하는 방법에 대해 알아보겠습니다.
이번 시간에는 DATA Step에서 같은 이름의 매크로 변수에 서로 다른 값을 지정할 때
발생할 수 있는 문제에 대해 예시로 살펴보겠습니다.
우리는 Order_Type변수 값이 3일 때 인터넷 주문을 갖는다고 상황 설정을 하겠습니다.
따라서 주문 타입에 따라 적절한 footnote를 지정하고자 합니다.
아래와 같은 결과를 보이고 싶은 것이지요.
Order_Type값이 3이 아닐 때에는 “No Internet Orders”를 Footnote 자리에 표시된 것을 확인할 수 있습니다.
위와 같은 결과를 보이기 위해 아래 코드를 실행하였습니다.
주문타입이 3일 때에만 number변수 값이 1 증가하게 코딩하였고,
number변수 값이 0이면 “No Internet Orders” Footnote를
number변수 값이 0이 아니면 “Some Internet Orders” Footnote를 표시하게 하였습니다.
다시 말해, 주문타입이 3이 아니면 number변수 값은 0일 것이기 때문에
“No Internet Orders” Footnote를 보이는 것이 예상하는 결과인 것입니다.
하지만 위 코드를 실행하면 아래 결과와 같이, 잘못된 Footnote를 보이는 것을 알 수 있습니다.
(주문 타입 값이 1인데 “Some Internet Orders” Footnote를 보입니다.)
왜 예상했던 결과가 나타나지 않는지 살펴보겠습니다.
프로그램을 실행하면, 먼저 프로그램 실행 전에 Compiling을 시작합니다.
month와 year 매크로 변수가 각각 2와 2007의 값으로 저장되고
다음으로 foot 매크로변수가 “No Internet Orders” 값으로 저장됩니다.
여기서 중요합니다!
위와 같이, 같은 이름의 foot 매크로 변수가 다시 나타났을 때,
Macro trigger는 새로운 값(“Some Internet Orders”)을 이전 값(“No Internet Orders”)에 덮어씌웁니다.
따라서 Compiling이 끝났을 때에는
foot 매크로 변수에 “Some Internet Orders”값만이 남아있게 되는 것이지요.
이러한 이유로 Footnote에는 “Some Internet Orders”값이 표시되었던 것입니다.
그럼 다음 시간에는 이러한 문제를 해결할 수 있는 SYMPUTX Routine에 대해 공부해보도록 하겠습니다.
감사합니다.^^
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.