BookmarkSubscribeRSS Feed

[5-1-1] Conditional Processing

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

5.1.1 Conditional Processing 

안녕하세요^^

오늘은 매크로 프로그램에서의 Conditional Processing에 대해 알아보도록 하겠습니다.

Macro-Level programming은 조건부적으로 코드를 만들 수 있습니다.

조건문에는 아래의 사항들이 들어갈 수 있습니다.

 

SE22016091712502970.jpg

 

​Conditional Processing은 %IF - %THEN 과 %ELSE 문으로 구성됩니다.

일반적인 문장은 아래와 같이 작성합니다.

 

%IF expression %THEN action;

%ELSE action;

 

expression에는 모든 타당한 macro expression이 가능합니다.

이는 SAS expressions와 유사한데, 이 자리에는 아래의 것들이 올 수 있습니다

 

SE22016091712524770.jpg

 

 

- %ELSE 문은 쓰지 않아도 되는 선택적인(optional) 문장입니다.

- Action 자리에는 아래의 것들이 올 수 있습니다​.

 

SE22016091712535070.jpg

 

 

- 위의 매크로문은 매크로 정의 내에서 사용 가능합니다​.

 

 

이제 예제를 통해 알아보도록 하겠습니다.

데이터는 sashelp 라이브러리에 있는 stocks 데이터를 이용해보도록 하겠습니다.

 

 

 

SE22016091712550270.jpg

Proc contents 문을 사용하여 살펴본 데이터는 총 8개의 변수로 이루어져있는 데이터입니다.

 

 

SE22016091712551570.jpg

아래의 데이터는 총 669개의 관측치 중 일부(10)를 살펴본 것입니다.

 

 

 

 

SE22016091712555570.jpg

 

 

SE22016091712561770.jpg

 

 

SE22016091712560770.jpg

 

코딩은 proc print 프로시저를 실행하는 문장입니다.

​date변수가 &sysdate 날짜보다 작은 경우의 값들을 보여주게 됩니다.

​총 669개의 관측치로 이루어진 데이터를 통해 proc print 프로시저를 실행하면,

669개의 모든 관측치가 보여지는 결과를 얻게 됩니다.

위의 보여지는 결과는 총 669개의 데이터 중 일부(10개)만 나타낸 것입니다.

 

 

 

 

 

추가적으로, MLOGIC이라는 시스템 옵션이 있습니다.

​이것은 SAS 로그창에 매크로 실행 메시지를 보여주며. Default는 NOMLOGIC입니다.

 

SE22016091712574170.jpg

 

 

 

 

위의 두 가지 사항을 모두 사용한 예제를 보여드리도록 하겠습니다.

 

 

 

SE22016091712581170.jpg

 

 

SE22016091712581870.jpg

 

 

SE22016091712582370.jpg

 

 위의 코딩과 마찬가지로 이 코딩은 proc print 프로시저를 실행하는 문장입니다.

​date변수가 &sysdate 날짜에서 7300일 전(19SEP1995)부터 7666일 전(19SEP1996)까지의 1년 기간에 해당하면 결과를 보여주게 됩니다.

​총 669개의 관측치로 이루어진 데이터를 통해 proc print 프로시저를 실행하면,

​36개의 관측치가 보여지는 결과를 얻게 됩니다.

위의 보여지는 결과는 총 36개의 데이터 중 일부만 보인 것입니다.

 

 

 

 

 

 

또 다른 예로 조건이 만족하면 매크로를 실행하는 문장을 작성해보도록 하겠습니다.

 

 

SE22016091712595570.jpg

 

 

SE22016091713000370.jpg

 

위의 코딩의 결과는 앞서 보여드렸던 결과를 합쳐놓은 것과 같습니다.

​즉, %daily를 먼저 작성한 후, &sysday가 ‘수요일’이면 %year의 결과를 작성하라는 코드이므로,

​%daily의 결과인 669개의 관측값을 갖고있는 테이블과 %year의 결과인 36개의 관측값을 갖고있는 테이블을 같이 보여줍니다.

 

 

 

 

 

 

이상으로 Conditional Processing에 대해 살펴보았습니다.

Version history
Last update:
‎06-16-2020 09:45 PM
Updated by:
Contributors

sas-innovate-white.png

Special offer for SAS Communities members

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.

 

View the full agenda.

Register now!

Article Labels
Article Tags