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 (July 2006, week 4)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Mon, 24 Jul 2006 10:56:47 -0400
Reply-To:     joewhitehurst@bellsouth.net
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         Joe Whitehurst <joewhitehurst@BELLSOUTH.NET>
Organization: Analyticum, Inc.
Subject:      Re: SCL Questions (hijacked thread)
Comments: To: "Rickards, Clinton (GE Consumer Finance)"
          <clinton.rickards@GE.COM>
In-Reply-To:  <533D18F7F697A04DAA0BDB196E0871C1021D18E2@ALPMLVEM05.e2k.ad.ge.com>
Content-Type: text/plain; charset="US-ASCII"

Clint,

1) Availability is not an attribute of the Macro Language. I would regard it as an attribute of the poor decision (penny wise, pound foolish) made by someone uninformed about the significant advantages offered by SAS Component language for building SAS-Centric Applications/Systems. 2) Huge perhaps, but not true. Once compiled, SAS Component Language programs can be executed from the command line or a function key like any other SAS Command. And, for building systems, "best practice" would argue that macro definitions should be stored in Autocall Libraries. I have listed the significant advantages offered by SAS Component Language for building SAS-Centric Applications/Systems elsewhere, but I don't think they can be repeated too often. The Antiquated Macro Language completely lacks all the following significant capabilities offered by SAS Component Language:

1. Whole System Debugger--No matter how many modules comprise a system the whole system debugger enables a programmer to step through the code one line at a time, change values during execution, set break points, jump to any point in the system during execution and many other tasks offered by most modern debuggers.

2. Detailed Performance Analyzer--As soon as the first module is compiled, the Detailed Performance Analyzer can report on resource utilization at the individual statement and function level. A programmer can get immediate detailed feedback on resource utilization of various alternative ways of solving programming problems while the programmer is developing a system.

3. Source Control--SAS Component Language comes with builtin source control providing check in and check out capabilities all within the SAS System.

4. Automatic Documentation Generation--SAS Component Language comes with GENDOC which produces HTML-based documentation automatically.

5. No Quoting Issues--With SAS Component Language, there are never any issues requiring masking or quoting of symbolic variable values because the Macro Compiler never "sees" any SCL variables used as Symbolic variables.

6. Datastep Syntax--SAS Component Language syntax is, with a few exceptions, almost identical to Datastep Language syntax which makes the transition from datastep programming to SAS Component Language programming a matter of 3-5 days of the "right" kind of training.

Joe -----Original Message----- From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU] On Behalf Of Rickards, Clinton (GE Consumer Finance) Sent: Monday, July 24, 2006 7:54 AM To: SAS-L@LISTSERV.UGA.EDU Subject: Re: SCL Questions (hijacked thread)

I think the two most important attributes of Macro are 1) it is part of Base (so it is always available); and 2) it can be used in-line is a program. From a programming/work flow perspective, attribute 2 is huge and often overlooked.

Often, a program needs to perform some program-specific logic that is not generally sharable. With SCL, one has to step out of Base sas into AF, write, compile, and store the SCL (after creating the storage location and making it available to the program), and then go back to Base to test and execute. With Macro, the programmer just writes the macro into the program. So with SCL, we now have 2 objects required to run the program (the program and the SCL entry) whereas with Macro we only require 1.

Clint

-----Original Message----- From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU]On Behalf Of Joe Whitehurst Sent: Saturday, July 22, 2006 11:48 AM To: SAS-L@LISTSERV.UGA.EDU Subject: Re: SCL Questions (hijacked thread)

Kevin,

I have just been trying to douse some of the enthusiasm with which some MMMMs have been trying to promote the use of the Antiquated Macro Language, and I believe I have had some small success! Some of the MMMMs at least now mention SCL sort of as an afterthought when suggesting alternative solutions to questions posted by obvious neophytes. I understand and often use the Antiquated Macro Language to generate SCL code. But, I have not seen a datastep pseudo function created by the Antiquated Macro Language that I could not create with SCL. Do you have an example handy?

Joe

> > I don't personally agree with Joe's "religious persecution" of macro in > favor of SCL. I even know of a few a things that macro can do which SCL > cannot do as well (for instance, you can use macros to effectively create > custom data step functions and even generate SCL code


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