660 likes | 914 Views
Customize your SAS® Output with the Template Procedure: A Beginning Tutorial. Carol Gosselin North Carolina State University, Raleigh, NC Joy Munk Smith North Carolina State University, Raleigh, NC. Topics. Review ODS What are Templates? Working with Predefined Templates
E N D
Customize your SAS® Output with the Template Procedure: A Beginning Tutorial Carol Gosselin North Carolina State University, Raleigh, NC Joy Munk Smith North Carolina State University, Raleigh, NC
Topics • Review ODS • What are Templates? • Working with Predefined Templates • Creating your own Style and Table Templates • Using your new templates Gosselin and Smith, SESUG 2000
Output object: A basic tabular or graphical representation of output. Made up of a data component and a template component. Data component: Collection of raw numbers and strings that make up the table or graph. Template component: A set of instructions that describe how ODS should format and present the raw data. Review ODS Gosselin and Smith, SESUG 2000
Available Output Destinations Version 8.0 • LISTING - classic SAS output • HTML – Hyper Text Markup Language • OUTPUT - SAS datasets • PRINTER – postscript(ps) or printer control language(pcl) Version 8.1 additions: • PRINTER – Adobe Acrobat(pdf) • RTF - Rich Text Format(rtf) Gosselin and Smith, SESUG 2000
More about Output Destinations • Output is sent to all open destinations. • LISTING is the only destination open by default. • HTML, PRINTER, and RTF, destinations must be closed before the results can be used or viewed. • Be sure to include a RUN and QUIT statement before closing a destination or the procedure output may not be sent to the destination. Gosselin and Smith, SESUG 2000
General HTML Example ODS html file= ‘temp.htm’ ; Sascode Run; Quit; ODS html close; Gosselin and Smith, SESUG 2000
General RTF Example ODS rtf file=‘temp.rtf ‘; Sascode Run; Quit; ODS rtf close; Compatible with WORD97 and above. Experimental in 8.0 production in 8.1. (Olinger 2000) Gosselin and Smith, SESUG 2000
General Postscript Example ODS printer file=‘temp1.ps’ ps; Sascode; Run; Quit; ODS printer close; The ps option forces the creation of a postscript file no matter what printer driver you are using. Gosselin and Smith, SESUG 2000
ODS Trace Statement ODS trace on; ODS trace on / listing; ODS trace off; • Displays name, label, template, and path of each output object generated. • The name displayed can be used to select the output objects to be sent to any open destination. Gosselin and Smith, SESUG 2000
ODS Trace with Proc Freq Ods trace on /listing; Proc freq; Tables ssrace; Run; Ods trace off; Gosselin and Smith, SESUG 2000
ODS Trace with Proc Freq In the output window: Output Added: Name: OneWayFreqs Label: One-Way Frequencies Template: Base.Freq.OneWayFreqs Path: Freq.SRACE.OneWayFreqs Also the proc freq results. Gosselin and Smith, SESUG 2000
ODS Trace with Proc Glm SAS code: ODS trace on / listing; Proc glm; class sresid; Model satv=sresid; Lsmeans sresid; run; Gosselin and Smith, SESUG 2000
ODS Trace with Proc Glm Name Template ClassLevels stat.glm.classlevels Nobs stat.glm.nobs Overallanova stat.glm.overallanova Modelanova (ss1) stat.glm.modelanova Modelanova (ss3) stat.glm.modelanova Means stat.glm.lsmeans Gosselin and Smith, SESUG 2000
Selecting Output Objects • OVERALL and destination specific selection and exclusion lists determine which objects are sent to each destination. Modifying Selection Lists Example: ODS html select onewayfreqs; ODS listing select all; (default) ODS listing exclude overallanova; ODS select all; (for OVERALL list) Gosselin and Smith, SESUG 2000
Checking Selection Lists To display selection lists: ODS destination SHOW; For example: ODS html show; • This command will print the selection and exclusion lists for the HTML destination and also the overall selection and exclusion lists. Gosselin and Smith, SESUG 2000
Selection/Exclusion lists are reset to their default settings at each program step boundary, unless the PERSIST option is specified. Examples: ODS html select onewayfreqs persist; ODS listing select onewayfreqs persist; ODS listing exclude overallanova persist; Persist Option Gosselin and Smith, SESUG 2000
HTML Output Destination Filename htmldoc "e:\student\ "; ODS html path=htmldoc File='table1.htm' Contents='table1c.htm' Frame='table1f.htm' Style=styles.mystyle Stylesheet= “style.css”(url=“style.css”); Gosselin and Smith, SESUG 2000
Support for CSS Note: In “ODS for Dummies” Olinger states “Use of style sheets will minimize the size of your HTML files. CSS support is experimental in release 8.0 and production in release 8.1” Gosselin and Smith, SESUG 2000
Traditional SAS output Open by default Default selection list is ALL Examples: ODS listing; ODS listing close; ODS listing select outputobject ; ODS listing exclude outputobject ; LISTING Destination Gosselin and Smith, SESUG 2000
ODS References • Bryant, Muller, Pass, “ODS, Yes! Odious, No! – An Introduction to the SAS Output Delivery System.” SUGI 25 Proceedings, 2000. www.unc.edu/~lkbryant/intro_ods • Olinger, C. R., “ODS for Dummies”, SUGI 25 Proceedings, 2000. www.sas.com/base/rnd • SAS Institute, The Complete Guide to SAS Output Delivery, Version 8 Gosselin and Smith, SESUG 2000
TEMPLATES Gosselin and Smith, SESUG 2000
Table and Style Templates Table and Style templates are the two main types of templates. • Table templates provide instructions for formatting a single output object. • Style templates provide presentation instructions for all output objects produced. Style templates create a consistent appearance of all SAS output. Gosselin and Smith, SESUG 2000
Many table templates are shipped with SAS and they are used for displaying the output objects. Table templates control data column order, column headers and footers, and data formatting. A table template can be bound to an output object in a data step. Table Templates Gosselin and Smith, SESUG 2000
Style Templates: Control the look and feel of the whole SAS job There are 16 styles shipped with SAS 8.0 Sample code: ODS html path= htmldoc file= ‘table1.htm’ style= styles.minimal; Style Templates Gosselin and Smith, SESUG 2000
Where are Templates Stored? • Templates are stored in a new file type called “item stores”. • Template stores can have read or update access. • For obvious reasons, you should never provide update access to the template store that contains the SAS provided templates. Gosselin and Smith, SESUG 2000
Where are these Template Stores? SAS defines 2 template stores. • SASUSER.TEMPLAT(UPDATE) This template store is listed first in the search path and it has update access so user created templates are stored here. • SASHELP.TMPLMST(READ) This template store has read only access and it contains the SAS provided templates. Do not provide update access to this file. Gosselin and Smith, SESUG 2000
The ODS PATH statement identifies template stores, defines search order, and assigns read/write permissions. Default settings: ODS path sasuser.templat(update) sashelp.tmplmst(read); Providing Access to Template Stores Gosselin and Smith, SESUG 2000
Default Template Store Path Code: Ods path show; Results in the Log Window with the default settings: The current ODS path list is: • SASUSER.TEMPLAT(UPDATE) • SASHELP.TMPLMST(READ) Gosselin and Smith, SESUG 2000
Storing Templates • User created templates are stored in SASUSER.TEMPLAT because it is the first template store with update access in the path. • This can be modified with the PATH statement. • Never give write access to SASHELP.TMPLMST Gosselin and Smith, SESUG 2000
SettingTemplate Path • ODS path work.temp(update) sashelp.tmplmst(read); Note: You can use the work space and the template store will be temporary. If the template store does not exist it will be created. Gosselin and Smith, SESUG 2000
Viewing Contents of Template Store In the Results Window: • Right click on the Results Folder and select Templates • Double click on selected Template Store • Double click on selected folder • Double click on selected template. (or right click and select open, edit, delete, etc.) Gosselin and Smith, SESUG 2000
Template Browser Gosselin and Smith, SESUG 2000
To view the template code using SAS code: Proc template; Source styles.minimal; Source styles.default; Run; The template code will be printed in the log window. Viewing Template Code: Method 2 Gosselin and Smith, SESUG 2000
Why Style Templates? • Style templates are used to provide consistent appearance to all SAS output. • Typically style templates control aspects like fonts and colors of foreground, background, text. • Style templates can also provide instructions for adding graphics to every page. Gosselin and Smith, SESUG 2000
A Simple Style Template Definition Proc Template; Define style styles.mydefault; Style Data / font_size=4; Style Header / font_face=italic; Style Systemtitle / background=white; End; This is a single “style definition” with 3 “style elements” having one “attribute” each. Gosselin and Smith, SESUG 2000
Style Template Syntax • Define statement begins the style definition and requires a matching end statement. In the example, the style name is styles.mydefault . • Style statements provide attributes for style elements. In the example, the style elements are data, header, and systemtitle. Gosselin and Smith, SESUG 2000
So you want to be an expert? • Olinger(1999) states, “There are approximately sixty-five different style attributes that can be specified on a style element. For a complete list, refer to the documentation.” • I counted 101 style elements in styles.default. • Can’t wait for the certification test on this! Gosselin and Smith, SESUG 2000
Using Your New Style Code: ODS html file=‘table1.htm’ style=styles.mydefault; SAS program statements Run; Quit; HTML close; Explanation: The style= option on the ODS statement is used to select a style template. If the requested template isn’t found the default will be used. Gosselin and Smith, SESUG 2000
Style Element Attributes • Font and color are two commonly set style element attributes. • These will be covered at an introductory level in these slides and in our examples. Gosselin and Smith, SESUG 2000
Defining Font Attributes A font definition has the following format: (“font-face1”,font-size, keyword list) Font-face: If you specify more than one, the browser uses the first one installed on the system. Font-size: Interpretation of font-size depends on the browser Gosselin and Smith, SESUG 2000
Font Attributes (cont.) Keywords: Font_weight: medium, bold, demi_bold, extra_bold, light Font_style: italic, roman, slant Font_width: normal, compress, extra_compressed, narrow, wide Gosselin and Smith, SESUG 2000
Font Attributes (cont.) Code: Style data / font=(‘Arial, Helvetica’,4,bold italic); Style data / font_face=‘Arial, Helvetic’ font_size=4 font_style=italic font_weight=bold; Explanation: These two statements generate the same results. Gosselin and Smith, SESUG 2000
Color Attributes Some web safe colors (Template Tutorial) Red=#FF0000 Brass=#B5A642 Green=#00FF00 Brown=#A62A2A Blue=#0000FF Bronze=#8C7853 White=#FFFFFF Magenta=#FF00FF Black=#000000 Copper=#B87333 Yellow=#FFFF00 Cadet Blue=#5F9F9F Gosselin and Smith, SESUG 2000
Inheritance Often the easiest way to create a template is to modify an existing template. This is done using inheritance. There are two types of inheritance. • “Style definition inheritance” uses the PARENT= statement within a style definition. • “Style element inheritance” uses the FROM option on the STYLE statement. Gosselin and Smith, SESUG 2000
Style Definition Inheritance Code: Proc template; Define styles.mydefault; parent=styles.default; When you use parent= all the style elements, attributes, and settings from the parent style are inherited. Gosselin and Smith, SESUG 2000
Style Definition Inheritance When using “style definition inheritance” you can: • Modify existing style elements • Add new style elements Gosselin and Smith, SESUG 2000
Style Element Inheritance Proc template; Define styles.mydefault; parent=styles.default; Style document / attributes; Style data from document / attributes; Style header from footer / attributes; End; Gosselin and Smith, SESUG 2000
Style Element Inheritance Using “style element inheritance” you can: • Inherit style elements from within the current definition. • Inherit style elements from the parent when a PARENT= statement is used. Note: attributes are inherited from the parent if the style element doesn’t exist within the current (child) definition. Gosselin and Smith, SESUG 2000
Style Element Inheritance • Inherited style elements inherit all the attributes set in the parent. • The style elements can be modified and added to. Gosselin and Smith, SESUG 2000
A Sample Table Template Proc template; Edit stat.glm.test as combined.tests; Edit ss; format =7.2; end; Edit ms; format =7.2; end; Run; Gosselin and Smith, SESUG 2000