Style attributes can be used to customize the appearance of SAS Output Delivery System (ODS) output. Styles can be assigned using proc template or style= options in procedures such as PROC REPORT displayed below.
Rules= control the internal borders while frame= control external borders. I have always found it difficult to visualize the combinations of rules= and frame= style attributes. As a result, I created the below code to display all of the combinations in a concise five page PDF file.
ods listing close ; ods pdf file = "c:\temp\rulesandframes.pdf" startpage = no ; options nodate nonumber ; ods escapechar = "~" noptitle ; %macro rulesandframes ; %local frames frame countframes rules rule countrules i j ; %let frames = ABOVE BELOW BOX HSIDES LHS RHS VSIDES VOID ; %let countframes = %sysfunc( countw( &frames. ) ) ; %let rules = ALL COLS GROUPS NONE ROWS ; %let countrules = %sysfunc( countw( &rules. ) ) ; %do i = 1 %to &countrules. ; %let rule = %scan( &rules., &i. ) ; title "RULES = &rule. ( internal borders )" ; %do j = 1 %to &countframes. ; %let frame = %scan( &frames., &j. ) ; ods text = "~{style[just=center]style(report) = [rules = &rule. frame = &frame.]}" ; proc report nowd data = sashelp.class( obs = 2 ) style( report ) = [ rules = &rule. frame = &frame. ] ; run ; %end ; ods pdf startpage = now ; %end ; %mend ; %rulesandframes ods pdf close ; ods listing ;