LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (October 1997, week 1)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Mon, 6 Oct 1997 17:19:43 GMT
Reply-To:     Jon Seltzer <seltzerjd@PHIBRED.COM>
Sender:       "SAS(r) Discussion" <SAS-L@UGA.CC.UGA.EDU>
From:         Jon Seltzer <seltzerjd@PHIBRED.COM>
Organization: Pioneer Hi-Bred International, Inc.
Subject:      Re: Abusing SAS Macros

Correction: Actually after counting I found only eight messages from SAS-L that were not posted in the news group. eltzerjd@PHIBRED.COM (Jon Seltzer) wrote:

>Making Gross generalizations and being correct most of the time is >what I get paid for! The reason why this thread has generated so much >controvery is because there are a large number of SAS programmers that >have been seriously hosed by the code generated from novice >programmers, or Data based programmers comming into SAS that have >abused the Macro and SQL language. Ultimately this abuse results in >hundreds of thousands or millions of dollars lost for the people that >employe SAS programmers, and severe frustration for the programmers >hired to clean up other peoples programming messes. I did not >recieve your message on SAS-L. I found your message on the news >group. There are about 20 or so messages on SAS-L that are not posted >in this news group. Many of these messages provide concrete examples >of Macro and SQL abuse including one of mine. Ultimately if Macro >Abuse and SQL abuse did not result in a large amount of money being >lost no one would care. The fact is Macro and SQL abuse is a >significant problem where many of the culprets that do it, do not >care. Ultimately their actions will reflect negatively on SAS >programmers as a whole, increasing the probablity that a company may >switch to other statistical packages or not choose SAS from the start! >Don Stanley <don_stanley@ibm.net> wrote:

>>How about calling a halt to this thread. All its doing for me now is >>helping generate a list of people I don't ever want to employ. Its >>absurd to argue against using features of a product just because you >>don't like them which is how this trend is going, there's little data >>being put forward to substantiate these comments like below -- for >>instance I didn't see Roger state anywhere below that his client had no >>advanced SAS expertise to look after these macros, hes been attacked >>just for using them. I suspect that his approach is like most >>consultants -- get the best thing for the client within the constraints >>imposed by the clients -- which may mean changing the appraoch to the >>same problem for different clients.

>>SQL, macro, data step are all incredibly important to SAS and those of >>us who use SAS in a software development role combining data from many >>sources taking advantage of macro code to trigger code that changes >>according to events that may have occurred are constantly thanking The >>Great Ones at Cary for the sheer flexibility and power of SAS. Otherwise >>we'd all be using something like C++ and DBMS database SQL. Or worse >>Microsoft Access. Which incidentally generates SQL through those pretty >>front end query windows. SQL? now why would we want that!

>>Bah, I thought I was bad getting people wound up about viewtable! Macros >>have been around since release 82.4. The original poster had some valid >>points which mostly come down to beginners getting carried away in my >>experience. But they are an integral part of the base product and SQL is >>just SAS remaining commercially viable by supporting an industry >>standard tool. Its a good SQL, its like any tool, don't use it if you >>don't understand it. And don't make gross generalisations about the >>motives and skills of people who do.

>>Don

>>Seltzer, Jon D. wrote: >>> >>> What you are doing as a consultant is making the company you are working >>> for completely dependent on you: Guaranteed Employment. From your >>> perspective: a meal ticket is a meal ticket is a meal ticket. The party >>> is going to start when you are gone(If ever!), and they need to modify >>> your abundant macro code for subsequent analyses. With the volume of >>> macro code you are suggesting you are writing, I suspect documentation >>> will not be enough do prevent substantial down time and money lost as >>> another SAS programmer is hired to figure out what you did. The worst >>> case scenario after you leave (If ever) is all your work is scrapped >>> because as time progresses it becomes outdated, and it will take too >>> long to figure out and modify. Even in this scenario you end up >>> providing more work for SAS programmers which benefits us all. Thank >>> you! >>> Seltzers Monthly predictions: >>> Yes: Some of the time. >>> >>> Seltzers profound mathematical conclusion of the month: >>> If you say the words 'New' 'Miracle' real fast your saying the word >>> 'Numerical'!!!!! Wow! >>> >>> >---------- >>> >From: Xlr82sas[SMTP:xlr82sas@AOL.COM] >>> >Sent: Thursday, October 02, 1997 11:38 PM >>> >To: SAS-L@VM.MARIST.EDU >>> >Subject: Re: Abusing SAS Macros >>> > >>> >As a consultant, I use the macro language heavily to generate code. I >>> >sometimes >>> > use the noreservedb and mprint option to 'compile' the macro and give the >>> > client '%' and '&' free code. You do need a reasonable code formatter to >>> > structure the mprint code. >>> > >>> >Generally it is good idea to declare most externals as macro variables. >>> > Externals are Inputs, Process ( hardcoded conditions ) and Outputs. As you >>> >try >>> > to put your objects ( macros ) together you may come to the realization that >>> > other key variables need to be macro variables, ie program names, >>> >dependencies >>> > and error codes. >>> > >>> >One one job, I was able to convice data managers to build macro shells. These >>> > shells would contain macro keyword arguments with all externals and process >>> > variables defined. All I had to do was put the code between the macro and >>> >the >>> > mend. The shell would even update a metatable with the inputs, process and >>> > outputs. Both the macro and a front end could update the metadata. If the >>> > keyword argument umeta was set to yes then the macro keyword arguments would >>> > be overwritten by the meta-table. It was a nice table driven methodology. >>> >The implementation was simple, mainly because of the new '%syscall set' >>> > function. >>> > >>> > >>> > >>> > >>> >Roger J DeAngelis >>> >CompuCraft Inc >>> >XLR82SAS@aol.com ( Accelerate to SAS ) >>> >http://members.aol.com/xlr82sas/utl.html >>> >

>>-- >>------------------------------------------------ >>Don Stanley >>Senior Consultant and Director >>Sysware Consulting Group >>Email: don_stanley@ibm.net

>>Author: Beyond The Obvious With SAS Screen Control Language

>>Box 14554, Kilbirnie, Wellington, NEW ZEALAND


Back to: Top of message | Previous page | Main SAS-L page