5月 302011

It may just be me, but every time I attend SAS Global Forum, I always leave feeling that I have missed a large part of the conference.  There are too many things going on at once and in too many different places for me to catch it all.  Fortunately, for those of us who have yet to master being-in-multiple-places-at-the-same-time, we do get a second chance.  Here are three ways to experience SGF right now:

Conference Proceedings  Most people are aware that papers from the conference can be found online.  You can do a search to find papers related to your interests.  A search for “ODS Graphics,” for example, returned no fewer than 50 papers—enough to keep me busy for quite a while.

Best Contributed Paper Awards   Don’t want to search through hundreds of papers? Why not start with the best by checking out the winners of the Best Contributed Paper Award for each section of the conference?

SAS Global Forum Take-Out  Or better yet, watch videos of some of the best papers in SGF’s Take-Out program from the comfort of your own cubicle.

5月 212011

Recently, my mother handed me a copy of the May 2011 issue of Reader’s Digest magazine.  Now, Reader’s Digest is not a magazine that I ordinarily read (though I confess to being a fan of its monthly Word Power vocabulary quiz), but this particular issue holds special interest.  The article, Best of America, says that it is a “celebration of all that’s right and good in America.”  What’s right and good in America?  Well, it turns out that SAS Institute is.

A two-page spread honors SAS Institute as the Best Place to Work thanks to being ranked number one by Fortune magazine two years in a row.  Being mentioned in Reader’s Digest may not be as glamorous as being mentioned in Fortune or Economist magazine, but it’s a whole lot more noteworthy.  It represents a new level of attention for SAS products–and that can only be good for the prospects of SAS programmers.

What’s next: People magazine, Vanity Fair, Vogue?

5月 132011

I’ve been so busy over the last month that I am just now getting a chance to sort through my notes from SAS Global Forum 2011.  Here are a few highlights I found:

SAS OnDemand for Academics

SAS OnDemand for Academics (the cloud computing version of SAS) will be free for academic research starting in Fall of 2011.  This is exciting news!  I’m surprised it didn’t get a lot more attention at the conference.  Since Fall 2010, SAS OnDemand for Academics has been free for use by students enrolled in courses that use SAS.  However, the number of professors and students doing research is far greater than the number of students enrolled in courses that use SAS.  In addition, professors now have more reason to teach SAS because students will be able to use it after the class is over.  This change will help SAS to compete with R since the main reason that R is so popular is because it is free, but SAS Institute will need to work hard to get the word out.

New output in SAS 9.3

SAS 9.3—which is expected to be released this summer—will bring major enhancements to output.  For the first time ever, text output (AKA listing) will no longer be the default.  HTML will become the default destination for output in Display Manager, and a new default style template, HTMLBlue, will make our output pretty.  Of course, you will still be able to turn on text output for those times when you need vanilla instead of mocha-almond-fudge.

ODS Graphics will be part of Base SAS starting with SAS 9.3

ODS Graphics (which became production with SAS 9.2) continues to grow in both features and popularity.  In SAS 9.2 you need a SAS/GRAPH license to use ODS Graphics, but starting with SAS 9.3 it will be part of Base SAS.  This is good news because it will make sophisticated graphs available to all users of SAS/STAT regardless of whether they have a SAS/GRAPH license.  This should also help SAS to compete with R since the second most common reason that people use R is because it produces graphics. (Of course, traditional SAS/GRAPH still does a lot of things that ODS Graphics doesn’t, and you will still need a SAS/GRAPH license to use traditional SAS/GRAPH.)

ODS Graphics will be on by default in SAS 9.3 in Display Manager

One of the problems with ODS Graphics in SAS 9.2 is that you need to turn it on.  Many of the people who need it most (occasional statistical users) never learned about it and therefore never turned it on.  SAS 9.3 will fix this problem by producing graphs for statistical procedures automatically.  This applies only to statistical procedures run in Display Manager; for jobs run in batch, ODS Graphics will still be off by default.

New features in ODS Graphics

In addition to becoming part of Base SAS and being on by default, ODS Graphics will deliver many new features in SAS 9.3.  Here are a few of the ones that I’m excited about: bin control on histograms, side-by-side bar charts, ability to control the order of groups, grouped box plots, interval box plots, ability to produce bar charts from pre-summarized data, ability to draw a line using slope-intercept values, and even pie charts—because corporations still produce annual reports despite Stephen Few’s quixotic ranting against them.

New ODS Graphics documentation

One highlight of SGF was something I didn’t see.  SAS developers Sanjay Matange and Dan Heath have written a book about SG procedures.  A pre-production draft of his book was on display in the Demo Room, but I didn’t get to see it because both copies of the book were stolen!  Julie Platt, Editor-in-Chief for SAS Press, told me that this is the first time a pre-production draft has ever been stolen.  The fact that someone or some people couldn’t wait a few months for the book to be published says something about how eager people are to use SG procedures.

Enterprise Guide 5.1

Enterprise Guide 5.1 which is scheduled for release toward the end of this year (after SAS 9.3, not at the same time) uses the same basic layout and menus as EG 4.2 and 4.3. This is good news. Early versions of EG evolved so rapidly, that users were forced to learn an entirely new interface with each new release.  Starting with EG 4.2, the interface has stabilized. It means that this is a good time to learn EG.  If you’ve been waiting on the sidelines wondering when to jump in, it’s time to get your swimsuit.

Las Vegas

I admit I was sceptical about Las Vegas as a location for SGF, but the city of “Lost Wages” turned out to be a fun and classy location for a gathering of SASites (despite the irony of a bunch of statisticians meeting in a gambling capital). I would not be surprised to see SGF return to Las Vegas again.

Semicolon People: The Video

Here we see the real reason why people attend SGF—because it’s so much darn fun.  If you missed it at the conference (as I did), it’s not too late to see the video produced by Greg Nelson and Neil Howard.  Will  next year bring a “Return of the Semicolon People” video?

5月 072011

In Memorium

Robert D. Jensvold

The Promise of Living

November 13, 1928 to March 10, 2011

During the few weeks when my father was sick, I discovered an instrumental version of Aaron Copland’s “The Tender Land Suite” and fell in love with one particular movement, playing it over and over and over….

I just learned that “The Tender Land” is an opera with libretto by Horace Everett—and the movement I fell in love with is named “The Promise of Living.”  The story is about a family living on a farm in the Midwest during the Depression.  As a young boy, my father lived on his family’s homestead in Kansas—until a massive swarm of locust ate all the crops and the farmhouse burned down.  In other words, he grew up on a farm in the Midwest during the Depression.  Coincidence?

Here are the words:

The promise of living
With hope and thanksgiving
Is born of our loving
Our friends and our labor.

The promise of growing
With faith and with knowing
Is born of our sharing
Our love with our neighbor.

The promise of living
The promise of growing
Is born of our singing
In joy and thanksgiving.

For many a year I’ve known this field
And know all the work that makes her yield.
Are you ready to lend a hand?
I’m ready to work, I’m ready to lend a hand.
By working together we’ll bring in the harvest,
the blessings of harvest.

We plant each row with seeds of grain,
And Providence sends us the sun and the rain.
By lending a hand, by lending an arm
Bring out, bring out from the farm
Bring out the blessings of harvest.

Give thanks there was sunshine,
Give thanks there was rain,
Give thanks we have hands
To deliver the grain.

O let us be joyful,
O let us be grateful to the Lord
For his blessing.

 The promise of ending
In right understanding
Is peace in our own hearts
And peace with our neighbor

The promise of living
The promise of growing
The promise of ending
Is labor and sharing and loving.

Berkeley Opera, April 2010 video by Jeremy Knight copyright 2010 echidnamedia

3月 092011

PowerPoint: A Cautionary TaleWith SGF 2011 fast approaching, I’m sure I’m not the only speaker  hard at work preparing my PowerPoint presentations.  I can remember the old days when speakers brought actual slide trays full of film slides.  I don’t miss the expense of those slides or the amount of room they took in my suitcase, and it is wonderful to be able to fix any typos you may discover at the last minute.  Still PowerPoint has its limitations….

If you haven’t seen Peter Norvig‘s Gettysburg PowerPoint Presentation, then you definitely should. It’s not new, but I just recently learned about it from my son.  Click here to see what is possibly the most entertaining PowerPoint presentation ever created.

2月 192011

Sunil's Top 10 SAS PapersI recently learned about an interesting resource for SAS users.  Sunil Gupta—a SAS Press author and consultant—maintains lists of his favorite SAS papers on various SAS-related topics.  You can peruse these lists on his page on SAScommunity.org.

Here are some of Sunil’s Top 10s:

Sunil’s Top 10 PROC FORMAT/Functions Papers

Sunil’s Top 10 PROC COMPARE Papers

Sunil’s Top 10 SAS Macro Papers

Sunil’s Top 10 SAS Dictionary Tables Papers

Sunil’s Top 10 ODS Papers

Sunil’s Top 10 DATA Step/MERGE Papers

Sunil’s Top 10 SAS Certification Exam Papers

Sunil’s Top 10 SAS Enterprise Guide Papers

Sunil’s Top 10 Pharmaceutical Industry Papers

2月 112011

With SAS Global Forum less than two months away, I am busy putting the finishing touches on my papers.  One of those papers is SAS Macro Programming for Beginners. Of all the conference papers I have written over the years, this is probably my favorite.  Yet oddly, I have only presented this paper once at SGF and that was long ago.  So I am pleased to have an opportunity to dust this paper off.

Don’t expect a lot of advanced macro tricks here.  This paper is exactly what the title says: macro programming for beginners.  It’s a crystal-clear presentation of the basic concepts you need to understand in order to be comfortable in the company of SAS macros.  I can summarize the paper in two sentences that I call “Susan’s macro mottos.”  Here they are:

Susan’s Macro Mottos

Remember: You are writing a program that writes a program.

This is the most important concept to keep in mind whenever you write or debug SAS macros.  If you feel the least bit confused by a macro, repeating this motto can help you to see what is going on.  I speak from personal experience here. This is my macro mantra.

To avoid mangling your macros, always write them one piece at a time.

First write your program in standard SAS code. When that is working and bug-free, then add your %MACRO and %MEND statements. When they are working, then add your parameters, if any, one at a time.  If you make sure that each macro feature you add is working before you add another one, then debugging will be vastly simplified.

If you are lucky enough to attend SAS Global Forum and you want to catch this presentation, look for me in the Milano V-VI room Tuesday April 5, 2011, 10:30-11:20 am.

Click here to download the paper.

1月 202011

I should have posted this a couple weeks ago, but I’ve been hard at work writing papers for SAS Global Forum (more about that in future posts!).

These were the popular posts and pages on AvocetSolutions.com in 2010.

1) What can I use SAS for?

2) Top 10 Reasons to Use SAS Enterprise Guide

3) SAS Papers, Etc.

4) A SAS Horror Story

5) Highlights of SAS Global Forum

Best Wishes for a Peaceful and Prosperous New Year!

1月 052011

The following blog is reprinted by permission of the author Jiangtang Hu. Hu is a SAS programmer living in Beijing who writes blogs in both English and Chinese. (Full disclosure: Hu quoted The Little SAS Book, but I had never met him before he wrote this blog.)

SAS Data Step’s Built-in Loop: An Illustrated Example

Some newbie SAS programmers take SAS as their first programming language ever learned. Sometimes they are confused by the concept of “data step’s built-in loop” even after reading the well-written The Little SAS Book: A Primer:

DATA steps also have an underlying structure, an implicit, built-in loop. You don’t tell SAS to execute this loop: SAS does it automatically. Memorize this:

DATA steps execute line by line and observation by observation.

Programmers could memorize the statement above and apply it well in their programming practices, but still find it hard to get the vivid idea about the so called implicit built-in loop. This post would make it easy.

The following will show an explicit loop example in C++. Note that you do not need to know anything about C++ to get the idea. Suppose that a data file data.dat in D drive holds three numbers


The question is how to (read and) print out these numbers and their sums. Following is the C++ approach (just read the bold section):

#include <iostream>
#include <fstream>
using namespace std;
int main()

int x;
int sum=0;
ifstream inFile;
inFile >> x;

while (!inFile.eof( ))
sum = sum +x;
inFile >> x;

inFile.close( );
cout << “Sum = ” << sum << endl;
return 0;


There is an explicit loop in these C++ codes: while (!inFile.eof( )) . While it is not at the end of infile, the codes above will keep print out the numbers and do the accumulation. The final output is


The following SAS codes produce the exactly same output:

data _null_;

infile “d:\data.dat” end=eof;
input x;
put x;
if eof then put sum=;


Note that SAS codes do not need an explicit loop to reach to the end of file. There is a so called implicit built-in loop.