View previous topic :: View next topic
|
Author |
Message |
Ashish.Raghav
New User
Joined: 25 Dec 2012 Posts: 1 Location: India
|
|
|
|
My shop is planning to get rid of SAS from mainframes. Does anyone have experience in doing this using a third party product or an in house one? If possible, we would like to convert it to Cobol or Easytrieve. Please note that the SAS codes are running in batch through a JCL. |
|
Back to top |
|
|
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
My guess is that it is not possible, for practical purposes, for several reasons.- Much SAS processing is done by the statistics functions. Rewriting these functions in Cobol can be done, of course, but it would be a major effort by programmers that are very fluent in both statistics and Cobol. The real cost, I think, would be equivalent to several years of SAS license fees.
- You did not mention the cost of transforming SAS data base data to "flat" data sets.
Did whoever proposed removing SAS think about these issues? |
|
Back to top |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8700 Location: Dubuque, Iowa, USA
|
|
|
|
If the SAS code is merely doing reporting using DATA steps, the conversion can be done. It will be costly, though -- at a previous employer I had a SAS program that was converted to COBOL. The COBOL version took a couple of months to develop (as opposed to a week or so of SAS coding) but did replicate the SAS report precisely.
If the SAS code has many PROC statements, conversion would be MUCH more expensive since the PROC functions would have to be duplicated and that could, potentially, require someone with a statistical background to provide assistance.
One option to consider would be World Programming System which sells a product that is supposed to duplicate SAS coding. Another option would be to install SAS on a PC or server and move the SAS processing from the mainframe to that machine. SAS licensing for a PC is much cheaper than mainframe pricing, if cost reduction is the impetus for the switch from SAS. |
|
Back to top |
|
|
vasanthz
Global Moderator
Joined: 28 Aug 2007 Posts: 1744 Location: Tirupur, India
|
|
|
|
Quote: |
One option to consider would be World Programming System which sells a product that is supposed to duplicate SAS coding. Another option would be to install SAS on a PC or server and move the SAS processing from the mainframe to that machine. SAS licensing for a PC is much cheaper than mainframe pricing, if cost reduction is the impetus for the switch from SAS. |
Adding to this it is possible to reduce the licensing cost with sub capacity licensing for SAS
support.sas.com/techsup/technote/ts773.pdf
Having worked only on SAS since I started, I think it will be very difficult to mimic what SAS does through COBOL.
For instance,
SAS can read records from a dataset or USS file and process and write records to a file/dataset all in 7 lines of code. And it provides great debugging options
Code: |
data
infile
input
process
file
put
run |
|
|
Back to top |
|
|
Phrzby Phil
Senior Member
Joined: 31 Oct 2006 Posts: 1050 Location: Richmond, Virginia
|
|
|
|
Totally non-trivial.
Example: variables in SAS are not typed. I can say
and later
(Same variable)
Here's a good one:
Evaluating from the right, if B=C, then A is set to 1, else A is set to 0.
There's plenty more. SAS is interpreted, not compiled. |
|
Back to top |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8796 Location: Welsh Wales
|
|
|
|
As Robert says - look at WPS. I have actually done a conversion from SAS to WPS for all of the SAS and SAS/AF applications
Otherwise it will be a long hard analysis and recode job |
|
Back to top |
|
|
Phrzby Phil
Senior Member
Joined: 31 Oct 2006 Posts: 1050 Location: Richmond, Virginia
|
|
|
|
One very important issue with production SAS is the issuance of warnings and errors in the SASLog that are issued during the run as opposed to a COBOL compiler's messages.
To deal with this, I developed years ago a SASLog filter program with a list of all text to search the SASlog for. All SASLogs in the run were written to a dataset (or file (lol)) and then run thru the filter to produce a report of where such messages occurred with their context.
Filter program's table might be:
Code: |
SEARCH_TOKENS = lowcase(
'invalid/'
|| 'missing/'
|| 'uninitialized/'
|| 'was not found/'
|| 'WARNING:/'
|| 'ERROR/'
);
|
and the report:
Code: |
08/04/2008 SASLog Filter
9:56:16 C:\A - Test\SASLog - TEST - 2008-07-23 112233.log
Search Tokens
=============
error
invalid
missing
uninitialized
warning:
was not found
Token Line# Line -->
========================= ===== ========
missing 2 1450 put 'TEST - MISSING uninitialized';
~~~~~~~
uninitialized 2 1450 put 'TEST - MISSING uninitialized';
~~~~~~~~~~~~~
missing 6 TEST - MISSING uninitialized
~~~~~~~
uninitialized 6 TEST - MISSING uninitialized
~~~~~~~~~~~~~
error 7 ERROR: Execution terminated by an ABORT statement at line 1451 column 1.
~~~~~
error 8 _ERROR_=1 _N_=1
~~~~~
warning: 10 WARNING: The data set WORK.DATA35 may be incomplete. When this step was stopped there were 0
|
|
|
Back to top |
|
|
|