Programmer/Application Developer Papers A-Z

A
Paper 1204-2014:
A Survey of Some of the Most Useful SAS® Functions
SAS® functions provide amazing power to your DATA step programming. Some of these functions are essential some of them save you writing volumes of unnecessary code. This paper covers some of the most useful SAS functions. Some of these functions might be new to you, and they will change the way you program and approach common programming tasks.
Ron Cody, Camp Verde Associates
Paper 1277-2014:
Adding Serial Numbers to SQL Data
Structured Query Language (SQL) does not recognize the concept of row order. Instead, query results are thought of as unordered sets of rows. Most workarounds involve including serial numbers, which can then be compared or subtracted. This presentation illustrates and compares five techniques for creating serial numbers.
Howard Schreier, Howles Informatics
Paper SAS339-2014:
Advanced Mobile Reporting with the ODS EPUB3 Destination
The Base SAS® 9.4 Output Delivery System (ODS) EPUB destination enables users to deliver SAS® reports as e-books on Apple mobile devices. The first maintenance release of SAS® 9.4 adds the ODS EPUB3 destination, which offers powerful new multimedia and presentation features to report writers. This paper shows you how to include images, audio, and video in your ODS EPUB3 e-book reports. You learn how to use publishing presentation techniques such as sidebars and multicolumn layouts. You become familiar with best practices for accessibility when employing these new features in your reports. This paper provides advanced instruction for writing e-books with ODS EPUB. Please bring your iPad, iPhone, or iPod to the presentation so that you can download and read the examples.
David Kelley, SAS
Paper SAS039-2014:
An Insider's Guide to SAS/ACCESS® Interface to ODBC
SAS/ACCESS® Interface to ODBC has been around forever. On one level, ODBC is very easy to use. That ease hides the flexibility that ODBC offers. This presentation uses examples to show you how to increase your program's performance and troubleshoot problems. You will learn: the differences between ODBC and OLE DB what the odbc.ini file is (and why it is important) how to discover what your ODBC driver is actually doing the difference between a native ACCESS engine and SAS/ACCESS Interface to ODBC
Jeff Bailey, SAS
Paper SAS302-2014:
An Introduction to SAS® Studio
This paper is an introduction to SAS® Studio and covers how to perform basic programming tasks in SAS Studio. Many people program in the SAS® language by using SAS Display Manager or SAS® Enterprise Guide®. SAS Studio is different because it enables you to write and run SAS code by using the most popular web browsers, without requiring a SAS® 9.4 installation on your machine. With SAS Studio, you can access your data files, libraries, and existing programs, and write new programs while using SAS software behind the scenes. SAS Studio connects to a SAS sever in order to process SAS programs. The SAS server can be a hosted server in a cloud environment, a server in your local environment, or a copy of SAS on your local machine.
Samantha Dupont, SAS
Michael Monaco, SAS
Mike Porter, SAS
Paper SAS051-2014:
Ask Vince: Moving SAS® Data and Analytical Results to Microsoft Excel
This presentation is an open-ended discussion about techniques for transferring data and analytical results from SAS® to Microsoft Excel. There will be some introductory comments, but this presentation does not have any set content. Instead, the topics discussed are dictated by attendee questions. Come prepared to ask and get answers to your questions. To submit your questions or suggestions for discussion in advance, go to http://support.sas.com/surveys/askvince.html.
Vince DelGobbo, SAS
Paper 1308-2014:
Automating the Creation of Complex Microsoft PowerPoint Presentations
The creation of production reports for our organization has historically been a labor-intensive process. Each month, our team produced around 650 SAS® graphs and 30 tables which were then copied and pasted into 16 custom Microsoft PowerPoint presentations, each between 20 and 30 pages. To reduce the number of manual steps, we converted to using stored processes and the SAS® Add-In for Microsoft Office. This allowed us to simply refresh those 16 PowerPoint presentations by using SAS Add-In for Microsoft Office to run SAS® Stored Processes. SAS Stored Processes generates the graphs and tables while SAS Add-In for Microsoft Office refreshes the document with updated graphs already sized and positioned on the slides just as we need them. With this new process, we are realizing the dream of reducing the amount of time spent on a single monthly production process. This paper will discuss the steps to creating a complex PowerPoint presentation that is simply refreshed rather than created new each month. I will discuss converting the original code to stored processes using SAS® Enterprise Guide®, options and style statements that are required to continue to use a custom style sheet, and how to create the PowerPoint presentation with an assortment of output types including horizontal bar charts, control charts, and tables. I will also discuss some of the challenges and solutions specific to the stored process and PowerPoint Add-In that we encountered during this conversion process.
Julie VanBuskirk, Baylor Health Care System
B
Paper 1444-2014:
Before You Get Started: A Macro Language Preview in Three Parts. Part 1: What the Language Is, What It Does, and What It Can Do
As complicated as the macro language is to learn, there are very strong reasons for doing so. At its heart, the macro language is a code generator. In its simplest uses, it can substitute simple bits of code like variable names and the names of data sets that are to be analyzed. In more complex situations, it can be used to create entire statements and steps based on information may even be unavailable to the person writing or even executing the macro. At the time of execution, it can be used to make queries of the SAS® environment as well as the operating system, and utilize the gathered information to make informed decisions about how it is to further function and execute.
Art Carpenter, California Occidental Consultants
Paper 1549-2014:
Build your Metadata with PROC CONTENTS and ODS OUTPUT
Simply using an ODS destination to replay PROC CONTENTS output does not provide the user with attractive, usable metadata. Harness the power of SAS® and ODS output objects to create designer multi-tab metadata workbooks with the click of a mouse!
Louise Hadden, Abt Associates Inc.
C
Paper SAS179-2014:
Check It Out! Versioning in SAS® Enterprise Guide®
The life of a SAS® program can be broken down into sets of changes made over time. Programmers are generally focused on the future, but when things go wrong, a look into the past can be invaluable. Determining what changes were made, why they were made, and by whom can save both time and headaches. This paper discusses version control and the current options available to SAS® Enterprise Guide® users. It then highlights the upcoming Program History feature of SAS Enterprise Guide. This feature enables users to easily track changes made to SAS programs. Properly managing the life cycle of your SAS programs will enable you to develop with peace of mind.
Joe Flynn, SAS
Casey Smith, SAS
Alex Song, SAS
Paper 1717-2014:
Collaborative Problem Solving in the SAS® Community
When a SAS® user asked for help scanning words in textual data and then matching them to pre-scored keywords, it struck a chord with SAS programmers! They contributed code that solved the problem using hash structures, SQL, informats, arrays, and PRX routines. Of course, the next question was which program is fastest! This paper compares the different approaches and evaluates the performance of the programs on varying amounts of data. The code for each program is provided to show how SAS has a variety of tools available to solve common problems. While this won t make you an expert on any of these programming techniques, you ll see each of them in action on a common problem.
Tom Kari, Tom Kari Consulting
Paper 1749-2014:
Creating Define.xml v2 Using SAS® for FDA Submissions
When submitting clinical data to the Food and Drug Administration (FDA), besides the usual trials results, we need to submit the information that helps the FDA to understand the data. The FDA has required the CDISC Case Report Tabulation Data Definition Specification (Define-XML), which is based on the CDISC Operational Data Model (ODM), for submissions using Study Data Tabulation Model (SDTM). Electronic submission to the FDA is therefore a process of following the guidelines from CDISC and FDA. This paper illustrates how to create an FDA guidance compliant define.xml v2 from metadata by using SAS®.
Qinghua (Kathy) Chen, Exelixis Inc.
James Lenihan, Exelixis Inc.
Paper 1838-2014:
Creating Formats on the Fly
The Census Bureau conducts the Common Core of Data surveys for the National Center for Education Statistics annually. We have written SAS® programs to automate the database documentation. We try to avoid including hard-coded values in the programs. Thanks to a record layout spreadsheet, the analysts can quickly update the survey metadata outside the SAS programs. This paper explains how SAS can read the record layout spreadsheet to create formats on the fly. The analysts can update the values as changes occur over time without having to worry about writing correct SAS syntax. Behind the scenes, SAS is using dictionary views, macros, ODS OUTPUT, PROC TEMPLATE, PROC FORMAT, the ODS Report Writing Interface, and RTF to create the desired results. This paper uses syntax for SAS® 9.2, written for programmers at the intermediate level.
Suzanne Dorinski, US Census Bureau
Paper SAS050-2014:
Creating Multi-Sheet Microsoft Excel Workbooks with SAS®: The Basics and Beyond Part 1
This presentation explains how to use Base SAS®9 software to create multi-sheet Microsoft 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 ODS tagset. The techniques can be used regardless of the platform on which your 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.
Vince DelGobbo, SAS
D
Paper 1302-2014:
Debugging SAS® Code in a Macro
Debugging SAS® code contained in a macro can be frustrating because the SAS error messages refer only to the line in the SAS log where the macro was invoked. This can make it difficult to pinpoint the problem when the macro contains a large amount of SAS code. Using a macro that contains one small DATA step, this paper shows how to use the MPRINT and MFILE options along with the fileref MPRINT to write just the SAS code generated by a macro to a file. The 'de-macroified' SAS code can be easily executed and debugged.
Bruce Gilsen, Federal Reserve Board
Paper 1272-2014:
Developing Web Applications with SAS® Stored Processes
This paper outlines the techniques that I have used with my clients over the last five years to build powerful applications that run from a web browser. The user interface is presented using HTML and JavaScript, which is generated by SAS® Stored Processes. A JavaScript framework called Ext JS is used to build components such as tables and graphs, which have a lot of functionality built in. A range of SAS® macros are used for building HTML and JavaScript, so the generation of the user interface is simplified. This technique has been used to create a medical monitoring system, the UK Census MIS, and a bank's risk management application. I also discuss some techniques involved with integrating a system like this with SAS® Portal, cubes, and web reports.
Philip Mason, Wood Street Consultants
E
Paper 1493-2014:
Experiences in Using Academic Data for SAS® BI Dashboard Development
Business Intelligence (BI) dashboards serve as an invaluable, high-level, visual reference tool for decision-making processes in many business industries. A request was made to our department to develop some BI dashboards that could be incorporated in an academic setting. These dashboards would aim to serve various undergraduate executive and administrative staff at the university. While most business data may lend itself to work very well and easily in the development of dashboards, academic data is typically modeled differently and, therefore, faces unique challenges. In this paper, the authors detail and share the design and development process of creating dashboards for decision making in an academic environment utilizing SAS® BI Dashboard 4.3 and other SAS® Enterprise Business Intelligence 9.2 tools. The authors also provide lessons learned as well as recommendations for future implementations of BI dashboards utilizing academic data.
Evangeline Collado, University of Central Florida
Michelle Parente, University of Central Florida
Paper 1342-2014:
Extreme SAS® Reporting II: Data Compendium and 5-Star Ratings Revisited
Each month, our project team delivers updated 5-Star ratings for 15,700+ nursing homes across the United States to Centers for Medicare and Medicaid Services. There is a wealth of data (and processing) behind the ratings, and this data is longitudinal in nature. A prior paper in this series, 'Programming the Provider Previews: Extreme SAS® Reporting,' discussed one aspect of the processing involved in maintaining the Nursing Home Compare website. This paper will discuss two other aspects of our processing: creating an annual data Compendium and extending the 5-star processing to accommodate several different output formats for different purposes. Products used include Base SAS®, SAS/STAT®, ODS Graphics procedures, and SAS/GRAPH®. New annotate facilities in both SAS/GRAPH and the ODS Graphics procedures will be discussed. This paper and presentation will be of most interest to SAS programmers with medium to advanced SAS skills.
Louise Hadden, Abt Associates Inc.
F
Paper 1266-2014:
Five Ways To Flip-Flop Your Data
Data is often stored in highly normalized ( tall and skinny ) structures that are not convenient for analysis. The SAS® programmer frequently needs to transform the data to arrange relevant variables together in a single row. Sometimes this is a simple matter of using the TRANSPOSE procedure to flip the values of a single variable into separate variables. However, when there are multiple variables to be transposed to a single row, it might require multiple transpositions to obtain the desired result. This paper describes five different ways to achieve this flip-flop, explains how each method works, and compares the usefulness of each method in various situations. Emphasis is given to achieving a data-driven solution that minimizes hard-coding based on prior knowledge of the possible values each variable can have and that improves maintainability and reusability of the code. The intended audience is novice and intermediate SAS programmers who have a basic understanding of the DATA step and the TRANSPOSE procedure.
Josh Horstman, Nested Loop Consulting
Paper 1441-2014:
For Coders Only: The SAS® Enterprise Guide® Experience
No way. Not gonna happen. I am a real SAS® programmer. (Spoken by a Real SAS Programmer.) SAS® Enterprise Guide® sometimes gets a bad rap. It was originally promoted as a code generator for non-programmers. The truth is, however, that SAS Enterprise Guide has always allowed programmers to write their own code. In addition, it offers many features that are not included in PC SAS®. This presentation shows you the top ten features that people who like to write code care about. It will be taught by a programmer who now prefers using SAS Enterprise Guide.
Christopher Bost, MDRC
G
Paper 1316-2014:
Getting the Warm and Fuzzy Feeling with Inexact Matching
With the ever increasing proliferation of disparate complex data being collected and stored, it has never been more important that this information is accurate, clean, integrated, and often times in compliance with an expanding set of government regulations. This means that the data must be cleaned and standardized, duplicates must be identified and removed, and the individual data must be able to be joined or merged together in some way. However, it is often the case that this data does not have the same variables or values to make this possible with a simple Join or Merge. To that end, one has to employ a set of fuzzy logics or fuzzy matching. Simply put, fuzzy matching is the implementation of algorithmic processes (fuzzy logic) to determine the similarity between elements of data such as business names, people names, or address information. Fuzzy logic is used to predict the probability of data with non-exact matches to help in data cleansing, deduplication, or matching of disparate data sets. This paper shows the basics of using fuzzy logic by using SAS® functions, COMPLEV, multiple variables matches, and a modified Porter stemming algorithm.
Toby Dunn, Dunn Consulting
H
Paper SAS063-2014:
How to Create a SAS® Enterprise Guide® Custom Task to Get Data from a SharePoint List into a SAS® Data Set
Do you have data in SharePoint that you would like to run analysis on with SAS®? This workshop teaches you how to create a custom task in SAS® Enterprise Guide® in order to find, retrieve, and format that data into a SAS data set for use in your SAS programs.
Bill Reid, SAS
I
Paper 1283-2014:
I Object: SAS® Does Objects with DS2
The DATA step has served SAS® programmers well over the years, and although it is powerful, it has not fundamentally changed. With DS2, SAS has introduced a significant alternative to the DATA step by introducing an object-oriented programming environment. In this paper, we share our experiences with getting started with DS2 and learning to use it to access, manage, and share data in a scalable, threaded, and standards-based way.
Peter Eberhardt, Fernwood Consulting Group Inc.
Xue Yao, University of Manitoba
J
Paper 1495-2014:
Jazz It Up a Little with Formats
Formats are an often under-valued tool in the SAS® toolbox. They can be used in just about all domains to improve the readability of a report, or they can be used as a look-up table to recode your data. Out of the box, SAS includes a multitude of ready-defined formats that can be applied without modification to address most recode and redisplay requirements. And if that s not enough, there is also a FORMAT procedure for defining your own custom formats. This paper looks at using some of the formats supplied by SAS in some innovative ways, but primarily focuses on the techniques we can apply in creating our own custom formats.
Brian Bee, The Knowledge Warehouse Ltd
L
Paper 1823-2014:
Let SAS® Power Your .NET GUI
Despite its popularity in recent years, .NET development has yet to enjoy the quality, level, and depth of statistical support that has always been provided by SAS®. And yet, many .NET applications could benefit greatly from the power of SAS and, likewise, some SAS applications could benefit from friendly graphical user interfaces (GUIs) supported by Microsoft s .NET Framework. What the author sets out to do here is to 1) outline the basic mechanics of automating SAS with .NET, 2) provide a framework and specific strategies for maintaining parallelism between the two platforms at runtime, and 3) sketch out put some simple applications that provide an exciting combination of powerful SAS analytics and highly accessible GUIs. The mechanics of automating SAS with .NET will be covered briefly. Attendees will learn the required objects and methods needed to pass information between the two platforms. The attendees will learn some strategies for organizing their projects and for writing SAS code that lends itself to automation. This will include embedding SAS scripts within a .NET project and managing communications between the two platforms. Specifically, the log and listing output will be captured and handled by .NET, and user actions will be interpreted and sent to the SAS engine. Example applications used throughout the session include a tool that converts between SAS variable types through simple drag-and-drop and an application that analyzes the growth of the user s computer hard drive.
Matthew Duchnowski, Educational Testing Service (ETS)
Paper SAS1583-2014:
Leveraging Advanced Analytics to Create Customer-Centric Assortments
Traditional merchandise planning processes have been primarily product and location focused, with decisions about assortment selection, breadth and depth, and distribution based on the historical performance of merchandise in stores. However, retailers are recognizing that in order to compete and succeed in an increasingly complex marketplace, assortments must become customer-centric. Advanced analytics can be leveraged to generate actionable insights into the relevance of merchandise to a retailer's various customer segments and purchase channel preferences. These insights enrich the merchandise and assortment planning process. This paper describes techniques for using advanced analytics to impact customer-centric assortments. Topics covered include approaches for scoring merchandise based on customer relevance and preferences, techniques for gaining insight into customer relevance without customer data, and an overall approach to a customer-driven merchandise planning process.
Christopher Matz, SAS
Paper SAS216-2014:
Leveraging SAS® Visualization Technologies to Increase the Global Competency of the US Workforce
U.S. educators face a critical new imperative: to prepare all students for work and civic roles in a globalized environment in which success increasingly requires the ability to compete, connect, and cooperate on an international scale. The Asia Society and the Longview Foundation are collaborating on a project to show both the need for and supply of globally competent graduates. This presentation shows you how SAS assisted these organizations with a solution that leverages SAS® visualization technologies in order to produce a heatmap application. The heatmap application surfaces data from over 300 indicators and surfaces over a quarter million data points in a highly iterative heatmap application. The application features a drillable map that shows data at the state level as well as at the county level for all 50 states. This endeavor involves new SAS® 9.4 technology to both combine the data and to create the interface. You'll see how SAS procedures, such as PROC JSON, which came out in SAS 9.4, were used to prepare the data for the web application. The user interface demonstrates how SAS/GRAPH® output can be combined with popular JavaScript frameworks like Dojo and Twitter Bootstrap to create an HTML5 application that works on desktop, mobile, and tablet devices.
Jim Bauer, SAS
M
Paper 1899-2014:
Macro Design
This paper provides a set of ideas about design elements of SAS® macros. This paper is a checklist for programmers who write or test macros.
Ronald Fehd, Stakana Analytics
Paper 1309-2014:
Make It Possible: Create Customized Graphs with Graph Template Language
Effective graphs are indispensable for modern statistical analysis. They reveal tendencies that are not readily apparent in simple tables and add visual clarity to reports. My client is a big graph fan; he always shows me a lot of high-quality and complex sample graphs that were created by other software and asks me Can SAS® duplicate these outputs? Often, by leveraging the capabilities of the ODS Graph Template Language and the SGRENDER procedure, the answer is Yes . Graph Template Language offers SAS users a more direct approach to customize the output and to overlay graphs in different levels. This paper uses cases drawn from a real work situation to demonstrate how to get the seemingly unattainable results with the power of Graph Template Language: utilizing bubble plots as your distribution density bars creating refreshing looking linear regression graphics with the slop information in the legend overlaying different plots together to create sophisticated analytical bottleneck test output
Wen Song, ICF International
Ge Wu, Johns Hopkins University
Paper 1755-2014:
Make SAS® Enterprise Guide® Your Own
If you have been programming SAS® for years, you have probably made Display Manager your own: customized window layout, program text colors, bookmarks, and abbreviations/keyboard macros. Now you are using SAS® Enterprise Guide®. Did you know you can have almost all the same modifications you had in Base SAS® in SAS Enterprise Guide, plus more?
John Ladds, Statistics Canada
Paper 1556-2014:
Making the Log a Forethought Rather Than an Afterthought
When we start programming, we simply hope that the log comes out with no errors or warnings. Yet once we have programmed for a while, especially in the area of pharmaceutical research, we realize that having a log with specific, useful information in it improves quality and accountability. We discuss clearing the log, sending the log to an output file, helpful information to put in the log, which messages are permissible, automated log checking, adding messages regarding data changes, whether or not we want to see source code, and a few other log-related ideas. Hopefully, the log will become something that we keep in mind from the moment we start programming.
Emmy Pahmer, inVentiv Health Clinical
N
Paper SAS164-2014:
Nitty Gritty Data Set Attributes
Most programmers are familiar with the directive Know your data. But not everyone knows about all the data and metadata that a SAS® data set holds or understands what to do with this information. This presentation talks about the majority of these attributes, how to obtain them, why they are important, and what you can do with them. For example, data sets that have been around for a while might have an inordinate number of deleted observations that you are carrying around unnecessarily. Or you might be able to quickly check to determine whether the data set is indexed and if so, by what variables in order to increase your program s performance. Also, engine-dependent data such as owner name and file size is found in PROC CONTENTS output, which is useful for understanding and managing your data. You can also use ODS output in order to use the values of these many attributes programmatically. This presentation shows you how.
Diane Olson, SAS
P
Paper SAS038-2014:
PDF vs. HTML: Can't We All Just Get Along?
Have you ever asked, Why doesn't my PDF output look just like my HTML output? This paper explains the power and differences of each destination. You ll learn how each destination works and understand why the output looks the way it does. Learn tips and tricks for how to modify your SAS® code to make each destination look more like the other. The tips span from beginner to advanced in all areas of reporting. Each destination is like a superhero, helping you transform your reports to meet all your needs. Learn how to use each ODS destination to the fullest extent of its powers.
Scott Huntley, SAS
Cynthia Zender, SAS
Paper 1737-2014:
PROC STREAM and SAS® Server Pages: Generating Custom User Interfaces
Quite often when building web applications that use either the SAS® Stored Process Server or the SAS/IntrNet® Applications Dispatcher, it is necessary to create a custom user interface to prompt for the needed parameters. For example, generating a custom user interface can be accomplished by chaining stored processes together. The first stored process generates the user interface where the user selects the desired options and uses PROC STREAM to process and input SAS® Server Pages to display the user interface. The second (or later) stored process in the chain generates the desired output. This paper describes and shows several examples similar to those presented in the SAS® Press book SAS Server Pages: Generating Dynamic Content (http://support.sas.com/publishing/authors/extras/64993b.html) and on the author s blog Jurassic SAS in the BI/EBI World (http://hcsbi.blogspot.com/).
Don Henderson, Henderson Consulting Services
Paper SAS329-2014:
Parallel Data Preparation with the DS2 Programming Language
A time-consuming part of statistical analysis is building an analytic data set for statistical procedures. Whether it is recoding input values, transforming variables, or combining data from multiple data sources, the work to create an analytic data set can take time. 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 SMP and MPP machines. Come see how DS2 makes your job easier.
Greg Otto, Teradata Corporation
Robert Ray, SAS
Jason Secosky, SAS
Paper 1766-2014:
Parameter Estimation of Cognitive Attributes Using the Crossed Random-Effects Linear Logistic Test Model with PROC GLIMMIX
The linear logistic test model (LLTM) that incorporates the cognitive task characteristics into the Rasch model has been widely used for various purposes in educational contexts. However, the LLTM model assumes that the variance of item difficulties is completely accounted for by cognitive attributes. To overcome the disadvantages of the LLTM, Janssen and colleagues (2004) proposed the crossed random-effects (CRE) LLTM by adding the error term on item difficulty. This study examines the accuracy and precision of the CRE-LLTM in terms of parameter estimation for cognitive attributes. The effect of different factors (for example, sample size, population distributions, sparse or dense matrices, and test length), is examined. PROC GLIMMIX was used to do the analysis and SAS/IML® software was used to generate data.
Chunhua Cao, University of South Florida
Yi-hsin Chen, University of South Florida
Isaac Li, USF
Yan Wang, University of South Florida
Paper 1859-2014:
Prediction of the Rise in Sea Level by the Memory-Based Reasoning Model Using SAS® Enterprise Miner 12.1
An increase in sea levels is a potential problem that is affecting the human race and marine ecosystem. Many models are being developed to find out the factors that are responsible for it. In this research, the Memory-Based Reasoning model looks more effective than most other models. This is because this model takes the previous solutions and predicts the solutions for forthcoming cases. The data was collected from NASA. The data contains 1,072 observations and 10 variables such as emissions of carbon dioxide, temperature, and other contributing factors like electric power consumption, total number of industries established, and so on. Results of Memory-Based Reasoning models like RD tree, scan tree, neural networks, decision tree, and logistic regression are compared. Fit statistics, such as misclassification rate and average squared error are used to evaluate the model performance. This analysis is used to predict the rise in sea levels in the near future and to take the necessary actions to protect the environment from global warming and natural disasters.
Prasanna K S Sailaja Bhamidi, Oklahoma State University
Goutam Chakraborty, Oklahoma State University
Paper 2036-2014:
Programmatic Challenges of Dose Tapering Using SAS®
In a good clinical study, statisticians and various stakeholders are interested in assessing and isolating the effect of non-study drugs. One common practice in clinical trials is that clinical investigators follow the protocol to taper certain concomitant medications in an attempt to prevent or resolve adverse reactions and/or to minimize the number of subject withdrawals due to lack of efficacy or adverse event. To assess the impact of those tapering medicines during study is of high interest to clinical scientists and the study statistician. This paper presents the challenges and caveats of assessing the impact of tapering a certain type of concomitant medications using SAS® 9.3 based on a hypothetical case. The paper also presents the advantages of visual graphs in facilitating communications between clinical scientists and the study statistician.
Iuliana Barbalau, Santen Inc.
Chen Shi, Santen Inc
Yang Yang, Santen Inc.
Q
Paper 1459-2014:
Quick Hits: My Favorite SAS® Tricks
Are you time-poor and code-heavy? It's easy to get into a rut with your SAS® code, and it can be time-consuming to spend your time learning and implementing improved techniques. This presentation is designed to share quick improvements that take five minutes to learn and about the same time to implement. The quick hits are applicable across versions of SAS and require only Base SAS® knowledge. Included topics are: simple macro tricks little-known functions that get rid of messy coding dynamic conditional logic data summarization tips to reduce data and processing testing and space utilization tips. This presentation has proven valuable to beginner through experienced SAS users.
Marje Fecht, Prowerk Consulting
R
Paper 1401-2014:
Reading In Data Directly from Microsoft Word Questionnaire Forms
If someone comes to you with hundreds of questionnaire forms in Microsoft Word file format and asks you to extract the data from the forms into a SAS® data set, you might have several ways to handle this. However, as a SAS programmer, the shortcut is to write a SAS program to read the data directly from Word files into a SAS data set. This paper shows how it can be done with simple SAS programming skills, such as using FILENAME with the PIPE option, DDE, function call EXECUTE( ), and so on.
Sijian Zhang, VA Pittsburgh Healthcare System
Paper SAS264-2014:
Reading and Writing ZIP Files with SAS®
The ZIP access method is new with SAS® 9.4. This paper provides several examples of reading from and writing to ZIP files using this access method, including the use of the DATA step directory management macros and the new MEMVAR= option.
Rick Langston, SAS
S
Paper SAS153-2014:
SAS® Format Optimization: SAS_PUT or UNPUT (Who's On First?)
Changes in default behavior in the last few SAS® releases have enabled faster processing of SAS formats, especially for SAS/ACCESS® customers. But, as with any performance enhancement, your results may vary. This presentation teaches you: the differences between two important SAS format optimizations how to tell which optimization is in effect a simple method to get the behavior you want The target audience for this presentation is SAS/ACCESS customers, particularly those who have also licensed SAS® In-Database Code Accelerator for Teradata or SAS® In-Database Code Accelerator for Greenplum.
David Wiehle, SAS
Paper 1724-2014:
SAS® Macros 101
You've been coding in Base SAS® for a while. You've seen it, maybe even run code written by someone else, but there is something about the SAS® Macro Language that is preventing you from fully embracing it. Could it be that % sign that appears everywhere, that &, that &&, or even that dreaded &&&? Fear no more. This short presentation will make everything clearer and encourage you to start coding your own SAS macros.
Alex Chaplin, Bank of America
Paper SAS1585-2014:
SAS® Retail Road Map
This presentation provides users with an update on retail solution releases that have occurred in the past year and a roadmap for moving forward.
Saurabh Gupta, SAS
Paper 1282-2014:
SAS® XML Programming Techniques
Due to XML's growing role in data interchange, it is increasingly important for SAS® programmers to become proficient with SAS technologies and techniques for creating and consuming XML. The current work expands on a SAS® Global Forum 2013 presentation that dealt with these topics providing additional examples of using XML maps to read and write XML files and using the Output Delivery System (ODS) to create custom tagsets for generating XML.
Chris Schacherer, Clinical Data Management Systems, LLC
Paper 1631-2014:
SAS® as a Code Manipulation Language: An Example of Writing a Music Exercise Book with Lilypond and SAS.
Using Lilypond typesetting software, you can write publication-grade music scores. The input for Lilypond is a text file that can be written once and then transferred to SAS® for patterned repetition, so that you can cycle through patterns that occur in music. The author plays a sequence of notes and then writes this into Lilypond code. The sequence starts in the key of C with only a two-note sequence. Then the sequence is extended to three-, four-, then five-note sequences, always contained in one octave. SAS is then used to write the same code for all other eleven keys and in seven scale modes. The method is very simple and not advanced programming. Lookup files are used in the programming, demonstrating efficient lookup techniques. The result is a lengthy book or exercise for practicing music in a PDF file, and a sound source file in midi format is created that you can hear. This method shows how various programming languages can be used to write other programming languages.
Peter Timusk, Statistics Canada
Paper SAS388-2014:
Sailing Over the ACROSS Hurdle in PROC REPORT
To get the full benefit from PROC REPORT, the savvy programmer needs to master ACROSS usage and the COMPUTE block. Timing issues with PROC REPORT and ABSOLUTE column references can unlock the power of PROC REPORT. This presentation shows how to make the most of ACROSS usage with PROC REPORT. Use PROC REPORT instead of multiple TRANSPOSE steps. Find out how to use character variables with ACROSS. Learn how to impact the column headings for ACROSS usage items. Learn how to use aliases. Find out how to perform rowwise trafficlighting and trafficlighting based on multiple conditions.
Cynthia Zender, SAS
Paper 1689-2014:
Simple ODS Tips to Get RWI (Really Wonderful Information)
SAS® continues to expand and improve its reporting capability. With new SAS® 9.4 enhancements in ODS (Output Delivery System), the opportunity to create stunning reports has expanded even further. If you are charged with creating relevant, informative, easy-to-read reports for clients or administrators, then the ODS Report Writing Interface, ODS LAYOUT enhancements, and the new ODSTEXT procedure are important tools to use. These tools allow you to create reports in a smart, eye-catching format that can be turned around quite quickly and programmed to provide optimum flexibility. How many times have you worked hours to tweak and fine-tune a report directly in Microsoft Excel, Microsoft Word, Microsoft Power Point or some other similar software only to be asked for a quick update , which would then take hours to recreate because you are manually transferring data? Do you ever dread receiving the compliment, This is really wonderful information!!!! because you know it will be followed by Can you run this for EVERY region? Well, dread no more, because when you harness the power of SAS® ODS, you can create first-rate, flexible, fabulous reports! Join me as I share with you two real-world examples of ODS capabilities using (1) a marketing piece I designed to help the president of our university spotlight county- and region-specific data as he recruited across the state and (2) our academic program review form, a multi-page report that outputs to Word so that program coordinators can add personalized commentary to support their program s effectiveness.
Gina Huff, Western Kentucky University
Paper 1610-2014:
Something for Nothing! Converting Plots from SAS/GRAPH® to ODS Graphics
All the documentation about the creation of graphs with SAS® software states that ODS Graphics is not intended to replace SAS/GRAPH®. However, ODS Graphics is included in the Base SAS® license from SAS® 9.3, but SAS/GRAPH still requires an additional component license, so there is definitely a financial incentive to convert to ODS Graphics. This paper gives examples that can be used to replace commonly created SAS/GRAPH plots, and highlights the small number of plots that are still very difficult, or impossible, to create in ODS Graphics.
Philip Holland, Holland Numerics Ltd
T
Paper SAS033-2014:
Techniques in processing data on Hadoop
Before you can analyze your big data, you need to prepare the data for analysis. This paper discusses capabilities and techniques for using the power of SAS® to prepare big data for analytics. It focuses on how a SAS user can write code that will run in a Hadoop cluster and take advantage of the massive parallel processing power of Hadoop.
Donna De Capite, SAS
Paper 1269-2014:
The Many Ways of Creating Dashboards Using SAS®
For decades, SAS® has been the cornerstone of many organizations for business reporting. In more recent times, the ability to quickly determine the performance of an organization through the use of dashboards has become a requirement. Different ways of providing dashboard capabilities are discussed in this paper: using out-of-the-box solutions such as SAS® Visual Analytics and SAS® BI Dashboard, through to alternative solutions using SAS® Stored Processes, batch processes, and SAS® Integration Technologies. Extending the available indicators is also discussed, using Graph Template Language and KPI indicators provided with Base SAS®, as well as alternatives such as Google Charts and Flash objects. Real-world field experience, problem areas, solutions, and tips are shared, along with live examples of some of the different methods.
Mark Bodt, The Knowledge Warehouse (Knoware)
Paper 1482-2014:
The SAS® Hash Object: It's Time to .find() Your Way Around
This is the way I have always done it and it works fine for me. Have you heard yourself or others say this when someone suggests a new technique to help solve a problem? Most of us have a set of tricks and techniques from which we draw when starting a new project. Over time we might overlook newer techniques because our old toolkit works just fine. Sometimes we actively avoid new techniques because our initial foray leaves us daunted by the steep learning curve to mastery. For me, the PRX functions and the SAS® hash object fell into this category. In this workshop, we address possible objections to learning to use the SAS hash object. We start with the fundamentals of setting up the hash object and work through a variety of practical examples to help you master this powerful technique.
Peter Eberhardt, Fernwood Consulting Group Inc.
Paper SAS101-2014:
The Traveling Baseball Fan Problem and the OPTMODEL Procedure
In the traveling salesman problem, a salesman must minimize travel distance while visiting each of a given set of cities exactly once. This paper uses the SAS/OR® OPTMODEL procedure to formulate and solve the traveling baseball fan problem, which complicates the traveling salesman problem by incorporating scheduling constraints: a baseball fan must visit each of the 30 Major League ballparks exactly once, and each visit must include watching a scheduled Major League game. The objective is to minimize the time between the start of the first attended game and the end of the last attended game. One natural integer programming formulation involves a binary decision variable for each scheduled game, indicating whether the fan attends. But a reformulation as a side-constrained network flow problem yields much better solver performance.
Tonya Chapman, SAS
Matt Galati, SAS
Rob Pratt, SAS
Paper SAS379-2014:
Three Different Ways to Import JSON from the Facebook Graph API
HTML5 has become the de facto standard for web applications. As a result, the lingua franca object notation of the web services that the web applications call has switched from XML to JSON. JSON is remarkably easy to parse in JavaScript, but so far SAS doesn't have any native JSON parsers. The Facebook Graph API dropped XML support a few years ago. 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. We'll extract the data from the Facebook Graph API and import it into an OLAP data mart to report and analyze a marketing campaign's effectiveness.
Philihp Busby, SAS
Paper SAS331-2014:
Tips and Tricks to Using SAS® Enterprise Guide® in a BI World
No need to fret, Base SAS® programmers. Converting to SAS® Enterprise Guide® is a breeze, and it provides so many advantages. Coding remote connections to SAS® servers is a thing of the past. Generate WYSIWYG prompts to increase the usage of the SAS code and to create reports and SAS® Stored Processes to share easily with people who don t use SAS Enterprise Guide. The first and most important thing, however, is to change the default options and preferences to tame SAS Enterprise Guide, making it behave similar to your Base SAS ways. I cover all of these topics and provide demos along the way.
Angela Hall, SAS
Paper SAS330-2014:
Toe to Toe: Comparing ODS LAYOUT and the ODS Report Writing Interface
Two new production features offered in the Output Delivery System (ODS) in SAS® 9.4 are ODS LAYOUT and the ODS Report Writing Interface. This one-two punch gives you power and flexibility in structuring your SAS® output. What are the strengths for each? How do they differ? How do they interact? This paper highlights the similarities and differences between the two and illustrates the advantages of using them together. Why go twelve rounds? Make your report a knockout with ODS LAYOUT and the Report Writing Interface.
Allison Crutchfield, SAS
Daniel Kummer, SAS
Paper 1640-2014:
Tools of the SAS® Trade: A Centralized Macro-Based Reporting System
This paper introduces basic-to-advanced strategies and syntax, the tools of the SAS® trade, that enable client-quality PDF output to be delivered through a production system of macro programs. A variety of PROC REPORT output with proven client value serves to illustrate a discussion of the fundamental syntax used to create and share formats, macro programs, PROC REPORT output, inline styles, and style templates. The syntax is integrated into basic macro programs that demonstrate the the core functionality of the reporting system. Later sections of the paper describe in detail the macro programs used to start and end a PDF: (a) programs to save all current titles, footnotes, and option settings, establish standard titles, footnotes and option settings, and initially create the PDF document; and (b) programs to create a final standard data documentation page, end the PDF, and restore all original titles, footnotes, and option settings. The paper also shows how macro programs enable the setting of inline styles at the global, macro program, and macro program call-levels. The paper includes the style template syntax and the complete PROC REPORT syntax generated by the macro programs, and is designed for the intermediate to advanced SAS programmer using Foundation SAS® for Release 9.2 on a Windows operating system.
Patrick Thornton, SRI International
Paper SAS027-2014:
Top Seven Techniques for Creating SAS® Web Applications
Do you often create SAS® web applications? Do you need to update or retrieve values from a SAS data set and display them in a browser? Do you need to show the results of a SAS® Stored Process in a browser? Are you finding it difficult to figure out how to pass parameters from a web page to a SAS Stored Process? If you answered yes to any of these questions, then look no further. Techniques shown in this paper include: How to take advantage of JavaScript and minimize PUT statements. How to call a SAS Stored Process from your web page by using JavaScript and XMLHTTPRequest. How to pass parameters from a web page to a SAS Stored Process and from a SAS Stored Process back to the web page. How to use simple Ajax to refresh and update a specific part of a web page without the need to reload the entire page. How to apply Cascading Style Sheets (CSS) on your web page. How to use some of the latest HTML5 features, like drag and drop. How to display run-time graphs in your web page by using STATGRAPH and PROC SGRENDER. This paper contains sample code that demonstrates each of the techniques.
Yogendra Joshi, SAS
Paper 1598-2014:
Turn Your SAS® Macros into Microsoft Excel Functions with the SAS® Integrated Object Model and ADO
As SAS® professionals, we often wish our clients would make more use of the many excellent SAS tools at their disposal. However, it remains an indisputable fact that for many business users, Microsoft Excel is still their go-to application when it comes to carrying out any form of data analysis. There have been many attempts to integrate SAS and Excel, but none of these has up to now been entirely seamless. This paper addresses that problem by showing how, with a minimum of VBA (Visual Basic for Applications) code and by using the SAS Integrated Object Model (IOM) together with Microsoft s ActiveX Data Objects (ADO), we can create an Excel User Defined Function (UDF) that can accept parameters, carry out all data manipulations in SAS, and return the result to the spreadsheet in a way that is completely invisible to the user. They can nest or link these functions together just as if they were native Excel functions. We then go on to demonstrate how, using the same techniques, we can create small Excel applications that can perform sophisticated data analyses in SAS while not forcing users out of their Excel comfort zones.
Chris Brooks, Melrose Analytics Ltd
U
Paper 1245-2014:
Uncover the Most Common SAS® Stored Process Errors
You don't have to be with the CIA to discover why your SAS® stored process is producing clandestine results. In this talk, you will learn how to use prompts to get the results you want, work with the metadata to ensure correct results, and even pick up simple coding tricks to improve performance. You will walk away with a new decoder ring that allows you to discover the secrets of the SAS logs!
Tricia Aanderud, And Data Inc
Angela Hall, SAS
Paper SAS096-2014:
Up Your Game with Graph Template Language Layouts
You have built the simple bar chart and mastered the art of layering multiple plot statements to create complex graphs like the Survival Plot using the SGPLOT procedure. You know all about how to use plot statements creatively to get what you need and how to customize the axes to achieve the look and feel you want. Now it s time to up your game and step into the realm of the Graphics Wizard. Behold the magical powers of Graph Template Language Layouts! Here you will learn the esoteric art of creating complex multi-cell graphs using LAYOUT LATTICE. This is the incantation that gives you the power to build complex, multi-cell graphs like the Forest plot, Stock plots with multiple indicators like MACD and Stochastics, Adverse Events by Relative Risk graphs, and more. If you ever wondered how the Diagnostics panel in the REG procedure was built, this paper is for you. Be warned, this is not the realm for the faint of heart!
Sanjay Matange, SAS
Paper SAS258-2014:
Useful Tips When Deploying SAS® Code in a Production Environment
When deploying SAS® code into a production environment, a programmer should ensure that the code satisfies the following key criteria: The code runs without errors. The code performs operations consistent with the agreed upon business logic. The code is not dependent on manual human intervention. The code performs necessary checks in order to provide sufficient quality control of the deployment process. Base SAS® programming offers a wide range of techniques to support the last two aforementioned criteria. This presentation demonstrates the use of SAS® macro variables in combination with simple macro programs to perform a number of routine automated tasks that are often part of the production-ready code. Some of the examples to be demonstrated include the following topics: How to check that required key parameters for a successful program run are populated in the parameters file. How to automatically copy the content of the permanent folder to the newly created backup folder. How to automatically update the log file with new run information. How to check whether a data set already exists in the library.
Elena Shtern, SAS
Paper SAS013-2014:
Using Base SAS® to Extend the SAS® System
This session demonstrates how to use Base SAS® tools to add functional, reusable extensions to the SAS® system. Learn how to do the following: Write user-defined macro functions that can be used inline with any other SAS code. Use PROC FCMP to write and store user-defined functions that can be used in other SAS programs. Write DS2 user-defined methods and store them in packages for easy reuse in subsequent DS2 programs.
Mark Jordan, SAS
Paper 1481-2014:
Using SAS® Stored Processes To Build a Calibration Tool
In the past, calibration was done by using extremely complicated macros in Base SAS® to create a Microsoft Excel workbook with multiple linked spreadsheets. This process made it hard to audit, was not reliably replicable, and was open to user error. The task was to create a replicable, auditable, and locked down application that allowed the user to change certain parameters and see the impact of those changes without needing to code. SAS® Stored Processes are used to generate a screen that is split into three sections: one shows static reporting, the second is a data-driven custom input form, and the third shows test results. The initial screen uses a standard stored process that enables the user to select the model and time period. Macro variables are passed through to subset data. The Static reports are created from a stored process that executes two REPORT procedures that subset the data based on the passed parameters. The form is built using SAS® to generate HTML and is data driven. The Update button at the end of the form executes a stored process that collects the data that the user has entered into the form and updates a database. After the rates have been updated, they are used to generate test results using PROC REPORT.
Anita Measey, Bank of Montreal
W
Paper SAS1584-2014:
What's New in SAS® Merchandise Planning
SAS® Merchandise Planning introduces key changes with the recent 6.4 release and the upcoming 6.5 release. This session highlights the integration to SAS® Visual Analytics, the analytic infrastructure that enables users to integrate analytic results into their planning decisions, as well as multiple usability enhancements. Included is a look at the first of the packaged analytics that include the Recommended Assortment analytic.
Elaine Markey, SAS
Paper 1341-2014:
Where in the World Are SAS/GRAPH® Maps? An Exploration of the Old and New SAS® Mapping Capacities
SAS® has an amazing arsenal of tools to use and display geographic information that is relatively unknown and underutilized. This presentation will highlight both new and existing capacities for creating stunning, informative maps as well as using geographic data in other ways. SAS provided map data files, functions, format libraries and other geographic data files will be explored in detail. Custom mapping of geographic areas will be discussed. Maps produced will include use of both the annotate facility (including some new functions) and PROC GREPLAY. Products used are Base SAS® and SAS/GRAPH®. SAS programmers of any skill level will benefit from this presentation.
Louise Hadden, Abt Associates Inc.
back to top