Archive of Past
Winter meeting - Friday, March 12, 2004, 9am
Validating SAS Programs OR Beyond Debugging: Program
Neil Howard / Ingenix Pharmaceutical Services
presentation from the meeting
"Act in haste and repent at
leisure; code too soon, and debug forever."
Overheard at an interview for a SAS programming position:
"But you don't have to test SAS programs!!!" As the
interviewers quickly escort the confused candidate out the
door, they recall how often it is assumed that a fourth
generation language "does so much for you" that you don't have
to test the code. The SAS system is easy to use, and the
learning curve to productivity is relatively short. But SAS
is just as easy to ABUSE. Programmers and analysts must not
lose sight of the indisputable facts: data is seldom clean,
logic is too often faulty, and fingers walk clumsily over
keyboards. Condition codes and clean logs are not accurate
indicators of successful programs.
Good debuggers make good programmers. And good analysts and
problem-solvers make good programmers. And just because a SAS®
program is free of errors, warnings, notes, and bugs does not
guarantee that the program is doing what it is supposed to do.
This paper addresses the process of debugging, testing and
validating SAS programs and the tools available in the SAS
language to facilitate the process. It covers techniques for
ensuring that the logic and intent of the program is correct,
that the requirements and design specifications are met, and
that data errors are detected. Since as much as 80% of a
programmer's time is invested in testing and validation, it's
important to develop a personal approach to testing and a
routine testing methodology in your group.
Neil Howard is Manager of Statistical Programming at i3
Data Services in Basking Ridge, NJ; she was with Pfizer
previously. A SAS user for more than twenty years, Neil has
been an invited speaker since 1983 on such topics as:
efficiency techniques, DATA step processing and internals,
advanced DATA step techniques, testing and validation,
graphics, effective presentations, and interviewing/hiring SAS
programmers. She was a contract instructor for SAS Institute
for seven years teaching fundamentals, programming, macro,
report writing, graphics and the annotate facility. She has
been a member of the SUGI Executive Committee since 1993 and
was proud to chair SUGI 20 in Orlando. She is currently the
Academic Chair for SESUG '04 to be held in Nashville in
ODS on SAS V9.1
SAS 9.1 is out -- are you ready??
Take a quick trip with me through ODS-land to see what's new and
useful in the Output Delivery System. Some of the highlights
will be a discussion of two new destinations, MARKUP and
DOCUMENT, and how they can be useful to you.
Sandy McNeil, SAS (Eric Gebhart replaced Sandy for the
Eric has been with SAS since 1995. He is one of the
original ODS developers and is responsible for HTML and the
new MARKUP destination and Tagsets.
Sandy McNeill is the manager of the Output Delivery and
Reporting department at SAS. The ODR department is responsible
for ODS and the BASE reporting procedures -- Print, Tabulate,
and Report. Sandy joined SAS in 1995 to support PROC REPORT,
for which she is still the lead development support person.
Prior to joining SAS, Sandy worked at Square D where she
wrote firmware for Programmable Logic Controllers, and then
was the programming lead for the graphical user interface used
to program the PLCs. Sandy's previous experience before
Square D was six years with GTE Government Systems where she
worked on the firmware for a communication device used by the
Army during Operation Desert Storm. Sandy graduated Magna Cum
Laude in 1985 with a B.S. in Computer Science from North
Carolina State University.
meeting - Tuesday, June 8, 2004, 9am
Mrs. Clean Tackles Dirty Data
Janet Stuelpner / Independent
What is clean data and how do you
clean it? This is an age-old question that has some pretty easy
answers. There are some techniques that can be used to find invalid
data values in both numeric and character data, missing values and
duplicate observations. Simple procedures and DATA steps can be
used to ferret out inappropriate observations. This presentation
will illustrate some of the techniques used after data entry is
complete and the data has to be reviewed and cleansed.
Janet Stuelpner provides programming
support in the areas of clinical trials, outcomes research and the
financial industry. She also provides both individual and group
technical training when needed at the client sites. Janet has
several degrees in the sciences. She has been a SAS user for 20
years on many different platforms. Originally a systems programmer,
she has now turned her focus to applications programming and
teaching. She has been a presenter at users groups at all levels.
The Input Statement: Where It's @
The INPUT statement is one of the
most powerful and flexible features of SAS software. You can read
data values separated by spaces or commas (or other delimiters),
data values in specified columns, or data stored in a variety of
formats such as packed decimal, or binary. You can also read date
values in most of the standard formats. Along with an INFILE
statement, you can read data from external files as well. You can
place the data for several observations on a single data line or
you can read several lines of data and create a single
observation. Finally, you can read values from a line of data
and, depending on the value, decide how to read the remaining
data. This talk will tell you where it's @.
Ron Cody / Professor, Robert Wood Johnson Medical School
Dr. Ron Cody is a Professor in the
department of Environmental and Community Medicine at the Robert
Wood Johnson Medical School, Piscataway, New Jersey. He has been
a SAS user since the late 70's and is the author of "Applied
Statistics and the SAS® Programming Language" (fourth edition),
published by Prentice Hall. He has also authored or co-authored
the following books for the SAS Institute as part of their Books
by Users series: SAS Functions by Example (just published), The
SAS Workbook, SAS Programming by Example, Cody's Data Cleaning
Techniques, and Longitudinal Data and SAS: A Programmer's Guide.
Ron has presented invited papers for numerous local, regional, and
national SAS conferences.
Early Autumn meeting - Friday, September 24, 2004, 9am