Knowledge Base

SAS Technical Papers » Base SAS Language, PROCs, ODS, and Macros

Papers Topic List 
Date Title
April 2016 Dealing with Nanoseconds in SAS® Datetime Values in Transaction Processing (PDF)
This paper describes a technique for dealing with the precision problems inherent in datetime values containing nanosecond data. Floating-point values cannot store sufficient precision for this, and this limitation can be a problem for transactional data where nanoseconds are pertinent. Methods discussed include separation of variables and using the special GROUPFORMAT feature of the BY statement with MERGE in the DATA step.
April 2016 New for SAS® 9.4: A Technique for Including Text and Graphics in Your Microsoft Excel Workbooks, Part I (PDF)
A new ODS destination for creating Microsoft Excel workbooks is available starting in the third maintenance release for SAS® 9.4. This destination creates native Microsoft Excel XLSX files, supports graphic images, and offers other advantages over the older ExcelXP tagset. In this presentation you learn step-by-step techniques for quickly and easily creating attractive multi-sheet Excel workbooks that contain your SAS® output. The techniques can be used regardless of the platform on which SAS software is installed. You can even use them on a mainframe! Creating and delivering your workbooks on-demand and in real time using SAS server technology is discussed. Although the title is similar to previous presentations by this author, this presentation contains new and revised material not previously presented. Using the ExcelXP tagset with earlier versions of SAS to create multi-sheet workbooks is also discussed.
Read the paper (PDF) | Download the zip file (ZIP)
April 2016 A Ringside Seat: The ODS Excel Destination versus the ODS ExcelXP Tagset (PDF)
The discussion covers features and benefits of the new Excel destination, differences between the Excel destination and the older ExcelXP tagset, and functionality that exists in the ExcelXP tagset that is not available in the Excel destination. These topics are all illustrated with meaningful examples. The paper also explains how you can bridge the gap that exists as a result of differences in the functionality between the destination and the tagset. In addition, the discussion outlines when it is beneficial for you to use the Excel destination versus the ExcelXP tagset, and vice versa.
April 2016 The Dynamic Duo: ODS Layout and the ODS Destination for PowerPoint (PDF)
Through code examples this paper shows you how to create a custom title slide, as well as place the desired number of graphs and tables on each slide.
April 2016 A Second Look at the ODS Destination for PowerPoint (PDF)
This paper demonstrates how to use the ODS destination for PowerPoint to create attractive presentations from your SAS® output.
April 2016 That’s All Right: More Complex Reports (PDF)
The paper presents a nuts-and-bolts look at more complex report examples gleaned from SAS® Community Forum questions and questions from students
April 2016 New for SAS® 9.4: A Technique for Including Text and Graphics in Your Microsoft Excel Workbooks, Part 1 (PDF)
This paper explains how to use the Excel ODS destination, available in the third maintenance release for Base SAS 9.4 and later, to create a workbook which includes four worksheets that display fictional cholesterol lab results by patient gender for the baseline test and the test results for a given day during a clinical trial.
April 2016 A Guide to Section 508 Compliance Using SAS® 9.4 Output Delivery System (ODS) (PDF)
This paper describes concrete steps that help you use SAS® 9.4 Output Delivery System (ODS) to create SAS output that complies with accessibility standards. It also provides recommendations and code samples that are aligned with the accessibility standards defined by Section 508 and the Web Content Accessibility Guidelines (WCAG 2.0).
April 2016 Implementing Hashing Techniques in SAS® (PDF)
This paper shows how hashing and methods can be implemented using SAS DATA steps and macros, with judicious use of the bitwise functions (BAND, BOR, and so on) and by referencing public domain sources.
April 2016 Data Analysis with User-Written DS2 Packages (PDF)
This paper discusses the SAS In-Database Code accelerator and how it enables customer packages to be deployed in parallel on massive data grids. It also shows how to create a package template that facilitates code reuse in a strongly typed system
April 2016 Deep Dive with SAS® Studio into SAS® Grid Manager 9.4 (PDF)
In this paper you learn how to connect each of them to SAS Grid Manager and discover best practices for harnessing a high-performance SAS analytics environment, while avoiding potential pitfalls.
April 2016 Developing SAS® Studio Repositories (PDF)
This paper covers developing SAS® Studio repositories. SAS Studio introduced a new way of developing custom tasks using an XML markup specification and the Apache Velocity templating language.
April 2016 Create Web-Based SAS® Reports Without Having to Be a Web Developer (PDF)
In this paper you will learn how to take a typical SAS program and create a SAS Studio task from it.
April 2016 Get Out of DATA Step Code and into Quality Knowledge Bases (PDF)
This paper explains the QKB and shows how to invoke QKB operations in a DATA step and in various SAS® Data Management offerings.
April 2016 How to Maintain Happy SAS®9 Users (PDF)
The guidance offered in this paper helps SAS administrators evaluate hardware, operating system, and infrastructure options for a SAS environment that will keep their SAS applications running at optimal performance and keep their user community happy.
April 2016 PharmaSUG 2016 – Paper BB11: Surviving the SAS® Macro Jungle by Using Your Own Programming Toolkit (PDF)
This paper describes ten macro programming tools that programmers of all levels can add to their toolboxes. The tools discussed in this paper (which include the DOSUBL function, the CALL SYMPUTX routine, and macro debugging system options among others) are intended to help programmers better understand the macro language and program more effectively.
August 2015 TS-673: Reading Delimited Text Files Into SAS®9 (PDF)
May 2015 Driving SAS with Lua (PDF)
This paper shows you how you can get started using Lua to drive SAS, via a quick introduction to Lua and a tour through some of the features of the Lua and SAS combination that make SAS programming easier.
May 2015 Don't Be a Litterbug: Best Practices for Using Temporary Files in SAS® (PDF)
This paper explains best practices for using temporary files in SAS® programs. These practices include using the TEMP access method, writing to the WORK directory, and ensuring that you leave no litter files behind. An additional special temporary file technique is described for mainframe users.
May 2015 Staying Relevant in a Competitive World: Using the SAS Output Delivery System to Enhance, Customize, and Render Reports (PDF)
To begin, the paper illustrates how to modify styles in your reports using the ODS CSS style engine, which incorporates the use of cascading style sheets (CSS) and the ODS document object model (DOM). You also learn how you can use ODS to customize and generate reports in the body of email messages. Then the paper discusses methods for enhancing reports and rendering them in desktop and mobile browsers by using the HTML and HTML5 ODS destinations. To conclude, the paper demonstrates the use of selected SAS ODS destinations and features in practical, real-world applications.
May 2015 Creating Multi-Sheet Microsoft Excel Workbooks with SAS: The Basics and Beyond, Part 2 (PDF)
This paper explains how to use Base SAS®9 software to create multi-sheet Excel workbooks. You learn step-by-step techniques for quickly and easily creating attractive multi-sheet Excel workbooks that contain your SAS® output using the ExcelXP Output Delivery System (ODS) tagset. The techniques can be used regardless of the platform on which SAS software is installed. You can even use them on a mainframe! Creating and delivering your workbooks on-demand and in real time using SAS server technology is discussed. Although the title is similar to previous presentations by this author, this presentation contains new and revised material not previously presented.
Read the paper (PDF) | Download the zip file (ZIP)
May 2015 The REPORT Procedure: A Primer for the Compute Block (PDF)
This paper is a primer for using a compute block. With a compute block, you can easily change values in your output with the proper assignment statement and add text with the LINE statement. With the CALL DEFINE statement, you can adjust style attributes such as color and formatting. Through examples, you learn how to apply these techniques for use with any style of output.
May 2015 New Macro Features Added in SAs 9.3 and SAS 9.4 (PDF)
This paper describes the new features added to the macro facility in SAS® 9.3 and SAS® 9.4. New features described include the /READONLY option for macro variables, the %SYSMACEXIST macro function, the %PUT &= feature, and new automatic macro variables such as &SYSTIMEZONEOFFSET.
May 2015 Helping You C What You Can Do with SAS (PDF)
This paper gets you started on how to use the PROTO procedure and, in turn, how to call your C functions from within FCMP and SAS®.
May 2015 An Insider’s Guide to ODS Layout Using SAS 9.4 (PDF)
This paper reviews some common issues customers have reported to SAS Technical Support when migrating to the LAYOUT destination in SAS 9.4 and explores the basics for those who are making their first foray into the adventure that is ODS LAYOUT. This paper discusses some tips and tricks to ensure your trip through the ODS LAYOUT statement will be a fun and rewarding one.
May 2015 The SAS Scalable Performance Data Engine: Moving your Data to Hadoop without Giving up the SAS features you depend on (PDF)
June 2014 Dealing with Numeric Representation Error in SAS® Applications (PDF)
This paper describes the problem of numeric representation and how the problem manifests itself. In addition, it provides ideas about how to handle the problem in SAS applications. This paper also updates and replaces TS-230.
March 2014 Nitty Gritty Data Set Attributes (PDF)
This paper covers the majority of the attributes stored in a SAS data set, how to obtain them, why they are important, and what you can do with them.
March 2014 Parallel Data Preparation with the DS2 Programming Language (PDF)
The DS2 programming language in SAS 9.4 simplifies and speeds data preparation with user-defined methods, storing methods and attributes in shareable packages, and threaded execution on multi-core symmetric multiprocessing (SMP) and massively parallel processing (MPP) machines.
March 2014 Reading and Writing ZIP files with SAS (PDF)
This paper provides several examples of reading from and writing to ZIP files using the ZIP access method.
March 2014 Sailing Over the ACROSS Hurdle in PROC REPORT (PDF)
This presentation illustrates how to make the most of ACROSS usage with PROC REPORT. Use PROC REPORT instead of multiple TRANSPOSE steps.
March 2014 Using Base SAS to Extend the SAS System (PDF)
This paper demonstrates how to use Base SAS tools to add functional, reusable extensions to the SAS system.
March 2014 Three Different Ways to Import JSON from the Facebook Graph API (PDF)
This paper shows how we can parse the JSON in SAS by calling an external script, using PROC GROOVY to parse it inside of SAS, or by parsing the JSON manually with a DATA step.
March 2014 PDF vs. HTML: Can't We All Just Get Along? (PDF)
This paper provides tips from beginner to advanced in all areas of reporting. Each destination (PDV or HTML) helps you transform your reports to meet all your needs.
March 2014 Advanced Mobile Reporting with the ODS EPUB3 Destination (PDF)
This paper provides advanced instruction for writing e-books with ODS EPUB.
March 2014 Comparing ODS LAYOUT and the ODS Report Writing Interface (PDF)
This paper highlights the similarities and differences between the ODS LAYOUT and ODS Report Writing and illustrates the advantages of using them together.
March 2014 Combining the Power of the SAS Output Delivery System with Microsoft Excel Worksheets (PDF)
This paper starts by discussing common questions and problems that users report when they try to generate Excel worksheets. The discussion continues with methods for automating Excel worksheets using ODS tagsets and customizing your worksheets using the CSS style engine and extended tagsets.
December 2013 Flexibility by Design: A Look at New and Updated System Options in SAS® 9.4 (PDF)
This paper discusses new SAS 9.4 system options that enable Base SAS programmers to create large data sets, accelerate program execution time, ensure the correct date and time in SAS output, prevent truncation of input and output external files and SAS programs, read two-digit years correctly, and save the SAS environment for use in later SAS sessions.
April 2013 Go Mobile with the ODS EPUB Destination (PDF)
This paper provides an introduction to writing e-books with ODS EPUB. With ODS EPUB, you can generate your reports as e-books that you can read with iBooks on the iPad, or, you can write an e-book from scratch if you like.
April 2013 Renovating Your SAS® 9.3 ODS Output: Tools for Everything from Minor Remodeling to Extreme Makeovers (PDF)
This paper shows how you can use certain ODS statements (for example, ODS SELECT and ODS TEXT) and ODS statement options (for example, STYLE=) for minor remodeling. The paper also illustrates how to use the REGISTRY, TEMPLATE, and DOCUMENT procedures for a more extreme makeover.
April 2013 A First Look at the ODS Destination for PowerPoint (PDF)
This paper introduces the ODS destination for PowerPoint, one of the next generation of ODS destinations.
April 2013 Macro Basics for new SAS Users (PDF)
This paper provides an overview of how the SAS macro facility works and how you can make it work in your programs.
April 2013 Tips for Generating Percentages Using the SAS® TABULATE Procedure (PDF)
Written for intermediate users, this paper discusses techniques for enhancing PROC TABULATE output with percentage statistics.
April 2013 Submitting SAS Code on the side (PDF)
This paper explains the new DOSUBL function and how it can submit SAS code to run "on the side" while your DATA step is still running.
April 2013 The SAS Output Delivery System: Boldly Take your web pages where they have never gone before (PDF)
This paper discusses how to use ODS techniques to deliver web content specifically for mobile devices, web content for both mobile and desktop devices, and web content specifically for desktop devices.
April 2013 Take Home the ODS Crown Jewels: Master the New Production Features of ODS LAYOUT and Report Writing Interface Techniques (PDF)
This paper describes the ODS “crown jewels” that allow the customer to create sophisticated documents that can readily be published via print, Web, or mobile devices.
July 2012 Harnessing the Power of SAS ISO 8601 Informats, Formats, and the CALL IS8601_CONVERT Routine(PDF)
This paper addresses how to create and manage ISO 8601 compliant date, time, and datetime values in a CDISC environment.
May 2012 Using the New Features in PROC FORMAT (PDF)
This paper describes several examples using functions as labels within PROC FORMAT definitions. Also described is the new feature allowing for Perl regular expressions for informatting data, as well as other new features in PROC FORMAT for SAS 9.3.
May 2012 Why Does SAS® Say That? What Common DATA Step and Macro Messages Are Trying to Tell You (PDF)
This paper explores some notes, warnings, and errors that come from DATA step and macro programs and deciphers them into easily understood explanations that enable you to answer many of your questions.
May 2012 Where's the LISTING Window? Using the New Results Viewer in SAS® 9.3 (PDF)
This paper outlines several techniques for adjusting the behavior of the SAS windowing environment Results Viewer using SAS 9.3. Examples of the new Output Delivery System (ODS)-related options that allow you to establish destination and style defaults in your configuration file are also provided.
December 2011 Using Arrays in SAS® Programmings (PDF)
When you are working with groups of similar data and performing common operations on each element of the group, arrays can save you significant time in coding an application.
April 2011 Don’t Gamble with Your Output: How to Use Microsoft Formats with ODS (PDF)
This paper provides an overview of how you can use the HTMLSTYLE attribute with HTML-based destinations and the TAGATTR attribute with the TAGSETS.EXCELXP destination to send Microsoft formats from SAS to Excel using the Output Delivery System (ODS) STYLE= overrides.
April 2011 The Greatest Hits: ODS Essentials Every User Should Know (PDF)
This paper covers some of the essential features and options of ODS that every user needs to know to be productive and includes concrete code examples.
May 2010 Traffic Lighting your Multi-sheet Microsoft Excel Workbooks the Easy Way with SAS® (PDF)
This paper explains how to use Base SAS®9 software to create multi-sheet Microsoft Excel workbooks (for Excel versions 2002 and later), and then traffic light the values that lie outside a range.
March 2009 Customizing FREQ Procedure Output in SAS 9.2 (PDF)
This paper introduces the new crosstabulation table template, which enables you to customize PROC FREQ output and highlights how to use the template to accomplish some common tasks.
March 2009 CSSSTYLE: Stylish Output with ODS and SAS 9.2 (PDF)
This paper provides an introduction into the use of the new CSSSTYLE option in SAS 9.2. This option allows you to use cascading style sheet (CSS) style specifications for RTF and PDF files, in addition to HTML files. This paper includes a brief introduction to CSS syntax and some of the features, such as @media CSS sections, that are particularly useful when creating ODS output.
March 2009 Dear Miss SAS Answers: A Guide to Efficient PROC SQL Coding (PDF)
This paper answers commonly asked questions and helps you harness the potential of Structured Query Language.
March 2009 Have It Your Way: Rearrange and Replay Your Output with ODS DOCUMENT (PDF)
This paper illustrates how to capture your output and save it in an Output Delivery System (ODS) Document store. Then you can create custom folders and a custom folder hierarchy using ODS DOCUMENT and PROC DOCUMENT in order to rearrange and replay your output.
March 2009 Tiptoe through the Templates (PDF)
This paper provides an overview of all the different template types and how they're used with the Output Delivery System. From style and table templates, that first appeared with SAS 7 to the newest graph templates that appeared with SAS 9.2, this paper provides an overview and several concrete examples for each template type.
November 2008 Achieving Better I/O Throughput Using SGIO in the Microsoft Windows Environment (PDF)
In the SAS System, SAS I/O. the most common input/output (I/O) processing, is performed on SAS files such as SAS data sets, SAS catalogs, and SAS index files. Most SAS I/O processing is sequential I/O, which means that the DATA step and SAS procedures read a data set from the beginning of the file to the end of the file.
March 2008 Creating Complex Reports (PDF)
Are you confused about whether you need a detail report or a summary report? Do you wonder whether you're using the right reporting procedure for your report? Have you ever spent a lot of time going down the road with one procedure only to discover that you need to switch to a different procedure to get what you want or closer to what you want?
March 2008 Tips and Tricks for Creating Multi-Sheet Microsoft Excel Workbooks the Easy Way with SAS (PDF)
This paper discusses using the XML support in Base SAS 9.1 software to create multi-sheet Microsoft Excel workbooks (versions 2002 and later). You will learn step-by-step techniques for quickly and easily creating attractive multi-sheet Excel workbooks that contain your SAS output. The information presented is new for 2008.
March 2007 Adventures in Arrays: A Beginning Tutorial (PDF)
This paper presents examples to explain what arrays are and how to use them. In addition to simple examples demonstrating arrays used to perform calculations, restructure data and look up values, the paper includes examples using multidimensional arrays for efficient table lookups.
March 2007 PROC TEMPLATE Tables from Scratch (PDF)
In this paper, you learn how to create and modify table templates, including how to add, remove, and move columns as well as headers and footers. You also learn how to apply styles, formats, and other visual effects, all from scratch.
March 2007 The Output Delivery System (ODS) from Scratch (PDF)
Using ODS, you can generate reports in formats such as HTML, XML, PDF, PostScript, RTF, and Microsoft Excel. This paper shows you how to generate reports with ODS, from scratch. You'll learn how to generate multiple output formats, simultaneously; how to change the look of your report using styles; how to add text passages; and other helpful information.
July 2001 TS-654: Numeric Precision 101 (PDF)
December 2000 TS-642: Reading EBCDIC Files on ASCII Systems