From VMS to UNIX
Gary Samuelson
garys at bunkerb.UUCP
Sat Oct 1 06:08:53 AEST 1983
The discussion of moving from one OS environment to another
(TOPS-xx -> UNIX) has prompted me to add my two bits worth.
I have recently moved from a VAX/VMS environment to a VAX/UNIX
environment, so I think it safe to say that the difference is
in the software.
So far (approximately 6 months) I prefer VMS.
Several reasons come to mind, without even trying hard:
1. Useful documentation. The VMS manuals are complete, consistent,
and indexed. For those of you who don't know, in this context
'index' means an alphabetized list of topics, with references
to volume(s) and page(s) where each topic is discussed. Yes,
I have seen the permuted index at the beginning of the Unix
Programmer's Manual; I'm not impressed. To use the Unix
Programmer's Manual, I have to have prior knowledge of either
the name of the command which does what I want, or the wording
of the one line description of that command. The problem is
compounded by the fact that the manual I have is a hybrid of
'3rd Berkeley Distribution,' 4th Berkeley Distribution',
'7th Edition,' local stuff, and who knows what else. In general,
if I don't already have the information I need, it's hard to
find it in the manual. Not all the commands are documented
in my manual, anyway.
2. On line help information. And, yes, I know about the 'man'
command. With many of the VMS utilities, there was a 'help'
facility which could be used while running that utility.
Furthermore, you could specify what topic and subtopic and
subsubtopic you needed help on. Of course, if you have
already memorized the manual, you don't need help, and would
not find this a useful feature.
3. Meaningful status messages. VMS features 4 part status messages,
each of which can be individually disabled, if you're fond of
terseness. The four parts are facility, severity, mnemonic, and
text. Facility is the name of the software which discovered the
error, severity is how bad it is (success, information only, warning,
severe, fatal), mnemonic is an abbreviation (such as NOTFOUND), and
text is a descriptive phrase. The other day, using Unix, I spent an
hour trying to find out what 'error code 1' meant. It turned out
to mean a multiply defined symbol. When 'cp' can't open a file,
I need to know why not. Was the name mispelled, is it protected,
is the device offline, is the device protected, is the device
broken, is the device full, etc. etc.
4. Meaningful status codes. This is really the binary equivalent of
the status message. The low 3 bits of the status returned by
VMS functions indicates whether the function was completed
successfully or not (this translates directly into severity,
above). Conveniently, odd numbers always meant success, but
could mean success with additional information.
5. Meaningful file extensions. With VMS, you don't need to have
a program called 'file' to 'guess' what type it is; you know
by looking at the extension. A source file for the BASIC
language ends in '.BAS'; for FORTRAN, '.FOR' etc. An object
file ends in '.OBJ'. A command file (script in Unix) ends
in '.COM'. Unix's 'file' utility has called scripts 'C'
source text on occassion. By the way, what's the difference
between 'English Text' and 'Ascii Text'? As an added benefit,
if you invoked the Fortran compiler, it knew it was supposed
to look for a file whose name ended with '.FOR', if no
other extension was supplied.
6. Consistent command formats. Qualifiers always start with a
slash. Filenames always consist of alphanumerics (yes, I've
seen the arguments about funny characters in file names, and
I know they are occassionally useful). Qualifier names can
be more than one character long, so you don't have to remember
whether '-o' or '-O' is what you want.
7. Automatic version numbers. Each file has a version number
associated with it. When you make a change, the version number
is incremented. When you specify a file without an explicit
version number, the latest version is used, which is usually
what is desired. When you delete a file, you must specify
a version number, so that files don't get deleted accidentally.
If you make a change which turns out to be incorrect, the
previous version is still available.
8. Abbreviations. Both command names and qualifier names could
be abbreviated to the minimum required to be unique. The full
name could be used in a command file, both to aid a future
reader and to prevent ambiguities when a new command is added.
9. User defined commands. Under VMS, I could define a command to
replace any of the system commands, and it didn't require a
dollar sign in front of it, it didn't require a whole file
(minimum size 1 block), and it didn't take up room in my directory.
10. Separate protection bits for write and delete. I could keep from
deleting a file, while retaining the ability to modify it.
Useful in conjunction with version numbers.
11. Consistency. This is probably the biggest, without which some
of the problems above could not be fixed. Only one company
supplies VMS, as far as I know. You can add your own modifications,
but no one else is expected to consider them part of VMS.
Since VMS comes from only one source, there is the possibility
of vendor support.
Those are advantages, in my opinion, of VMS over UNIX. And yes, I
do know that UNIX has advantages over VMS; I know about pipes, and
subshells. But so far I prefer VMS.
Gary Samuelson
More information about the Comp.unix.wizards
mailing list