Re: SAS code to C code? #6

Sounds like someone from the academia who loves programming.  If all you
have is a hammer, then everything else looks like a nail.

SAS is a powerful tool for practitioners / decision scientists to solve
real-world problems (i.e., sales force optimization, precision targeting,
portfolio management, etc.)  Not for someone who loves to sit around and do
programming all day long.

Susie Li
Sales Operations/Resource Optimization &Targeting
Sanofi-Synthelabo, Inc.
7th Fl. 90 Park Ave
New York, NY 10016


ben.powell@CLA.CO.UK (Ben Powell) writes:

  | BUT, given SAS is itself coded in C, I don't really see the
  | point? Unless the project is simply unworkable in SAS - highly
  | unlikely - why would you think your C code could out perform SAS
  | Institute's? It would be like me going out and attempting to
  | translate Oracle 10g database into C. Biting off more than I
  | could chew.

Good morning,

I'd like to throw out my two cents as a generic response to this
thread since, as Ben mentions, it does come up once in a while.
A couple of points:

[1] For the 100th time on SAS-L I'm going to quote Larry Wall
and say that "languages differ not so much in what they make
possible, but in what they make easy."  While you can probably
work out almost anything in SAS (and it is fine language with
lots to cheer about) it is worth looking at other languages when
you have problems that don't necessarily fit what SAS does very

So what does SAS do well?  I'm going to open myself up to flames
and naively simplify it by saying "SAS works really well when
you have data that can be represented in rectangular tables and
when your processing fits into the nice one record at a time
loop that the data step makes easy."  Can you have other
structures and other ways of going through your data in SAS?  Of
course, and SAS-L has the benefit of learning how to write a
hashing algorithms and other structures from some very generous
experts.  But would you consider it easy, at least in comparison
to using built in language functions like Perl's associative
arrays, or Java collections, or all of the template container
classes that are in standard C++?  What about when you need to
scale to more complex structures like an array of array of
hashes or a multimap of lists?

[2] It has been implied that coding a project in C (or any other
language) means starting from a blank slate and having to code
everything from scratch.  There are libraries available for C
(some for free, some commercial) that you can get just like you
can license additional PROCs from SAS.  For example, I've got a
big book from the Numerical Algorithms Group (NAG) sitting on my
shelf with chapters on functions for Integral Equations, Matrix
Factorizations, Analysis of Variance, Sparse Linear Algebra, and
a whole list of other subjects.  Handling any of these items
would be as tough with Base SAS as it would with a C compiler so
we need to compare similar setups.

It is mentioned every once in a while that writing a program to
do something that SAS does particulaly well in C, Fortran, Java,
Perl, or any other language would take forever.  I think this
misrepresents the case for other other languages since it does
not really compare similar real world development practices.
Again just my two cents, your mileage may vary.

Best regards to everyone on the list,


Bob Burnham

Important:  The Information in this e-mail belongs to Sanofi-Synthelabo Inc.,
is intended for the use of the individual or entity to which it is addressed,
and may contain information that is privileged, confidential, or exempt from
disclosure under applicable law.  If you are not the intended recipient, you
are hereby notified that any disclosure, copying, distribution, or use of, or
reliance on, the contents of this e-mail is prohibited.  If you have received
this e-mail in error, please notify us immediately by replying back to the
sending e-mail address, and delete this e-mail message from your computer.
Susie.Li1 (40)
10/30/2003 5:38:28 PM 136531 articles. 1 followers. Post Follow

0 Replies

Similar Articles

[PageSpeed] 39
Similar artilces about - Re: SAS code to C code? #6:

test #2 #6
ignore ...

Re: ot
A very good all purpose server product of this nature that I have extensi= ve=20 experience with is FirstClass ( * To join/leave the list, search archives, change list settings, * * etc., please visit * ...

Re: Out of Area Calls #17 (Robert Bonomi) writes: > pointed out that the law made *no* such provision for delay on an > -internally-maintained- list, and required that they update my > _customer_record_ with a note that 'customer has ordered us -never- to > make marketing calls to him', and the date/time. Three days later, > somebody "didn't read" the notes, and called me. I promptly demanded > a supervisor, had them read the account 'notes', and asked if they > wanted to pay the statutory $500 minimum, or if I needed to go to &g...

Re: Creating a new variable? #4
Hi, Yes, you can do it easily. This is one solution: Proc sort data=3DTab1; by Id; run; Data Tab1; set Tab1; by Id; retain INC 0; if first.Id then INC=3D0; Inc=3Dinc+1; run; Le 16:01 7/02/2006, vous avez =E9crit: >Hi > >I have alarge data set in which I have a unique ID, for each id there are= 49 >observations, now I want to create a new variable which would be equal to 1 >for first observation and increment in steps of 1 to 49 and then reset to 1 >and continue. is there a way of doing this? > >thanks > >Vj Alexandre BAUDRY Unit=E9...

RE: Question to Kerry Main
> -----Original Message----- > From: JF Mezei [] > Sent: June 30, 2007 8:31 PM > To: Info-VAX@Mvb.Saic.Com > Subject: Question to Kerry Main >=20 > Mr Main, your arguments on c.o.v. are often rebutted as part of normal > debating process. (And you rebutt other arguments with your own > responses). >=20 > In real life, do you also find customers and potential customers > having > similar questions ? Or do you conclude that we, in c.o.v. are a > sepcial > bunch living in a totally different universe without a clue...

Re: Really Frustrating -9628 Errors #2
On Thu, 2005-11-17 at 14:23 -0500, Adam Tauno Williams wrote: > We've written several Informix stored procedures that return MULTISET as > the type; the application than does a SELECT a,b,c FROM > TABLE({procedurename}({parameterlist...})). And these WORK!!! But only > for awhile, the next day, or after a couple of days suddenly they stop > working - and they haven't been changed. They simply start to bomb out > with a -9628 (type not found) error for any SQL statement like the > above. > We are using "IBM Informix Dynamic Server Version 10.00...

Re: String question #6
As Howard example shows the last observation passed incorrectly, Is there a reason why the third observation(123 12) did not pass incorrectly. Is that a length issue or something different? On Thu, 1 May 2008 09:50:19 -0400, Howard Schreier <hs AT dc-sug DOT org> <schreier.junk.mail@GMAIL.COM> wrote: >On Thu, 1 May 2008 08:16:37 -0400, Richard A. DeVenezia ><rdevenezia@WILDBLUE.NET> wrote: > >>Dominic Mitchell wrote: >>> input var1 var2 $6.; >>> cards; >>> 99 9982 >>> 998 998 >>> ; >> >>The INPUT statem...

Re: More SQL simplification
Roger: In your version of the query, SAS 'remerges' summarized values back to the original dataset. It actually works the same as the query that joins a view to the original dataset. The simpler form of the query does not in general across different flavors of SQL. Sig -----Original Message----- From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU] On Behalf Of Roger Lustig Sent: Tuesday, September 14, 2004 7:12 PM To: SAS-L@LISTSERV.UGA.EDU Subject: Re: More SQL simplification Pat: You've answered your own question! No reason you can't do a GROUP BY while selecting colum...

[ANN] Book "The Boost C++ Libraries" available online
There is now an English translation available of my book about the Boost C++ libraries: <> The link has already been sent to the Boost mailing lists (see for the announcement). As this book is an introduction to the Boost C++ libraries it might be interesting for C++ developers around here who haven't worked with the Boost C++ libraries yet. Boris ...

Re: question about data values #11
Howdy Toby - The V9 compress function has new useful modifiers to handle all numbers, all letters, typewriter characters etc. In this case D is for digits 0-9 and K is for Keep (rather than compress). 10 data _null_ ; 11 x = 'A1234' ; 12 y = input(compress(x,'','DK'),5.0); 13 put x= y= ; 14 run ; x=A1234 y=1234 regards as always - Paul Choate DDS Data Extraction (916) 654-2160 -----Original Message----- From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU] On Behalf Of toby dunn Sent: Monday, June 27, 2005 4:41 PM To: SAS-L@...

This is an autoresponder. I'll never see your message. ...

Re: array label question #9
Here's another approach. conceptually similar to the previous posts..... data _null_; %let colmns = ; do yr = 2007,2008; do qtr = 1 to 4; do channel_cd = 1 to 3; do Incentive_Type = 1,2; call symput ('colmns', symget ('colmns') || ' ' || '_' || catx('_',yr,qtr,channel_Cd,Incentive_Type)); end; end; end; end; run; data transpose (drop = yr qtr channel_cd incentive_type contacts) ; format &colmns best32.; array all [2007:2008, 1:4, 1:3, 1:2] _all_; do until(last.indiv_id) ; set have; by indiv_id; all{yr,qtr,ch...

The eponymous Code in C++.
Hi, Although it was easy enough with pen/paper, I've put together an electronic version of the algorithm for the eponymous Code in Soft Concern's "The Code", and I thought I'd post it here in case anyone was interested. It's in C++, takes a string as input, and returns two strings, the first containing the result of applying the decryption operation to the input string, the second containing the result of applying the encryption operation. (For anyone not subscribed when the earlier postings on "The Code" were going on, the encryption operation takes an up...

Re: How to obtain FrameTicks List from an existing Plot?
t = Range[5]; p = ListPlot[t, Frame -> True]; FrameTicks /. AbsoluteOptions[p] Bob Hanlon ---- Nasser Abbasi <> wrote: ============= I have a need to obtain the FrameTicks list from an existing plot. The reason I want to do this, is because I need to slightly modify the ticks, and then redraw the plot with the new Ticks. This would be much easier than having to generate the Ticks myself in the first place. This is an example: t = Range[5]; p = ListPlot[t, Frame -> True] But when I look at FullForm[p], I see no list would would look like the...

Re: [HP3000-L] Save and Re-Use a File Equation
Jay writes: > What I'd like to do is to save the file equation with the parameters the > user entered, and then re-use that file equation after the checks are > printed. Like this: > > 1. Enter printer name, etc for reports > 2. Submit job, which does: > a. file report;dev=<parameters from 1 above> > b. run program A > c. file print=checks;dev=lp;forms=mount checks > d. run program B to print checks > e. file report;dev=<parameters from 1 above> > f. run program C to create report to print on printer ...

Re: Question re Canon iP1500 #2
Been busy for a few days, so didn't get a chance to get back here. But need to ask about your message below. "zakezuke" <> wrote in message > > Do y ou mean I could fix the problem of the waste ink absorber myself? I > > thought you can't see it by just looking into the printer > > The waste counter you can reset with the service tool QY9-0066 as Tony > explained. You can get it here >

MMI in Visual C++ .Net
Hello everybody I'm a newbie to visual c++ .Net, my first question is : can i develop a Man Machine Interface of quality just like VB using VC++ ..Net ? , i tried to modified for example the properties of TextEdit control, but VC++ .Net doesn't offer many properties, we can't modify for example colors etc ... My second question is how can i connect to a database using ADO ..Net ? Thank you very much in advance Off-topic. (Hicham habti) writes: > Hello everybody > > > I'm a newbie to visual c++ .Net, my first quest...

Re: own package doesnt work correctly?
Martin, Symbols like x and I are set up in the package`Private` context once you put the definition inside the package. So they won't match Global`x or Global`I in a notebook using the package. You could either add the Global` context to these symbols in the package, or better yet pass them as parameters to the rule. partintrulx[x_,I_]:= ..... David Park From: Martin [] Hello, I started to - try to - use packages written on my own, using the Notebook editor, marking the cells as initializa...

Re: Now That They're Mounted ... #9
Correct me if I'm wrong, but MPE does not provide automatic failover in the event a controller dies. Yes, you can connect 2 controllers, but one won't take over for the other in the event of failure. That's an important distinction to recognize. John Lee Vaske Computer Solutions At 03:35 PM 8/18/04 -0400, Gilles Schipper wrote: >At 03:20 PM 2004-08-18, you wrote: >>O.K. two brain farts. Can't have more than 7 logical drives. > > >The mod20 supports up to 8 luns or logical drives. > > >>And you can't split the SCSI, (and u...

Re: Apple's iPod Raises Bar For Digital Music Players
Hey- Check out this great site that is giving away totally FREE iPods! I've joined and I think you should as well. It's a completely legitimate offer, and this company has already given away $4 million in FREE stuff! All you have to do is join, complete an online offer, and refer friends to do the same. That's it! Here is my referral link. To help me get my iPod, click this exact link to join, or copy and paste it into a browser: Monty Solomon wrote: > Apple's iPod Raises Bar For Digital Music Players > By W...

US-TX-Austin: Sr. Package Development Eng., 6+yrs packaging engineering exp; Per (45343032409)
US-TX-Austin: Sr. Package Development Eng., 6+yrs packaging engineering exp; Per (45343032409) ============================================================================================== Position: Sr. Package Development E Reference: SMC01979 Location: Austin TX Duration: perm Skills: BSEE/MSEE preferred with 6+ years Packaging Engineering experience. Background crafting Package roadmap and with hands on experience in package model development. Experience in memory interface modeling and establishing ...

Re: Call System in UNIX #7 1547219
Dear SAS-L-ers, Michael D. Ross posted the following interesting question: > Hi All, > I'm having trouble with the following code in Unix. It > creates the "dump.txt" file in the specified directory; > however, it has 0 records in it. Any suggestions? > > > > %let progs = /temp/mydir; > > data _null_; > command= " ll &progs *.sas > &progs/dump.txt"; > call system (command); > run; > Michael, I see it! It appears that you are falling prey to a subtle problem in your DATA _NULL_ step. Your problem is with the spac...

Help: FileMaker Developer 6
Hello, I have been developing FileMaker databases for a few years now and was recently hired to work on an older FileMaker 6 database. Unfortunately, I can no longer find my original FileMaker Developer 6 CD. After having exhausted my search to buy a copy on Craigslist, eBay, Amazon, and Google I am looking for some help. Is there any place that is still selling it? If not, could some kind soul help out their fellow man and provide a disk image of the FileMaker Developer 6 CD for me? Thanks, William On May 26, 12:18 pm, wrote: > Hello, > > I have been...

Re: New to SAS #2
Here is a very good paper that covers "everything" about learning more about SAS. It lists many resources of varying types, including SAS-L: -----Original Message----- From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU] On Behalf Of Sent: January 14, 2008 3:11 PM To: SAS-L@LISTSERV.UGA.EDU Subject: New to SAS I'm new to SAS and Data Extraction generally, does anyone have any hints, tips or advice that might be useful? I'm interested in: related websites, programming languages, programmes, b...

Re: Thanks Harry Re: SAS Data Step Qn.
Use Eric's solution, it's cleaner. -----Original Message----- From: []On Behalf Of Jeff Morison Sent: Tuesday, August 09, 2005 3:03 PM To: Droogendyk, Harry; SAS-L@LISTSERV.UGA.EDU Subject: Thanks Harry Re: SAS Data Step Qn. This worked out perfectly Harry, thanks very much. --- "Droogendyk, Harry" <harry.droogendyk@RBC.COM> wrote: > data a; > input HRN : CDATE : date7. STAGE : > start : stop; > format cdate date9.; > cards; > 609 21JUL03 2 307 ...