WUSS will once again be offering a full menu of optional pre- and post-conference training classes on a variety of topics taught by seasoned experts. Classes are not included in conference registration and must be added separately.
Through the regular registration deadline, your first half-day class is just $200 and each additional half-day class is only $150, so bundle multiple classes for the best value. (All classes are $250 during late registration.)
Don’t miss this chance to maximize your experience at WUSS 2024!
Course Descriptions

Share Your Code with SAS Packages – Tutorial from Zero to Hero
Bart Jablonski
Tuesday, September 3, 2024
8:00 AM – 12:00 PM PDT
When working with SAS code, especially when it becomes more and more complex, there is a point in time when a developer decides to break it into small pieces. The developer creates separate files for macros, formats/informats, and for functions or data, too. Eventually the code is ready and tested and sooner or later, you will want to share code with another SAS programmer. Maybe a friend has written a bunch of cool macros that will help you get your work done faster. Or maybe you have written a pack of functions that would be useful to your friend. There is a chance you have developed a program using local PC SAS, and you want to deploy it to a server, perhaps with a different OS. If your code is complex (with dependencies such as multiple macros, formats, datasets, etc.), it can be difficult to share. Often when you try to share code, the receiver will quickly encounter an error because of a missing helper macro, missing format, or whatever… Small challenge, isn’t it? How nice it would be to have it all (i.e. the code and its structure) wrapped up in a single file – a SAS package – which could be copied and deployed, independent from OS, with a one-liner like: %loadPackage(MyPackage).

PROC SQL Programming Masterclass Using SAS
Kirk Paul Lafler
Tuesday, September 3, 2024
8:00 AM – 12:00 PM PDT
PROC SQL Programming Masterclass Using SAS provides attendees with core concepts, features, and coding techniques on how to effectively use PROC SQL. Attendees learn how to use PROC SQL to access and retrieve data in SAS datasets (tables); essential programming tasks including specifying SELECT statement clauses (i.e., FROM, INTO, WHERE, ON, GROUP BY, HAVING, ORDER BY); execution order of the SELECT clauses; subsetting data with WHERE, ON and HAVING, ordering data and results with ORDER BY, and grouping data with GROUP BY and HAVING; constructing logic scenarios using case expressions; exploring one-to-one, one-to-many, and many-to-many data relationships; creating inner and outer join constructs (i.e., inner and outer – left, right, and full) as well as the application of set operators to combine two or more tables together; using summary (statistical) functions to aggregate data; creating new tables using three different approaches; interfacing PROC SQL and the macro facility to create single-value (aggregate) and multi-value (list) macro variables; the strategies and techniques related to the design and implementation of simple and composite indexes; and using iterative programming constructs and processes with PROC SQL and the Macro language to dynamically create data-driven programs; the application of query debugging techniques to help detect coding errors, warnings, and other issues; and the application of efficient SQL queries (scaling) for improved performance.

Get Your Report to Excel, PDF, or the Web
LeRoy Bessler
Tuesday, September 3, 2024
8:00 AM – 12:00 PM PDT
Let your program get to those destinations. The SAS Output Delivery System (ODS) supports a variety of output formats, also called “output destinations” in the documentation. Three of them are the ones where most programmers and the viewers of their output go. They are the formats that recipients and seekers of information most frequently encounter and find useful. SAS ODS Excel output lets your recipient reformat the data however desired, or do post-delivery analysis. Excel probably holds most of the world’s data. One of my consulting clients had a corporate standard of requiring all SAS reporting output be delivered in Excel. ODS Excel permits you to programmatically customize your deliverable, rather than do it manually after export. SAS ODS PDF presents a finished, edit-proof package (or, at least, not editable without special software). SAS ODS HTML5 gives the recipient data tips or mouseover text for graphics, and allows you to interlink report content components, or provide links to anywhere you want to be linkable. When plot points are too dense for annotation or axis tables, data tips are the only recourse to give the viewer correct and certain knowledge. HTML5 is the latest and best version of HTML. All three destinations support hyperlinks, and outputs in any of the formats can link to related output in another of the formats. Learn how to take advantage of these SAS-provided reporting conveniences and courtesies for the recipients of your work product, whether tabular or graphic or text. The only prerequisite is familiarity with SAS basics.

Create Charts and Plots That Are Quickly, Easily Understood
LeRoy Bessler
Tuesday, September 3, 2024
1:00 PM – 5:00 PM PDT
Learn best ways to get beyond the defaults, for wise design with SAS ODS Graphics, THE Graphics SuperPower Tool. Not just How To, but What To. ODS Graphics comes with SAS at no added charge. Put its super value to work for your company, your client, or yourself. No prior experience is needed for this course. Visuals are for quick easy inference, but precise numbers are needed for correct reliable inference. Learn all the ways to deliver precise numbers. Free the viewer from estimating where bar end or plot point lands on the axis (axes). Provide certainty, not guesses. That’s only one of the key design principles. Color misuse is a common obstacle to visual communication. Learn how my graphic and color design principles are implemented with widely applicable examples. Learn from what I learned, discovered, and invented over 44 years of effort to get the best out of SAS graphics. See Time Series Plots and Trend Lines, simple or overlaid, including use of uncommon, but powerful, design concepts, for when the familiar and customary is not enough. Categorical Data has so many ways to show itself, and with designs to make it show itself better. For One Categorical Variable: Bar Chart; Dot Plot as horizontal bar chart alternative; Needle Plot as vertical bar chart alternative; Pie Chart, and Donut Chart as a hole-in-the-middle alternative; Text Chart as a surprising but equally communication-effective bar chart alternative. For Two Categorical Variables: Stacked, Clustered, or Overlaid versions of bar charts, dot plots, and needle plots; Butterfly Chart, the bi-directional horizontal bar chart for when the second categorical variable has only two values; Line Chart as on-image second categorical variable companion to a bar chart; Bubble Plot; Heat Map with a Discrete Legend or an Actually USABLE Gradient Legend. ODS Graphics lets you package composites of different graphic views of the same data, or similar graphic views of related data, using PROC SGPANEL, PROC SGSCATTER, or ODS LAYOUT. This is a course for which there is no substitute. It can take you from no experience to proficient at creating charts and plots for quick easy understanding—instant, immediate, unambiguous communication. Resources will be suggested where the student can find additional and more advanced possibilities and capabilities than can be covered in the half-day course.

Modern Practices in Causal Inference
Jim Blum
Tuesday, September 3, 2024
1:00 PM – 5:00 PM PDT
This course gives an introduction to best practices for causal inference in a variety of scenarios, including perspectives from human health/epidemiology, social sciences, and econometrics. We start with foundational concepts including counterfactual outcomes, exchangeability, and positivity, and contrast these in the realms of designed experiments versus observational data. This leads to a look at common pitfalls when attempting causal inference from non-experimental data, including several forms of confounding and bias. Finally, the bulk of the course applies current methodology from statistics and machine learning for making appropriate causal inferences to real, observational data sets.

SAS Arrays: Fundamentals and Applications
Paul Dorfman, Don Henderson
Wednesday, September 4, 2024
8:00 AM – 12:00 PM PDT
SAS arrays are powerful and versatile data structures, indispensable to any SAS programmer in many aspects. For instance, with respect to program organization, using arrays helps make your code better structured, less hard-coded, and thus more robust. SAS arrays are also essential if you need to implement your own algorithms. In particular, in the area of in-memory data search and retrieval, no other SAS facility offers greater benefits in terms of execution speed and efficiency. Last but not least, SAS arrays can make your program much terser and clearer by eliminating wallpaper code, the result being not only more aesthetical but cleaner and easier to inherit. This class is intended to offer the attendees a journey from the basics to advanced usage of SAS arrays in the hope that everyone from a novice to an array geek will learn something useful and interesting. The course comprises two parts: (1) Fundamentals and (2) Applications. The subtopics in part 1 part include: · Why SAS arrays? Propaedeutics by example. · Fundamental concepts: Arrays as indexed data structures. · A peek under the hood: How array items are accessed by the index behind-the-scenes. · Compile-time vs run-time, array declaration timing vs array reference. · Basic declaration syntax and naming conventions. · Array items: Data types and lengths. · Arrays indexes and ranges, dimensional functions. · Explicitly indexed arrays of PDV variables (“ordinary” arrays): ® Arrays indexing existing PDV variables. Special _numeric_ and _character_ arrays. ® Arrays creating new PDV variables and indexing them. · Implicitly indexed SAS arrays vs explicitly indexed arrays. · Multi-dimensional arrays, data type rules, dimensional functions. · Parallel arrays, using multidimensional arrays as parallel. · Temporary SAS arrays: Rules of reference. Temporary vs “ordinary” arrays. · Compile-time array initialization: syntax and rules. Cf. run-time initialization. Part II (Applications) covers various aspects of using SAS arrays for data management: · De-wallpaperizing SAS code: Using array indexation to implement in-loop statement repetition. · Compressing a data set by resizing its character variables. · Dynamic random sampling without replacement. · Implementing stacks and queues. · Using arrays for table lookup and data retrieval: ® Based on comparisons between keys (linear search, binary search and their variations). ® Based on direct addressing (ley-indexed search, hash search, bitmap search). · Using
array table lookup for subsetting and joining SAS data files. Discussion: SAS Arrays vs the SAS hash object.

Comparative Analysis: SAS Data Step vs. Python for Data Scientists Workshop
Charu Shankar
Wednesday, September 4, 2024
8:00 AM – 12:00 PM PDT
Python has emerged as a versatile tool with a rich ecosystem of libraries for data manipulation tasks. Attendees will adopt a dynamic, comparative approach, leveraging the Python programming language. Additionally, they will delve into Python’s rich ecosystem of libraries for data manipulation and examine powerful libraries such as Pandas, discovering how to perform similar data manipulation tasks using Python’s intuitive syntax and extensive library support. Through hands-on exercises, participants in the workshop will gain proficiency in leveraging Python’s capabilities for data management tasks, including data cleaning, preprocessing, and transformation. By providing a comprehensive comparative analysis, this workshop aims to inform data scientists and practitioners about the relative merits of the SAS Data Step and Python for data manipulation, empowering them to make informed decisions when selecting tools and methodologies for their data science projects.

Data Cleaning 101
Ron Cody
Wednesday, September 4, 2024
8:00 AM – 12:00 PM PDT
This half-day workshop discusses ways to look for data errors using both DATA step programming and Base SAS procedures. We start with programs and procedures to detect errors in character data. Functions such as NOTDIGIT and NOTALPHA are especially useful in this regard. For numeric data, we investigate methods for detecting data points outside of fixed ranges and continue on to develop programs for automatic outlier detection.
This workshop does much more than just showing you techniques for detecting and fixing data errors—it’s also aims to make you a better SAS programmer. Whether you are new to SAS programming or are a veteran programmer, you will take valuable programming tips and tricks away with you.
Although this course does not require you to know the SAS macro language, you will be taught how to run macros that perform a variety of data cleaning functions. For example, one macro, called AUTO_OUTLIERS, checks for possible data errors in numeric data, using a concept called “trimmed statistics.”

Dates, Times, and More!
Derek Morgan, Richann Watson
Wednesday, September 4, 2024
8:00 AM – 12:00 PM PDT
Dates and times are an important part of most SAS data sets. Understanding how dates and times are read and displayed in SAS can make the handling of the dates much easier. SAS has myriad functions and formats that can be used for SAS date and time handling. This class takes a deeper dive into some of the more powerful, yet lesser-known features of SAS date and time handling. Topics include functions, formats and informats that can be used for ISO 8601 standards, date intervals, and calculating differences between dates. In addition, the course illustrates how user-defined functions, formats, and even user-defined intervals can be created to meet your specific needs. Lastly, it shows how to use dates when producing graphs.

Translating a Report Template to PROC REPORT code
Jane Eslinger
Friday, September 6, 2024
1:00 PM – 5:00 PM PDT
Reports are an everyday fact of business. As a SAS programmer, you might be given a template or mock-up of a report that needs to be created from the data you are already working with. It can sometimes be hard to know where to begin in developing your code. In this seminar, we will investigate several examples of report templates that you might encounter. We’ll discuss coding strategies such as: creating hidden ordering variables; using dummy variables for section breaks and summary rows; manipulating report headers with ACROSS variables and spanning headers; generating page breaks; and applying style attributes and formats. With these strategies, we’ll break down a report into its individual pieces and translate that into PROC REPORT code.

Quick Start to Mixed Modeling
Danny Modlin
Friday, September 6, 2024
1:00 PM – 5:00 PM PDT
In this course, you learn to fit and interpret linear mixed models, and present the results, simply and meaningfully, to a nonstatistical audience. Emphasis is on a quick-start approach to learning the SAS programming techniques and interpreting results using PROC MIXED and GLIMMIX. Examples of mixed models will be shown including two-way mixed models, analysis of covariance with random effects, and repeated measures. We conclude with a look at PROC LMIXED in CAS for large, sparce matrices.

Cooking with the SAS Hash Object: From Basic Ingredients to Gourmet Entrées
Paul Dorfman, Don Henderson
Friday, September 6, 2024
1:00 PM – 5:00 PM PDT
Most programmers who use the SAS hash object, only use it to do table lookup. But it can do so much more! This class will be useful for both novice and experienced hash users who wish to more fully understand how the hash object works and what it can do for you. The first half of the course will address the basics and discuss some lesser-used but important and powerful features. The second half of the course will use an extended case study that demonstrates how using the hash object for data aggregation which can offer big savings in run time and memory footprint compared to other SAS techniques, but can also make certain tasks that were once unapproachable by other methods, now solvable.

Macro’s There For You – A “Zero to Hero” Introduction to Be Friends with SAS Macro Language
Bart Jablonski
Friday, September 6, 2024
1:00 PM – 5:00 PM PDT
“So no one told you SAS was gonna be this way Your code’s a joke, you’re broke Your 4GL’s DOA It’s like you’re always stuck in second gear Like it hasn’t been your SET, your MERGE, your LOG Or even your LIB, but %Macro’s there for you (When a loop starts to roll) %Macro’s there for you (And I’ve used them before) %Macro’s there for you (‘Cause they’re help for you too)” The power and speed of 4GL comes from two places. The first, 4GL is a compiled language, no more to add, period. The second, 4GL is static, i.e. all input and output datasets, variables lengths, arrays dimensions, etc. have to be provided upfront. If a data step reads data set A and produces data set B you cannot change it without rewriting the code. Moreover, you cannot react differently than with SAS Error, when A does not exist. So, being a professional SAS 4GL Programmer, without knowing macro language, indeed may feel like “being stuck in second gear”. Macro language introduces flexibility to the code. It allows us to dynamically react to data changes. It gives you the power to write programs that write programs. During the workshop we gradually go through the macro language fundamentals and how to use them: – We start from macro variables, their role in code. Also we learn about functions which operate on macro variables. – Next, we introduce some simple macro programs and discover how the macro processor thinks. – Then we take a look at the conditional logic (%if-%then-%else) and iterative processing (%do-loops). – Subsequently, we touch more advanced subjects, like interaction between 4GL layer and macro language layer with: call symputx(), symget(), or SQL’s INTO: clause. – Eventually we will try to reach out to the hardcore and understand macro quoting. The workshop assumes you have written at least a few DATA steps or PROC steps, but no prior macro language knowledge is required.













