Conference Tutorials

Conference Tutorials offer the bonus of additional educational experiences for SESUG Conference attendees. We have talented, recognized, and experienced instructors prepared to share their knowledge in these 4-hour sessions. The tutorials cover a wide variety of topics and skill levels, which appeal to everyone interested in exceptional in-depth training. Please note that tutorials are an extra fee event at SESUG.

SESUG 2023 is bring your own device for any tutorials and/or hands on workshops for which you want to follow along.

If you have any questions regarding a tutorial, please contact our Tutorial Coordinators, Richann Watson and Louise Hadden, at e-mail .

Sunday, 10/22/2023 8:00am - 12:00pm
Tutorial Title Instructor
Hands-On Functions: How to Build Your Own User-Defined FCMP Functions and Macro Functions Troy Martin Hughes
Getting More Out of ODS Graphics Procedures James Blum
Essential SAS® DATA Step Merge and PROC SQL Join Techniques Kirk Paul Lafler
CDISC ADaM – Principles, Rules and Complex Examples Richann Watson

Sunday, 10/22/2023 1:00pm - 5:00pm
Tutorial Title Instructor
Working with Administrative Healthcare data sets using BASE SAS programmings Jay Iyengar
Professional Reporting: Beyond the Basics of PROC REPORT Jonathon Duggins
Logistic Modeling with Applications Bruce Lund
Functions, Functions and more Functions Ben Cochran

Tutorial Details

Title: Hands-On Functions: How to Build Your Own User-Defined FCMP Functions and Macro Functions

Scheduled Time: Sunday, October 22nd, 8:00 am - 12:00 pm
Instructor: Troy Martin Hughes

Abstract: Attend and receive a FREE copy of the author’s 550-page book, SAS® Data-Driven Development: From Abstract Design to Dynamic Functionality, Second Edition, released in 2022! “User-defined” functions represent those functions that are created by SAS users, as contrasted with "built-in" functions, which are part of the out-of-the-box Base SAS module and the SAS language. SAS provides two methods to build user-defined functions, including the SAS macro language and the SAS Function Compiler (aka PROC FCMP). This introductory course demonstrates how to build user-defined functions (and subroutines)—including both macro functions and FCMP functions. No prior experience with the SAS macro language or PROC FCMP syntax is required. User-defined functions improve software reusability—that is, the ability of code modules to be reused in future software projects, and to be reused by multiple SAS practitioners within a team or organization. This code reuse enables a function to be developed once but used repeatedly, which reduces the workload of the SAS practitioners who are writing programs, by enabling us to rely on previously built (and fully tested) code modules. Thus, user-defined functions lead to not only more flexible and configurable software but also a more productive, efficient SAS team. This HANDS-ON workshop enables students to run all programs in real-time using SAS Display Manager, SAS Enterprise Guide, or SAS OnDemand for Academics. SESUG will not be providing laptops. Please bring your own device. Macro function topics include:

  • Gentle introduction to the SAS macro language, including differentiation between SAS macros and SAS macro functions
  • Differentiation between positional and keyword parameters
  • Defining optional parameters and default parameter values
  • Passing macro lists and two-dimensional data structures to functions
  • Use of the PARMBUFF option in the %MACRO statement to facilitate multi-element arguments
  • Macro function argument validation, exception handling, and use of global macro variables as return values / return codes
FCMP function topics include:
  • Gentle introduction to PROC FCMP syntax and the construction of user-defined functions and subroutines (with the FUNCTION and SUBROUTINE statements, respectively)
  • Use of the VARARGS option in the FUNCTION statement to enable multi-element arguments to be passed to functions, and OUTARGS option to modify multiple arguments (within a subroutine)
  • Passing character and/or numeric data types to functions
  • Passing arrays to functions, and utilizing arrays within functions
  • Declaring, initializing, and referencing hash objects within functions
  • Calling functions and subroutines from the DATA step, and from %SYSFUNC and %SYSCALL, respectively
  • Calling functions from PROC FORMAT

Instructor Bio: Troy Martin Hughes has been a SAS practitioner for more than 20 years, has managed SAS projects in support of federal, state, and local government initiatives, and is a SAS Certified Advanced Programmer, SAS Certified Base Programmer, SAS Certified Clinical Trials Programmer, and SAS Professional V8. He has given more than 100 presentations, trainings, and hands-on workshops at SAS conferences, including at SAS Global Forum, SAS Analytics Experience, WUSS, SCSUG, SESUG, MWSUG, PharmaSUG, BASAS, and BASUG. He has authored three groundbreaking books that model software design and development best practices:
  • PROC FCMP User-Defined Functions: An Introduction to the SAS® Function Compiler (2023)
  • SAS® Data-Driven Development: From Abstract Design to Dynamic Functionality, Second Edition (2022)
  • SAS® Data Analytic Development: Dimensions of Software Quality (2016)
Troy has an MBA in information systems management as well as other credentials, including: PMP, PMI-RMP, PMI-PBA, PMI-ACP, SSCP, CISSP, CSSLP, Network+, Security+, CySA+, CASP+, Cloud+, CISA, CGEIT, CISM, CRISC, ITIL Foundation, CSM, CSP-SM, CSD, A-CSD, CSP-D, CSPO, CSP-PO, CSP, and SAFe Government Practitioner (SGF). He is a US Navy veteran with two tours of duty in Afghanistan.


Title: Getting More Out of ODS Graphics Procedures

Scheduled Time: Sunday, October 22nd, 8:00 am - 12:00 pm
Instructor: James Blum

Abstract: This tutorial covers features for use in various graphs and charts constructed with PROC SGPLOT and SGPANEL. It begins with a review of common SGPLOT/SGPANEL plotting statements and options, along with graph styling statements and options. Overlays of graphs are covered, as are graphs that include grouping variables, with comparison and contrasting of these two methods, particularly with respect to ease of coding and how styles are applied. Special graphical elements including: axis tables, insets, reference lines, drop lines, data labels, and text plots are also covered. A brief review of annotations is given, primarily to show alternatives to standard SAS/GRAPH annotations using these special graphical elements. The lesson also concludes with attribute maps and their uses, and other topics as time permits. Basic familiarity with PROC SGPLOT is expected at the outset of this tutorial; and, at the end of the tutorial, you will have the skills necessary to produce a variety of professional quality graphics in a range of styles.

Instructor Bio: Jim Blum is a co-author of Fundamentals of Programming in SAS: A Case Studies Approach, published in 2019. Since August of 2000, he has been a Professor of Statistics at the University of North Carolina Wilmington where he has developed and taught original courses in SAS programming for the university. These courses cover topics in Base SAS, SAS/SQL, SAS/STAT, and SAS Macros. He also regularly teaches courses in regression, experimental design, categorical data analysis, and mathematical statistics; and he is a primary instructor in the Master of Data Science program at UNC Wilmington which debuted in the fall of 2017. He has experience as a consultant on data analysis projects in clinical trials, finance, public policy and government, and marine science and ecology, and is a member of the committee that designed the Clinical Trials Programming Using SAS 9.4 Certification Exam.. He earned his MS in Applied Mathematics and PhD in Statistics from Oklahoma State University.


Title: Essential SAS® DATA Step Merge and PROC SQL Join Techniques

Scheduled Time: Sunday, October 22nd, 8:00 am - 12:00 pm
Instructor: Kirk Paul Lafler

Abstract: A powerful and essential programming technique that all SAS users should be aware of, and comfortable performing, is the process of performing DATA step merges and PROC SQL joins on two or more datasets (or tables). This course describes and illustrates the different merge and join processes; the exploration of one-to-one and one-to-many data relationships; the importance of a primary key (or unique identifier); special preparation requirements for each dataset (or table) that is specified in a merge or join; the DATA step merge and PROC SQL join syntax; and the various types of merges and joins available to SAS users. To demonstrate the power of merge and join processing, inner and outer (i.e., left, right, full) merge and SQL join programming techniques will be presented along with essential merge and join concepts, syntax, and programming techniques.

Instructor Bio: Kirk Paul Lafler is an educator, developer, programmer, consultant, and data analyst; and works as an adjunct professor at San Diego State University; an advisor and adjunct professor at the University of California San Diego Extension; and an educator teaching SAS, SQL, Python, Excel, and cloud-based technology courses, workshops, and webinars to users around the world. Kirk has nearly 50 years of programming experience and specializes in SAS software, SQL, RDBMS technologies (Oracle, SQL-Server, Teradata, DB2), Python, and other languages and productivity tools. As an author, Kirk’s most recent books include Exploratory Data Analysis (EDA) By Example (PB&J Press. Summer 2023), Python ETL By Example (PB&J Press, Spring 2024), PROC SQL: Beyond the Basics Using SAS, Third Edition (SAS Press. 2019), and other books along with numerous papers and articles on a variety of SAS, SQL, and Python topics. Kirk is actively involved with international, regional, and local SAS, SQL, and Python user groups and conferences as an Invited speaker, educator, keynote, and section leader; and is the recipient of 27 “Best” contributed paper, hands-on workshop (HOW), and poster awards.


Title: CDISC ADaM – Principles, Rules and Complex Examples

Scheduled Time: Sunday, October 22nd, 8:00 am - 12:00 pm
Instructor: Richann Watson

Abstract: This course will provide a high-level overview of some of the basic ADaM concepts; however, it is assumed that the attendee will be familiar with the different ADaM structures and principles. The course will delve into what is meant by traceability and analysis ready as well as look at some rules and best practices. However, the primary focus is to illustrate the implementation of some of the more difficult or less common concepts found in both the ADaM Implementation Guide (ADaMIG) and the ADaM Structure for Occurrence Data (OCCDS) documents. The course includes an illustration of the use of criterion variables (CRITy and MCRITy) and record-level and parameter-level population flags (-RFL and -PFL), as well as a demonstration of how to set up time-to-event and questionnaire/rating/scales analysis data sets. In addition, it will go into depth about AEs of special interest and the use of Standard MedDRA Queries (SMQ) and provide an illustration of how the OCCDS can be used to handle the non-typical analysis for events data.

Instructor Bio: Richann Watson is an independent statistical programmer and CDISC consultant based in Ohio. She has been using SAS since 1996 with most of her experience being in the life sciences industry. She specializes in analyzing clinical trial data and implementing CDISC standards. Additionally, she is a member of the CDISC ADaM team and various sub-teams.

Richann loves to code and is an active participant and leader in the SAS User Group community. She has presented numerous papers, posters, and training seminars at SAS Global Forum, PharmaSUG, and various regional and local SAS user group meetings. Richann holds a bachelor’s degree in mathematics and computer science from Northern Kentucky University and master’s degree in statistics from Miami University.


Title: Working with Administrative Healthcare data sets using BASE SAS programming

Scheduled Time: Sunday, October 22nd, 1:00 pm - 5:00 pm
Instructor: Jay Iyengar

Abstract: The course is geared towards data analysts, programmer\analysts, and SAS programmers within the healthcare industry who need to understand the nuances and complexities of healthcare data structures to perform their responsibilities. This training seminar will give attendees an overview and detailed explanation of the different types of healthcare data, and the SAS programming constructs to work with them. This includes different types of healthcare claims data, such as facility claims, professional claims, pharmacy claims, and Medicare claims. In addition, attendees will receive a background and in-depth explanation of healthcare systems, and the U.S. Medicare System. The course features demonstrations using SAS to perform analytic and reporting tasks with healthcare data sets.

Instructor Bio: Jay Iyengar is Principal of Data Systems Consultants LLC. He is a SAS Consultant, Trainer, and SAS Certified Advanced Programmer. He was co-chair of the Chicago SAS Users Group, WCSUG from 2015-19. He’s presented papers at SAS Global Forum (SGF), Midwest SAS Users Group (MWSUG), Wisconsin Illinois SAS Users Group (WIILSU), Northeast SAS Users Group (NESUG), and Southeast SAS Users Group (SESUG) conferences. He has been using SAS since 1997. His industry experience includes Healthcare, Pharmaceutical, Public Health, Direct Marketing and Educational Testing.


Title: Professional Reporting: Beyond the Basics of PROC REPORT

Scheduled Time: Sunday, October 22nd, 1:00 pm - 5:00 pm
Instructor: Jonathon Duggins

Abstract: This tutorial covers various uses of PROC REPORT for producing professional reports -- an essential skill for SAS programmers regardless of industry. The tutorial begins with an overview of PROC REPORT, DEFINE usages, and an introduction to COMPUTE blocks. Techniques to customize appearance such as fonts and colors as well as techniques to affect the structure of the report, such as nesting, aliasing, including summary rows, and deriving new columns are covered next. Finally, advanced customizations such as drilldown reports and integrating images into a report are covered to round out this thorough introduction to generating high-quality reports. No experience with PROC REPORT is expected at the outset of this tutorial; however, by the end of the tutorial, participants will have the skills necessary to create a variety of professional reports.

Instructor Bio: Jonathan Duggins is an Associate Teaching Professor in the Department of Statistics at North Carolina State University. He has taught at multiple universities and has worked in industry as a biostatistician where he regularly handled and analyzed data with SAS. Jonathan has always been dedicated to education and that is his main role at NCSU where he teaches both face-to-face and distance education courses at undergraduate and graduate levels. The majority of his courses focus on statistical programming in SAS. More information and public course materials are available at


Title: Logistic Modeling with Applications

Scheduled Time: Sunday, October 22nd, 1:00 pm - 5:00 pm
Instructor: Bruce Lund

Abstract: PART1: Introduction / Review of Logistic Modeling. Preparation of Predictors and Logistic Modeling when using split-sampling (Train vs. Validation). Procedures include PROC LOGISTIC, HPLOGISTIC, and HPGENSELECT (for introduction to LASSO). Model validations are discussed with performance measures (c-statistics, ASE, others), Lift Charts, ROC charts.
PART2: Logistic Modeling without split-sample. The presentation includes regression splines and “optimism-correction” for validation of models without having a Validation dataset. Introduction to PROC SURVEYSELECT.
PART3: Applications of Logistic Models including Net Lift Modeling and Propensity Scoring for evaluation of causal effects in observational studies. Procedures include PROC PSMATCH, CAUSALTRT.

Instructor Bio: Bruce Lund is a statistical trainer using SAS®. For 16 years he was a manager and a consultant for OneMagnify of Detroit. Before OneMagnify, he was the customer database manager at Ford Motor Company and a mathematics professor at University of New Brunswick, Canada. At Ford and OneMagnify he developed numerous predictive models to support automotive marketing. Bruce has a mathematics PhD and a statistics MS from Stanford University. He has presented at SAS Global Forum, AnalyticsX, ASA CSP, and at regional SAS user group conferences. Recently, he has been invited to present at 2023 Iowa and Nebraska SAS Days.


Title: Functions, Functions and more Functions

Scheduled Time: Sunday, October 22nd, 1:00 pm - 5:00 pm
Instructor: Ben Cochran

Abstract: In Base SAS, there are over 500 functions available to the user. This in-depth tutorial looks at Using Functions to Manipulate Data, Using Functions to Clean data, Using Functions to Enhance Reports, and How to use Functions in the SAS Macro Facility. This course consists of lectures with ample time for hands on exercises. A comprehensive manual accompanies this tutorial.

Instructor Bio: After more than 11 years with SAS Institute in the Professional Services (as an Instructor) and Marketing Departments (as Marketing Manager for the SAS/EIS product), Ben Cochran left to start his own consulting and SAS Training business in the fall of 1996 – The Bedford Group.

As a Silver member of SAS Institute’s Alliance Partner Program, Ben has been involved in many consulting projects over the last 25 years and has been teaching SAS courses since 1985.

Ben has authored and presented dozens of papers at SUGI/SGF and regional user groups on a variety of topics since 1988.