Wednesday, 18 November 2009

NOTE: CATS, MISSING and CSV (Thanks For Your Help - Not!)

I warmly welcomed the CAT functions (CAT, CATS, CATT and CATX) when they were introduced in V9. They introduced a much neater style to SAS programs by eliminating the need to LEFT and TRIM our strings prior to concatenation, and the CATX function saved repeated concatenation of separator characters. I've encouraged my clients to adopt these functions (they also work faster than combinations of LEFT and TRIM), but last week I got a call from a disappointed client who was trying to use CATX and getting unpredictable results.

In addition to tracing the source of their problems, I was able to advise them on better ways of doing what they were trying to do (creating a CSV file).

SAS Take World Programming to Court

I noticed a recent press release from SAS stating that they have "filed a lawsuit in the High Court in London against World Programming Ltd for breach of license and copyright infringement relating to the use of SAS® Learning Edition to develop and test its World Programming System software."

World Programming System is a SAS work-alike that offers a cheaper alternative to the licensing of SAS/BASE and other specific modules. It's interesting to note that SAS's case is centred around the mis-use of a SAS/LE license rather than the simple fact that WPS duplicates SAS's language. However, languages cannot be protected in law, so SAS cannot obtain copyright on the SAS language. Hence, it is vulnerable to (cheaper) providers of similar functionality, such as WPS.

World Programming Ltd says the claim has no merit and that they will defend their position. Based in Hampshire in the UK, in close vicinity to one of IBM's offices, the World Programming Ltd web site offers direct sales but no marketing partners. However, they are shown in the IBM PartnerWorld catalog as Advanced Partners. And Minequest offers indicative pricing for the product.

It'll be interesting to see how this case develops and to see if it has any subsequent impact on other tools that use or interpret the SAS language in one way or another, such as Carolina (converts SAS to Java) and ASAP (automatically produces data flow and process flow diagrams of SAS code).

Monday, 16 November 2009

NOTE: SAS-L is Still Extremely Popular!

Despite competition from many sides, it's good to see that SAS-L (now synonomous with usenet newsgroup comp.soft-sys.sas) is still going strong and still providing a great service for anybody with questions or opinions about SAS.

Whilst I know that the newsgroup started in July 1993, I confess I've been unable to find when SAS-L started.

Figures from Google* show 28,000 posts per year over the last three years, possibly down to 25,000 this year. Web sites, newsletters and blogs have come and gone but the fact that SAS-L is still capable of pulling sufficient users to generate 70 posts per day shows that it remains *the* site for SAS knowledge. Google's list of top posters this month includes the names of some familiar SAS-L stalwarts including Ron Fehd, Arthur Tabachneck and Peter Crawford.

Catalist shows there are over 3,000 people subscribed through SAS-L, plus countless others accessing the information through comp.soft-sys.sas.

If you have some information to share, or you seek an answer to a problem that you've been unable to resolve yourself, try posting and be prepared to be surprised at how quickly you get a conversation and valuable help.

* http://groups.google.co.uk/group/comp.soft-sys.sas/about

Radical Action for Radical Times

Back in October I mentioned some SAS publications, including Radical Action for Radical Times by my friend Jonathan Hornby. Jonathan and I go back to 1996 when he first joined SAS and joined the SAS project that I was leading. Following that he gave some cracking papers at VIEWS conferences (the UK's independant SAS user group at that time).

I most recently caught-up with Jonathan at this year's SAS Global Forum (SGF) where he was clearly energised by the process of producing his book (and the fact that all proceeds will go to childrens' cancer charities). I'm very pleased to see that Jonathan recently had the opportunity to write a post for the SAS Publications blog. In it he provides some of the process and thinking behind the book. And inspired by the writing process, Jonathan now has his own blog - Beyond Business - in which he will offer his interpretations of today's news and endeavour to extrapolate its impact upon our business futures.

Jonathan's book is about finding opportunities in times of adversity. Its message applies to all of us. We are not all in a position to directly influence executive strategies, but resonances of Jonathan's message encourage us to think clearly when defining the scope and objectives of our latest development projects. Reduced budgets mean we need to place greater focus on the value of each new feature that we deliver. And it's not simply a case of stripping-out functionality, it's also a case of looking for potentially overlooked features that provide the greater value in the current climate. Realigning development effort to focus more clearly on value-focused projects, changes and features rather than open-ended streams of continual change is crucial. Food for thought.

Wednesday, 11 November 2009

NOTE: Quick Comments in Enhanced Editor and EG

I was rather late to the party in terms of realising that you can quickly comment and uncomment lines or blocks of text in the Enhanced Editor (or Enterprise Guide editor). Simply clicking ctrl-/ will insert /* at the beginning and */ at the end of each selected line. And it took me even longer to figure out that shift-ctrl-/ removes comments.

I'm sure there are many of these keyboard commands but I've never found them listed. Does anybody know where these are all listed? [See the subsequent comments for responses to my question]

NOTE: New Formats in SAS V9.2 Phase 2

Just a small thing, but worth noting nonetheless, SAS V9.2 Phase 2 introduced three numeric formats:

SIZEK - writes a numeric value in the form nK for kilobytes

SIZEKB - writes a numeric value in the form nKB for kilobytes

SIZEKMG - writes a numeric value in the form nKB for kilobytes, nMB for megabytes, or nGB for gigabytes

Useful from time-to-time I'm sure