Macro Magic III. SNUG Presentation (30mins)

Size: px
Start display at page:

Download "Macro Magic III. SNUG Presentation (30mins)"

Transcription

1 Macro Magic III SNUG Presentation (30mins)

2 Overview Macro Magic Posters have been displayed at the last 2 SUGA presentations. Continue the trend Hopefully everyone will learn something new

3 SAS Macro - Introduction Used to generate (often repeated or conditional) SAS code

4 SAS Macro - Introduction proc print data=db.yr2000 noobs; var month income expense; run; proc print data=db.yr2001 noobs; var month income expense; run;

5 SAS Macro - Introduction %macro myprint(dset); proc print data=&dset noobs; var month income expense; run; %mend; %myprint(db.yr2000) %myprint(db.yr2001)

6 SAS Macro - Introduction %macro myprint(dset); proc print data=&dset noobs; var month income expense; run; %mend; %myprint(db.yr2000) %myprint(db.yr2001)

7 SAS Macro - Introduction %macro myprint(dset); proc print data=&dset noobs; var month income expense; run; %mend; %myprint(db.yr2000) %myprint(db.yr2001)

8 SAS Macro - Introduction %macro myprint(dset); proc print data=&dset noobs; var month income expense; run; %mend; %myprint(db.yr2000) %myprint(db.yr2001)

9 SAS Macro - Introduction %macro myprint(dset); proc print data=db.yr2000 noobs; var month income expense; Executed Code run; %mend; %myprint(db.yr2000) %myprint(db.yr2001)

10 Error Checking Production SAS jobs should have error checking May need to run certain steps based on failure &syserr, &syslibrc, &sysfilrc, &syslckrc 0=success, +ve=error, -ve=warning %goto

11 Error Checking %macro update_db; libname db "Q:\Data\Files" access=readonly; %if &syslibrc ne 0 %then %goto err_lib; proc append base=db.invoices data=work.invoices; run; %if &syserr ne 0 %then %goto err_append; %goto finish;

12 Error Checking %err_lib: % _db("update_db: Library failure",admins); %goto finish; %err_append: % _db("update_db: Append failure",admins); %goto finish; %finish: %mend update_db;

13 Error Checking OPTIONS ERRORABEND; is a good alternative, although has less control. When an ERROR occurs, SAS will stop. Beware this will close down an interactive session unexpectedly!!!

14 Platform Checking &sysscp can be used to determine the platform Standard macro library for all platforms, with occasional conditional code %if &sysscp=win %then %do; %put &sysscp;

15 Platform Checking %macro myalloc(file); %if &sysscp=win %then %do; libname data "Q:\Data\&file" access=readonly; %end; %else %if &sysscp=os %then %do; libname data "PROD.Q.&file..DATA" disp=shr; %end; %mend myalloc;

16 Version of SAS Checking Some installations may have more than one version of SAS installed %if &sysver=8.2 %then %do;

17 Call Execute Call Execute enables you to execute code conditionally without macro CALL EXECUTE(arg); The argument is executed at the next step boundary

18 Call Execute

19 Call Execute %macro myprint(style); proc print data=sasuser.houses; title "Style of '&style'"; where style="&style"; run; %mend myprint;

20 Call Execute proc freq data=sasuser.houses noprint; run; table style / out=work.styles;

21 Call Execute proc freq data=sasuser.houses noprint; run; table style / out=work.styles; data _null_; set work.styles; call execute('%myprint('!!style!!');'); run;

22 Call Execute 67 data _null_; 68 set work.styles; 69 call execute('%myprint('!!style!!');'); 70 run; NOTE: There were 4 observations read from the data set... NOTE: CALL EXECUTE generated line. 1 + proc print data=sasuser.houses; title "Style of 'CONDO'"; where style="condo"; run;

23 Version 8 Enhancements %scan(argument,n<,delimiter>); Now allows negative indexes fullfile=d:\data\budget\2001.xls %let file=%scan(&fullfile,-1,\); file=2001.xls

24 Version 6 Goodies %sysfunc(function(arg(s))<,format>); Enables you to use standard SAS functions not normally available to SAS Macros. title "%sysfunc(date(),worddate.)"; title "July 24, 2002";

25 Version 6 Goodies %sysfunc(function(arg(s))<,format>); Enables you to use standard SAS functions not normally available to SAS Macros. %let date=%sysfunc(today()); title "%sysfunc(intnx(month,&date,0),date9.)"; title "01JUL2002";

26 Version 6 Goodies - %sysfunc %macro printds(dset); %if %sysfunc(exist(&dset))=1 %then %do; proc print data=&dset; run; %end; %else %put The data set &dset does not exist.; %mend printds;

27 Version 6 Goodies - %sysfunc SAS Functions Not Available with %SYSFUNC and %QSYSFUNC DIF DIM HBOUND IORCMSG INPUT LBOUND LAG MISSING PUT RESOLVE SYMGET All Variable Information Functions

28 Utility Macros Simple dataset locking without SAS/SHARE %lock_dataset %unlock_dataset

29 Utility Macros - Lock %macro lock_dataset(dsn); %global lock_dataset_rc; %let lock_dataset_rc = 0; %let _max_attempts = 10; %let _attempt = 0; %check_exists: %if %sysfunc(exist(&dsn)) ne 1 %then %goto missing_dsn; %lock_dataset: lock &dsn; %let rc = &syslckrc;

30 Utility Macros - Lock %if &rc ne 0 %then %goto try_again; %goto finish; %try_again: lock &dsn clear; %let _attempt = %eval(&_attempt + 1); %if &_attempt eq &_max_attempts %then %goto lock_error; %if &_attempt ne &_max_attempts %then %let rc = %sysfunc(sleep(1,1)); %goto lock_dataset;

31 Utility Macros - Lock %lock_error: %let lock_dataset_rc = 10; %goto finish; %missing_dsn: %let lock_dataset_rc = 20; %goto finish; %finish: %mend lock_dataset;

32 Utility Macros - Unlock %macro unlock_dataset(dsn); %global unlock_dataset_rc; %let unlock_dataset_rc = 0; %check_exists: %if %sysfunc(exist(&dsn)) ne 1 %then %goto missing_dsn; %unlock_dataset: lock &dsn clear; %let rc = &syslckrc; %if &rc ne 0 %then %goto unlock_error; %goto finish;

33 Utility Macros - Unlock %unlock_error: %let unlock_dataset_rc = 10; %goto finish; %missing_dsn: %let unlock_dataset_rc = 20; %goto finish; %finish: %mend unlock_dataset;

34 Macro Comments Don't forget to comment your code with: /* Standard comment type 1 */ * Standard comment type 2 ; %* Macro comments look like this ;

35 Conclusion The SAS Macro Language is a powerful tool for use with the SAS programming language Hopefully the techniques presented will be helpful in your own application development

36 References SAS OnlineDoc BASE SAS; SAS Macro Language Reference SAS Institute Training SAS Macro Language (2 Day) Advanced SAS Macro Programming (2 Day)

37 Macro Magic III Presentation available on our website:

Why & How To Use SAS Macro Language: Easy Ways To Get More Value & Power from Your SAS Software Tools

Why & How To Use SAS Macro Language: Easy Ways To Get More Value & Power from Your SAS Software Tools Why & How To Use SAS Macro Language: Easy Ways To Get More Value & Power from Your SAS Software Tools LeRoy Bessler PhD Bessler Consulting and Research Strong Smart Systems Mequon, WI, USA Le_Roy_Bessler@wi.rr.com

More information

Tales from the Help Desk 5: Yet More Solutions for Common SAS Mistakes Bruce Gilsen, Federal Reserve Board

Tales from the Help Desk 5: Yet More Solutions for Common SAS Mistakes Bruce Gilsen, Federal Reserve Board Tales from the Help Desk 5: Yet More Solutions for Common SAS Mistakes Bruce Gilsen, Federal Reserve Board INTRODUCTION In 25 years as a SAS consultant at the Federal Reserve Board, I have seen SAS users

More information

Your Own SAS Macros Are as Powerful as You Are Ingenious

Your Own SAS Macros Are as Powerful as You Are Ingenious Paper CC166 Your Own SAS Macros Are as Powerful as You Are Ingenious Yinghua Shi, Department Of Treasury, Washington, DC ABSTRACT This article proposes, for user-written SAS macros, separate definitions

More information

Techniques for Writing Robust SAS Macros. Martin Gregory. PhUSE Annual Conference, Oct 2009, Basel

Techniques for Writing Robust SAS Macros. Martin Gregory. PhUSE Annual Conference, Oct 2009, Basel Techniques for Writing Robust SAS Macros Martin Gregory PhUSE Annual Conference, 19-21 Oct 2009, Basel Overview Why robustness? Summary of techniques Types of macros considered An example from real life:

More information

An Introduction to SAS Macros Steven First, Systems Seminar Consultants, Madison, WI

An Introduction to SAS Macros Steven First, Systems Seminar Consultants, Madison, WI Paper 153-26 An Introduction to SAS Macros Steven First, Systems Seminar Consultants, Madison, WI Abstract The SAS programming language has a rich tool-box of features that can offer a lot of power to

More information

1 Files to download. 3 Macro to list the highest and lowest N data values. 2 Reading in the example data file

1 Files to download. 3 Macro to list the highest and lowest N data values. 2 Reading in the example data file 1 2 22S:172 Lab session 10 Macros for data cleaning July 17, 2003 GENDER VISIT HR SBP DBP DX AE = "Gender" = "Visit Date" = "Heart Rate" = "Systolic Blood Pressure" = "Diastolic Blood Pressure" = "Diagnosis

More information

Acknowledgments xi Preface xiii About the Author xv About This Book xvii New in the Macro Language xxi

Acknowledgments xi Preface xiii About the Author xv About This Book xvii New in the Macro Language xxi Contents Part 1 Acknowledgments xi Preface xiii About the Author xv About This Book xvii New in the Macro Language xxi Macro Basics Chapter 1 Introduction 3 1.1 Macro Facility Overview 3 1.2 Terminology

More information

A SAS Macro for Producing Benchmarks for Interpreting School Effect Sizes

A SAS Macro for Producing Benchmarks for Interpreting School Effect Sizes A SAS Macro for Producing Benchmarks for Interpreting School Effect Sizes Brian E. Lawton Curriculum Research & Development Group University of Hawaii at Manoa Honolulu, HI December 2012 Copyright 2012

More information

Using SAS/SCL to Create Flexible Programs... A Super-Sized Macro Ellen Michaliszyn, College of American Pathologists, Northfield, IL

Using SAS/SCL to Create Flexible Programs... A Super-Sized Macro Ellen Michaliszyn, College of American Pathologists, Northfield, IL Using SAS/SCL to Create Flexible Programs... A Super-Sized Macro Ellen Michaliszyn, College of American Pathologists, Northfield, IL ABSTRACT SAS is a powerful programming language. When you find yourself

More information

Troy Martin Hughes ABSTRACT INTRODUCTION

Troy Martin Hughes ABSTRACT INTRODUCTION MWSUG 2016 - Paper 38 A Failure To EXIST: Why Testing for Data Set Existence with the EXIST Function Alone Is Inadequate for Serious Software Development in Asynchronous, Multiuser, and Parallel Processing

More information

Submitting SAS Code On The Side

Submitting SAS Code On The Side ABSTRACT PharmaSUG 2013 - Paper AD24-SAS Submitting SAS Code On The Side Rick Langston, SAS Institute Inc., Cary NC This paper explains the new DOSUBL function and how it can submit SAS code to run "on

More information

Why & How To Use SAS Macro Language: Easy Ways To Get More Value & Power from Your SAS Software Tools

Why & How To Use SAS Macro Language: Easy Ways To Get More Value & Power from Your SAS Software Tools Why & How To Use SAS Macro Language: Easy Ways To Get More Value & Power from Your SAS Software Tools Le_Roy_Bessler@wi.rr.com Bessler Consulting and Research Strong Smart Systems Visual Data Insights

More information

More About SAS Macros

More About SAS Macros More About SAS Macros (Than You Thought Possible) Donald P. Gallogly DCBS IMD Topics The SAS Macros System Macro Variables Writing Macros The SAS Macros System The SAS Macros System SAS macros and macro

More information

Get Started Writing SAS Macros Luisa Hartman, Jane Liao, Merck Sharp & Dohme Corp.

Get Started Writing SAS Macros Luisa Hartman, Jane Liao, Merck Sharp & Dohme Corp. Get Started Writing SAS Macros Luisa Hartman, Jane Liao, Merck Sharp & Dohme Corp. ABSTRACT The SAS Macro Facility is a tool which lends flexibility to your SAS code and promotes easier maintenance. It

More information

Efficiency Programming with Macro Variable Arrays

Efficiency Programming with Macro Variable Arrays ABSTRACT MWSUG 2018 - Paper SP-062 Efficiency Programming with Macro Variable Arrays Veronica Renauldo, QST Consultations, LTD, Allendale, MI Macros in themselves boost productivity and cut down on user

More information

Introduction to the SAS Macro Facility

Introduction to the SAS Macro Facility Introduction to the SAS Macro Facility Uses for SAS Macros The macro language allows for programs that are dynamic capable of selfmodification. The major components of the macro language include: Macro

More information

Paper 149 JAY A. JAFFE

Paper 149 JAY A. JAFFE SAS MACROS BEYOND THE BASICS JAY A. JAFFE So you got some %LET statements, some &symbols, and maybe some %MACROs that help you do your work? Let s go ahead and leverage the full power of the SAS Macro

More information

Moving a Large SAS System Into an MVS Production Environment The Trials and Tribulations

Moving a Large SAS System Into an MVS Production Environment The Trials and Tribulations Moving a Large SAS System Into an MVS Production Environment The Trials and Tribulations Bernard Gardocki and Stephen Rhoades IMS HEALTH Inc., Plymouth Meeting, Pa ABSTRACT It is not the role, or responsibility

More information

DSCI 325: Handout 15 Introduction to SAS Macro Programming Spring 2017

DSCI 325: Handout 15 Introduction to SAS Macro Programming Spring 2017 DSCI 325: Handout 15 Introduction to SAS Macro Programming Spring 2017 The Basics of the SAS Macro Facility Macros are used to make SAS code more flexible and efficient. Essentially, the macro facility

More information

PROGRAMMING ROLLING REGRESSIONS IN SAS MICHAEL D. BOLDIN, UNIVERSITY OF PENNSYLVANIA, PHILADELPHIA, PA

PROGRAMMING ROLLING REGRESSIONS IN SAS MICHAEL D. BOLDIN, UNIVERSITY OF PENNSYLVANIA, PHILADELPHIA, PA PROGRAMMING ROLLING REGRESSIONS IN SAS MICHAEL D. BOLDIN, UNIVERSITY OF PENNSYLVANIA, PHILADELPHIA, PA ABSTRACT SAS does not have an option for PROC REG (or any of its other equation estimation procedures)

More information

%SYSFUNC( BRIDGE TO EXTERNAL DATA

%SYSFUNC( BRIDGE TO EXTERNAL DATA %SYSFUNC( BRIDGE TO EXTERNAL DATA ) Hsiwei Yu (Michael), Northrop Grumman, Washington, D.C. ABSTRACT %SYSFUNC, a macro function introduced in SAS Version 6.11 and 6.09E, enables Base SAS functions to be

More information

Developing Data-Driven SAS Programs Using Proc Contents

Developing Data-Driven SAS Programs Using Proc Contents Developing Data-Driven SAS Programs Using Proc Contents Robert W. Graebner, Quintiles, Inc., Kansas City, MO ABSTRACT It is often desirable to write SAS programs that adapt to different data set structures

More information

Creating Macro Calls using Proc Freq

Creating Macro Calls using Proc Freq Creating Macro Calls using Proc Freq, Educational Testing Service, Princeton, NJ ABSTRACT Imagine you were asked to get a series of statistics/tables for each country in the world. You have the data, but

More information

CHAPTER 7 Using Other SAS Software Products

CHAPTER 7 Using Other SAS Software Products 77 CHAPTER 7 Using Other SAS Software Products Introduction 77 Using SAS DATA Step Features in SCL 78 Statements 78 Functions 79 Variables 79 Numeric Variables 79 Character Variables 79 Expressions 80

More information

STATION

STATION ------------------------------STATION 1------------------------------ 1. Which of the following statements displays all user-defined macro variables in the SAS log? a) %put user=; b) %put user; c) %put

More information

;... _... name; tsoge. scr purpose: Startup a TSO SAS session. notes: Assumes the TSO session has been logged on manually.

;... _... name; tsoge. scr purpose: Startup a TSO SAS session. notes: Assumes the TSO session has been logged on manually. AUTOMATING THE PROCESS OF DOWNLOADING SAS DATA SETS TO THE PC Bruce Nawrocki, GE Capital Mortgage Insurance Introduction The [nfonn.tion Center at GE Capital Mortgage Insurance supports about 50 people

More information

PharmaSUG Paper TT11

PharmaSUG Paper TT11 PharmaSUG 2014 - Paper TT11 What is the Definition of Global On-Demand Reporting within the Pharmaceutical Industry? Eric Kammer, Novartis Pharmaceuticals Corporation, East Hanover, NJ ABSTRACT It is not

More information

SAS coding for those who like to be control

SAS coding for those who like to be control SAS coding for those who like to be control Montreal SAS Users Group 30 May 2018 Charu Shankar SAS Institute, Toronto About your presenter SAS Senior Technical Training Specialist, Charu Shankar teaches

More information

From Carpenter's Complete Guide to the SAS Macro Language, Third Edition. Full book available for purchase here.

From Carpenter's Complete Guide to the SAS Macro Language, Third Edition. Full book available for purchase here. From Carpenter's Complete Guide to the SAS Macro Language, Third Edition. Full book available for purchase here. Contents Acknowledgments... xiii About This Book... xv About The Author... xviii Part 1:

More information

RUN_MACRO Run! With PROC FCMP and the RUN_MACRO Function from SAS 9.2, Your SAS Programs Are All Grown Up

RUN_MACRO Run! With PROC FCMP and the RUN_MACRO Function from SAS 9.2, Your SAS Programs Are All Grown Up ABSTRACT Paper BON-02 RUN_MACRO Run! With PROC FCMP and the RUN_MACRO Function from SAS 9.2, Your SAS Programs Are All Grown Up Dylan Ellis, Mathematica Policy Research, Washington, DC When SAS first came

More information

Top Coding Tips. Neil Merchant Technical Specialist - SAS

Top Coding Tips. Neil Merchant Technical Specialist - SAS Top Coding Tips Neil Merchant Technical Specialist - SAS Bio Work in the ANSWERS team at SAS o Analytics as a Service and Visual Analytics Try before you buy SAS user for 12 years obase SAS and O/S integration

More information

%SYSFUNC - The Brave New Macro World Chris Yindra, C. Y. Training Associates

%SYSFUNC - The Brave New Macro World Chris Yindra, C. Y. Training Associates %SYSFUNC - The Brave New Macro World Chris Yindra, C. Y. Training Associates ABSTRACT The new macro function %SYSFUNC (SAS rel 6.12) allows access by the macro processor to most data step functions and

More information

Locking SAS Data Objects

Locking SAS Data Objects 59 CHAPTER 5 Locking SAS Data Objects Introduction 59 Audience 60 About the SAS Data Hierarchy and Locking 60 The SAS Data Hierarchy 60 How SAS Data Objects Are Accessed and Used 61 Types of Locks 62 Locking

More information

ABSTRACT. Paper CC-031

ABSTRACT. Paper CC-031 Paper CC-031 Using Functions SYSFUNC and IFC to Conditionally Execute Statements in Open Code Ronald J. Fehd, Centers for Disease Control and Prevention, Atlanta, GA, USA ABSTRACT Audience Keywords Information

More information

AN INTRODUCTION TO MACRO VARIABLES AND MACRO PROGRAMS Mike Zdeb, School of Public Health

AN INTRODUCTION TO MACRO VARIABLES AND MACRO PROGRAMS Mike Zdeb, School of Public Health AN INTRODUCTION TO MACRO VARIABLES AND MACRO PROGRAMS Mike Zdeb, University@Albany School of Public Health INTRODUCTION There are a number of SAS tools that you may never have to use. Why? The main reason

More information

Electricity Forecasting Full Circle

Electricity Forecasting Full Circle Electricity Forecasting Full Circle o Database Creation o Libname Functionality with Excel o VBA Interfacing Allows analysts to develop procedural prototypes By: Kyle Carmichael Disclaimer The entire presentation

More information

SURVIVING THE SAS MACRO JUNGLE BY USING YOUR OWN PROGRAMMING TOOLKIT

SURVIVING THE SAS MACRO JUNGLE BY USING YOUR OWN PROGRAMMING TOOLKIT PharmaSUG 2016 Paper BB11 SURVIVING THE SAS MACRO JUNGLE BY USING YOUR OWN PROGRAMMING TOOLKIT KEVIN RUSSELL Photo credit: Geoff Gallice / CC by 2.0 TOOLS FOR YOUR MACRO PROGRAMMING TOOLKIT The DOSUBL

More information

PharmaSUG China. Systematically Reordering Axis Major Tick Values in SAS Graph Brian Shen, PPDI, ShangHai

PharmaSUG China. Systematically Reordering Axis Major Tick Values in SAS Graph Brian Shen, PPDI, ShangHai PharmaSUG China Systematically Reordering Axis Major Tick Values in SAS Graph Brian Shen, PPDI, ShangHai ABSTRACT Once generating SAS graphs, it is a headache to programmers to reorder the axis tick values

More information

EXAMPLE 3: MATCHING DATA FROM RESPONDENTS AT 2 OR MORE WAVES (LONG FORMAT)

EXAMPLE 3: MATCHING DATA FROM RESPONDENTS AT 2 OR MORE WAVES (LONG FORMAT) EXAMPLE 3: MATCHING DATA FROM RESPONDENTS AT 2 OR MORE WAVES (LONG FORMAT) DESCRIPTION: This example shows how to combine the data on respondents from the first two waves of Understanding Society into

More information

PROGRAMMING WHEN YOU DON T KNOW OBJECT NAMES: AN INTRO TO DICTIONARIES

PROGRAMMING WHEN YOU DON T KNOW OBJECT NAMES: AN INTRO TO DICTIONARIES Paper TT26 Meta Data That You (Probably) Didn t Know That You Had: A Beginners Guide to Using SAS Dictionaries and Automatic Macro Variables Richard F. Pless, Ovation Research Group, Highland Park, IL

More information

PhUSE US Connect 2018 Paper CT06 A Macro Tool to Find and/or Split Variable Text String Greater Than 200 Characters for Regulatory Submission Datasets

PhUSE US Connect 2018 Paper CT06 A Macro Tool to Find and/or Split Variable Text String Greater Than 200 Characters for Regulatory Submission Datasets PhUSE US Connect 2018 Paper CT06 A Macro Tool to Find and/or Split Variable Text String Greater Than 200 Characters for Regulatory Submission Datasets Venkata N Madhira, Shionogi Inc, Florham Park, USA

More information

Useful Tips When Deploying SAS Code in a Production Environment

Useful Tips When Deploying SAS Code in a Production Environment Paper SAS258-2014 Useful Tips When Deploying SAS Code in a Production Environment ABSTRACT Elena Shtern, SAS Institute Inc., Arlington, VA When deploying SAS code into a production environment, a programmer

More information

Seminar Series: CTSI Presents

Seminar Series: CTSI Presents Biostatistics, Epidemiology & Research Design (BERD) Howard Cabral, PhD, MPH Christine Chaisson, MPH Seminar Series: CTSI Presents November 20, 2014 Demystifying SAS Macros BUSPH Data Coordinating Center

More information

A Cross-national Comparison Using Stacked Data

A Cross-national Comparison Using Stacked Data A Cross-national Comparison Using Stacked Data Goal In this exercise, we combine household- and person-level files across countries to run a regression estimating the usual hours of the working-aged civilian

More information

SAS Macro Language: Reference

SAS Macro Language: Reference SAS Macro Language: Reference INTRODUCTION Getting Started with the Macro Facility This is the macro facility language reference for the SAS System. It is a reference for the SAS macro language processor

More information

Files Arriving at an Inconvenient Time? Let SAS Process Your Files with FILEEXIST While You Sleep

Files Arriving at an Inconvenient Time? Let SAS Process Your Files with FILEEXIST While You Sleep Files Arriving at an Inconvenient Time? Let SAS Process Your Files with FILEEXIST While You Sleep Educational Testing Service SAS and all other SAS Institute Inc. product or service names are registered

More information

Tracking Dataset Dependencies in Clinical Trials Reporting

Tracking Dataset Dependencies in Clinical Trials Reporting Tracking Dataset Dependencies in Clinical Trials Reporting Binoy Varghese, Cybrid Inc., Wormleysburg, PA Satyanarayana Mogallapu, IT America Inc., Edison, NJ ABSTRACT Most clinical trials study reporting

More information

Introduction. Keeping Efficiency in Perspective. CHAPTER 11 Writing Efficient and Portable Macros

Introduction. Keeping Efficiency in Perspective. CHAPTER 11 Writing Efficient and Portable Macros 129 CHAPTER 11 Writing Efficient and Portable Macros Introduction 129 Keeping Efficiency in Perspective 129 Writing Efficient Macros 130 Use Macros Wisely 130 Use Name Style Macros 131 Avoid Nested Macro

More information

rc = libname( mylib, /nosuch ); if rc ne 0 then %fatal; OR if libname( mylib, /nosuch ) then %fatal; Select (flag); when (1) when (2) otherwise %fatal(text= Unexpected flag value, syscodes=n); end; %macro

More information

SAS Macro. SAS Training Courses. Amadeus Software Ltd

SAS Macro. SAS Training Courses. Amadeus Software Ltd SAS Macro SAS Training Courses By Amadeus Software Ltd AMADEUS SOFTWARE LIMITED SAS TRAINING Amadeus have been delivering SAS Training since 1989 and our aim is to provide you with best quality SAS training

More information

An Introduction to SAS Macros

An Introduction to SAS Macros An Introduction to SAS Macros Expanded token SAS Program (Input Stack) SAS Wordscanner (Tokenization) Non-Macro (Tokens) SAS Compiler % and & Triggers Macro Facility Steven First, President 2997 Yarmouth

More information

% BigDataLoader: A SAS Macro to Migrate Big Data 99% Faster

% BigDataLoader: A SAS Macro to Migrate Big Data 99% Faster % BigDataLoader: A SAS Macro to Migrate Big Data 99% Faster Anant Sharma Data warehousing & Business Intelligence, Wipro Technologies, Mumbai, India Abstract: The world as we know, is much more competitive

More information

Cramped for Drive Space? Save Space with the Auto-Compress Macro

Cramped for Drive Space? Save Space with the Auto-Compress Macro Cramped for Drive Space? Save Space with the Auto-Compress Macro Adam Bemis, Household International, Beaverton, OR Scott Hanson, Household International, Beaverton, OR ABSTRACT Although storage space

More information

Using Different Methods for Accessing Non-SAS Data to Build and Incrementally Update That Data Warehouse

Using Different Methods for Accessing Non-SAS Data to Build and Incrementally Update That Data Warehouse Paper DM-01 Using Different Methods for Accessing Non-SAS Data to Build and Incrementally Update That Data Warehouse Abstract Ben Cochran, The Bedford Group, Raleigh, NC Often SAS users need to access

More information

The Ins and Outs of %IF

The Ins and Outs of %IF Paper 1135-2017 The Ins and Outs of %IF M. Michelle Buchecker, ThotWave Technologies, LLC. ABSTRACT Have you ever had your macro code not work and you couldn't figure out why? Even something as simple

More information

Different Methods for Accessing Non-SAS Data to Build and Incrementally Update That Data Warehouse

Different Methods for Accessing Non-SAS Data to Build and Incrementally Update That Data Warehouse Different Methods for Accessing Non-SAS Data to Build and Incrementally Update That Data Warehouse Ben Cochran, The Bedford Group, Raleigh, NC Abstract Often SAS users need to access data from non- SAS

More information

An Introduction to SAS/SHARE, By Example

An Introduction to SAS/SHARE, By Example Paper AD01 An Introduction to SAS/SHARE, By Example Larry Altmayer, U.S. Census Bureau, Washington, DC ABSTRACT SAS/SHARE software is a useful tool for allowing several users to access and edit the same

More information

22S:172. Duplicates. may need to check for either duplicate ID codes or duplicate observations duplicate observations should just be eliminated

22S:172. Duplicates. may need to check for either duplicate ID codes or duplicate observations duplicate observations should just be eliminated 22S:172 1 2 Duplicates Data Cleaning involving duplicate IDs and duplicate records may need to check for either duplicate ID codes or duplicate observations duplicate observations should just be eliminated

More information

Implementing external file processing with no record delimiter via a metadata-driven approach

Implementing external file processing with no record delimiter via a metadata-driven approach Paper 2643-2018 Implementing external file processing with no record delimiter via a metadata-driven approach Princewill Benga, F&P Consulting, Saint-Maur, France ABSTRACT Most of the time, we process

More information

Virtual Accessing of a SAS Data Set Using OPEN, FETCH, and CLOSE Functions with %SYSFUNC and %DO Loops

Virtual Accessing of a SAS Data Set Using OPEN, FETCH, and CLOSE Functions with %SYSFUNC and %DO Loops Paper 8140-2016 Virtual Accessing of a SAS Data Set Using OPEN, FETCH, and CLOSE Functions with %SYSFUNC and %DO Loops Amarnath Vijayarangan, Emmes Services Pvt Ltd, India ABSTRACT One of the truths about

More information

Make Your Life a Little Easier: A Collection of SAS Macro Utilities. Pete Lund, Northwest Crime and Social Research, Olympia, WA

Make Your Life a Little Easier: A Collection of SAS Macro Utilities. Pete Lund, Northwest Crime and Social Research, Olympia, WA Make Your Life a Little Easier: A Collection of SAS Macro Utilities Pete Lund, Northwest Crime and Social Research, Olympia, WA ABSTRACT SAS Macros are used in a variety of ways: to automate the generation

More information

Paper Troy Martin Hughes

Paper Troy Martin Hughes Paper 3380-2015 From a One-Horse to a One-Stoplight Town: A Base SAS Solution to Preventing Data Access Collisions through the Detection and Deployment of Shared and Exclusive File s Troy Martin Hughes

More information

A Format to Make the _TYPE_ Field of PROC MEANS Easier to Interpret Matt Pettis, Thomson West, Eagan, MN

A Format to Make the _TYPE_ Field of PROC MEANS Easier to Interpret Matt Pettis, Thomson West, Eagan, MN Paper 045-29 A Format to Make the _TYPE_ Field of PROC MEANS Easier to Interpret Matt Pettis, Thomson West, Eagan, MN ABSTRACT: PROC MEANS analyzes datasets according to the variables listed in its Class

More information

A simplistic approach to Grid Computing Edmonton SAS Users Group. April 5, 2016 Bill Benson, Enterprise Data Scienc ATB Financial

A simplistic approach to Grid Computing Edmonton SAS Users Group. April 5, 2016 Bill Benson, Enterprise Data Scienc ATB Financial A simplistic approach to Grid Computing Edmonton SAS Users Group April 5, 2016 Bill Benson, Enterprise Data Scienc ATB Financial Grid Computing The Basics Points to Cover: Benefits of Grid Computing Server

More information

Using a Control Dataset to Manage Production Compiled Macro Library Curtis E. Reid, Bureau of Labor Statistics, Washington, DC

Using a Control Dataset to Manage Production Compiled Macro Library Curtis E. Reid, Bureau of Labor Statistics, Washington, DC AP06 Using a Control Dataset to Manage Production Compiled Macro Library Curtis E. Reid, Bureau of Labor Statistics, Washington, DC ABSTRACT By default, SAS compiles and stores all macros into the WORK

More information

WHAT ARE SASHELP VIEWS?

WHAT ARE SASHELP VIEWS? Paper PN13 There and Back Again: Navigating between a SASHELP View and the Real World Anita Rocha, Center for Studies in Demography and Ecology University of Washington, Seattle, WA ABSTRACT A real strength

More information

Base and Advance SAS

Base and Advance SAS Base and Advance SAS BASE SAS INTRODUCTION An Overview of the SAS System SAS Tasks Output produced by the SAS System SAS Tools (SAS Program - Data step and Proc step) A sample SAS program Exploring SAS

More information

Validation Summary using SYSINFO

Validation Summary using SYSINFO Validation Summary using SYSINFO Srinivas Vanam Mahipal Vanam Shravani Vanam Percept Pharma Services, Bridgewater, NJ ABSTRACT This paper presents a macro that produces a Validation Summary using SYSINFO

More information

Data Quality Review for Missing Values and Outliers

Data Quality Review for Missing Values and Outliers Paper number: PH03 Data Quality Review for Missing Values and Outliers Ying Guo, i3, Indianapolis, IN Bradford J. Danner, i3, Lincoln, NE ABSTRACT Before performing any analysis on a dataset, it is often

More information

Introduction. Getting Started with the Macro Facility CHAPTER 1

Introduction. Getting Started with the Macro Facility CHAPTER 1 1 CHAPTER 1 Introduction Getting Started with the Macro Facility 1 Replacing Text Strings Using Macro Variables 2 Generating SAS Code Using Macros 3 Inserting Comments in Macros 4 Macro Definition Containing

More information

An Easy Route to a Missing Data Report with ODS+PROC FREQ+A Data Step Mike Zdeb, FSL, University at Albany School of Public Health, Rensselaer, NY

An Easy Route to a Missing Data Report with ODS+PROC FREQ+A Data Step Mike Zdeb, FSL, University at Albany School of Public Health, Rensselaer, NY SESUG 2016 Paper BB-170 An Easy Route to a Missing Data Report with ODS+PROC FREQ+A Data Step Mike Zdeb, FSL, University at Albany School of Public Health, Rensselaer, NY ABSTRACT A first step in analyzing

More information

Sample Questions. SAS Advanced Programming for SAS 9. Question 1. Question 2

Sample Questions. SAS Advanced Programming for SAS 9. Question 1. Question 2 Sample Questions The following sample questions are not inclusive and do not necessarily represent all of the types of questions that comprise the exams. The questions are not designed to assess an individual's

More information

Ranking Between the Lines

Ranking Between the Lines Ranking Between the Lines A %MACRO for Interpolated Medians By Joe Lorenz SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in

More information

%MAKE_IT_COUNT: An Example Macro for Dynamic Table Programming Britney Gilbert, Juniper Tree Consulting, Porter, Oklahoma

%MAKE_IT_COUNT: An Example Macro for Dynamic Table Programming Britney Gilbert, Juniper Tree Consulting, Porter, Oklahoma Britney Gilbert, Juniper Tree Consulting, Porter, Oklahoma ABSTRACT Today there is more pressure on programmers to deliver summary outputs faster without sacrificing quality. By using just a few programming

More information

EXAMPLE 3: MATCHING DATA FROM RESPONDENTS AT 2 OR MORE WAVES (LONG FORMAT)

EXAMPLE 3: MATCHING DATA FROM RESPONDENTS AT 2 OR MORE WAVES (LONG FORMAT) EXAMPLE 3: MATCHING DATA FROM RESPONDENTS AT 2 OR MORE WAVES (LONG FORMAT) DESCRIPTION: This example shows how to combine the data on respondents from the first two waves of Understanding Society into

More information

USING DATA TO SET MACRO PARAMETERS

USING DATA TO SET MACRO PARAMETERS USING DATA TO SET MACRO PARAMETERS UPDATE A PREVIOUS EXAMPLE %macro report(regs=); %let r=1; %let region=%scan(&regs,&r); %do %until(&region eq ); options nodate pageno=1; ods pdf file="&region..pdf";

More information

Better Metadata Through SAS II: %SYSFUNC, PROC DATASETS, and Dictionary Tables

Better Metadata Through SAS II: %SYSFUNC, PROC DATASETS, and Dictionary Tables Paper 3458-2015 Better Metadata Through SAS II: %SYSFUNC, PROC DATASETS, and Dictionary Tables ABSTRACT Louise Hadden, Abt Associates Inc., Cambridge, MA SAS provides a wealth of resources for users to

More information

Macro to compute best transform variable for the model

Macro to compute best transform variable for the model Paper 3103-2015 Macro to compute best transform variable for the model Nancy Hu, Discover Financial Service ABSTRACT This study is intended to assist Analysts to generate the best of variables using simple

More information

SAS Certification Handout #11: Adv. Prog. Ch. 9-10

SAS Certification Handout #11: Adv. Prog. Ch. 9-10 SAS Certification Handout #11: Adv. Prog. Ch. 9-10 /************ Ch. 9 ********************/ /* SAS Macros -- like writing your own functions in SAS; especially useful for reproducing analyses or reports

More information

Unlock SAS Code Automation with the Power of Macros

Unlock SAS Code Automation with the Power of Macros SESUG 2015 ABSTRACT Paper AD-87 Unlock SAS Code Automation with the Power of Macros William Gui Zupko II, Federal Law Enforcement Training Centers SAS code, like any computer programming code, seems to

More information

Arthur L. Carpenter California Occidental Consultants, Oceanside, California

Arthur L. Carpenter California Occidental Consultants, Oceanside, California Paper 028-30 Storing and Using a List of Values in a Macro Variable Arthur L. Carpenter California Occidental Consultants, Oceanside, California ABSTRACT When using the macro language it is not at all

More information

Know Thy Data : Techniques for Data Exploration

Know Thy Data : Techniques for Data Exploration Know Thy Data : Techniques for Data Exploration Montreal SAS Users Group Wednesday, 29 May 2018 13:50-14:30 PM Andrew T. Kuligowski, Charu Shankar AGENDA Part 1- Easy Ways to know your data Part 2 - Powerful

More information

A Table Driven ODS Macro Diane E. Brown, exponential Systems, Indianapolis, IN

A Table Driven ODS Macro Diane E. Brown, exponential Systems, Indianapolis, IN A Table Driven ODS Macro Diane E. Brown, exponential Systems, Indianapolis, IN ABSTRACT Tired of coding ODS statements and SAS output procedures for every report you write and having redundant or similar

More information

&&&, ;;, and Other Hieroglyphics Advanced Macro Topics Chris Yindra, C. Y. Training Associates

&&&, ;;, and Other Hieroglyphics Advanced Macro Topics Chris Yindra, C. Y. Training Associates &&&, ;;, and Other Hieroglyphics Advanced Macro Topics Chris Yindra, C. Y. Training Associates INTRODUCTION SAS macros are powerful tools that can create reusable code modules to do a variety of programming

More information

3. Almost always use system options options compress =yes nocenter; /* mostly use */ options ps=9999 ls=200;

3. Almost always use system options options compress =yes nocenter; /* mostly use */ options ps=9999 ls=200; Randy s SAS hints, updated Feb 6, 2014 1. Always begin your programs with internal documentation. * ***************** * Program =test1, Randy Ellis, first version: March 8, 2013 ***************; 2. Don

More information

So Much Data, So Little Time: Splitting Datasets For More Efficient Run Times and Meeting FDA Submission Guidelines

So Much Data, So Little Time: Splitting Datasets For More Efficient Run Times and Meeting FDA Submission Guidelines Paper TT13 So Much Data, So Little Time: Splitting Datasets For More Efficient Run Times and Meeting FDA Submission Guidelines Anthony Harris, PPD, Wilmington, NC Robby Diseker, PPD, Wilmington, NC ABSTRACT

More information

Paper DB2 table. For a simple read of a table, SQL and DATA step operate with similar efficiency.

Paper DB2 table. For a simple read of a table, SQL and DATA step operate with similar efficiency. Paper 76-28 Comparative Efficiency of SQL and Base Code When Reading from Database Tables and Existing Data Sets Steven Feder, Federal Reserve Board, Washington, D.C. ABSTRACT In this paper we compare

More information

My objective is twofold: Examine the capabilities of MP Connect and apply those capabilities to a real-world application.

My objective is twofold: Examine the capabilities of MP Connect and apply those capabilities to a real-world application. Abstract MP CONNECT: Warp Engine for SAS (Multi-Processing in the Sun Solaris Environment). Pablo J. Nogueras CitiFinancial International, Risk Management Technology, Irving, Texas When you are assigned

More information

Are you Still Afraid of Using Arrays? Let s Explore their Advantages

Are you Still Afraid of Using Arrays? Let s Explore their Advantages Paper CT07 Are you Still Afraid of Using Arrays? Let s Explore their Advantages Vladyslav Khudov, Experis Clinical, Kharkiv, Ukraine ABSTRACT At first glance, arrays in SAS seem to be a complicated and

More information

ABSTRACT INTRODUCTION MACRO. Paper RF

ABSTRACT INTRODUCTION MACRO. Paper RF Paper RF-08-2014 Burst Reporting With the Help of PROC SQL Dan Sturgeon, Priority Health, Grand Rapids, Michigan Erica Goodrich, Priority Health, Grand Rapids, Michigan ABSTRACT Many SAS programmers need

More information

TIPS AND TRICKS: IMPROVE EFFICIENCY TO YOUR SAS PROGRAMMING

TIPS AND TRICKS: IMPROVE EFFICIENCY TO YOUR SAS PROGRAMMING TIPS AND TRICKS: IMPROVE EFFICIENCY TO YOUR SAS PROGRAMMING Guillaume Colley, Lead Data Analyst, BCCFE Page 1 Contents Customized SAS Session Run system options as SAS starts Labels management Shortcut

More information

A Mass Symphony: Directing the Program Logs, Lists, and Outputs

A Mass Symphony: Directing the Program Logs, Lists, and Outputs PharmaSUG2011 Paper CC24 ABSTRACT A Mass Symphony: Directing the Program Logs, Lists, and Outputs Tom Santopoli, Octagon Research Solutions, Inc., Wayne, PA When executing programs in SAS, it is efficient

More information

Top-Down Programming with SAS Macros Edward Heaton, Westat, Rockville, MD

Top-Down Programming with SAS Macros Edward Heaton, Westat, Rockville, MD Paper P813 Top-Down Programming with SAS Macros Edward Heaton, Westat, Rockville, MD ABSTRACT Structured, top-down programming techniques are not intuitively obvious in the SAS language, but macros can

More information

STEP 1 - /*******************************/ /* Manipulate the data files */ /*******************************/ <<SAS DATA statements>>

STEP 1 - /*******************************/ /* Manipulate the data files */ /*******************************/ <<SAS DATA statements>> Generalized Report Programming Techniques Using Data-Driven SAS Code Kathy Hardis Fraeman, A.K. Analytic Programming, L.L.C., Olney, MD Karen G. Malley, Malley Research Programming, Inc., Rockville, MD

More information

Using UNIX Shell Scripting to Enhance Your SAS Programming Experience

Using UNIX Shell Scripting to Enhance Your SAS Programming Experience Paper 2412-2018 Using UNIX Shell Scripting to Enhance Your SAS Programming Experience James Curley, Eliassen Group ABSTRACT This series will address three different approaches to using a combination of

More information

Surviving the SAS Macro Jungle by Using Your Own Programming Toolkit Kevin Russell, SAS Institute Inc., Cary, North Carolina

Surviving the SAS Macro Jungle by Using Your Own Programming Toolkit Kevin Russell, SAS Institute Inc., Cary, North Carolina PharmaSUG 2016 Paper BB11 Surviving the SAS Macro Jungle by Using Your Own Programming Toolkit Kevin Russell, SAS Institute Inc., Cary, North Carolina ABSTRACT Almost every night there is a reality show

More information

A SAS Macro Utility to Modify and Validate RTF Outputs for Regional Analyses Jagan Mohan Achi, PPD, Austin, TX Joshua N. Winters, PPD, Rochester, NY

A SAS Macro Utility to Modify and Validate RTF Outputs for Regional Analyses Jagan Mohan Achi, PPD, Austin, TX Joshua N. Winters, PPD, Rochester, NY PharmaSUG 2014 - Paper BB14 A SAS Macro Utility to Modify and Validate RTF Outputs for Regional Analyses Jagan Mohan Achi, PPD, Austin, TX Joshua N. Winters, PPD, Rochester, NY ABSTRACT Clinical Study

More information

= %sysfunc(dequote(&ds_in)); = %sysfunc(dequote(&var));

= %sysfunc(dequote(&ds_in)); = %sysfunc(dequote(&var)); /-------------------------------------------------------------- SUGI PAPER 326-2010 Adding Statistical Functionality to the DATA Step with FCMP BY: Stacey Christian and Jacques Rioux EXAMPLE 1: Recursive

More information

Essential ODS Techniques for Creating Reports in PDF Patrick Thornton, SRI International, Menlo Park, CA

Essential ODS Techniques for Creating Reports in PDF Patrick Thornton, SRI International, Menlo Park, CA Thornton, S. P. (2006). Essential ODS techniques for creating reports in PDF. Paper presented at the Fourteenth Annual Western Users of the SAS Software Conference, Irvine, CA. Essential ODS Techniques

More information

Statements. Previous Page Next Page. SAS 9.2 Language Reference: Dictionary, Third Edition. Definition of Statements. DATA Step Statements

Statements. Previous Page Next Page. SAS 9.2 Language Reference: Dictionary, Third Edition. Definition of Statements. DATA Step Statements Page 1 of 278 Previous Page Next Page SAS 9.2 Language Reference: Dictionary, Third Edition Statements Definition of Statements DATA Step Statements Global Statements ABORT Statement ARRAY Statement Array

More information