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 (June 2005, week 3)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Thu, 16 Jun 2005 19:45:44 -0400
Reply-To:     Lou <lpogodajr292185@COMCAST.NET>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         Lou <lpogodajr292185@COMCAST.NET>
Subject:      Re: When to use Macro (was Things to ponder when you program)
Comments: To: sas-l@uga.edu

"Richard Ristow" <wrristow@MINDSPRING.COM> wrote in message news:5.1.0.14.2.20050615161856.07222ec0@pop.mindspring.com... > At 02:04 PM 6/15/2005, Dianne Rhodes wrote: > > Toby Dunn wrote : > > > >>Ian hasn't even written about this. > > > >Certainly [Ian] has said that you shouldn't use macros until you are a > >proficient programmer, and that macro should be used when you find > >repetition in your code. In order to see the pattern, you usually > >have to write the code first! Even when I know I want to make a > >macro, I write SAS open code first, test it, make sure it works. > > Most of the discussion on when to use macros has been about > 'encapsulating' macros, those that package a section of code for > repeated use. There've been many caveats, quite rightly. Among others, > macros are always harder to write and understand than the corresponding > open code. And, for repeated use by others, macros require the same > robustness of design and accuracy of documentation of any distributed > code, usually several times as hard as making the code work reliably > where it was first intended. > > It's worth mentioning the other uses for macros, which may justify > writing a macro that's used as rarely as once. > > One is to create logic that executes steps repeatedly, or > conditionally. I recall one that repeatedly executed some SQL code on a > file of directional relations between cases, to implement the rule that > if A>B and B>C, then A>C; it repeated until a step added no new > relations.

Well, maybe, but using an indexed dataset and the KEY option of the SET statement would also get the whole chain. Personally, I think it's easier to write and easier to understand. Also, easier to stop the action if the chain is circular - what would that macro do if the file contained A>B, B>C, C>A? But maybe that's just me.


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