This post was kindly contributed by SASopedia - go there to comment and to read the full post. |
SAS came up with the tool called SAS/AF and SAS EG which provides the users with a brilliant GUI and thus making their lives so eeaasssy.. However, not many of us would have bumped into this brilliant macro tool called %WINDOW and %DISPLAY which is present in BASE SAS9 which satisfies the basic needs of having a GUI. Here I take a small dive into the SAS ocean again, exploring the functionalities of these two macros.
%WINDOW: This creates the basic window that needs to be popped up upon execution. We can specify the window attributes here like the color/width/height,etc. You could also specify the position of the text that is to be displayed and the input parameters that are to be read.
%DISPLAY: This actually invokes the window that has been defined in the %window program.
Below is a simple illustration of the %window and %display invocation:
%window test_win color=blue
/*dimension for the window*/
icolumn=15 irow=10
columns=90 rows=45
/*Content of the window*/
#3 @25 “My Window”
attr = rev_video
#5 @10 “Hello Pramod”
attr = underline
;
%display test_win;
The above code displays the output as shown below:
Below, I’ve demonstrated how we can use this to make SAS interactive. Most of the code is self explanatory, of course with a bit of help from the support.sas.com documentation available at: http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a000206734.htm
/* Main window */
%window final color=gray
/*dimension for the window*/
icolumn=15 irow=10
columns=90 rows=75
/*Content of the window*/
#1 @25 “&error_msg”
#3 @15 “Hi &sysuserid.” attr = rev_video color=blue @60 “Date: &sysdate9.” attr = rev_video color=blue
#5 @25 “Welcome to the Reporting World” attr = rev_video
#8 @35 “Report List”
#11 @15 “1. Class listing” @50 “2. Class Report by Gender”
#13 @15 “3. Class Report by Age” @50 “4. Class freq”
#16 @15 “Enter your Choice:” @35 choice attr=underline
;
/* End of Window Final */
%macro execute;
%let choice=;%display final;
%if &choice=1 %then %do;
proc print data=sashelp.class noobs;
run;
%end;%else %if &choice=2 %then %do;
proc report data=sashelp.class nowd;
columns sex height weight;
define sex / group;
define height /analysis;
define weight / analysis;
run;
%end;%else %if &choice=3 %then %do;
proc report data=sashelp.class nowd;
columns age height weight;
define age / group;
define height /analysis;
define weight / analysis;
run;
%end;%else %if &choice=4 %then %do;
proc freq data=sashelp.class;
tables sex*age /nocum nopercent;
run;%end;
%mend execute;
%execute
In the above code, I first display a list of things the use might be interested to see in the %window, and then %display this inside the macro execute. I also read his input into the macro variable choice and then based on his selection, I call the required procedure inside the macro execute.
The output of the above code is as shown below:
Upon entering the value 2 and hitting the enter button, we get the output as shown:
You could experiment more on this and let me know your suggestions/thoughts/ideas…
This post was kindly contributed by SASopedia - go there to comment and to read the full post. |