Re: UNIX to VMS movement. Help, please !

From: Brian Martin <brianm_at_boar.tansu.com.au>
Date: 27 Apr 1993 03:07:33 GMT
Message-ID: <1ri81l$nf8_at_picasso.cssc-syd.tansu.com.au>


In article AAvzXrh4b6_at_sg3.kbv, oracle_at_vostok.marine.su (Alex Novicky) writes:
>We are going to move our Oracle based system from Iteractive UNIX V386
>to VAX/VMS.
>If you have had an experience of such a motion, please, send me a message with
>your hints & suggestions. Opinions about VAX/VMS shell language will be also
>very greatly appreciated.
>=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>Alex Novicky | no position, I am a free man
>Vladivostok | voice phone (4232)266996
>Russia | e-mail : oracle_at_vostok.marine.su
>

Dosvedanya Alex !

I worked on a project in Oracle/Pro*C for Interactive UNIX on a Compaq 386, where the requirements were changed halfway through to require VAX/VMS instead.

The Oracle SQL*FORMS procedures & SQL scripts & embedded SQL in Pro*C programs all converted easily. Just dump the scripts to ASCII files, transfer to Vax, & reload them. I used a MSDOS PC to download source from Unix using Kermit, & then upload to VAX again with Kermit.

The Pro*C code dealing with Oracle/SQL remained unchanged & compiled cleanly after some minor changes of header file names etc. Luckily we had (as always) kept calls to operating system services isolated in a small number of interface modules. These modules implemented standard interfaces to interprocess communication, spawning subtasks, getting time & date, locks etc. This handful of modules were rewritten in 2 days to use VMS mailboxes instead of Unix FIFO's, use SYS$CREPRC() instead of fork() etc etc etc. If your code has the unix dependencies isolated, it should be quite easy to port to VMS, or any other os.
If your code is liberally sprinkled with Unix-isms like fork(), popen(), system(), select() etc then that is another matter entirely.

The whole conversion of all C & SQL including rerunning all the tests took a couple of weeks, of mostly mechanical work.
Traps that I remember :
1. VMS upper cases command lines, so if running SQL Reports by exec() ing the report writer, beware that parameters passed to the report writer will all be upper case. This took more time to solve than all the mechanical porting of code ! 2. VMS has extensive system of priviledges & quotas. If using fork() etc under unix make sure you VMS accounts have the appropriate privileges to start a subtask etc.

As for VMS script language ...
<start of opinion>
IMHO it is one of the best. Unlike Unix, it is defined in black & white, and behaves predictably. Would you prefer X = X + 1 or set X=expr`$x + 1` ? Trying to write a simple "if" statment in Unix is like playing 20 questions ... which unix ? which shell ? what are you testing ? maybe it's "test" maybe it's if [...] ???

<end of opinion>

Hope that helps.

PS: Just to confuse people, in VMS Help is called HELP. 8-) PS: Once you get underway, read comp.os.vms for assistance with VMS issues.

  • Brian Martin - brianm_at_cssc-syd.tansu.com.au Sydney Australia
Received on Tue Apr 27 1993 - 05:07:33 CEST

Original text of this message