Date: Wed, 4 Sep 1996 11:32:29 EDT
Reply-To: Gerry <STATMAN@PACEVM.DAC.PACE.EDU>
Sender: "SAS(r) Discussion" <SAS-L@UGA.CC.UGA.EDU>
From: Gerry <STATMAN@PACEVM.DAC.PACE.EDU>
Organization: Dept of Academic Computing, Pace University
Subject: NYASUG Meeting Announcement
For members of SAS-L in the Tri-State area who are also members of
the New York Area SAS Users Group (NYASUG):
PET Party: Performance And Efficiency Techniques
The next meeting of the New York Area SAS Users Group will be on
Wednesday, September 11th. Due to scheduling conflicts, the meeting
will not be held at our usual meeting site at Merrill Lynch.
Chase Manhattan Bank will host this meeting at its Chase Plaza
building. This is NYASUG's first time at Chase, and we thank them
for hosting the meeting. Directions to Chase appear later in this
note.
This will be an all day meeting, with 6 scheduled presentations. The
theme of this meeting will be performance and efficiency techniques
for SAS applications.
The following are abstracts of the scheduled presentations:
------------------------------------------------------------------------
Change Your Life With VIEWS
By Kim Kolbe Ritzow
The ability to create VIEWs of our data is new starting with version
6.07 of base SAS software. A VIEW is a logical representation of the
data, which means it does not physically contain data values like a
traditional SAS dataset. In a VIEW, data values are materialized when-
ever the VIEW is invoked. VIEWs can sometimes make our programs more
efficient, and other times, less efficient. This paper will help you
better understand the issues relating to creating VIEWs and will also
help you in knowing when to use a VIEW and when not to.
Randomly Accessing Files Using The KEY= Option
By Kim Kolbe Ritzow
The KEY= option on the SET or MODIFY statement is new starting with
version 6.07 of the base SAS system and allows direct access to an
observation nonsequentially based on an indexed value. This paper
will provide examples of how the KEY= option is used, and compare
this type of table lookup technique with the more traditional
methods in terms of efficiency.
Kim Kolbe Ritzow has been a SAS user since 1982. In her current
position as a SAS trainer and consultant, she uses a wide-variety
of the SAS software products to develop SAS applications and
training materials.
Kim is a frequent contributor to SUGI, MWSUG (MidWest SAS Users Group)
and various local SAS user group organizations. She has been the reci-
pient the past three years of the best speaker award in the Tutorials
section at the MWSUG conference.
------------------------------------------------------------------------
Production SAS Programs: Efficiency Coding Techniques
By Gerard T. Pauline
For ad hoc, one time use programs, efficiency is usually not a major
concern. This is not true for "production" applications, programs that
will be run repeatedly by a site's user population. For production
programs, efficiency must be an integral part of the development
process.
This is especially a concern for production code written in the SAS
language. As SAS has become prevalent in the production environment,
it has gained a somewhat unfair reputation as a resource hog, parti-
cularly when compared to langauges such as C, PL/I and COBOL.
Part of what makes SAS appeal to a wide spectrum of users, its many
builtin features and default services, are also responsible for its
greater resource utilization. Knowing when to exploit and when to
manually override these services can result in significant
performance gains.
This paper takes a "code-centric" approach to presenting techniques,
framed within a set of programming conventions, that should for the most
part be platform independent. The primary focus will be on the Data Step
compiler, with special emphasis given to techniques that optimize the
processing of large, raw datafiles.
Topics, along with illustrative code examples, will include maximizing
storage, iterative loop optimization, I/O optimization, array process-
ing, "subroutines", how (and when) to manually code services normally
provided by the compiler, using the Stored Program Facility, and
exploiting operating system facilities from the Data Step.
Also discussed will be step reduction, the use of code structure as a
debugging tool and the co-operative use of SAS and other software in
a multiple production language environment.
"Pseudo" Executable SAS Program Modules
By Gerard T. Pauline
In production applications written in langauges such as C, PL/I and
COBOL, the programmer writes the source code, then compiles and links
the code into an executable module.
Beginning with version 6 of the SAS System, compiled Data Step code
could be stored with the Stored Program Facility. However, SAS programs
still consisted of "step" combinations, containing essentially "source"
statements.
This paper presents a methodology for creating "pseudo" executable SAS
program modules in which PROCs or "PROC packages" can be invoked from
a compiled and stored Data Step.
This presentation will contain a brief overview of the Stored Program
Facility, and why it should be used for production applications, along
with a discussion of the Stored Macro Facility, and how the two can
be used together.
Gerry Pauline is a Programmer / Analyst with the Department of Academic
Computing at Pace University, where he oversees applications development.
A SAS user for 9 years, he implements and supports database and informa-
tion systems development in C, PL/I, REXX and the SAS System.
Presently, he is very involved in the university's World Wide Web and
Intranet initiatives. Current programming interests include the Java
language and VRML.
------------------------------------------------------------------------
Efficiency Tips With An Emphasis On Sorting
By Bob Virgile
This is a collection of tips, some old and some new. Taken from the
course notes for EFFICIENT EVERYDAY PROGRAMMING, these tips include
some of the more effective techniques for cutting down CPU time.
Many of the tips deal with sorting data efficiently, while a few
concern other common functions such as reading raw data and
summarizing data.
Exception Reports For Zero Observations
By Bob Virgile
When reporting criteria select zero observations for printing, the
user gets no printout. The user cannot tell whether the program failed
or worked properly. So the user calls you. How can you prevent this ?
This presentation, based on a similarly titled chapter in the book
REPORTING FROM THE FIELD, delves into the programming issues involved
in keeping the user informed whether or not your program selects
observations to print.
Bob Virgile is an independent SAS teacher and consultant. He has de-
veloped and taught SAS classes for 14 years, and has presented many
papers at regional and international SAS conferences. He also creates
and presents SAS problem-solving contests at these conferences, and
recently completed a book (available through SAS Institute) based on
the contests.
------------------------------------------------------------------------
Large Data Volume: Tricks of The Trade
By Allison Levine
While working with 30 million observations and a multitude of variables,
one can encounter many problems. Proc Summary abends, the code becomes
so difficult to follow you need a road map and variables seem to multi-
ply on their own. Then, when you finally get everything working, you
get exiled to tape because your files fill half the DASD in the shop.
What's a programmer to do ?
This paper illustrates several techniques used by the author to handle
these problems. Several options for summarizing extremely large SAS
files are presented. This includes how to optimize Proc SUMMARY's data
capacity and when to use Data Step summarization. In addition, advanced
methods to minimize tape processing and simplify code bloat using data
views, arrays and macros will be discussed. Finally, we'll discover how
to get more than one piece of information from a user defined format.
Allison Levine has been using SAS extensively since 1981 and is an
independent SAS consultant in the New York metropolitan area. Her
experience spans multiple areas including computer performance,
chargeback and database marketing.
------------------------------------------------------------------------
The agenda for the September 11th meeting is:
08:30 - 09:00 Continental Breakfast
09:00 - 10:00 Production SAS Programs: Efficiency Coding Techniques
10:00 - 10:30 Break & Random Access
10:30 - 11:15 Change Your Life With VIEWS !
11:15 - 12:15 Efficiency Tips, With An Emphasis On Sorting
12:15 - 01:30 Lunch
01:30 - 02:15 Randomly Accessing Files Using The KEY= Option
02:15 - 02:45 "Pseudo" Executable SAS Program Modules
02:45 - 03:00 Afternoon Break
03:00 - 04:00 Large Data Volume: Tricks of The Trade
04:00 - 05:00 Exception Reports For Zero Observations
------------------------------------------------------------------------
Location: The Chase Manhattan Bank building is located at
55 Water Street between Old Slip (an extension
of William Street) and Broad Street next to the
Vietnam Veterans Memorial (lower Manhattan).
The meeting is on the 13th floor.
Subway: IRT (#2 or #3) to Wall Street -Or-
IRT (#1 or #9) to South Ferry -Or-
BMT "J", "M" or "Z" to Broad Street -Or-
BMT (#4 or #5) to Bowling Green -Or-
"N" or "R" to Whitehall Street -Or-
IND "A" To Nassau Street (long walk
to site)
Bus: M15 to Broad Street
------------------------------------------------------------------------
For further information about this meeting, or the New York Area SAS
Users Group, please contact the group's liaison:
Jean LaFrance
FISA
111 8th Avenue - 13th Floor
New York, NY 10011
(212) 206-3116