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:         Tue, 25 Jul 2006 12:11:04 -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 Money)" <clinton.rickards@GE.COM>
In-Reply-To:  <533D18F7F697A04DAA0BDB196E0871C1021D18EC@ALPMLVEM05.e2k.ad.ge.com>
Content-Type: text/plain; charset="us-ascii"

Clint et al,

SAS Component Language cannot be subsumed under the restrictive rules of the datastep. It is the datastep that must be subsumed under the programming freedom that SAS Component Language affords. To fully take advantage of SAS Component Language, a programmer has to accommodate a programmatic paradigm shift. A programmer cannot assimilate SAS Component Language into the restrictive constructs underlying the datastep. After adopting the new SAS programming paradigm, a datastep then becomes just one of many different problem solving tools not the primary one as offered by base SAS. By making this shift, everything a programmer could ever do with the SAS System can still be done as well as a whole lot more, for a tiny example, a read/write loop (datastep) can be paused while other code executes. No need to wait for a step boundary. Classes can be constructed to encapsulate functionality that can be reused in many different situations and anything else that can be done with a fully object oriented programming language. In addition, a programmer has access to modern programming tools like:

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 Money) Sent: Tuesday, July 25, 2006 8:39 AM To: SAS-L@LISTSERV.UGA.EDU Subject: Re: SCL Questions (hijacked thread)

Peter,

Exactly what I seek, and it looks like something that SCL can not do at this time. I will be studying the user-written functions, as that looks promising.

Clint

-----Original Message----- From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU]On Behalf Of Peter Crawford Sent: Monday, July 24, 2006 3:53 PM To: SAS-L@LISTSERV.UGA.EDU Subject: Re: SCL Questions (hijacked thread)

Clint

Do you seek to call an SCL object from within a data step? It seems that your wish has been granted (but I've not tried yet)!

I'm disappointed that Joe hasn't pointed to the SAS9 data step object interface which appears to provide what you seek. I must say, that I don't yet see the problem for which this is the solution, but it is nice to know of the opportunity for design.

See: "Data Step Component Objects and Not Notation" at http://support.sas.com/rnd/base/topics/datastep/dot/

Unfortunately, SAS Institute ~seem~ to have dropped the general instance that might allow you to encapsulate your own classes with SAS/AF, in a way that allowed them to be declared in a data step. "Data Step Component Objects and Not Notation" only documents the Hash Objects and Java Objects..... but, perhaps SCL objects just need a champion like Joe !

Are you "up for it" Joe ?

SAS9.2 will introduce PROC FCMP - a non-AF method for building user-compiled functions - already PROC FCMP has been presented in papers on the support.sas.com web site. Whether this is implemented as demonstrated by the developers remains to be seen. I hope it won't only be available through "data-step-2" - which was more formally named in presentations during "The Last SUGI" as Table Server Programming Language (TSPL for short).

I think the SAS/AF Component Language offers far more scope than what I read in the PROC FCMP paper at http://support.sas.com/rnd/base/topics/datastep/user-written-functions.pdf and the on-line doc (in pdf) at http://support.sas.com/documentation/onlinedoc/base/91/fcmp.pdf or (html) at http://tinyurl.com/j6bop (short for http://support.sas.com/onlinedoc/913/getDoc/en/proc.hlp/a002975052.htm

Peter

On Mon, 24 Jul 2006 14:49:05 -0400, Rickards, Clinton (GE Consumer Finance) <clinton.rickards@GE.COM> wrote:

>Joe, > >I think the question is this: Can one call an SCL module using a function-like syntax? For example: > >data mydata1; > set inputdata1; > newvarA = div_0_scl_module(var1, var2); > newvarB = div_0_scl_module(var3, var4); > newvarC = div_0_scl_module(var5, var6); > newvarD = div_0_scl_module(var7, var8); > > ... MORE DATASTEP CODE ... >run; > >data mydata2; > set inputdata2; > newvarA2 = div_0_scl_module(var12, var22); > newvarB2 = div_0_scl_module(var32, var42); > newvarC2 = div_0_scl_module(var52, var62); > newvarD2 = div_0_scl_module(var72, var82); > > ... MORE DATASTEP CODE ... >run; > >All this example needs to do is accept the dividend and divisor variables, handle the division of the two variables, and pass back the quotient. No DATA statements, etc. > >Clint > >-----Original Message----- >From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU]On Behalf Of Joe >Whitehurst >Sent: Monday, July 24, 2006 2:27 PM >To: SAS-L@LISTSERV.UGA.EDU >Subject: Re: SCL Questions (hijacked thread) > > >Toby, > >Pardon me, but, I think you may be trying to fit


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