|
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
|