Date: Wed, 29 Dec 2010 18:35:54 -0500
Reply-To: Arthur Tabachneck <art297@ROGERS.COM>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: Arthur Tabachneck <art297@ROGERS.COM>
Subject: Re: Fun With SAS - My Vote for Oddest SAS Programming Language
I totally agree, but also wish that SAS would actually create some extra
functions, based on the ones you mention, but with with each being limited
to accomplish basic functions.
E.g., A lot of confusion would have been avoided over the years if a REORDER
function existed that was really just an extremely limited version of
On Wed, 29 Dec 2010 18:12:19 -0500, Paul Dorfman <sashole@BELLSOUTH.NET>
>I would vote for RETAIN and LAG/DIF, as in my opinion, both are misnamed,
>which alone has fostered endless heap of confusion in generations of SAS
>Since RETAIN is a negative compile time imperative, I would rather have the
>instruction name start with a negative prefix, say, NOSETMISS, NOAUTONULL,
>etc., even if such neologisms roll off the tongue much more awkwardly than
>RETAIN. An oddly shaped keyword is a lesser evil than countless neophytes
>scratching their heads asking what the heck the statement tells SAS to
>Likewise, if LAG had been called QUEUE, a great body of SAS confusion could
>have been avoided - both primary (based on not reading the documentation
>instead trying to ascertain the workings of LAG by code cannibalization),
>and secondary (based, for example, on misguided recommendations to avoid
>using LAG in conditional clauses and such). Perhaps it would be even better
>if the functions were called something like QUEUEVAL and QUEUEDIF (or
>just QVAL and QDIF) - at least then no nonsensical impression would be
>imparted that the functions have anything to do with the "current" and
>And, on the seasonal note: Happy New Year, everyone!
>On Wed, 29 Dec 2010 08:39:58 -0500, Michael Raithel
>>Each and every one of us who eats, drinks, breathes, sleeps, and dreams
>programming has one. It's that one feature of SAS that we think is kind
>of... is very... is somewhat... well, odd. It could be an option, a
>an informat, a function, a call routine, a statement, a PROC, etc. but it
>exists and we scratch our heads and wonder why.
>>If you can relate to this, let the list know your own vote for the oddest
>SAS programming language feature.
>>Here is one of mine:
>>The EXCHANGE statement on PROC DATASETS swaps the names of two SAS data
>sets. So, if it were executed against NEWFILE and OLDFILE, the name of
>NEWFILE would be changed to OLDFILE and the name of OLDFILE would be
>to NEWFILE. Consequently, the names of the two files would be exchanged.
>And, it would happen in the flashing blur of a nanosecond!
>>Here is an example:
>>proc datasets library=work nolist;
>>exchange newfile = oldfile;
>>In this example, we exchange the names of the NEWFILE and OLDFILE data
>sets. The contents of each data set remains the same; it is just that they
>got a name change.
>>The EXCHANGE statement always reminds me of the Metamorphosis Illusion
>(http://en.wikipedia.org/wiki/Metamorphosis_(illusion) ). I think that in
>the unlikely event that I ever use it in one of my programs, I will watch
>very, very closely to see if I can discern exactly how the trick is done:)
>>Happy New Year to one and all!
>>I hope that this suggestion proves helpful now, and in the future!
>>Of course, all of these opinions and insights are my own, and do not
>reflect those of my organization or my associates. All SAS code and/or
>methodologies specified in this posting are for illustrative purposes only
>and no warranty is stated or implied as to their accuracy or applicability.
>People deciding to use information in this posting do so at their own risk.
>>Michael A. Raithel
>>"The man who wrote the book on performance"
>>Author: Tuning SAS Applications in the MVS Environment
>>Author: Tuning SAS Applications in the OS/390 and z/OS Environments,
>>Author: The Complete Guide to SAS Indexes
>>One man's "magic" is another man's engineering. "Supernatural" is a null
>word. - Robert A. Heinlein