Why don’t SAS development teams talk to each other?

Total views 1,223 

We all know that SAS develops its software in separate teams, but it can be really annoying when it becomes apparent that several associated teams haven’t planned together how a SAS procedure will work.

I’m going to take as an example PROC IMPORT, which is part of Base SAS, but is also included in SAS/ACCESS. When you run the following program all the variables created begin with VAR, i.e. VAR1, VAR2, VAR3, VAR4, VAR5, etc., and this would also be true for DBMS=TAB and DLM:

PROC IMPORT FILE = "test.csv" DBMS = CSV REPLACE;
  GETNAMES = NO;
RUN;

However, using similar PROC IMPORT code for DBMS=EXCEL, in SAS/ACCESS for PC Files, will create variables beginning with F, i.e. F1, F2, F3, F4, F5, etc.:

PROC IMPORT FILE = "test.xls" DBMS = EXCEL REPLACE;
  GETNAMES = NO;
RUN;

More shocking though is using PROC IMPORT code for DBMS=XLS or XLSX in UNIX or Windows, in SAS/ACCESS for PC Files, as this will create variables with no prefix at all, i.e. A, B, C, D, E, etc.:

PROC IMPORT FILE = "test.xls" DBMS = XLS REPLACE;
  GETNAMES = NO;
RUN;

This inconsistency even extends to using GETNAMES = YES too when there are multiple columns with the same label.

If you want to import a CSV file, instead of an Excel file, or indeed import an Excel file in UNIX, then the subsequent processing step will have to be updated to use the new variable names (annoying!). Why can’t the procedure be consistent, or, at least, have a parameter, like PREFIX=, that allows users to choose the prefix?

Back in SAS 6 there were monumental problems caused by each SAS procedure having to manage their own output destinations, and each one doing it in a slightly different way, so ODS (Output Delivery System) was introduced in SAS 7 to make the output interface separate from the procedures. SAS now need to develop standards for parameters and defaults, just like they did for output!

To vote for this to be included in the next SASware Ballot just click here and vote up the idea!

Warning: you may need to use a desktop browser to vote up the idea! 🙁

Do you have any examples of similar inconsistencies in SAS?

4 newly updated apps about Enterprise Guide, SAS macros, platforms and graphs

Total views 1,677 

I’ve now updated my remaining four apps, which can all be installed from Google Play, Amazon Appstore and Chrome Web Store, depending on your preferred platform.

“EG: How Do You Do This in SAS?” looks at writing and running SAS programs using Enterprise Guide. This paid-for app has had some of the answer text updated, including a link to this blog.

“Macros: How Do You Do This in SAS?” looks at SAS macros. This paid-for app has had some of the answer text updated, including a link to this blog.

“Platforms: How Do You Do This in SAS?” looks at SAS platform-dependencies on Windows, UNIX, Linux and z/OS. This paid-for app has had some of the answer text updated, including a link to this blog.

“Graphs: How Do You Do This in SAS?” looks at generating graphs using classic SAS/GRAPH and the new ODS Graphics. This paid-for app now includes information about how to annotate stacked bar charts in ODS Graphics.

The latest versions of all the apps can be found here.