5.1.1 Conditional Processing
안녕하세요^^
오늘은 매크로 프로그램에서의 Conditional Processing에 대해 알아보도록 하겠습니다.
Macro-Level programming은 조건부적으로 코드를 만들 수 있습니다.
조건문에는 아래의 사항들이 들어갈 수 있습니다.
Conditional Processing은 %IF - %THEN 과 %ELSE 문으로 구성됩니다.
일반적인 문장은 아래와 같이 작성합니다.
%IF expression %THEN action; %ELSE action; |
- expression에는 모든 타당한 macro expression이 가능합니다.
이는 SAS expressions와 유사한데, 이 자리에는 아래의 것들이 올 수 있습니다
- %ELSE 문은 쓰지 않아도 되는 선택적인(optional) 문장입니다.
- Action 자리에는 아래의 것들이 올 수 있습니다.
- 위의 매크로문은 매크로 정의 내에서 사용 가능합니다.
이제 예제를 통해 알아보도록 하겠습니다.
데이터는 sashelp 라이브러리에 있는 stocks 데이터를 이용해보도록 하겠습니다.
Proc contents 문을 사용하여 살펴본 데이터는 총 8개의 변수로 이루어져있는 데이터입니다.
아래의 데이터는 총 669개의 관측치 중 일부(10개)를 살펴본 것입니다.
코딩은 proc print 프로시저를 실행하는 문장입니다.
date변수가 &sysdate 날짜보다 작은 경우의 값들을 보여주게 됩니다.
총 669개의 관측치로 이루어진 데이터를 통해 proc print 프로시저를 실행하면,
669개의 모든 관측치가 보여지는 결과를 얻게 됩니다.
위의 보여지는 결과는 총 669개의 데이터 중 일부(10개)만 나타낸 것입니다.
추가적으로, MLOGIC이라는 시스템 옵션이 있습니다.
이것은 SAS 로그창에 매크로 실행 메시지를 보여주며. Default는 NOMLOGIC입니다.
위의 두 가지 사항을 모두 사용한 예제를 보여드리도록 하겠습니다.
위의 코딩과 마찬가지로 이 코딩은 proc print 프로시저를 실행하는 문장입니다.
date변수가 &sysdate 날짜에서 7300일 전(19SEP1995)부터 7666일 전(19SEP1996)까지의 1년 기간에 해당하면 결과를 보여주게 됩니다.
총 669개의 관측치로 이루어진 데이터를 통해 proc print 프로시저를 실행하면,
36개의 관측치가 보여지는 결과를 얻게 됩니다.
위의 보여지는 결과는 총 36개의 데이터 중 일부만 보인 것입니다.
또 다른 예로 조건이 만족하면 매크로를 실행하는 문장을 작성해보도록 하겠습니다.
위의 코딩의 결과는 앞서 보여드렸던 결과를 합쳐놓은 것과 같습니다.
즉, %daily를 먼저 작성한 후, &sysday가 ‘수요일’이면 %year의 결과를 작성하라는 코드이므로,
%daily의 결과인 669개의 관측값을 갖고있는 테이블과 %year의 결과인 36개의 관측값을 갖고있는 테이블을 같이 보여줍니다.
이상으로 Conditional Processing에 대해 살펴보았습니다.
Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.