[comp.unix.questions] VMS shell under Unix

rad@mitre-bedford.arpa (Dick Dramstad) (01/23/87)

Robert,

>I was not aware anywone had written a VMS shell (or would want to) for UNIX.

	Someone has.  At the Fall DEXPO in San Francisco, Convex (the
makers of a Unix mini-supercomputer) showed their VMS environment
running on their C-1 machine.  (It looked like all it consisted of was
a bunch of aliases and shell scripts.)  It complements their VAX/VMS
FORTRAN (source-code) compatible extended compiler.  I'm sure their
reason for doing this was to attract the FORTRAN-coding engineers who
have grown used to VMS and its compiler but could really use the extra
speed the C-1 could give them.

	Comment:  It may not be ideologically pure, but the
combination of an inexpensive fast machine, a familiar-feeling FORTRAN
development environment, as well as access to all those nice Unix
software development aids *must* be commercially attractive in some
quarters.

Dick Dramstad
rad@mitre-bedford.arpa

dalem@hpfcph.UUCP (01/24/87)

[discussion of emulators on various systems, etc.]

I guess I didn't make my point clearly enough.  I said that one could 
write a shell similar to DCL to run on UNIX quite easily, but writing a
shell similar to sh or csh to run on VMS would be tough.  Note that I did
NOT say it would be impossible.  One of the major differences between the
two systems is that with one system you only have to edit /etc/passwd and 
put the name of the shell in; under the other one you must modify 
sys$system:sysuaf.dat, install the shell in some special place, etc.  Note
that this process is not documented (or if it is, it is *well* hidden).

Another thing to keep in mind has already been mentioned - VMS is slow in
doing an equivalent of a fork()/exec() - something that is pretty fundamental
to a shell.  If one looks at the microfiche source for DCL, they are using
an undocumented call to run programs.  If you call DEC and ask about it, they
will deny its existence.  This leaves Joe Hacker with the choice of LIB$SPAWN
or SYS$CREPRC for doing his fork()/exec().  Both are horribly slow.

Note that this information is a few months old - it dates back to Spring 1986,
VAX/VMS V4.2.

Someone noted that one reason there are no VMS emulators on UNIX is that noone
would want one.  A *very* good point.  VMS has some nice features (a good 
backup/restore facility, the ability to rename a directory as a Joe User, the
ability to refer to the current directory and everything below it, etc.), but
has some pretty fundamental problems.

						Dale McCluskey

						{hplabs,ihnp4}!hpfcla!dalem

gillen@convexs.UUCP (01/28/87)

Maybe I should just say nothing but....

The VMS-like shell that you refer to is marketed as the "COVUEshell." I
think that the word COVUE stands for something like the "CONVEX-VAX User
Environment."  Anyway, it's a lot more than "shell scripts and aliases."
It's truly a shell that provides a subset of the commands and features
provided by DCL.

What's it got?  Well, it feels pretty much like DCL.  You can create and use
simple command procedures.  Many of the lexical functions were implemented.
There's an interface to the CONVEX UNIX Batch System so that the SUBMIT
and SHOW QUEUE commands work like VMS.  There are global symbols and
process-wide logical names.  There's even a MLisp file to make Emacs look
close to EDT.

What's missing?  Large, sophisticated command procedures will break.  No
local symbols, system-wide, or group-wide logical names.  Many of the
esoteric command switches are missing.  The concept of physical devices is
pretty weak (nearly nonexistant) but that's to be expected since it's
attempting to map VMS filename syntax to UNIX filename syntax.  Not all
of the DCL commands have been implemented.  Those that do exist enforce
an ordering of switches and arguments like any UNIX shell.

How does it work?  As I said above, COVUEshell isn't aliases and shell
scripts.  It's a shell that parses your DCL command and converts it to
the corresponding UNIX (Bourne shell) syntax.  A child is forked that
performs this command.  Pretty slick, actually.  For the system manager-
type that wants to wean users from VMS into the UNIX domain, there's a
Learn Mode that can be enabled that will display the equivalent UNIX
command that is going to be executed.

COVUEshell doesn't eat your machine alive, either.  It's surprisingly
supple.

I'm not trying to sell COVUEshell (or drum up business for CONVEX).
No, I'm not one of the developers of it, either.  I just use it daily
in the course of my development work at CONVEX.  I'm an old VMS hand 
who got tired of the cryptic UNIX commands.

Overall, if the goal is to give users familiar with VMS a "warm and fuzzy
feeling,"  COVUEshell does the trick.


					Dave Gillen





Credits and Disclaimers
The above opinion is mine and does not reflect the opinion of CONVEX.

DCL, EDT, VAX and VMS, are trademarks of Digital Equipment Corporation.

COVUE is a trademark of CONVEX Computer Corporation.

UNIX is a trademark of the AT&T Bell Laboratories.

"Gillen" isn't a trademark but I'm grateful to Mom and Dad for it.


I can't sing and I can't dance,
	guess I'll have to program for a living.

mouse@mcgill-vision.UUCP (02/05/87)

In article <3700003@hpfcph.HP.COM>, dalem@hpfcph.HP.COM ( Dale McCluskey) writes:
> [discussion of emulators on various systems, etc.]

> If one looks at the microfiche source for DCL, they are using an
> undocumented call to run programs.  If you call DEC and ask about it,
> they will deny its existence.

I didn't know *that*.  Yech.

> This leaves Joe Hacker with the choice of LIB$SPAWN or SYS$CREPRC for
> doing his fork()/exec().  Both are horribly slow.

$IMGACT (or was it $IMGSTA?) does not do a fork/exec, it just does the
exec.  The image being run runs in the *same process* as the CLI
("shell").  This is a major difference of philosophy; under VMS your
process has a CLI in P1 space which runs programs in P0 space, one at a
time.  Under UNIX the shell is running just as if it were a normal user
program is (which it in fact is, or at least was before the recent
getusershell() nonsense came along [mutter, grumble]).

> VMS has some nice features (a good backup/restore facility,

Needed.

> the ability to rename a directory as a Joe User,

UNIX has this, at least modern UNIX.  rename() works on directories
(without needing privilege).  I don't know whether USG UNIX has
anything like rename(), but if they don't, well, that's just another
thing wrong with USG UNIX, no?

> the ability to refer to the current directory and everything below
> it,

Or any directory and everything below it, for that matter.  However,
this would be easy to put into the shell's globbing routines.  Most
applications of it can be better addressed with find and xargs, which
may explain why it isn't there already.

> etc.

You missed just about the only VMS thing I miss:  the debugger.  VMS
had a *good* debugger, certainly better than anything I've seen on
UNIX.

					der Mouse

USA: {ihnp4,decvax,akgua,utzoo,etc}!utcsri!mcgill-vision!mouse
     think!mosart!mcgill-vision!mouse
Europe: mcvax!decvax!utcsri!mcgill-vision!mouse
ARPAnet: think!mosart!mcgill-vision!mouse@harvard.harvard.edu

dalem@hpfcph.UUCP (02/11/87)

> 
> $IMGACT (or was it $IMGSTA?) does not do a fork/exec [...]

And where does one find the documentation on $IMGACT?

> 
> > the ability to rename a directory as a Joe User,
> 
> UNIX has this, at least modern UNIX.  rename() works on directories

s/modern/BSD/ :-)

						Dale McCluskey

						{hplabs,ihnp4}!hpfcla!dalem