![]() | ![]() | ![]() |
The following sample program demonstrates using the _tmpcat macro variable and the Replay program to address this common requirement for many Web-based reports: HTML-based versions for viewing on the screen with an option to generate PDF and RTF versions for printing or editing. See Figure 8.10.
To run this example, go to the sample environment located at http://hcsbi.com/IntrNetAppDev/ and select Chapter 8. Then select HTML, with options for PDF and/or RTF.
Figure 8.10 HTML Output with Options for PDF or RTF Output
The _replay macro variable is used to generate the link, as it includes all the name/value pairs needed to generate a link for the Replay program, including all the fields to direct the request back to the same server. This is necessary since the _tmpcat catalog is available only to the specific server running the current request.
The value of _replay includes the value for the _tmpcat catalog; it is necessary only to append the entry name and type. _replay includes the & sign to separate the name/value pairs for the hyperlink and it is already quoted with a single quote (‘) so it can be used directly in a PUT statement.
Upon examining the links (e.g., by selecting view source) that are generated to view the PDF and RTF output, you see that they contain session information (i.e., the URL contains values for _server, _port, and _sessionid). See Figure 8.11. Note that line feeds were added to the HTML source for readability. Writing content to the catalog referenced by the macro variable _tmpcat (referred to as the _tmpcat catalog) creates a lightweight session just as using ODS does. ODS also writes content to the _tmpcat catalog and then uses the replay link to surface that content when generating a page with mixed text and graphics. Selecting either of these links will produce the same output (except for the TITLE statement) shown in Figures 8.7 and 8.8. The difference here is that the program to create the report was only run once.
Figure 8.11 HTML Source Generated Using _replay Showing Session Information

The use of the _tmpcat catalog to create other components of the desired output (e.g., frame-based content, graphics, etc.) is a useful technique when the full overhead of sessions is not needed. Since using the _tmpcat catalog triggers a lightweight session, the Application Server deletes the catalog once the lightweight session expires. There is no need for the application to do this cleanup; unlike the situation if another storage location, e.g. a file system file, is used.
Note: The PDF is returned as an attachment since the Replay program generates the attachment header, by default, for PDF output. It is not possible to change or customize this behavior of the Replay program; it was implemented this way by SAS to deal with browser issues.
About the Author
Don Henderson is the Owner and Principal of Henderson Consulting Services, a SAS Affiliate Partner. Don has used SAS software since 1975, designing and developing business applications with a focus on data warehouse, business intelligence, and analytic applications. Don was one of the primary architects in the initial development and release of SAS/IntrNet software in 1996, and he was one of the original developers for the SAS/IntrNet Application Dispatcher. Don has presented numerous papers at SUGI and regional SAS user group meetings, and continues to be a great supporter of SAS and its products.
His book is available from the online bookstore.
| Type: | Sample |
| Topic: | Internal Administration ==> BBU |
| Date Modified: | 2007-07-14 03:02:57 |
| Date Created: | 2007-07-14 03:02:57 |
| Product Family | Product | Host | SAS Release | |
| Starting | Ending | |||
| SAS System | SAS/IntrNet | All | 8 TS M0 | 9.1 TS1M3 |



