There is a new version of this course. Please see SAS Macro Language 1: Essentials.
This course focuses on using the SAS macro facility to design, write, and debug macro programs, with an emphasis on understanding how programs that contain macro code are processed.
Learn how to
- Perform text substitution in SAS code.
- Use macro variables and macro functions.
- Automate and customize the production of SAS code.
- Conditionally or iteratively construct SAS code.
- Write self-modifying, data-driven programs.
Who should attend
Experienced SAS programmers familiar with simple SQL queries and well-versed in DATA step processing and who want to write reusable, dynamic programs and automate repetitive processing in SAS
Before attending this course, you should have knowledge equivalent to having completed the SAS Programming 1: Essentials and SAS Programming 2: Data Manipulation Techniques courses. Specifically, you should be able to do the following:
- Write simple SQL queries using the SELECT statement.
- Read from and write to SAS tables using a DATA step.
- Use DATA step programming statements including IF-THEN/ELSE, DO WHILE, DO UNTIL, and iterative DO.
- Use SAS data set options, including DROP=, KEEP=, and OBS=.
- Use character functions, including SUBSTR, SCAN, and UPCASE.
- Read subsets from tables using the WHERE statement.
- Create and use SAS date values and constants.
- Use Base SAS procedures such as SORT, PRINT, CONTENTS, MEANS, FREQ, and SGPLOT.
This course addresses Base SAS software.
This course is appropriate for students who are using SAS 9 software. Demonstrations and practices are based on SAS 9.4M6.
The SAS Macro Facility
- Why SAS macro?
- Setting up for this course.
Storing and Processing Text
- Program flow and tokenization.
- Creating and using macro variables.
Working with Macro Programs
- Macro functions.
- Working with special characters
- Using SQL to create macro variables.
- Using DATA step to create macro variables.
- Lookup tables and indirect referencing.
Advanced Macro Techniques
- Defining and calling a macro.
- Macro variable scope.
- Conditional processing.
- Iterative processing.
- Storing user-defined macros for reuse.
- User-defined macro functions.
- User-defined macro utilities.
- Data-driven macro calls.