[net.usenix] Favorite operating systems query

sbs@valid.UUCP (06/14/86)

I recently learned, via a Datamation article, that Honeywell is de-supporting
Multics, and that Honeywell's customers are screaming and hollering.  The
reason this was interesting to me is that Multics, like UNIX(TM), is a
``cult'' operating system, by which I mean that it has a hard core of
rabid, fanatical defenders.  (Of course, none of us on the net is a drooling
OS groupie; we all have sound technical reasons for preferring some
systems to others.)

For the last few years I've been a UNIX (ahem) user/fan/implementor, but
recently my work -- I'm maintaining a schematics editor -- has led me
into VMS.  Now, to me, VMS is "just another vendor-supplied operating
system."  I don't like it as well as I like UNIX, but then again, I
don't know it as well as I know UNIX, either.  However, I've recently
heard that there is a breed of VMS partisan every bit as intense as
the most stalwart UNIX die-hard.  So, finally to get round to the point,
I have some questions:

	1) For the VMS fans out there: what's your favorite feature(s) of
	   the system?  Why do you like it?  How does it help you?

	2) Likewise UNIX and Multics fans.  (How do I get to a Multics
	   site?  I'm not on the MILnet...)

	3) For anybody out there: what's your favorite system, or most
	   fondly remembered, or the one you were most fanatical about?
	   Why did you like it so much?

Part of my reasons for posting are individual: I'm interested in learning
more about VMS so that I can do my job better.  But I'm also interested
in the sociology of the thing, and if you are too, post or mail me.


"After changes upon changes, we are more or less the same."
					-Paul Simon.
S.

(TM)UNIX is a trademark of AT&T Bell Laboratories.
VMS is a trademark of the Digital Equipment Corporation.

larry@geowhiz.UUCP (Larry McVoy) (06/16/86)

In article <339@valid.UUCP> sbs@valid.UUCP (Steven Brian McKechnie Sargent) writes:
>
>	1) For the VMS fans out there: what's your favorite feature(s) of
>	   the system?  Why do you like it?  How does it help you?

I think that the main complaints with Unix from VMSites are

1) the BSD fortran compiler is the worst excuse for a compiler the world has 
   ever seen (reports of 4 to 400 times slower than VMS fortran).

2) Related to (1), VMS fortran is a SUPERSET of ANSI Fortran 77 *and* is the
   defacto scientific standard.  There are very few scientific research 
   centers (remember science includes physics, math, chemistry; computer
   science is only questionably a science) that don't have Vaxen running VMS 
   with the VMS fortran compiler.  A great deal of established software depends
   on the extensions provided by DEC.

3) Likewise with DCL (Dec Command Language).  It's like sh with more obscurity.
   *Large* DCL programs exist (my father who is a physicist has a modelling
   program with an enormous dcl frontend, like 10-15K lines. Unfortunately, 
   stuff like this is not uncommon).  This could be solved by writing a dcl-like
   shell.

4) EDT - the VMS screen editor.  Somebody already fixed this by writing an emacs
   interface to emulate EDT.

5) Real time support.  Other than Masscomp's RTU, VMS is the only company that I
   know of which supplies real time support.

[From here on out they are my personal complaints; 1-5 were complaints that I
 have to listen to everytime I bump into a VMS person.  They are as of yet
 blissflly ignorant of #6].

6) File system.  Why, oh, why, must the Unix file system be so fragile?  VMS
   never loses your files.  And it's faster to boot up.  I have no idea what
   the difference is in design but somebody ought to have a look & see what
   could be done.

7) IPC. Shared memory, sockets, pty's, pipes, ioctls all over the place.  And
   the only one that's not been hacked in as an after thought is pipes. IPC in
   Unix bytes the giant weenie.  Talk to the guys at CMU, they've got all kinds
   of literature defending Mach based on this (and other design) problems.

8) Robustness.  VMS almost *never* crashes.  Unix crashes all the time.  You
   damn near can't survive without source because you're always fixing 
   something.  DEC has never handed out VMS src.  Unix is the ultimate example
   of "the quick fix solution"; those solutions always turn out to be wrong
   in the long run (trust me, this is the voice of experience talking. Sigh).

9) Related to (7), networking support.  Sockets are gross.  This isn't just
   my opinion, ask the DoD what they think of sockets.  Remote filesystems,
   remote devices, etc, are all being kludged in by every OEM in the field.
   Have fun trying to make them all work together.  Design?  We don't need no
   stinkin' design, we got 10,000 lines of code.

OK, now that I've got all the fanatics foaming at the mouth, let me throw in my
disclaimer.  I've been a Unix fanatic myself for the past 4 years.  I'm just
not blind to the problems that exist in Unix.  As a research vehicle,  as a 
development system, it's the nicest thing I've ever used.  However, I have 
real problems recommending Unix as a "users" system.   It needs a nursemaid
to survive properly.  Read net.mail - every time the postmaster at some large
site leaves his job the mail gets all fouled up.  What happened to programs
that run themselves, without being nursed?  Unix has too much folklore & 
guru-ness about it to be accepted into the mainstream.

-- 
Larry McVoy
-----------
Arpa:  mcvoy@rsch.wisc.edu                              
Uucp:  {seismo, topaz, harvard, ihnp4}!uwvax!geowhiz!larry      

"Just remember, wherever you go -- there you are."
 	-Buckaroo Banzai

mel1@houxa.UUCP (M.HAAS) (06/16/86)

VMS, Multics, MVS, CMS, Kronos, TOPS-10, Ibsys, etc. are all
"just other vendor supported products".  They all have been
or will be "de-supported".  It doesn't matter a bit what
is good or better about any of them (unless, of course, there
is a good idea or two there to incorporate into the portable
operating systems - UNIX and PC-DOS).  To have a favorite
among these is to be stuck with just what the single vendor
sells.  Fine, if that suits your purposes now, but will it
in the future?  Is it worth your professional future to be
expert in one of these albatrosses?

They have a saying in real estate, "Value is measured by three
factors: location, location, and location."  A similar saying
in computing is, "Value is measured by three factors: portability,
portability, and portability."
   Mel Haas  ,  odyssey!mel

tuba@ur-tut.UUCP (Jon Krueger) (06/17/86)

In article <339@valid.UUCP> sbs@valid.UUCP
(Steven Brian McKechnie Sargent) writes:
>	1) For the VMS fans out there: what's your favorite feature(s) of
>	   the system?  Why do you like it?  How does it help you?

My favorite VMS feature is its all-around functionality: you can put batch
streams, high-end number crunching, transaction processing, real-time data
acquisition and process control, document processing, graphics, simulation
and number crunching, database management, casual use and computer
education, highly interactive applications like spreadsheets and exploratory
data analysis, software developement, expert systems, network interface, and
so on through the entire gamut of applications ON A SINGLE MACHINE!

With networking and clustering, you can put all of the above on a single,
homogenous, manageable network or cluster.  All your code will execute on
any node.  Needs for speed can be balenced against price of a given node.
In other words, VAX is a good general-purpose computer, and VMS is a good
general-purpose operating system.  You can buy one box, support your
applications and users under one environment, and stop there.  The costs of
fragmenting applications and user communities are just too high to justify
any other way of doing business.  The costs of maintaining a heterogeneous
network are currently high, but may drop someday, which will change the
picture.

Other bright stars in VMS world: the debugger, sharable object and image
libraries, the BACKUP, INSTALL, MONITOR, SYSGEN, ACCOUNTING, AUTHORIZE
utilitiies for system management and tuning, the common calling standard
(call a C run-time library routine and get printf from FORTRAN, COBOL,
assembler, PASCAL, run a mixed FORTRAN-C or FORTRAN-COBOL shop), the
transparency of file access in a DECnet.

>	2) Likewise UNIX  fans.
My favorite Unix feature is vendor independence: getting cheaper, faster
hardware to execute all my software.  VMS cost DEC a lot, and DEC has to
charge this back to its customers.  Will Unix development and porting
continue to add functionality to Unix faster and cheaper than DEC's hardware
innovations can support cheaper copies of VMS?  Probably.  Right now, I see
advantages to either system.

Much of the chances for and rate of a swing to either system depends on the
vendor.  If DEC comes out with more VAX options, gets more competetive on
hardware pricing, drops the BI bus fascism, and continues enhancing VMS, and
ATT continues to give non-3B2 boxes second-class citizenship as Unix hosts,
then Unix may end up being known as the first portable operating system, and
of great historical and zero commercial significance.  If ATT doesn't try to
make us buy ATT hardware to get vmunix, but supports commodity hardware
markets based on their licensed software, and DEC continues its BI bus
childishness and hardware pricing, then VMS may end up as the last
proprietary operating system, of interest only to a small and unhappy group
of VAX owners.

umdhep@eneevax.UUCP (Todd Aven) (06/17/86)

In article <339@valid.UUCP> sbs@valid.UUCP (Steven Brian McKechnie Sargent) writes:
>
>	1) For the VMS fans out there: what's your favorite feature(s) of
>	   the system?  Why do you like it?  How does it help you?

In article <452@geowhiz.UUCP> mcvoy@rsch.wisc.edu (Larry McVoy) writes:
> I think that the main complaints with Unix from VMSites are

> 3) Likewise with DCL (Dec Command Language).  It's like sh with more obscurity.
>    *Large* DCL programs exist (my father who is a physicist has a modelling
>    program with an enormous dcl frontend, like 10-15K lines. Unfortunately, 
>    stuff like this is not uncommon).  This could be solved by writing a dcl-like
>    shell.

DCL (which stands for Digital Command Language) is, like /bin/sh and variants,
inappropriate for 10-15K programs. DCL, sh, csh, etc. are *interpreted*
languages, and hence are REAL SLOW. The reason that command languages are
used so widely is that one has no choice but to learn an operating system's
command language, while on the other hand most people trying to do research
hate like hell to learn a new programming language and will avoid it by writing
10-15K lines of command language 'script'. CLs are typically very forgiving
of syntactical mistakes, too. I don't quite understand what problem is to
be 'solved' by creating a DCL shell for UNIX, but I think that it would
be neither interesting nor useful. On the other hand, a UNIX shell for
VMS has been very helpful to me for those times that I just 'had to have a
pipe' (:-).


> 4) EDT - the VMS screen editor.  Somebody already fixed this by writing an emacs
>    interface to emulate EDT.

Why would anyone want the full-screen interface of EDT in GNU Emacs???
I admit that I use EDT, but ONLY in line mode for a quick one-line change.
I'm trying to get SED to work so I never have to touch EDT!


> [From here on out they are my personal complaints; 1-5 were complaints that I
>  have to listen to everytime I bump into a VMS person.  They are as of yet
>  blissflly ignorant of #6].

My bliss is due to knowledge, not ignorance, of #6.

> 6) File system.  Why, oh, why, must the Unix file system be so fragile?  VMS
>    never loses your files. 

BULLSH*T! I take great offense to that comment, having once spent an entire
weekend trying to straighten out a royal mess. VMS allowed me to rename the
root directory to be a sub-directory somewhere else. I was an idiot for doing
it, but that proves that VMS is not idiot-proof. No OS is!

>    And it's faster to boot up.  I have no idea what
>    the difference is in design but somebody ought to have a look & see what
>    could be done.

By the time you added the UNIX equivalent to RMS (Record Management Services)
onto your favorite brand of UNIX, you'd have crashes as the rule, not the
exception. The difference in design is actually in the philosophy. VMS was
not so much designed *for* the VAX as it was designed *with* the VAX. The
basic VAX-11 processor was designed concurrently with it's operating system.
My best guess is that UNIX was designed for the user, and the guru's have
learned to tweak the source to the benefit of the machine. 

> 8) Robustness.  VMS almost *never* crashes.  Unix crashes all the time.  You
>    damn near can't survive without source because you're always fixing 
>    something.  DEC has never handed out VMS src.  Unix is the ultimate example
>    of "the quick fix solution"; those solutions always turn out to be wrong
>    in the long run (trust me, this is the voice of experience talking. Sigh).

Come now, where are you getting your information? VMS crashes when people
start poking into its guts as much as any other system (believe me!).
You can survive without VMS source by groaning and moaning and waiting for
the next release of VMS, which ain't so pleasant at times. But DEC absolutely
***DOES*** provide VMS source. It is distributed on microfiche under most
licensing agreements, and for a price (a BIG PRICE) you can buy it in
machine-readable form. As far as quick-fix solutions, I've written a few
for VMS. I've even written some based on information provided in the fiche.

> OK, now that I've got all the fanatics foaming at the mouth, let me throw in my
> disclaimer.  I've been a Unix fanatic myself for the past 4 years.  I'm just
> not blind to the problems that exist in Unix.  As a research vehicle,  as a 
> development system, it's the nicest thing I've ever used.  However, I have 
> real problems recommending Unix as a "users" system.   It needs a nursemaid
> to survive properly.  Read net.mail - every time the postmaster at some large
> site leaves his job the mail gets all fouled up.  What happened to programs
> that run themselves, without being nursed?  Unix has too much folklore & 
> guru-ness about it to be accepted into the mainstream.

Just in case anybody has gotten confused about which side I'm really on,
read on...

VMS is the nicest operating system I've ever used (out of a sample of
about 7, which isn't all that many). Period. I just wanted to clarify
and correct the points made in the parent articles.  Most of the
complaints that I hear fro

paul@unisoft.UUCP (Paul Campbell) (06/17/86)

As an ex-VMS kernel hacker and now Unix kernel hacker I still have a healthy
respect for VMS, it has many good features no Unix has how ever I have to
disagree with Larry on some points.

In article <452@geowhiz.UUCP> larry@geowhiz.UUCP (Larry McVoy) writes:
>
>6) File system.  Why, oh, why, must the Unix file system be so fragile?  VMS
>   never loses your files.  And it's faster to boot up.  I have no idea what
>   the difference is in design but somebody ought to have a look & see what
>   could be done.
>
It is in reality almost as fragile as most Unix systems .... its just that the
system ALWAYS runs its own version of fsck when the system comes up after a
crash. It too looses files, trashes them and puts them in a "lost+found"
directory. VMS is more robust than Unix because it DOESNT have a block cache,
it writes through directly to disk. All buffering is done at the record level.

>8) Robustness.  VMS almost *never* crashes.  Unix crashes all the time.  You
>   damn near can't survive without source because you're always fixing 
>   something.  DEC has never handed out VMS src.  Unix is the ultimate example
>   of "the quick fix solution"; those solutions always turn out to be wrong
>   in the long run (trust me, this is the voice of experience talking. Sigh).
>
DEC will sell you source for about the same price as AT&T (commercial price
that is). If you have support you get uptodate source listings on fiche ...
beleive me after you have typed in all of the print symbiont (in assembler)
paying for source seems like a much better idea ......

>9) Related to (7), networking support.  Sockets are gross.  This isn't just
>   my opinion, ask the DoD what they think of sockets.  Remote filesystems,
>   remote devices, etc, are all being kludged in by every OEM in the field.
>   Have fun trying to make them all work together.  Design?  We don't need no
>   stinkin' design, we got 10,000 lines of code.
>
Here here, DECnet has a good user interface including particularly good support
for user servers and protection, a (relatively slow) distributed file system
comes with it. (I know I helped write a DECnet implementation ...)


Let me add my own pluses for VMS


+)	It has a far better user memory management interface than Unix, many
	things you can do under VMS are IMPOSSIBLE under Unix, unless you get
	into the kernel of course

+)	Much of the kernel is paged

And my one BIG minus about VMS

-)	Processes are far too expensive. Many things we take for granted under
	Unix are missing from or just too plain slow under VMS. The real
	problem is two-fold

	1)	VMS processes carry around too much context

	2)	The manner of creating a new process is such that transfering
		information from the old process is expensive. It happens
		automaticly in a Unix fork()



On the whole I prefer Unix but I do find myself missing many features of VMS ...
Thats all folks ......


		Paul Campbell
		..!ucbvax!unisoft!paul

thomas@utah-gr.UUCP (06/17/86)

In article <452@geowhiz.UUCP> larry@geowhiz.UUCP (Larry McVoy) writes:
>1) the BSD fortran compiler is the worst excuse for a compiler the world has 
>   ever seen (reports of 4 to 400 times slower than VMS fortran).
Ultrix(tm) now comes with the "VMS" Fortran compiler (per report).
>
>3) Likewise with DCL (Dec Command Language).  It's like sh with more obscurity.
This is a plus??

>4) EDT - the VMS screen editor.  Somebody already fixed this by writing an emacs
>   interface to emulate EDT.
See (3).

>6) File system.  Why, oh, why, must the Unix file system be so fragile?  VMS
>   never loses your files.
I can count on the fingers of one foot the number of times I have lost a
file due to "file system fragility" in the last 5 years on a Unix
system.  This "myth" is just that, and it's time to lay it to rest.

>8) Robustness.  VMS almost *never* crashes.  Unix crashes all the time.  
See (6).  Well, not quite that good.  But the number of crashes not
related to something like device driver development or installation of a
half-baked remote file system has been VERY small at our site.  I have
seen a Vax stay up between PMs (every three months).  

Re: mail (one of your unnumbered comments).  I think that a system that
requires a remote machine to be up in order for you to send mail to
someone on that system s**ks the big one.  Maybe they've fixed it, but I
doubt it.  I remember watching a friend in France trying to send mail to
Massachusetts, and having it fail because a connection couldn't be
established to the remote machine *at that time*.  No queueing, just try
to send it later!  Sheesh!

Also, when was the last time you could run VMS on a Sun, or an Apollo,
or a Gould, or a Pyramid, or a Cray, or ....

'Nuff said.
-- 
=Spencer   ({ihnp4,decvax}!utah-cs!thomas, thomas@utah-cs.ARPA)

jans@tekecs.UUCP (Jan Steinman) (06/18/86)

In article <1075@houxa.UUCP> mel1@houxa.UUCP (M.HAAS) writes:
>VMS, Multics, MVS, CMS, Kronos, TOPS-10, Ibsys, etc. are all
>"just other vendor supported products".  They all have been
>or will be "de-supported".  It doesn't matter a bit what
>is good or better about any of them (unless, of course, there
>is a good idea or two there to incorporate into the portable
>operating systems - UNIX and PC-DOS...
>
>"Value is measured by three factors: portability, portability,
>and portability."

Last I heard, PieceofCrap-DOS is portable only as long as Intel
"supports" 80x86 processors, and as long as Microsoft sees money
in it.  This makes it "just (an)other vendor supported product"
in my eyes!
-- 
:::::: Artificial   Intelligence   Machines   ---   Smalltalk   Project ::::::
:::::: Jan Steinman		Box 1000, MS 60-405	(w)503/685-2956 ::::::
:::::: tektronix!tekecs!jans	Wilsonville, OR 97070	(h)503/657-7703 ::::::

ken@njitcccc.UUCP (Kenneth Ng) (06/18/86)

In article <452@geowhiz.UUCP>, larry@geowhiz.UUCP (Larry McVoy) writes:
> 3) Likewise with DCL (Dec Command Language).  It's like sh with more obscurity.
>    *Large* DCL programs exist (my father who is a physicist has a modelling
>    program with an enormous dcl frontend, like 10-15K lines. Unfortunately, 
>    stuff like this is not uncommon).  This could be solved by writing a dcl-like
>    shell.
If you don't mind other environment, I personally prefer IBM's
REXX to DCL.  REXX is a moderately structured interpreted lang
which is the front end of a LOT of IBM applications.  I've also
seen it as the entire program in some cases.

-- 
Kenneth Ng: uucp(unreliable) ihnp4!allegra!bellcore!njitcccc!ken
	    soon uucp:ken@rigel.cccc.njit.edu
	    bitnet(prefered) ken@njitcccc.bitnet
	    soon bitnet: ken@orion.cccc.njit.edu
(Yes, we are slowly moving to RFC 920, kicking and screaming)

New Jersey Institute of Technology
Computerized Conferencing and Communications Center
Newark, New Jersey 07102

Vulcan jealousy: "I fail to see the logic in prefering Stonn over me"
Movie "Short Circuit": Number 5: "I need input"

garry@batcomputer.TN.CORNELL.EDU (Garry Wiegand) (06/18/86)

I've been subjected to an unpleasantly large number of operating systems
over the years (is WYLBUR still out there somewhere?), and I'm a VMS
partisan. What comes to mind quickly:

1) Command names and switch names are reasonable, in English, and consistent
   across all the different programs. I don't have to carry a stupid encoding
   table around in my head. 

2) The on-line Help is well-indexed, and it's HUGE. They've recently started
   digesting the language references into Help entries; I rarely need 
   to page through a manual anymore.

3) The source-line debugger is exceedingly useful for program development and
   (after several years of hard work at DEC) I can say it works well.

4) The system services are logical, consistent, and well-documented. Anything
   a utility can do, a user program can do too. (And if you want to tickle the 
   kernel, there *is* a thick manual on the system internals.)
 
5) VMS, she doesn't die, she doesn't break, she doesn't lose files, she 
   just keeps running along. It's pretty trustworthy.

I like MacIntoshes too, but that operating system is still in its infancy -
"Inside the Mac" is not recommended light reading.

PS - I don't buy the argument about "portable systems"! This industry is much
   too young to constrain itself to just one way of doing things. In the
   graphics system I designed last winter, I stole good ideas wherever I
   found them. From VMS, Unix, the Mac, even one from IBM! Not to mention
   all the "graphics packages" that had gone before. 

   In diversity there is much richness.


-- 
garry wiegand   (garry%cadif-oak@cu-arpa.cs.cornell.edu)

harry@uw-atm.UUCP (Harry Edmon) (06/18/86)

My favorite operating system is Primos, especially rev 19.4 and later,
which allow dynamic linking to libraries, and user specified search rules
for the libraries.  It is also easy to add your own command processor.

I just wish they would implement some Unix features in Primos (like uucp).
Primix (Prime's attempt at Unix :-(, is too crippled at the current release.

-- 
     Harry Edmon      uw-beaver!geops!uw-atm!harry
     (206) 543-0547
     Department of Atmospheric Sciences
     University of Washington

gelfand@valid.UUCP (Brooks Gelfand) (06/19/86)

> VMS, Multics, MVS, CMS, Kronos, TOPS-10, Ibsys, etc. are all
> "just other vendor supported products".  They all have been
> or will be "de-supported".  It doesn't matter a bit what
> is good or better about any of them (unless, of course, there
> is a good idea or two there to incorporate into the portable
> operating systems - UNIX and PC-DOS).  To have a favorite
> among these is to be stuck with just what the single vendor
> sells.  Fine, if that suits your purposes now, but will it
> in the future?  Is it worth your professional future to be
> expert in one of these albatrosses?
> 
> They have a saying in real estate, "Value is measured by three
> factors: location, location, and location."  A similar saying
> in computing is, "Value is measured by three factors: portability,
> portability, and portability."
>    Mel Haas  ,  odyssey!mel

This doesn't hold for the I.B.M. operating systems. While other
manufactures fit the operating system to the hardware, since the
introduction of the 360 I.B.M. has fitted the hardware to
the operating systems and the application programs. Thus the operating
system and computer evolve together. By placing microcode between
the user and the hardware the user of the latest 3090 still "sees"
a 360. In other words a program that was written and compiled on
an old 360 will run on 3090. Is this "good"? If you are running a
large data processing center with many millions of lines of source
code, you don't want to have to recompile it just to upgrade machines.
There is a price paid in raw speed. 

Perhaps your saying should be compatibility, compatibility,
compatibality.

Brooks Gelfand

fetrow@entropy.UUCP (David Fetrow) (06/19/86)

 ...and what about other Primos niceties:

 As in UNIX much of the operating system is in high level language(s). The
older versions were relatively compact and written in FORTRAN IV...this may
no longer be considered all that wonderful but it sure made it easy for a
numbercruncher to make changes (like putting in real passwords).

PRIMOS 16 was one of the nicest first software playthings a person could ask
for. Warning: I use Unix, VMS, MS-DOS, TOPS-10 and CMS every day which makes
me something of a dillettante. The only systems I've played with the guts of
are Primos 16, MS-DOS and UNIX 4.X and never at the kernel level.


-- 
 
    - Dave Fetrow

    "Don't ask me how it works or I'll start to whimper" - Arthur Dent

    "CP/M is nice because it has no more than 64K*8 errors per tick."
							 -Dave Fetrow

  {ihnp4,tektronix}!uw-beaver!entropy!fetrow                  :UUCP
  entropy!fetrow@uw-beaver.arpa                               :ARPA
  fetrow@UWALOCKE,7833117@UWAVM                               :BITNET
  74175,1724                                                  :Compuserve

hsu@eneevax.UUCP (Dave Hsu) (06/19/86)

In article <486@batcomputer.TN.CORNELL.EDU> garry writes:
>I've been subjected to an unpleasantly large number of operating systems
>over the years (is WYLBUR still out there somewhere?), and I'm a VMS
>
>-- 
>garry wiegand   (garry%cadif-oak@cu-arpa.cs.cornell.edu)

WYLBUR is alive and well at various government institutions.
Aside from Montgomery County Community College, is MUSIC still out
there anywhere?

-dave
-- 
David Hsu  (301) 454-1433 || -8798	"It was Dave, not me..honest!" -eneevax
Communication & Signal Processing Lab / Engineering Computer Facility
The University of Maryland   -~-   College Park, MD 20742
ARPA:hsu@eneevax.umd.edu  UUCP:[seismo,allegra,rlgvax]!umcp-cs!eneevax!hsu

"Unlike me, many of you have accepted your situation and will die here like
 rotten cabbages..."  -Number 6

rick@nyit.UUCP (Rick Ace) (06/19/86)

> >6) File system.  Why, oh, why, must the Unix file system be so fragile?  VMS
> >   never loses your files.
> I can count on the fingers of one foot the number of times I have lost a
> file due to "file system fragility" in the last 5 years on a Unix
> system.  This "myth" is just that, and it's time to lay it to rest.
>
> ...
>
> =Spencer   ({ihnp4,decvax}!utah-cs!thomas, thomas@utah-cs.ARPA)

Well, almost a myth.  UNIX filesystem implementations (even the touted
one in 4.2bsd) trade off filesystem integrity for speed in places
where other operating systems give you the guarantee that your data
is safe.  For example, when you issue the CLOSF JSYS to close a file in
TOPS-20, you are assured that your data is safely out on the disk when
the JSYS returns.  The close(2) syscall, however, does *not* give you that
guarantee, and I have gotten screwed at least once like this:

	Edit a file with my text editor
	Write the file out and exit editor
	Power failure (or other abrupt termination of UNIX) before next sync
	Reboot, fsck finds my file and claims it has no data blocks
	 (the data was floating in the buffer cache when UNIX went down)

Even more infuriating:  neither the pre-edit nor the post-edit copy
of the file remained after the crash, because the creat() syscall
issued by the editor when writing out the file truncated the inode!

I have since enhanced that editor to fsync() the file before close()ing
it, but many people would argue that the operating system should take
more responsibility for ensuring the safety of users' files.  And what
does one do on a UNIX variant without fsync()?  The sync() syscall
isn't really acceptable because 1) there is no way to limit the overhead
to just one specific file, and 2) the return of sync() to the user program
means only that the flush-to-disk operation has begun (i.e., you can't
determine when it has completed).

-----
Rick Ace
Computer Graphics Laboratory
New York Institute of Technology
Old Westbury, NY  11568
(516) 686-7644

{decvax,seismo}!philabs!nyit!rick

ramin@rtgvax.UUCP (06/19/86)

In article <339@valid.UUCP>, sbs@valid.UUCP (Steven Brian McKechnie Sargent) writes:

First of all, for certain applications, comparing un*x and vms would
be like comparing a three-legged hemorrhoidal cat and the earwax inside
Zaphod Beeblebrox's left ear(s) (go figure...)

For real-time applications (I know, you've probably heard this one before),
the standard (BSD 4.[23], S[V7etc...]) don't, how shall I say,
"lend themselves" to real-time processing... Most notably, a decent paging
mechanism, proper locks, a fine resolution clock, shared memory (or
memory mapping to disk) and other distributed support are missing...
(On the flip side, ultrix 1.2, which claims to be BSD4.3 plus SVID enhancements
has the shared memory, and semaphore support, so things are looking up there).
There is also a great deal of resistance to having to play with the kernel
when adding support for some new type of peripheral... And many many more...

On the other hand, VMS has some dandies too: Process creation is not unlike
pulling a knee-cap out. Mailboxes are S-L-O-W, and mapping to disk-files
by more than one process is not encouraged if both are writing...
DECnet's user-level interface (as in DCL) is bogus as hell (YOU MEAN
I HAVE TO TYPE MY PASSWORD ON THE SCREEN EVERYTIME I COPY FILES ACROSS?
GO PROXY YOURSELF YOUNG MAN!!!). DCL is a joke of a shell (though it's
getting better) with a funny idea for redirection...
File naming syntax is VERY convoluted (there is actually a system call to 
VALIDATE the syntax of a filename!!!)... And many many more...

Now that I'm done bitching about the two systems I must point that this
type of questioning is rather misleading since preference for each system
is basically a matter of use and a sprinkling of faith... If you like to
see source code of the command you're using, don't look at vms (unless
you have strong micro-fiche reading eyes). If you like your program to
getup and run when you buy it, try vms (:-). Religiously, most will say
that VMS is THE system for "serious" work, i.e. vs. play with source all
day... If you're the end-user vms gives you more robust software, but 
less variety and definitely less support if things break. If you're
the developer unix lets you do so many things faster and easier...

So in conclusion.... I would buy a unix system with a vms cross-tool
set. i.e. where I could develop on a unix, but the end result would
run on vms...(:-)

This is all too silly... I'm going out for a drink...


ramin...

> UNIX isn't but should be a trademark of D.M.Ritchie.
> VMS should be the name of some type of plastic resin...

-- 
=--------------------------------------=-------------------------------------=
: alias: ramin firoozye'               :   USps: Systems Control Inc.        :
: uucp: ...!shasta \                   :         1801 Page Mill Road         :
:       ...!lll-lcc \                  :         Palo Alto, CA  94303        :
:       ...!ihnp4    \...!ramin@rtgvax :   ^G:   (415) 494-1165 x-1777       :
=--------------------------------------=-------------------------------------=
"Your wife is a genius. It's hard getting used to my furniture moving around."

stevem@fai.UUCP (06/20/86)

In article <452@geowhiz.UUCP> larry@geowhiz.UUCP (Larry McVoy) writes:
>In article <339@valid.UUCP> sbs@valid.UUCP (Steven Brian McKechnie Sargent) writes:
>>
>>	1) For the VMS fans out there: what's your favorite feature(s) of
>>	   the system?  Why do you like it?  How does it help you?
>
>I think that the main complaints with Unix from VMSites are
>
>1) 
...
>9)

I thought it was an excellent list Larry, with one omission (the problem 
I'm grappling with now). DEC has over the years developed an excellent 
layered system of hardware and software that allows the addition of more
machines without putting one bunch of users off by themselves on a separate
machine.  In fact to the users, Vax-clustering makes many machines look like
one.  There's no graceful way with UNIX to add a machine and not find that
you have to segregate some users from others.
-- 
--

		Steven A. Minneman (Fujitsu America Inc, San Jose, Ca)

		!seismo!amdahl!fai!stevem  or !ihnp4!pesnta!fai!stevem

The best government is no government at all.

leo@sunybcs.UUCP (Leo Wilson) (06/20/86)

I really wanted to just spectate on this one...

The real problem with VMS is that it takes !screwdrivers and wrenches!
to install it.  I don't even see it as really being a *software* product
(from a consumer's point of view) unless it is available for all my
current and future hardware.

VMS is really a GREAT os, with lots lots of plusses and only (count 'em)
ONE detractor: It's locked into a single vendor's hardware. (Oh, yeah,
expensive hardware, and pretty much state of two years ago's art, too.)

Oh, I have my druthers & UNIX answers lots more of them than VMS does,
but as far as I can see VMS has UNIX whipped all to hell in any work
environment other than ed or r&d.  I have been looking, too. I'll
never actually USE it, tho, until I have the option to buy other companies'
*competitively* priced hardware.

How about it, DEC, turn VMS into purely a software product and "remember
UNIX" will become ONE word!

Trademarks: UNIX is a registered trademark of AT&T
            VMS is a registered trademark of Digital Equiptment Corp.
            DEC is probably a trademark of Digital Equiptment Corp.
            (if i left anyone out, sue me & i'll move out of the
            country before it gets to court.)

mkr@mmm.UUCP (MKR) (06/20/86)

In article <339@valid.UUCP> sbs@valid.UUCP (Steven Brian McKechnie Sargent) writes:
>I have some questions:
>
>	1) For the VMS fans out there: what's your favorite feature(s) of
>	   the system?  Why do you like it?  How does it help you?
>
>	2) Likewise UNIX and Multics fans.  (How do I get to a Multics
>	   site?  I'm not on the MILnet...)
>

	I am somewhat enamoured of UNIX, although I currently use VMS for
most of my work. I tend to dislike VMS as much as I like UNIX, but I didn't
come here for a religious argument. (One jab - VMS users love to point out
that VMS commands are English. That always struck me as meaningless when
I can't remember *which* English word gets rid of a file - let's see... is
it DELETE, REMOVE, PURGE, KILL, or what? How do I look at the contents...
is it PRINT, TYPE, SHOW, LIST, DISPLAY, OUTPUT, CAT (heh heh) or what?)

	Anyway, what I wanted to point out was that if you want to learn
all about UNIX, go to B. Dalton's or the equivalent. You can find row after
row of books explaining UNIX, most of which do the job just fine. I wanted
to learn more about VMS, and all I could find were the DEC manuals. Yechh!
I find it hard to throw the 5 or 6 large binders I need into my briefcase
to take them home for easy reading, even if the company would let me. And
I'll be damned if I'm going to shell out a coupla grand to get my own copies.
Nahhh - I'll take UNIX anyday.

	--MKR

loosemor@esunix.UUCP (Sandra Loosemore) (06/21/86)

I use both VMS and Un*x every day.  I do nearly all my program development
under VMS, though, and I must admit that I like VMS a bit better.  There
are a lot of operating systems that are a whole lot worse than Un*x though.
(Fortunately, I don't have to use those every day....)

I think the greatest advantage VMS offers over Un*x is the networked/shared
file system.  VMS has had transparent network file access for at least 5
years, and this is just now working its way into Un*x.  (They just installed
this as a "local hack" on the machines at the University of Utah -- it is 
by no means a standard feature yet.)  The VMS machines I use at work are
clustered, so the file structure looks exactly the same no matter which
machine I'm using.  Given the current trend towards distributed computing
environments with personal workstations and compute servers, shared file
systems are very important things for an operating system to support.

Another thing I like about VMS is the documentation.  There is a great deal
of tutorial information and examples in the manuals.  It seems like when
I find I need to do something obscure with Un*x, I can never find the
right command to do it (or the documentation is so terse that I'm never
really sure whether it's the right command or not), and I end up having
to ask a "wizard".  (Unix sites without "wizards" are really in trouble.)
I also wish Un*x had on-line help on how to use the shell, instead of 
just the utilities!

I don't think that either VMS or Un*x has serious problems with file system
reliability; I've never lost a file under either OS.  File versions under
VMS have saved me more times than I can remember, though.  Again, this is
just another place where DEC has taken the trouble to try to "idiot-proof"
things, and we users appreciate it.

Of course, there are bad things about VMS too:  as others have pointed out, 
processes are incredibly slow to start up, the mailer is not too great (but 
neither is the Un*x mailer, for that matter), all of the DEC editors are 
pretty awful (but so is "vi"), etc.  On the whole, though, Un*x is fine if
you want an "open" operating system where you can tweak everything in sight,
but if you just want to get a job done, VMS is a lot less hassle.

-Sandra Loosemore, Evans & Sutherland Computer Corp.
{decwrl, utah-gr!uplherc}!esunix!loosemor
loosemore@utah-20.arpa

[Insert usual disclaimers]

wje@lewey.UUCP (06/21/86)

> 		... DEC has over the years developed an excellent 
> layered system of hardware and software that allows the addition of more
> machines without putting one bunch of users off by themselves on a separate
> machine.  In fact to the users, Vax-clustering makes many machines look like
> one.  There's no graceful way with UNIX to add a machine and not find that
> you have to segregate some users from others.
> 
> 		Steven A. Minneman (Fujitsu America Inc, San Jose, Ca)

     The above is not really true with respect to UNIX any longer.
Several vendors offer working distributed file systems for UNIX.
For example, NFS from SUN and TRFS from Integrated Solutions both
allow easy expansion to new machines without segregating users.  
Also, Todd Brunhoff's RFS is included with 4.3 BSD, and has been
distributed to the network.  It works with both 4.2 BSD and 4.3 BSD.
Even AT&T will eventually release their RFS for System V Release 3.
UNIX today, especially BSD UNIX, is much more sophisticated in this
area than it was a few years ago.

	William J. Earl
	American Information Technology, Cupertino, CA
	408-252-8713
	...!decwrl!nsc!voder!lewey!wje
-- 
	William J. Earl
	American Information Technology, Cupertino, CA
	408-252-8713
	...!decwrl!nsc!voder!lewey!wje

ccrdave@ucdavis.UUCP (Lord Kahless) (06/21/86)

> DECnet's user-level interface (as in DCL) is bogus as hell (YOU MEAN
> I HAVE TO TYPE MY PASSWORD ON THE SCREEN EVERYTIME I COPY FILES ACROSS?
> GO PROXY YOURSELF YOUNG MAN!!!). DCL is a joke of a shell

It's trivial to write a DCL command procedure to read in the password
for a DECNET copy without echoing it or retaining a history of it.
Be fair.  Learn what the system can and can't do before saying what
it can't do.

levy@ttrdc.UUCP (Daniel R. Levy) (06/21/86)

In article <486@batcomputer.TN.CORNELL.EDU>, garry@batcomputer.TN.CORNELL.EDU (Garry Wiegand) writes:
>I've been subjected to an unpleasantly large number of operating systems
>over the years (is WYLBUR still out there somewhere?), and I'm a VMS
>partisan. What comes to mind quickly:
>
>1) Command names and switch names are reasonable, in English, and consistent
>   across all the different programs. I don't have to carry a stupid encoding
>   table around in my head.

Oh yes, and along with those verbose commands goes a command line which can't
be over 255 characters long, and a library-archiver, compiler, and linker
which can't take wild cards.  Real nice when you have a 100-module program.

Most Unix programs will print out a line or so of "usage" diagnostics if you
invoke them with bogus arguments.  Do VMS programs do this?

>
>2) The on-line Help is well-indexed, and it's HUGE. They've recently started
>   digesting the language references into Help entries; I rarely need
>   to page through a manual anymore.

Tell me, is there one for the Fortran under VMS 4.x?  On our 3.x VMS systems,
we did indeed have a detailed online help for Fortran, and we have such a
help now for C, but not for Fortran.  Did someone just forget to install it,
(system manager is baffled) or is it an "extra" (cost) item, or what?

Unix online help need not be "HUGE" because the system interface isn't "HUGE."
I think VMS is marvelous from many user points of view (despite my criticisms
herein) but the system interface is a monstrous headache because of the
complexity.

>
>3) The source-line debugger is exceedingly useful for program development and
>   (after several years of hard work at DEC) I can say it works well.

That's nice, BUT what do you do when the program dies in an alpha-test
environment?  You get a nice stack-dump printout, but do you get a "core"
which can be analyzed (especially if the sequence leading up the the crash
is not easily reproducible?).  (I _think_ there was supposed to be an option
to RUN which would cause a program to produce the VMS equivalent of a core
dump when it dies, but then can you pass parameters to the program, which
as best as I understand cannot be done with RUN?)

>
>4) The system services are logical, consistent, and well-documented. Anything
>   a utility can do, a user program can do too. (And if you want to tickle the
>   kernel, there *is* a thick manual on the system internals.)

Could you then do me a favor.  Show me how, in Fortran, I would go about
setting the protection (no fancy ACL stuff, just basic RWED protections)
on a file which I am creating.  (In C it's easy enough, since the protec-
tion is specified when the file is created, which of course is tied to the
straightforward Unix way of doing things!)  Please show actual code, such as
a USEROPEN program, together with the OPEN() statement that calls it, to run
on VMS 4.2.  Or even show me how I can do it in assembler.  (I hesitate to
say show me how to do it in the system programming language, since Bliss-32
is an "extra-cost" [and not really very commonly used outside of DEC, unlike
C which is commonly used outside of Unix systems, let alone AT&T machines]
option which I don't have.  I think the analogy fair since that is what I
would probably do if I needed to change the protection of a Unix file from
Fortran [I would call chmod() in a C routine].)

See also my comments under 2) about the system interface.  It is massive,
complex, and cumbersome, as well as introducing kludges into common pro-
gramming languages, to be blunt.  VMS does indeed pride itself on
accessibility of system routines from "any" language, but this occurs at
the cost of kludgey extensions (like Fortran STRUCTUREs and RECORDs and
%val()s and %loc()s) to common programming languages, that a user would
actually WANT to program in.  C, which is a fairly common, "ordinary"
programming language and sees wide use and portability even in non-Unix
environments, fits the UNIX system interface very naturally and needs no
such kludges to use it.  (It is commendable that DEC has seen fit to switch
rather than fight, and has provided an extensive UNIX-like interface to
the VMS system within C.)

>
>5) VMS, she doesn't die, she doesn't break, she doesn't lose files, she
>   just keeps running along. It's pretty trustworthy.

Oh yes, remember the security hole in VMS 4.1 about a nonprivileged user
being able to crash the system by entering certain line-editing sequences
in response to a prompt (involving ^B and some other escape codes).  I
succeeded in doing this once from DCL, and we have a plain VMS system, no
special private kernel drivers installed.  VMS 4.2 also kicked the bucket
on me the other week when I was trying to access the help library.  The
system just barfed, and the console dump contained my process name.  And
I wasn't even trying any funny business or having any special privileges.
Needless to say, Unix has never done this kind of thing.

It is indeed possible for Unix files to get trashed if they have been "writ-
ten" on (to the buffer cache) at a time which is less than the periodic system
buffer flush period (typically 10-20 seconds) before a physical failure.  It
is however possible under SysV (and maybe BSD, but I'm not sure) to
open() a file with an O_SYNC option, which will not return from the write()
until the data has physically gone onto the storage medium.  To do this is,
unsurprisingly, much less efficient, but that, as with VMS RMS, is the price
which is paid for security.  Any user also can tell the system to flush the
entire buffer cache with the sync() call, if they are worried about the
integrity of what they have just written.

>
>I like MacIntoshes too, but that operating system is still in its infancy -
>"Inside the Mac" is not recommended light reading.
>
>PS - I don't buy the argument about "portable systems"! This industry is much
>   too young to constrain itself to just one way of doing things. In the
>   graphics system I designed last winter, I stole good ideas wherever I
>   found them. From VMS, Unix, the Mac, even one from IBM! Not to mention
>   all the "graphics packages" that had gone before.
>
>   In diversity there is much richness.

If so, I am exceedingly glad that UNIX is part of that richness.
(Diversity of hardware, too, spell that "vendor independence.")

>
>
>--
>garry wiegand   (garry%cadif-oak@cu-arpa.cs.cornell.edu)
-- 
 -------------------------------    Disclaimer:  The views contained herein are
|       dan levy | yvel nad      |  my own and are not at all those of my em-
|         an engihacker @        |  ployer or the administrator of any computer
| at&t computer systems division |  upon which I may hack.
|        skokie, illinois        |
 --------------------------------   Path: ..!{akgua,homxb,ihnp4,ltuxa,mvuxa,
						vax135}!ttrdc!levy

levy@ttrdc.UUCP (Daniel R. Levy) (06/21/86)

In article <486@batcomputer.TN.CORNELL.EDU>, garry@batcomputer.TN.CORNELL.EDU (Garry Wiegand) writes:
>I've been subjected to an unpleasantly large number of operating systems
>over the years (is WYLBUR still out there somewhere?), and I'm a VMS
>partisan. What comes to mind quickly:
>
>1) Command names and switch names are reasonable, in English, and consistent
>   across all the different programs. I don't have to carry a stupid encoding
>   table around in my head.

Oh yes, and along with those verbose commands goes a command line which can't
be over 255 characters long, and a library-archiver, compiler, and linker
which can't take wild cards.  Real nice when you have a 100-module program.

Most Unix programs will print out a line or so of "usage" diagnostics if you
invoke them with bogus arguments.  Do VMS programs do this?

>
>2) The on-line Help is well-indexed, and it's HUGE. They've recently started
>   digesting the language references into Help entries; I rarely need
>   to page through a manual anymore.

Tell me, is there one for the Fortran under VMS 4.x?  On our 3.x VMS systems,
we did indeed have a detailed online help for Fortran, and we have such a
help now for C, but not for Fortran.  Did someone just forget to install it,
(system manager is baffled) or is it an "extra" (cost) item, or what?

Unix online help need not be "HUGE" because the system interface isn't "HUGE."
I think VMS is marvelous from many user points of view (despite my criticisms
herein) but the system interface is a monstrous headache because of the
complexity.

>
>3) The source-line debugger is exceedingly useful for program development and
>   (after several years of hard work at DEC) I can say it works well.

That's nice, BUT what do you do when the program dies in an alpha-test
environment?  You get a nice stack-dump printout, but do you get a "core"
which can be analyzed (especially if the sequence leading up the the crash
is not easily reproducible?).  (I _think_ there was supposed to be an option
to RUN which would cause a program to produce the VMS equivalent of a core
dump when it dies, but then can you pass parameters to the program, which
as best as I understand cannot be done with RUN?)

>
>4) The system services are logical, consistent, and well-documented. Anything
>   a utility can do, a user program can do too. (And if you want to tickle the
>   kernel, there *is* a thick manual on the system internals.)

Could you then do me a favor.  Show me how, in Fortran, I would go about
setting the protection (no fancy ACL stuff, just basic RWED protections)
on a file which I am creating.  (In C it's easy enough, since the protec-
tion is specified when the file is created, which of course is tied to the
straightforward Unix way of doing things!)  Please show actual code, such as
a USEROPEN program, together with the OPEN() statement that calls it, to run
on VMS 4.2.  Or even show me how I can do it in assembler.  (I hesitate to
say show me how to do it in the system programming language, since Bliss-32
is an "extra-cost" [and not really very commonly used outside of DEC, unlike
C which is commonly used outside of Unix systems, let alone AT&T machines]
option which I don't have.  I think the analogy fair since that is what I
would probably do if I needed to change the protection of a Unix file from
Fortran [I would call chmod() in a C routine].)

See also my comments under 2) about the system interface.  It is massive,
complex, and cumbersome, as well as introducing kludges into common pro-
gramming languages, to be blunt.  VMS does indeed pride itself on
accessibility of system routines from "any" language, but this occurs at
the cost of kludgey extensions (like Fortran STRUCTUREs and RECORDs and
%val()s and %loc()s) to common programming languages, that a user would
actually WANT to program in.  C, which is a fairly common, "ordinary"
programming language and sees wide use and portability even in non-Unix
environments, fits the UNIX system interface very naturally and needs no
such kludges to use it.  (It is commendable that DEC has seen fit to switch
rather than fight, and has provided an extensive UNIX-like interface to
the VMS system within C.)

>
>5) VMS, she doesn't die, she doesn't break, she doesn't lose files, she
>   just keeps running along. It's pretty trustworthy.

Oh yes, remember the security hole in VMS 4.1 about a nonprivileged user
being able to crash the system by entering certain line-editing sequences
in response to a prompt (involving ^B and some other escape codes).  I
succeeded in doing this once from DCL, and we have a plain VMS system, no
special private kernel drivers installed.  VMS 4.2 also kicked the bucket
on me the other week when I was trying to access the help library.  The
system just barfed, and the console dump contained my process name.  And
I wasn't even trying any funny business or having any special privileges.
Needless to say, Unix has never done this kind of thing.

It is indeed possible for Unix files to get trashed if they have been "writ-
ten" on (to the buffer cache) at a time which is less than the periodic system
buffer flush period (typically 10-20 seconds) before a physical failure.  It
is however possible under SysV (and maybe BSD, but I'm not sure) to
open() a file with an O_SYNC option, which will not return from the write()
until the data has physically gone onto the storage medium.  To do this is,
unsurprisingly, much less efficient, but that, as with VMS RMS, is the price
which is paid for security.  Any user also can tell the system to flush the
entire buffer cache with the sync() call, if they are worried about the
integrity of what they have just written.

>
>I like MacIntoshes too, but that operating system is still in its infancy -
>"Inside the Mac" is not recommended light reading.
>
>PS - I don't buy the argument about "portable systems"! This industry is much
>   too young to constrain itself to just one way of doing things. In the
>   graphics system I designed last winter, I stole good ideas wherever I
>   found them. From VMS, Unix, the Mac, even one from IBM! Not to mention
>   all the "graphics packages" that had gone before.
>
>   In diversity there is much richness.

If so, I am exceedingly glad that UNIX is part of that richness.

>
>
>--
>garry wiegand   (garry%cadif-oak@cu-arpa.cs.cornell.edu)
-- 
 -------------------------------    Disclaimer:  The views contained herein are
|       dan levy | yvel nad      |  my own and are not at all those of my em-
|         an engihacker @        |  ployer or the administrator of any computer
| at&t computer systems division |  upon which I may hack.
|        skokie, illinois        |
 --------------------------------   Path: ..!{akgua,homxb,ihnp4,ltuxa,mvuxa,
						vax135}!ttrdc!levy


-- 
 -------------------------------    Disclaimer:  The views contained herein are
|       dan levy | yvel nad      |  my own and are not at all those of my em-
|         an engihacker @        |  ployer or the administrator of any computer
| at&t computer systems division |  upon which I may hack.
|        skokie, illinois        |
 --------------------------------   Path: ..!{akgua,homxb,ihnp4,ltuxa,mvuxa,
						vax135}!ttrdc!levy

bzs@bu-cs.UUCP (Barry Shein) (06/21/86)

Rather than hold this discussion about UNIX vs VMS now why not
wait 2-3 years, when DEC starts giving their VMS to ULTRIX
migration seminars at DECUS to encourage you to buy their
new post-VAX processor...

Oh no...DEC would *never* abandon all their TOPS um, er,
I mean VMS customers...

	-Barry Shein, Boston University

johnth@batcomputer.UUCP (06/22/86)

In article <1000@ttrdc.UUCP> levy@ttrdc.UUCP (Daniel R. Levy) writes:
>Could you then do me a favor.  Show me how, in Fortran, I would go about
>setting the protection (no fancy ACL stuff, just basic RWED protections)
>on a file which I am creating.  (In C it's easy enough, since the protec-
>tion is specified when the file is created, which of course is tied to the
>straightforward Unix way of doing things!)  Please show actual code, such as
>a USEROPEN program, together with the OPEN() statement that calls it, to run
>....
The following is a trivial (and slow) way to do this.  I'm sure there is a 
better way but sitting here this is the best I can do.

       OPEN()
       ...
       Close()
       Call Lib$Spawn('Set Protection=....')


Personally I love to play with UNIX.  It is a lot of fun to poke around in.
On the other hand when I need to get things done I like VMS.  It is easy
because I don't need to think about how to do thinks, only about what I'm
trying to get done.  When I first started on VMS I just sat down at a terminal
and started to see if I could make it go.  My first command was EDIT TEST and
it worked!  Love at first sight.  I would never have guessed vi.  

Now that I know a little about UNIX I like it.  What I like about VMS is 
that I didn't need to take two weeks of workshops to learn enough to be
able to use it.

John Thurtell 
 

syncro@looking.UUCP (Tom Haapanen) (06/22/86)

>> ...  There's no graceful way with UNIX to add a machine and not find that
>> you have to segregate some users from others.

>     The above is not really true with respect to UNIX any longer.
>Several vendors offer working distributed file systems for UNIX.
>For example, NFS from SUN and TRFS from Integrated Solutions both
>allow easy expansion to new machines without segregating users.  
>Also, Todd Brunhoff's RFS is included with 4.3 BSD, and has been
>distributed to the network.  It works with both 4.2 BSD and 4.3 BSD.
>Even AT&T will eventually release their RFS for System V Release 3.
>UNIX today, especially BSD UNIX, is much more sophisticated in this
>area than it was a few years ago.

Supposedly SCO's just-announced XENIX-Net (developed with Microsoft who
will sell it for the 68000 and other non-brain-damaged architectures)
will provide transparent file sharing between a number of XENIX machines,
using Sytek cards or something equivalent.

Even just using Ethernet to hook up a bunch of VAXen without file sharing
doesn't really amount to segregation.  At University of Waterloo, we had
over a dozen VAXen (plus uVAXen etc.) hooked together.  You didn't feel
segregated, because it was very easy to do things over the network: rcp
(remote copy), rlogin, rsh, rwho and other commands make things easy.  Mail
would figure out what machine the recipient was on, and full-screen talk
between machines made it really feel like just one big system.  If I had
to do some big makes or something, I'd find the machine with the smallest
load, rcp the files over, do my work, and rcp the results back (no need
to type in any passwords: your .rhosts file defined the authorized users).
This was all running on all kinds of VAXen (uVAX, uVAX2, 750, 780, 785,
8600) using 4.2 BSD and Ultrix.

--
\tom haapanen					looking glass software ltd.
syncro@looking.UUCP				waterloo, ontario, canada
watmath!looking!syncro				(519) 884-7473

"These opinions are solely mine, although even I would like to deny them..."

jimb@tekcbi.UUCP (06/23/86)

What about RSTS??????????         |-) |-)
In particular, V9   (earlier versions don't count)

bzs@bu-cs.UUCP (Barry Shein) (06/24/86)

From: stevem@fai.UUCP (Steve Minneman)
>...There's no graceful way with UNIX to add a machine and not find that
>you have to segregate some users from others.

Wrong. Try SUN's NFS. For the past 6 months the Computer Science
Department's machine here (BU-CS) has been two SUN3/180s. It doesn't
matter which one you log into as all disks are transparently visible.

In fact, our terminal switch (U/B Net/1) randomizes which you land
on and I have yet to hear a complaint.

Being as SUN's NFS is starting to appear on many, many vendor's UNIX's
this is not a narrow view of the world either (how many vendors are
running VMS's clustering??) NFS also doesn't require a lot of fancy,
expensive hardware of (given NFS) questionable value and it's bundled
into the base price of the system. You just need an ethernet which you
probably planned on having anyhow.

	-Barry Shein, Boston University

marco@andromeda.RUTGERS.EDU (the wharf rat) (06/24/86)

In article <77@rtgvax.UUCP>, ramin@rtgvax.UUCP (Pantagruel) writes:
> when adding support for some new type of peripheral... And many many more...
> 
> DECnet's user-level interface (as in DCL) is bogus as hell (YOU MEAN
> I HAVE TO TYPE MY PASSWORD ON THE SCREEN EVERYTIME I COPY FILES ACROSS?
> GO PROXY YOURSELF YOUNG MAN!!!). DCL is a joke of a shell (though it's
> File naming syntax is VERY convoluted (there is actually a system call to 
> VALIDATE the syntax of a filename!!!)... And many many more...
> 
	How about " COPY FOO::DBA0:[FOOBAR]FOO.BAR BAR.FOO " ?  No 
passwords....
And one good thing about checking file-names: You can't write
files with control-chars in the names by mistake.

                                                W.rat

rcb@rti-sel.UUCP (Random) (06/24/86)

I promised myself that I was going to stay out of this annual OS debate.
However, I weakened. So here it comes.

In article <1000@ttrdc.UUCP> levy@ttrdc.UUCP writes:
>In article <486@batcomputer.TN.CORNELL.EDU>, garry@batcomputer.TN.CORNELL.EDU (Garry Wiegand) writes:
>>1) Command names and switch names are reasonable, in English, and consistent
>>   across all the different programs. I don't have to carry a stupid encoding
>>   table around in my head.
>
>Oh yes, and along with those verbose commands goes a command line which can't
>be over 255 characters long, and a library-archiver, compiler, and linker
>which can't take wild cards.  Real nice when you have a 100-module program.
>

The librarian and most compilers WILL take wildcards and have done so for
some time. True the linker won't which is a bother. However, it would be nice
if you check your arguments before posting them.

>Most Unix programs will print out a line or so of "usage" diagnostics if you
>invoke them with bogus arguments.  Do VMS programs do this?
>

No. VMS programs will not let you invoke them with bogus arguments. Since
the arguments are parsed by DCL before the program is invoked, if you give
too many parameters or an unknown switch DCL will reject it with an error
message that points out the specific problem.

>>
>>2) The on-line Help is well-indexed, and it's HUGE. They've recently started
>>   digesting the language references into Help entries; I rarely need
>>   to page through a manual anymore.
>
>Tell me, is there one for the Fortran under VMS 4.x?  On our 3.x VMS systems,
>we did indeed have a detailed online help for Fortran, and we have such a
>help now for C, but not for Fortran.  Did someone just forget to install it,
>(system manager is baffled) or is it an "extra" (cost) item, or what?
>

This is the fault of your system manager for not reading the installation
document that came with the fortran compiler. There are really 2 distributions
on the tape. One for fortran and one for the help and the help is even more
extensive than the one on 3.x.

>Unix online help need not be "HUGE" because the system interface isn't "HUGE."
>I think VMS is marvelous from many user points of view (despite my criticisms
>herein) but the system interface is a monstrous headache because of the
>complexity.
>

VMS online help is HUGE because it is complete. Unix help on the other hand...

>>
>>3) The source-line debugger is exceedingly useful for program development and
>>   (after several years of hard work at DEC) I can say it works well.
>
>That's nice, BUT what do you do when the program dies in an alpha-test
>environment?  You get a nice stack-dump printout, but do you get a "core"
>which can be analyzed (especially if the sequence leading up the the crash
>is not easily reproducible?).  (I _think_ there was supposed to be an option
>to RUN which would cause a program to produce the VMS equivalent of a core
>dump when it dies, but then can you pass parameters to the program, which
>as best as I understand cannot be done with RUN?)
>
A program can be linked to cause a "core" dump. Also, the core dump is 
analysed by the symbolic debugger.

>>
>>4) The system services are logical, consistent, and well-documented. Anything
>>   a utility can do, a user program can do too. (And if you want to tickle the
>>   kernel, there *is* a thick manual on the system internals.)
>
>Could you then do me a favor.  Show me how, in Fortran, I would go about
>setting the protection (no fancy ACL stuff, just basic RWED protections)
>on a file which I am creating.  (In C it's easy enough, since the protec-
>tion is specified when the file is created, which of course is tied to the
>straightforward Unix way of doing things!)  Please show actual code, such as
>a USEROPEN program, together with the OPEN() statement that calls it, to run
>on VMS 4.2.  Or even show me how I can do it in assembler.  (I hesitate to
>say show me how to do it in the system programming language, since Bliss-32
>is an "extra-cost" [and not really very commonly used outside of DEC, unlike
>C which is commonly used outside of Unix systems, let alone AT&T machines]
>option which I don't have.  I think the analogy fair since that is what I
>would probably do if I needed to change the protection of a Unix file from
>Fortran [I would call chmod() in a C routine].)
>

Since I don't write in fortran, I can't give you the exact details, but
the useropen routine should allocate a protection XAB and link it to the FAB
passed into the useropen routine. When the open occurs, the protection
will be right.

>See also my comments under 2) about the system interface.  It is massive,
>complex, and cumbersome, as well as introducing kludges into common pro-
>gramming languages, to be blunt.  VMS does indeed pride itself on
>accessibility of system routines from "any" language, but this occurs at
>the cost of kludgey extensions (like Fortran STRUCTUREs and RECORDs and
>%val()s and %loc()s) to common programming languages, that a user would
>actually WANT to program in.  C, which is a fairly common, "ordinary"
>programming language and sees wide use and portability even in non-Unix
>environments, fits the UNIX system interface very naturally and needs no
>such kludges to use it.  (It is commendable that DEC has seen fit to switch
>rather than fight, and has provided an extensive UNIX-like interface to
>the VMS system within C.)
>
Fortran structures, records, etc. do not exist for the purpose of kludgey
interfaces to system routines. They exist to enhance fortran's capabilities.
Structures and records provide better programming practices and %val and
%loc allow rather sophisticated pointer operations to be done.
>>
>>5) VMS, she doesn't die, she doesn't break, she doesn't lose files, she
>>   just keeps running along. It's pretty trustworthy.
>
>Oh yes, remember the security hole in VMS 4.1 about a nonprivileged user
>being able to crash the system by entering certain line-editing sequences
>in response to a prompt (involving ^B and some other escape codes).  I
>succeeded in doing this once from DCL, and we have a plain VMS system, no
>special private kernel drivers installed.  VMS 4.2 also kicked the bucket
>on me the other week when I was trying to access the help library.  The
>system just barfed, and the console dump contained my process name.  And
>I wasn't even trying any funny business or having any special privileges.
>Needless to say, Unix has never done this kind of thing.
>
Would you mind also including the list of unix kernal bugs that can be activated
by any user to kill the system. Assuming that there is disk space to keep the
list. The above bug makes a good example for you to point to because it
stands out. The reason it stands out is because it is the ONLY bug of it's kind
I have ever seen since about version 2.5

>It is indeed possible for Unix files to get trashed if they have been "writ-
>ten" on (to the buffer cache) at a time which is less than the periodic system
>buffer flush period (typically 10-20 seconds) before a physical failure.  It
>is however possible under SysV (and maybe BSD, but I'm not sure) to
>open() a file with an O_SYNC option, which will not return from the write()
>until the data has physically gone onto the storage medium.  To do this is,
>unsurprisingly, much less efficient, but that, as with VMS RMS, is the price
>which is paid for security.  Any user also can tell the system to flush the
>entire buffer cache with the sync() call, if they are worried about the
>integrity of what they have just written.
>
Please let us not forget the great fun of trying to overwrite a file when
the file system is full. The write fails as would be expected but has the
nasty side effect of leaving a zero length file. Goodby data.
>>
>>I like MacIntoshes too, but that operating system is still in its infancy -
>>"Inside the Mac" is not recommended light reading.
>>
>>PS - I don't buy the argument about "portable systems"! This industry is much
>>   too young to constrain itself to just one way of doing things. In the
>>   graphics system I designed last winter, I stole good ideas wherever I
>>   found them. From VMS, Unix, the Mac, even one from IBM! Not to mention
>>   all the "graphics packages" that had gone before.
>>
>>   In diversity there is much richness.
>
>If so, I am exceedingly glad that UNIX is part of that richness.
>
>>
>>
>>--
>>garry wiegand   (garry%cadif-oak@cu-arpa.cs.cornell.edu)
>-- 
> -------------------------------    Disclaimer:  The views contained herein are
>|       dan levy | yvel nad      |  my own and are not at all those of my em-
>|         an engihacker @        |  ployer or the administrator of any computer
>| at&t computer systems division |  upon which I may hack.
>|        skokie, illinois        |
> --------------------------------   Path: ..!{akgua,homxb,ihnp4,ltuxa,mvuxa,
>						vax135}!ttrdc!levy

Before you get the idea that I am a rabid UNIX hater, I actually like some
features of unix. I prefer VMS for it's consistancy, reliability and
versatility. There are many unix emulators on VMS because it has the power
and flexability to do a lot of different things easily. I have never seen
a VMS emulator on unix however. And as for the good things about unix,
I have ported or duplicated them on VMS so that I now have the best of both
worlds.
-- 
					Random (Randy Buckland)
					Research Triangle Institute
					...!mcnc!rti-sel!rcb

dml@rabbit1.UUCP (06/24/86)

> 
>> >6) File system.  Why, oh, why, must the Unix file system be so fragile?  VMS
>> >   never loses your files.
>> I can count on the fingers of one foot the number of times I have lost a
>> file due to "file system fragility" in the last 5 years on a Unix
>> system.  This "myth" is just that, and it's time to lay it to rest.
>>
>> ...
>>
>> =Spencer   ({ihnp4,decvax}!utah-cs!thomas, thomas@utah-cs.ARPA)
> 
> Well, almost a myth.  UNIX filesystem implementations (even the touted
> one in 4.2bsd) trade off filesystem integrity for speed in places
> where other operating systems give you the guarantee that your data
> is safe.  For example, when you issue the CLOSF JSYS to close a file in
> TOPS-20, you are assured that your data is safely out on the disk when
> the JSYS returns.  The close(2) syscall, however, does *not* give you that
> guarantee, and I have gotten screwed at least once like this:
> 
> 	Edit a file with my text editor
> 	Write the file out and exit editor
> 	Power failure (or other abrupt termination of UNIX) before next sync
> 	Reboot, fsck finds my file and claims it has no data blocks
> 	 (the data was floating in the buffer cache when UNIX went down)
> 
> Rick Ace

Not only does UNIX have to have a sync to mark the file as ready for flush
to the disk, some versions wait a further period of time to actually perform
the flush to disK (i.e. sync does not do the flush itself - I know cause it
happened to us).

-- 
-----------------------------------------------------------
David Langdon    Rabbit Software Corp.

...!ihnp4!{cbmvax,cuuxb}!hutch!dml
...!psuvax1!burdvax!hutch!dml

(215) 647-0440  7 Great Valley Parkway East  Malvern PA 19355

bzs@bu-cs.UUCP (Barry Shein) (06/24/86)

re: MKR mentions the problem of VMS manuals.

At a DECUS a couple of years ago I was sitting and chatting with some
of the DEC/VMS crew, some of them were involved in ULTRIX also. The
issue of VMS in an academic environment came up. I was trying to not
go into any flamage but it occurred to me that while the UNIX (4.2)
manual set was available at our copy center for around $100 (and that
includes broken out portions of the administrator's stuff etc, a realistic
complete set for a student costs more like $50) an equivalent set of
docs for VMS would fill a couple of bookshelves and cost hundreds of
dollars. I basically said that it was a real problem, at our VMS site
almost none of our -faculty- have sufficient VMS manuals in their office
while at our UNIX sites I never see this problem, they'll just go to the
copy center and buy what they need.

I felt that this was a serious problem, that providing the real documentation
(not to mention all the other publications useful for learning UNIX) was
critical for a student environment to give them a sense of what the system
was really about and to learn how to use documentation independantly.

Their reaction was basically: "You know what, you're absolutely right,
that *is* a serious problem now that you mention it." I only say this
before the defenders of the one true faith go off babbling about manuals,
sometimes something important is just overlooked and I think this is a case.

Not sure what could be done, especially within the huge bureacracy that
surrounds VMS, I know they have made some serious improvements in this
since (those small binders) but I don't think it quite solves it (I'd love
to think it had something to do with that conversation, not likely.)
Not that I'd recommend VMS for educational use anyhow (for other reasons)
tho I wouldn't condemn it either, just wouldn't be my choice (I mean,
after all, if they used VMS how would they ever learn UNIX?! :-)

	-Barry Shein, Boston University

jordan@nike.UUCP (Jordan Hayes) (06/25/86)

Barry Shein <bzs@bu-cs.UUCP> writes:

	it occurred to me that while the UNIX (4.2) manual set was
	available at our copy center for around $100 (and that includes
	broken out portions of the administrator's stuff etc, a
	realistic complete set for a student costs more like $50) an
	equivalent set of docs for VMS would fill a couple of
	bookshelves and cost hundreds of dollars.

So true! By the way, the 4.3 manuals have been completely re-typeset
and look terrific -- in addition, they have been re-arranged, along the
lines of the 4.2 USENIX versions (although there are now 6 volumes
instead of the 5) ... no word yet about the availabilty of 4.3 manuals
from USENIX in the small format ...

Jordan Hayes
{ucbvax,decvax}!usenix!jordan

grr@cbmvax.UUCP (06/25/86)

In article <802@tekcbi.UUCP> jimb@tekcbi.UUCP (Jim Boland) writes:
>
>What about RSTS??????????         |-) |-)
>In particular, V9   (earlier versions don't count)

RSTS is an absoulutly great system for what it was originally intended
for - a general purpose / educational timesharing system with user-
accessable software written in BASIC.  Along the way, it has learned
to do many more things, some of which are really better done on other
systems.

If you think it is clunkey, then you should consider the competition
around 1971 - you could spend $$$ and get a Burroughs B5500 or PDP-10,
or get a mini-computer and not be able to do much, although TSS-8
wasn't too bad.

                                         /- VMS --------->
                       RSX-11 --------------------------->
             OS/8 -> DOS...BATCH -> RT11 ---------------->
TOPS-10 ------------------------ TOPS-20 ---------------->
        \- TSS-8 -> RSTS -------------------------------->
                      Unix ------------------------------>

** funny how most of them are still around, huh? **

Well, maybe RSTS V2A20 did have a bug or two, but it was fun...
-- 
George Robbins - now working with,	uucp: {ihnp4|seismo|caip}!cbmvax!grr
but no way officially representing	arpa: cbmvax!grr@seismo.css.GOV
Commodore, Engineering Department	fone: 215-431-9255 (only by moonlite)

rcb@rti-sel.UUCP (Random) (06/26/86)

In article <841@bu-cs.UUCP> bzs@bu-cs.UUCP (Barry Shein) writes:
>
>re: MKR mentions the problem of VMS manuals.
>
>At a DECUS a couple of years ago I was sitting and chatting with some
>of the DEC/VMS crew, some of them were involved in ULTRIX also. The
>issue of VMS in an academic environment came up. I was trying to not
>go into any flamage but it occurred to me that while the UNIX (4.2)
>manual set was available at our copy center for around $100 (and that
>includes broken out portions of the administrator's stuff etc, a realistic
>complete set for a student costs more like $50) an equivalent set of
>docs for VMS would fill a couple of bookshelves and cost hundreds of
>dollars. I basically said that it was a real problem, at our VMS site
>almost none of our -faculty- have sufficient VMS manuals in their office
>while at our UNIX sites I never see this problem, they'll just go to the
>copy center and buy what they need.
>
There is now available for microVMS and I think for VMS4.4 a 2 manual set
that is a basic reference of the most needed items. It also takes up
exactly as much shelf space as the 5 manual unix set. Maybe they listened
to you?

>... (I mean, after all, if they used VMS how would they ever learn UNIX?! :-)
>
>	-Barry Shein, Boston University

That should read:

    (I mean, after all, if they used VMS why would they ever WANT to learn UNIX
    :-)

-- 
					Random (Randy Buckland)
					Research Triangle Institute
					...!mcnc!rti-sel!rcb

garry@batcomputer.TN.CORNELL.EDU (Garry Wiegand) (06/30/86)

(cross-posted to info-vax)

By just saying what I *liked* about VMS, and not saying *anything* about
any other operating system, I was trying hard not to get drawn into the
Unix wars. But I can't take the all the nonsense (tho there's been some 
sense too) that's been flowing by. Specifically:

1) Any message that begins with something of the form of "I prefer Unix but
   I'm a VMS expert too and I know you can't do ..." deserves an immediate
   'n' key. The body of the message can be safely assumed to be wrong.

2) The C language and the C run-time library are no longer the same thing as 
   "Unix"! I have cheerfully carried C programs full of library calls 
   back and forth between my VMS Vax, my Unix Vax, a MS-DOS PC, and a 
   MacIntosh. It's easy. When I want to create a file with a specific file 
   protection (not that I ever have wanted such a thing :-)) I call 'creat'. 
   Yes, on VMS! What we're supposed to be having here is a system war, not 
   a language war. Let's keep it pure, people!

3) The c-shell and Bourne shell are fine and wonderful in and of themselves,
   and would be a nice amenity on any system. Wollongong's implementation 
   of them on VMS side-stepped the process creation problem, but they
   unfortunately lost the DCL commands somewhere else along the way,
   leaving only the Unix syntax. I like my DCL command syntax and I'd 
   love to be able to wrap a better control structure around them. (I 
   haven't seen Dec/Shell yet; don't know if they did it right.) 
   Anyhow, the *shell* isn't "Unix" either! 

4) What *is* unique to a Unix system are the Unix system service calls,
   like 'stty' and 'fork' (as opposed to 'vfork').  This has made carrying
   system-referencing utilities between vanilla unixae pretty easy, and I
   can't deny it. But see diatribe.

*Diatribe begins here*

What I see now is Berkeley diverging from Bell Labs, all the micros
out there diverging from both, and many wizards burning the midnight oil
adding whizbangs like sockets, asynchronous I/O, window managers,
semaphores and network file systems -- things that will never be propagated 
to the whole unix world. Soon you will have to refer to Unix as "a family
of operating systems", seriously overlapping with other systems like VMS.

Which is all to the good. "Cross-fertilization", says I. "Willingness to
listen to other ideas", says I.  When it comes to something as complex as
an operating system and all its support utilities, don't close yourself
out. Listen to the VMS hackers. Standards are for dead people. 

(Now, can I please have a good Ultrix debugger?)

*end diatribe*
-- 
garry wiegand   (garry%cadif-oak@cu-arpa.cs.cornell.edu)

coleman@sask.UUCP (Geoff Coleman) (06/30/86)

> 
> Before you get the idea that I am a rabid UNIX hater, I actually like some
> features of unix. I prefer VMS for it's consistancy, reliability and
> versatility. There are many unix emulators on VMS because it has the power
> and flexability to do a lot of different things easily. I have never seen
> a VMS emulator on unix however. And as for the good things about unix,
> I have ported or duplicated them on VMS so that I now have the best of both
> worlds.
> -- 
    Why would anyone want to emulate VMS on a UNIX machine. Most people just
leave good enough alone.
	By the way have you ever tried to link a VMS program which uses 
libraries with circular calls (ie. a routine in library A calls a routine in
library B which calls a routine in library A). I tried linking a graphics 
program the other day with just such a setup and I ended up listing each 
library twice thus you get one very long command line.

> 					Random (Randy Buckland)
> 					Research Triangle Institute
> 					...!mcnc!rti-sel!rcb

Geoff Coleman

disclaimer: these are not opinions

levy@ttrda.UUCP (Daniel R. Levy) (07/05/86)

In article <873@rti-sel.UUCP>, rcb@rti-sel.UUCP (Random) writes:
>I promised myself that I was going to stay out of this annual OS debate.
>However, I weakened. So here it comes.
>In article <1000@ttrdc.UUCP> levy@ttrdc.UUCP writes:
>>Oh yes, and along with those verbose commands goes a command line which can't
>>be over 255 characters long, and a library-archiver, compiler, and linker
>>which can't take wild cards.  Real nice when you have a 100-module program.
>The librarian and most compilers WILL take wildcards and have done so for
>some time. True the linker won't which is a bother. However, it would be nice
>if you check your arguments before posting them.

I owe the net an apology; I tried it again with the LIBRARY command and yes
(whew), it does work.  So it's easy to build libraries (and in all fairness
too, the LIBRARY command is quicker than the UNIX 'ar' when inserting modules
in the middle is involved).

However, as Random admits, it won't work with the linker, and contrary to what
he says, it won't work with "most compilers" (at least not "most compilers"
that I have had opportunity to use!).  e.g. (VMS 4.2):

$ SET DEFAULT [LEVY.C]
$ DIR

Directory UD6:[LEVY.C]

FILE1.C;1           FILE2.C;1           

Total of 2 files.
$ CC *.C
%CC-F-OPENIN, error opening UD6:[LEVY.C]*.C; as input
-RMS-F-WLD, invalid wildcard operation

$ SET DEFAULT [LEVY.FORTRAN]
$ DIR

Directory UD6:[LEVY.FORTRAN]

FILE1.FOR;1         FILE2.FOR;1         

Total of 2 files.
$ FORTRAN *.FOR
%FORT-F-OPENIN, error opening UD6:[LEVY.FORTRAN]*.FOR; as input
-RMS-F-WLD, invalid wildcard operation
%FORT-F-ABORT, abort
$ SET DEFAULT [LEVY.MACRO]
$ DIR

Directory UD6:[LEVY.MACRO]

FILE1.MAR;1         FILE2.MAR;1         

Total of 2 files.
$ MACRO *.MAR
%MACRO-E-OPENIN, error opening UD6:[LEVY.MACRO]*.MAR; as input
-LIB-E-NOWILD, no wildcard permitted
$ SET DEFAULT [LEVY.MODULA2]
$ DIR

Directory UD6:[LEVY.MODULA2]

FILE1.MOD;1         FILE2.MOD;1         

Total of 2 files.
$ MODULA *.MOD
%MODULA-F-IOERR, problem during Open operation for file UD6:[LEVY.MODULA2]*.MOD;
-RMS-F-WLD, invalid wildcard operation
$ LO
  LEVY         logged out at 28-JUN-1986 20:21:04.43

(Me:)
>>Most Unix programs will print out a line or so of "usage" diagnostics if you
>>invoke them with bogus arguments.  Do VMS programs do this?
>>
(Random:)
>
>No. VMS programs will not let you invoke them with bogus arguments. Since
>the arguments are parsed by DCL before the program is invoked, if you give
>too many parameters or an unknown switch DCL will reject it with an error
>message that points out the specific problem.

Ah now, if only DCL were smart enough to give a diagnostic which is a little
more "specific" than this:

$ SHOW USERS/BOGUS
%DCL-W-IVQUAL, unrecognized qualifier - check validity, spelling, and placement
 \BOGUS\

I'd much prefer to see something like this, which is from SysV:

$ who -BOGUS
who:  illegal option -- B
Usage:	who [-rbtpludAasHTq] [am i] [utmp_like_file]

r	run level
b	boot time
t	time changes
p	processes other than getty or users
l	login processes
u	useful information
d	dead processes
A	accounting information
a	all (rbtpludA options)
s	short form of who (no time since last output or pid)
H	print header
T	status of tty (+ writable, - not writable, x exclusive open, ? hung)
q	quick who

>
>>>
>>>2) The on-line Help is well-indexed, and it's HUGE. They've recently started
>>>   digesting the language references into Help entries; I rarely need
>>>   to page through a manual anymore.
>>Tell me, is there one for the Fortran under VMS 4.x?  On our 3.x VMS systems,
>>we did indeed have a detailed online help for Fortran, and we have such a
>>help now for C, but not for Fortran.  Did someone just forget to install it,
>>(system manager is baffled) or is it an "extra" (cost) item, or what?
>This is the fault of your system manager for not reading the installation
>document that came with the fortran compiler. There are really 2 distributions
>on the tape. One for fortran and one for the help and the help is even more
>extensive than the one on 3.x.

I owe somewhat of an apology for this flame, and will go beat on my system
manager to install the fuller HELP :-).

>>Unix online help need not be "HUGE" because the system interface isn't "HUGE."
>>I think VMS is marvelous from many user points of view (despite my criticisms
>>herein) but the system interface is a monstrous headache because of the
>>complexity.
>
>VMS online help is HUGE because it is complete. Unix help on the other hand...

Well, maybe I shouldn't say that UNIX help is so small.  (WARNING: LOTS OF
TEXT FOLLOWS!)

$ ls -sRC /usr/catman
total 3        1 a_man     1 p_man     1 u_man

/usr/catman/a_man:
total 7       4 man1     2 man7     1 man8

/usr/catman/a_man/man1:
total 559               2 errstop.1m.z       3 qasurvey.1m.z
   3 Uutry.1m.z         6 ff.1m.z            3 reboot.1m.z
   2 abt.1m.z           2 filesave.1m.z      2 rmv.1m.z
   3 accept.1m.z        4 finc.1m.z          7 rst.1m.z
   7 acct.1m.z          5 format.1m.z       10 runacct.1m.z
   5 acctcms.1m.z       4 frec.1m.z          3 sadp.1m.z
   6 acctcon.1m.z      13 fsck.1m.z          7 sar.1m.z
   3 acctmerg.1m.z      6 fscv.vax.1m.z      3 setmnt.1m.z
   4 acctprc.1m.z      10 fsdb.1m.z          3 setmrf.1m.z
  14 acctsh.1m.z        4 fts.1m.z           3 shutdown.1m.z
   3 acuset.1m.z        4 fuser.1m.z         3 ssr.1m.z
   5 bdblk.1m.z         5 fwtmp.1m.z         2 sta.1m.z
   4 brc.1m.z          12 getty.1m.z         3 sysdef.1m.z
   5 checkall.1m.z     17 init.1m.z          3 tic.1m.z
   3 chmap.1m.z         7 install.1m.z      12 trenter.1m.z
   3 chroot.1m.z        5 intro.1m.z         4 uucheck.1m.z
   3 clri.1m.z          2 ipb.1m.z           3 uucico.1m.z
   3 config.3b.1m.z     2 killall.1m.z       5 uuclean.1m.z
  17 config.dc.1m.z     2 link.1m.z          6 uucleanup.1m.z
   6 cpset.1m.z        13 lpadmin.1m.z       6 uugetty.1m.z
  15 crash.1m.z         4 lpsched.1m.z       3 uusched.1m.z
   3 cron.1m.z          4 mkboot.1m.z        5 uusub.1m.z
   4 dcopy.1m.z         7 mkfs.1m.z          3 uutry.1m.z
   3 devnm.1m.z         3 mknod.1m.z         4 uuxqt.1m.z
   3 df.1m.z            3 mount.1m.z         3 vcf.1m.z
   3 dfcvers.1m.z       5 msi.1m.z           3 vlx.1m.z
   8 dgn.1m.z           2 mvdir.1m.z         6 volcopy.1m.z
   5 diskusg.1m.z       3 ncheck.1m.z       48 vpmc.dec.1m.z
   3 dmkset.1m.z        4 newboot.1m.z      24 vpmc.u3b.1m.z
   6 don.1m.z           3 non-btl.1m.z       4 vpmsave.1m.z
   3 dskfmt.1m.z        3 pcldaemon.1m.z     6 vpmset.1m.z
   5 dstart.1m.z        2 prm.1m.z           5 vpmtest.1m.z
   3 errdead.1m.z       4 profiler.1m.z      2 wall.1m.z
   3 errdemon.1m.z      3 psel.1m.z          2 whodo.1m
   6 errpt.1m.z         3 pwck.1m.z

/usr/catman/a_man/man7:
total 194             3 hm.7.z           3 osm.7.z          2 tn4.7
   4 acu.7.z          4 hp.7.z           3 pcl.7.z          2 tn74.7.z
   2 cat.7.z          3 hs.pdp.7.z       2 prf.7.z          3 tn83.7.z
   2 dgn.7.z          5 ht.7.z           3 rf.pdp.7.z       2 tn85.7.z
   2 dmc.7.z          4 intro.7.z        3 rk.pdp.7.z       5 trace.7.z
   3 dmk.7.z          2 kl.pdp.7.z       3 rl.7.z           5 ts11.7.z
   7 dsk.7.z          4 kmc.7.z          3 rm80.7.z         2 tty.7.z
   2 du.pdp.7.z       4 lp.7.z           3 rp.pdp.7.z       5 tu78.7.z
   2 dz.7.z           2 mem.7.z          3 rp07.7.z         4 un32.7.z
   2 err.7.z          2 ml11.pdp.7.z     6 sxt.7.z          2 un53.7.z
   4 gd.7.z           7 mtc.7.z         31 termio.7.z       2 vp.pdp.7.z
   2 gt.7.z           1 null.7.z         5 tm.pdp.7.z      19 vpm.7.z

/usr/catman/a_man/man8:
total 181             23 780ops.8.z        2 intro.8           7 romboot.8.z
   7 3B20boot.8.z     14 crash.dec.8.z     6 ldtape.8.z        4 tapeboot.8.z
   5 3B20ops.8.z       9 crash.u3b.8.z    12 mk.8.z            3 unixboot.8.z
  13 70boot.8.z        6 diskboot.8.z     14 prm.8.z
  16 750ops.8.z       16 eai.8.z          24 rje.8.z

/usr/catman/p_man:
total 10      2 man2     5 man3     2 man4     1 man5

/usr/catman/p_man/man2:
total 339            2 getpid.2.z      3 pipe.2.z        2 sync.2.z
   4 access.2.z      2 getuid.2.z      5 plock.2.z       4 sys3b.2.z
   4 acct.2.z       41 intro.2.z       4 profil.2.z      2 time.2.z
   2 alarm.2.z       3 ioctl.2.z      12 ptrace.2.z      4 times.2.z
   4 brk.2.z         5 kill.2.z        5 read.2.z        3 ulimit.2.z
   3 chdir.2.z       4 link.2.z       10 semctl.2.z      2 umask.2.z
   5 chmod.2.z       4 lseek.2.z       2 semget.2.z      3 umount.2.z
   4 chown.2.z      10 maus.2.z       13 semop.2.z       3 uname.2.z
   3 chroot.2.z      6 mknod.2.z       2 setpgrp.2.z     4 unlink.2.z
   2 close.2.z       4 mount.2.z       3 setuid.2.z      3 ustat.2.z
   5 creat.2.z       7 msgctl.2.z      6 shmctl.2.z      5 utime.2.z
   3 dup.2.z         6 msgget.2.z      7 shmget.2.z      6 wait.2.z
  14 exec.2.z       15 msgop.2.z       7 shmop.2.z       5 write.2.z
   5 exit.2.z        3 nice.2.z       15 signal.2.z
   5 fcntl.2.z       8 open.2.z        7 stat.2.z
   5 fork.2.z        2 pause.2.z       2 stime.2.z

/usr/catman/p_man/man3:
total 616               5 getc.3s.z          4 nlist.3c.z
   3 a64l.3c.z          3 getcwd.3c.z        3 perror.3c.z
   2 abort.3c.z         2 getenv.3c.z        6 plot.3x.z
   2 abort.3f.z         2 getenv.3f.z        4 popen.3s.z
   2 abs.3c.z           6 getgrent.3c.z     15 printf.3s.z
   3 abs.3f.z           3 getlogin.3c.z      6 putc.3s.z
   2 acos.3f.z          6 getopt.3c.z        3 putenv.3c.z
   2 aimag.3f.z         3 getpass.3c.z       3 putpwent.3c.z
   2 aint.3f.z          3 getpw.3c.z         3 puts.3s.z
   2 asin.3f.z          7 getpwent.3c.z      3 qsort.3c.z
   3 assert.3x.z        3 gets.3s.z          2 rand.3c.z
   2 atan.3f.z         10 getut.3c.z         2 rand.3f.z
   2 atan2.3f.z        12 hsearch.3c.z      10 regcmp.3x.z
   4 bessel.3m.z        2 hypot.3m.z         3 round.3f.z
   3 bool.3f.z          2 iargc.3f          14 scanf.3s.z
   7 bsearch.3c.z       2 index.3f.z         6 setbuf.3s.z
   3 clock.3c.z         9 intro.3.z          4 setjmp.3c.z
   2 conjg.3f.z         3 l3tol.3c.z         3 sign.3f.z
   4 conv.3c.z          3 ldahread.3x.z      2 signal.3f.z
   3 cos.3f.z           5 ldclose.3x.z       3 sin.3f.z
   2 cosh.3f.z          4 ldfhread.3x.z      2 sinh.3f.z
   5 crypt.3c.z         6 ldgetname.3x.z     3 sinh.3m.z
   3 ctermid.3s.z       7 ldlread.3x.z       4 sleep.3c.z
   8 ctime.3c.z         4 ldlseek.3x.z       3 sputl.3x.z
   4 ctype.3c.z         3 ldohseek.3x.z      3 sqrt.3f.z
  23 curses.3x.z        7 ldopen.3x.z        6 ssignal.3c.z
   3 cuserid.3s.z       4 ldrseek.3x.z       6 stdio.3s.z
  10 dial.3c.z          5 ldshread.3x.z      5 stdipc.3c.z
   2 dim.3f.z           4 ldsseek.3x.z       2 strcmp.3f.z
   2 dprod.3f           4 ldtbindex.3x.z    10 string.3c.z
  13 drand48.3c.z       4 ldtbread.3x.z      4 strtod.3c.z
   5 ecvt.3c.z          3 ldtbseek.3x.z      4 strtol.3c.z
   3 end.3c.z           2 len.3f             2 swab.3c.z
   2 erf.3m.z           3 log.3f.z           2 system.3f.z
   3 exp.3f.z           3 log10.3f.z         3 system.3s.z
   5 exp.3m.z           2 logname.3x.z       2 tan.3f.z
   3 fclose.3s.z        7 lsearch.3c.z       2 tanh.3f.z
   3 ferror.3s.z        6 malloc.3c.z        2 tmpfile.3s.z
   3 floor.3m.z        10 malloc.3x.z        7 tmpnam.3s.z
   7 fopen.3s.z         9 matherr.3m.z       5 trig.3m.z
   5 fread.3s.z         3 max.3f.z          13 tsearch.3c.z
   4 frexp.3c.z         2 mclock.3f.z        3 ttyname.3c.z
   5 fseek.3s.z         6 memory.3c.z        2 ttyslot.3c.z
   6 ftw.3c.z           3 min.3f.z           3 ungetc.3s.z
   9 ftype.3f.z         2 mktemp.3c.z        5 vprintf.3s.z
   3 gamma.3m.z         3 mod.3f.z           5 vprintf.3x.z
   2 getarg.3f.z        6 monitor.3c.z

/usr/catman/p_man/man4:
total 313               6 fspec.4.z          5 passwd.4.z
  16 a.out.4.z          8 gettydefs.4.z      6 plot.4.z
  12 a.out.pdp.4.z     10 gps.4.z            2 pnch.4.z
   6 acct.4.z           2 group.4.z          4 profile.4.z
   7 ar.4.z            16 inittab.4.z        7 reloc.4.z
   3 ar.pdp.4.z         3 inode.4.z         13 sccsfile.4.z
   2 checklist.4.z      2 intro.4.z          4 scnhdr.4.z
   4 core.4.z           2 issue.4.z          7 syms.4.z
   4 cpio.4.z          12 ldfcn.4.z          8 system.4.z
   2 dir.4.z            3 linenum.4.z       10 term.4.z
  12 errfile.4.z        6 master.dec.4.z    80 terminfo.4.z
   4 filehdr.4.z        5 master.u3b.4.z     5 utmp.4.z
  12 fs.4.z             3 mnttab.4.z

/usr/catman/p_man/man5:
total 144            1 intro.5.z      14 mv.5.z          3 types.5.z
   4 ascii.5.z      14 man.5.z         4 prof.5.z        5 values.5.z
   4 environ.5.z     3 math.5.z       18 regexp.5.z      6 varargs.5.z
   6 eqnchar.5.z     3 mm.5.z          3 stat.5.z
   3 fcntl.5.z       9 mosd.5.z        5 term.5.z
  22 font.5.z        3 mptx.5.z       14 troff.5.z

/usr/catman/u_man:
total 9        1 local     7 man1      1 man6

[listings of local stuff deleted to save space]

/usr/catman/u_man/man1:
total 1666             4 diff3.1.z         2 machid.1.z        4 sno.1.z
   9 300.1.z           4 diffmk.1.z        4 macref.1.z       14 sort.1.z
   3 4014.1.z          2 dircmp.1.z       10 mail.1.z          9 spell.1.z
   5 450.1.z           5 dis.1.z          52 mailx.1.z         4 spline.1g.z
  12 acctcom.1.z       3 du.1.z           30 make.1.z          2 split.1.z
  26 adb.1.z           6 dump.1.z          4 makekey.1.z       4 sroff.1.z
  22 admin.1.z         3 dx9700.1.z        2 man.1.z          17 stat.1g.z
   8 ar.1.z            2 echo.1.z          2 mesg.1.z          5 strip.1.z
   6 ar.pdp.1.z       43 ed.1.z            2 mkdir.1.z         3 strip.pdp.1.z
   2 arcv.pdp.1.z     15 edit.1.z         10 mm.1.z           19 stty.1.z
   7 as.1.z            6 efl.1.z           5 mmlint.1.z        7 su.1.z
   5 as.pdp.1.z        3 enable.1.z        6 mmt.1.z           2 sum.1.z
   3 asa.1.z           2 env.1.z           6 net.1c.z          2 sync.1.z
   9 at.1.z           13 eqn.1.z          12 newform.1.z      12 tabs.1.z
  12 awk.1.z          21 ex.1.z            5 newgrp.1.z        4 tail.1.z
   2 banner.1          7 expr.1.z          4 news.1.z          8 tar.1.z
   3 basename.1.z      8 f77.1.z           2 nice.1.z          8 tbl.1.z
   7 bc.1.z            2 factor.1.z        7 nl.1.z            5 tc.1.z
   3 bdiff.1.z         3 file.1.z          8 nm.1.z            2 tee.1
  13 bfs.1.z           8 find.1.z          4 nm.pdp.1.z        6 test.1.z
  37 bs.1.z            3 fsplit.1.z        4 nohup.1.z         2 time.1.z
   2 cal.1.z           6 gdev.1g.z        12 nroff.1.z         5 timex.1.z
   3 calendar.1.z     26 ged.1g.z         18 ocw.1.z           7 toc.1g.z
   3 cat.1.z          31 get.1.z           3 od.1.z            2 touch.1.z
   2 cb.1.z            4 getopt.1.z        7 pack.1.z          3 tplot.1g.z
  12 cc.1.z            5 graph.1g.z        5 passwd.1.z        5 tput.1.z
   3 cd.1.z            5 graphics.1g.z     6 paste.1.z         5 tr.1.z
   9 cdc.1.z           3 greek.1.z        15 pg.1.z            6 troff.1.z
   7 cflow.1.z         7 grep.1.z          2 pic.1.z           2 true.1.z
   5 chmod.1.z         7 gutil.1g.z        7 pr.1.z            2 tsort.1.z
   2 chown.1.z         3 help.1.z          8 prof.1.z          2 tty.1.z
   2 cmp.1.z           6 hp.1.z           25 prs.1.z           3 umask.1.z
   6 col.1.z          13 hpio.1.z         12 ps.1.z            5 un53ctl.1c.z
   6 comb.1.z          2 hyphen.1.z        5 ptx.1.z           2 uname.1.z
   2 comm.1.z          2 id.1              2 pwd.1             3 unget.1.z
   6 convert.1.z       5 intro.1.z         5 ratfor.1.z        3 uniq.1.z
   4 cp.1.z            4 ipcrm.1.z         4 regcmp.1.z        4 units.1.z
   8 cpio.1.z         14 ipcs.1.z          6 rjestat.1c.z     13 uucp.1c.z
  15 cpp.1.z           5 join.1.z          3 rm.1.z            7 uustat.1c.z
   2 cprs.1.z          5 kasb.1.z          4 rmdel.1.z         6 uuto.1c.z
   7 crontab.1.z       3 kill.1.z          3 sact.1.z          9 uux.1c.z
   5 crypt.1.z        10 ld.1.z            6 sag.1g.z          6 val.1.z
   8 csplit.1.z        9 ld.pdp.1.z        8 sar.1.z          10 vc.1.z
   6 ct.1c.z          10 lex.1.z           4 scc.1.z          24 vi.1.z
  21 ctrace.1.z        2 line.1.z          3 sccsdiff.1.z      3 vpr.1.z
  16 cu.1c.z          15 lint.1.z         35 sdb.1.z           2 wait.1.z
   6 cut.1.z           5 list.1.z          5 sdiff.1.z         2 wc.1.z
   4 cxref.1.z         8 login.1.z        14 sed.1.z           3 what.1.z
   5 daps.1.z          2 logname.1.z      28 send.1c.z         9 who.1.z
   5 date.1.z          3 lorder.1.z       53 sh.1.z            6 write.1.z
   8 dc.1.z            7 lp.1.z            7 shl.1.z          18 x9700.1.z
   6 dd.1.z            5 lpstat.1.z        3 size.1.z         13 xargs.1.z
  12 delta.1.z        10 ls.1.z            2 size.pdp.1.z      6 yacc.1.z
   6 diff.1.z         15 m4.1.z            2 sleep.1.z

/usr/catman/u_man/man6:
total 49                2 hangman.6.z        6 reversi.6.z
   4 arithmetic.6.z     1 intro.6.z          5 sky.6.z
   3 back.6.z           3 jotto.6.z          2 ttt.6.z
   4 bj.6.z             2 maze.6             2 wump.6.z
   3 chess.6.z          2 moo.6.z
   6 craps.6.z          4 quiz.6.z

>>>
>>>4) The system services are logical, consistent, and well-documented. Anything
>>>   a utility can do, a user program can do too. (And if you want to tickle the
>>>   kernel, there *is* a thick manual on the system internals.)
>>
>>Could you then do me a favor.  Show me how, in Fortran, I would go about
>>setting the protection (no fancy ACL stuff, just basic RWED protections)
>>on a file which I am creating.  (In C it's easy enough, since the protec-
>>tion is specified when the file is created, which of course is tied to the
>>straightforward Unix way of doing things!)  Please show actual code, such as
>>a USEROPEN program, together with the OPEN() statement that calls it, to run
>>on VMS 4.2.  Or even show me how I can do it in assembler.  (I hesitate to
>>say show me how to do it in the system programming language, since Bliss-32
>>is an "extra-cost" [and not really very commonly used outside of DEC, unlike
>>C which is commonly used outside of Unix systems, let alone AT&T machines]
>>option which I don't have.  I think the analogy fair since that is what I
>>would probably do if I needed to change the protection of a Unix file from
>>Fortran [I would call chmod() in a C routine].)
>Since I don't write in fortran, I can't give you the exact details, but
>the useropen routine should allocate a protection XAB and link it to the FAB
>passed into the useropen routine. When the open occurs, the protection
>will be right.

Well, GEEEEEEEE.  With a [SYS,LIB]$EVERYTHING_UNDER_THE_SUN, surely there
MUST be a simpler way to do this (or is there?)  Some people have suggested
using LIB$SPAWN(...,'SET PROTECTION=(whatever) FILENAME.DAT',...)
or some system call to change default protections.
Trouble is that spawning is a major undertaking under VMS, and changing the
default protections in a program I am running has the nasty side effect of
leaving them that way for the next program I run (since from DCL all user
programs from one DCL session run as part of the same process).

>>See also my comments under 2) about the system interface.  It is massive,
>>complex, and cumbersome, as well as introducing kludges into common pro-
>>gramming languages, to be blunt.  VMS does indeed pride itself on
>>accessibility of system routines from "any" language, but this occurs at
>>the cost of kludgey extensions (like Fortran STRUCTUREs and RECORDs and
>>%val()s and %loc()s) to common programming languages, that a user would
>>actually WANT to program in.  C, which is a fairly common, "ordinary"
>>programming language and sees wide use and portability even in non-Unix
>>environments, fits the UNIX system interface very naturally and needs no
>>such kludges to use it.  (It is commendable that DEC has seen fit to switch
>>rather than fight, and has provided an extensive UNIX-like interface to
>>the VMS system within C.)
>Fortran structures, records, etc. do not exist for the purpose of kludgey
>interfaces to system routines. They exist to enhance fortran's capabilities.
>Structures and records provide better programming practices and %val and
>%loc allow rather sophisticated pointer operations to be done.

Ah, but if those weren't there I'd say it would have a hard time indeed
communicating with the OS.  Also the %val and %loc and structure and record
stuff guarantees incompatibility with any other Fortran in the world.
It might be a nice programming language, but it is a superset of Fortran
and should be called such.

>>>
>>>5) VMS, she doesn't die, she doesn't break, she doesn't lose files, she
>>>   just keeps running along. It's pretty trustworthy.
>>
>>Oh yes, remember the security hole in VMS 4.1 about a nonprivileged user
>>being able to crash the system by entering certain line-editing sequences
>>in response to a prompt (involving ^B and some other escape codes).  I
>>succeeded in doing this once from DCL, and we have a plain VMS system, no
>>special private kernel drivers installed.  VMS 4.2 also kicked the bucket
>>on me the other week when I was trying to access the help library.  The
>>system just barfed, and the console dump contained my process name.  And
>>I wasn't even trying any funny business or having any special privileges.
>>Needless to say, Unix has never done this kind of thing.
>>
>Would you mind also including the list of unix kernal bugs that can be activated
>by any user to kill the system. Assuming that there is disk space to keep the
>list. The above bug makes a good example for you to point to because it
>stands out. The reason it stands out is because it is the ONLY bug of it's kind
>I have ever seen since about version 2.5

Oh yes, you want ANOTHER bug?  What about that ordinary users can make the
VMS approximation of "links" (SET FILE/ENTRY) to system files even if they
cannot write or read them.  Then if a process with proper privileges blows
these links away, VMS in its infinite wisdom blows away the CONTENTS of the
files as well as the entry!  This is not an "accidental" bug either, like the
^B bug was.

As for UNIX kernel bugs, I accept the challenge.  Any and all interested,
please send me C code which I can compile and run as a nonprivileged user
on SysVR2 to crash a 3B2, a 3B20, or a VAX, and I will either try it myself
(3B2) or submit it to people I know (and trust) to try it on the other
machines.

>Before you get the idea that I am a rabid UNIX hater, I actually like some
>features of unix. I prefer VMS for it's consistancy, reliability and
>versatility. There are many unix emulators on VMS because it has the power
>and flexability to do a lot of different things easily. I have never seen
>a VMS emulator on unix however. And as for the good things about unix,
>I have ported or duplicated them on VMS so that I now have the best of both
>worlds.
>--
>					Random (Randy Buckland)
>					Research Triangle Institute
>					...!mcnc!rti-sel!rcb

Yes, a UNIX emulator under VMS is improving things.  A VMS emulator under UNIX?
That would be an interesting research project, but what good would it do?...
(And it would of course only work on VAXen.  Forget about Amdahls, 3Bs, Pyra-
mids,...)

The VMS and UNIX paradigms are as different as night and day.
-- 
Daniel R. Levy
AT&T Computer Systems Division, Skokie, Illinois
..!ihnp4!ttrdc!levy

friesen@psivax.UUCP (Stanley Friesen) (07/08/86)

In article <873@rti-sel.UUCP> rcb@rti-sel.UUCP (Random) writes:
>
>>Most Unix programs will print out a line or so of "usage" diagnostics if you
>>invoke them with bogus arguments.  Do VMS programs do this?
>>
>
>No. VMS programs will not let you invoke them with bogus arguments. Since
>the arguments are parsed by DCL before the program is invoked, if you give
>too many parameters or an unknown switch DCL will reject it with an error
>message that points out the specific problem.

	Oh, *great*:-) How does the DCL parse the arguments for a user
written application program?? I can't see how it can do this without
some rather messy interface requirements.  This really sounds like a
way to make user-written programs second class citizens on the system.
I think the individual program is better qualified to analyse its own
arguments, whay is really needed is a *standard* for this, like getopts(3)!
-- 

				Sarima (Stanley Friesen)

UUCP: {ttidca|ihnp4|sdcrdcf|quad1|nrcvax|bellcore|logico}!psivax!friesen
ARPA: ??

davidsen@steinmetz.UUCP (07/08/86)

In article <175@esunix.UUCP> loosemor@esunix.UUCP (Sandra Loosemore) writes:
>I use both VMS and Un*x every day.  I do nearly all my program development
>under VMS, though, and I must admit that I like VMS a bit better.  There
>are a lot of operating systems that are a whole lot worse than Un*x though.
>(Fortunately, I don't have to use those every day....)
>
>I think the greatest advantage VMS offers over Un*x is the networked/shared
>file system.  VMS has had transparent network file access for at least 5
>years, and this is just now working its way into Un*x.  (They just installed
>this as a "local hack" on the machines at the University of Utah -- it is 
>by no means a standard feature yet.)  The VMS machines I use at work are
>clustered, so the file structure looks exactly the same no matter which
>machine I'm using.  Given the current trend towards distributed computing
>environments with personal workstations and compute servers, shared file
>systems are very important things for an operating system to support.

A cluster is a special case of a multiprocessor system in which the processors
are not allowed to share memory. I personally consider it an artifact of the
problems with the 782 which DID share memory. File sharing under VMS is about
as non-transparent as you can get! If I want a file on another machine, I type
	othermach::device:[many.sub.directories]file.typ
and to even access a file on another disk on the same machine I need an
explicit device name!

In UNIX, using NFS (public domain courtesy of Sun) or RFS (ATT) I can use a
path of the form:
	/dir/dir/dir/file
and I don't NEED to know if any level of the directory is on another drive or
even another machine far away (If it's too far for ethernet, I may guess. Page
faulting over a modem doesn't make it) connected by a logical link. NFS will
even allow me to mix UNIX and other operating systems, although I have heard
some things that make me feel there's room to improve that feature.
>
>Another thing I like about VMS is the documentation.  There is a great deal
>of tutorial information and examples in the manuals.  It seems like when
>I find I need to do something obscure with Un*x, I can never find the
>right command to do it (or the documentation is so terse that I'm never
>really sure whether it's the right command or not), and I end up having
>to ask a "wizard".  (Unix sites without "wizards" are really in trouble.)
>I also wish Un*x had on-line help on how to use the shell, instead of 
>just the utilities!

I agree that UN*X documentation is terse. I think we have the sh document on
line, although it isn't too good in 24 line chunks. The VMS online stuff is
too speciffic, as in after help <do something>, you often need to HELP SPECIFY
PERMISSIONS, HELP SPECIFY FILENAMES, and HELP SPECIFY otherstuf. Online help
frequently lacks examples.

The DEC internal manuals for things like internals, mapped sections, message
router, etc, are not BETTER than the UN*X manuals, just bigger and prettier.
>
>I don't think that either VMS or Un*x has serious problems with file system
>reliability; I've never lost a file under either OS.  File versions under
>VMS have saved me more times than I can remember, though.  Again, this is
>just another place where DEC has taken the trouble to try to "idiot-proof"
>things, and we users appreciate it.

The system manager often doesn't, though, since s/he has to purge the system
or run out of file space. The solution to this was to add disk quotas, and
make the user do the purge. If a user needs an editor which makes a backup of
a source file, fine. But to make multiple versons of the object and
executable? It's not obvious to the user how badly that eats up disk space.
>
>Of course, there are bad things about VMS too:  as others have pointed out, 
>processes are incredibly slow to start up, the mailer is not too great (but 
>neither is the Un*x mailer, for that matter), all of the DEC editors are 
>pretty awful (but so is "vi"), etc.  On the whole, though, Un*x is fine if
>you want an "open" operating system where you can tweak everything in sight,
>but if you just want to get a job done, VMS is a lot less hassle.

Actually mailx and Berkeley mail are acceptable user agents in my opinion, if
not perfect. Use of some sendmail program to handle domain addressing is
needed on any machine with complex connections. Editors are a matter of faith,
the only way to get what you want is write it. VMS has very little user help
for jobs which are trivial with pipes. It doesn't easily encourage
redirection, with "ASSIGN/USER SYS$OUTPUT filename" replacing >file. And don't
forget logical names... does this program write SYS$OUTPUT, C$OUTPUT, or
whatever.

I am not really getting into the VMS vs UNIX(tm) argument so much as pointing
out that your perceptions of the strong points of VMS are not universally
shared. Another time I'll post my list of good things in VMS for someone else
to shoot at.
-- 
	-bill davidsen

  ihnp4!seismo!rochester!steinmetz!--\
                                       \
                    unirot ------------->---> crdos1!davidsen
                          chinet ------/
         sixhub ---------------------/        (davidsen@ge-crd.ARPA)

"Stupidity, like virtue, is its own reward"

g-rh@cca.UUCP (07/09/86)

In article <> friesen@psivax.UUCP (Stanley Friesen) writes:
>In article <873@rti-sel.UUCP> rcb@rti-sel.UUCP (Random) writes:
>>
>>>Most Unix programs will print out a line or so of "usage" diagnostics if you
>>>invoke them with bogus arguments.  Do VMS programs do this?
>>>
>>
>>No. VMS programs will not let you invoke them with bogus arguments. Since
>>the arguments are parsed by DCL before the program is invoked, if you give
>>too many parameters or an unknown switch DCL will reject it with an error
>>message that points out the specific problem.
>
>	Oh, *great*:-) How does the DCL parse the arguments for a user
>written application program?? I can't see how it can do this without
>some rather messy interface requirements.  This really sounds like a
>way to make user-written programs second class citizens on the system.
>I think the individual program is better qualified to analyse its own
>arguments, whay is really needed is a *standard* for this, like getopts(3)!

	I'm not a VMS guru but I know enough to know that this is all
getting a little confused.  VMS programs which are not installed can
be executed either with RUN or MCR.  RUN is a general utility for
executing a user application program; MCR is another such utility with
somewhat different rules.  In particular, arguments cannot be passed
to programs invoked using RUN; however they can for programs invoked
using MCR.  System programs take options in the form of switches.  Thus:

run xyz
mcr xyz arg1 arg2 arg3
dir/col=1

[DIR is the equivalent of ls.  The slash signifies a switch (option).
In this case the output is one column per line.]

I don't know the rules for creating commands using switches.  (My
impression is that is done as part of installation -- but I just don't
know.)  In any case the DCL switch parser is the equivalent for VMS
of getopts for publicly known programs.  The difference is that you
have to describe to the system what rules your options (switches)
follow if your program is a public program.  When your program is
invoked the DCL validates the arguments before the program is brought
up.  DISCLAIMER -- this is just my impression; someone with VMS systems
experience should clarify the matter.  However, if my understanding is
correct, then this is a perfectly reasonable way to do things  -- I
would count it as preferable since it insists that options in public
(system wide) utilities be handled in a standardized manner.

		Richard Harter SMDS Inc.

QAA@PSUVM.BITNET (07/09/86)

>
>        Oh, *great*:-) How does the DCL parse the arguments for a user
>written application program?? I can't see how it can do this without
>some rather messy interface requirements.  This really sounds like a
>way to make user-written programs second class citizens on the system.
>I think the individual program is better qualified to analyse its own
>arguments, whay is really needed is a *standard* for this, like getopts(3)!
>--
>
>                                Sarima (Stanley Friesen)
>
>UUCP: {ttidca|ihnp4|sdcrdcf|quad1|nrcvax|bellcore|logico}!psivax!friesen
>ARPA: ??
     
VMS allows *TWO* ways for an image (with parameters) to be activated.
If you so choose, you may have your application parse ALL of the
command line, spending tons of worthless cpu time deciding what is
right and what is wrong, or you can opt to have DCL parse the command
line for you.  In EITHER case, it is YOUR decision as to which
parameters or qualifiers are valid, etc.
     
In the first case, your program would make a call to a library
function called LIB$GET_FOREIGN(...)  and magically you would be
given everything typed past the command name.  From that point
on, it's your responsibility to parse the mess you get.
     
The other alternative is to write a "command definition" file
which describes EXACTLY to DCL what qualifiers or parameters
are valid, which ones can be use together, which ones require
a value, which ones have default values, etc..  Sounds pretty
powerful to me!  DCL will even PROMPT for missing parameters
with a prompt that YOU decide on!
     
All your program has to do then is to call special routines
to pick up this information.  For example, to get the value
of the qualifier "/REMOTE" all you would do is call a routine
called CLI$GET_VALUE('REMOTE'...)  Magically you get a string
returned which contains the "value" of the qualifier.
     
I don't see this interface as kludgy in any way, I consider
it an elegant interface to a complex parsing routine called
DCL.   For more on how this all works, check out the Command
Definition Utility in the Utilities Ref. Manual.  (You might
be surprised)
     
Ever considered checking the manuals BEFORE complaining about
this or that?
     
Cheers,
     
Tim Bieling, System Manager - Architecture Computer Lab
                              Penn State University
     
Bitnet:  Bieling@Psuarch
     

jim@oswald.UUCP (Jim Olsen) (07/10/86)

In article <1320@psivax.UUCP> friesen@psivax.UUCP (Stanley Friesen) writes:
>	Oh, *great*:-) How does the DCL parse the arguments for a user
>written application program?? I can't see how it can do this without
>some rather messy interface requirements.  This really sounds like a
>way to make user-written programs second class citizens on the system.
>I think the individual program is better qualified to analyse its own
>arguments, whay is really needed is a *standard* for this, like getopts(3)!

On the contrary, user-written programs under VMS are not second-class citizens
in this respect.  There is a fully documented facility for telling DCL how to
parse the command line.  This facility is used by system and user programs
alike.  As to whether it's better to have the program or the system parse the
command line, I think that's a matter of taste.  However, having the system
do the parsing makes it easier to encourage standardization.

levy@ttrdc.UUCP (Daniel R. Levy) (07/10/86)

In article <1320@psivax.UUCP>, friesen@psivax.UUCP (Stanley Friesen) writes:
>In article <873@rti-sel.UUCP> rcb@rti-sel.UUCP (Random) writes:
>>>Most Unix programs will print out a line or so of "usage" diagnostics if you
>>>invoke them with bogus arguments.  Do VMS programs do this?
>>No. VMS programs will not let you invoke them with bogus arguments. Since
>>the arguments are parsed by DCL before the program is invoked, if you give
>>too many parameters or an unknown switch DCL will reject it with an error
>>message that points out the specific problem.
>        Oh, *great*:-) How does the DCL parse the arguments for a user
>written application program?? I can't see how it can do this without
>some rather messy interface requirements.  This really sounds like a
>way to make user-written programs second class citizens on the system.
>I think the individual program is better qualified to analyse its own
>arguments, whay is really needed is a *standard* for this, like getopts(3)!
>                                Sarima (Stanley Friesen)
>UUCP: {ttidca|ihnp4|sdcrdcf|quad1|nrcvax|bellcore|logico}!psivax!friesen
>ARPA: ??

To be fair, it is possible to set a user program up to receive command line
arguments which have been pre-parsed by DCL, but the procedure is indeed
slightly "messy" (special library functions must be called from the user
program, and DCL must be told explicitly (as in the login procedure) about
a file containing a description of how DCL is to parse the arguments,
qualifiers, etc. for user commands.  (It is also possible to set up a
user program as a "foreign" command, whereby it is defined as a "symbol"
[kind of like a ksh or csh "alias"] and an image of the command line can
be accessed through a special library function by the program thus invoked.)

However, even at best DCL "diagnostics" can be ambiguous.  For example,

$ SHOW USERS/BOGUS

gets me the diagnostic

%DCL-W-IVQUAL, unrecognized qualifier - check validity, spelling, and placement
 \BOGUS\

Hardly pointing out the specific problem!  Better something like this (under
System V):

$ who -bogus
who:  illegal option -- o
Usage:	who [-rbtpludAasHTq] [am i] [utmp_like_file]

r	run level
b	boot time
t	time changes
p	processes other than getty or users
l	login processes
u	useful information
d	dead processes
A	accounting information
a	all (rbtpludA options)
s	short form of who (no time since last output or pid)
H	print header
T	status of tty (+ writable, - not writable, x exclusive open, ? hung)
q	quick who
-- 
 -------------------------------    Disclaimer:  The views contained herein are
|       dan levy | yvel nad      |  my own and are not at all those of my em-
|         an engihacker @        |  ployer or the administrator of any computer
| at&t computer systems division |  upon which I may hack.
|        skokie, illinois        |
 --------------------------------   Path: ..!{akgua,homxb,ihnp4,ltuxa,mvuxa,
						vax135}!ttrdc!ttrda!levy

rcb@rti-sel.UUCP (Random) (07/10/86)

In article <1320@psivax.UUCP> friesen@psivax.UUCP (Stanley Friesen) writes:
>In article <873@rti-sel.UUCP> rcb@rti-sel.UUCP (Random) writes:
>>
>>>Most Unix programs will print out a line or so of "usage" diagnostics if you
>>>invoke them with bogus arguments.  Do VMS programs do this?
>>>
>>
>>No. VMS programs will not let you invoke them with bogus arguments. Since
>>the arguments are parsed by DCL before the program is invoked, if you give
>>too many parameters or an unknown switch DCL will reject it with an error
>>message that points out the specific problem.
>
>	Oh, *great*:-) How does the DCL parse the arguments for a user
>written application program?? I can't see how it can do this without
>some rather messy interface requirements.  This really sounds like a
>way to make user-written programs second class citizens on the system.
>I think the individual program is better qualified to analyse its own
>arguments, whay is really needed is a *standard* for this, like getopts(3)!
>-- 
>				Sarima (Stanley Friesen)

Have you ever possibly considered finding out about something before
talking about. It will usually make you look a lot less like a fool.
The DCL command definitions simply define how many parameters can be used,
which ones are optional, the possible switches, The possible switch locations,
and the possible types for parameters and switches. It can also be used
to change the default values based on interactive or batch operation.
The possible types are simply string, number, file, acl, etc. and also
one of a list of user defined keywords. DCL is capable of parsing these
properly because you give it a definition that defines all these possibilities.
Also, one of the possibilities is type=rest_of_line which will turn off all
parsing and make the rest of the line be one parameter. The advantages it
gives you are that if you give it too many parameter, it give you an error
message. If you give it too few, it will prompt for what it needs. If a 
switch requires a value and you don't give it one, it will issue an error.
If a switch does not take a value and you giv it one, it will issue an error.
If you give a string to a parameter of type number you get an error message.
And if you use a switch that is not defined, you get an error. Beyond type
checking, it does not try to interpret your parameters and switch values.

An example of the definition file follows so that you might know what you
are maligning.


! The TeX command

define verb tex
	image tex_base:[programs]tex
	parameter p1, label=input_file
	parameter p2, label=second_file
	qualifier font_directory, label=font_area, nonnegatable, value(list)
	qualifier input_directory, label=input_area, nonnegatable, value(list)
	qualifier batch, batch


Simple, clean and easy to use. Definable on a per user basis, defined for
a group of users by the system manager or on a system wide basis. The program
interface is also clean. To get the values, you only have to issue the 
following call.

	call dcl$get_value ("input_area", string_variable)

and you have it. Easy, no? So, next time, ask someone about a feature you
know nothing about before you go shooting off your mouth (or keyboard).
-- 
					Random (Randy Buckland)
					Research Triangle Institute
					...!mcnc!rti-sel!rcb

iwm@icdoc.UUCP (07/10/86)

In article <1320@psivax.UUCP> friesen@psivax.UUCP (Stanley Friesen) writes:
>>
>>No. VMS programs will not let you invoke them with bogus arguments. Since
>>the arguments are parsed by DCL before the program is invoked, if you give
>>too many parameters or an unknown switch DCL will reject it with an error
>>message that points out the specific problem.
>
>	Oh, *great*:-) How does the DCL parse the arguments for a user
>written application program?? I can't see how it can do this without
>some rather messy interface requirements.  This really sounds like a
>way to make user-written programs second class citizens on the system.
>I think the individual program is better qualified to analyse its own
>arguments, whay is really needed is a *standard* for this, like getopts(3)!

Well I find its a very nice interface: 
 1 Define the syntax in a text form in a command definition file eg:
   DEFINE VERB CRASH
    IMAGE "USER_GAMES:DIE.EXE"
    PARAMETER P1,LABEL=TIME,VALUE(PROMPT="When?,TYPE=$DATETIME)
 2 Write your program and use two interface functions to check if 
   items are pressent and get their values, using the label to refer to them.
 3 Install the command by typing SET COMMAND filename - when and where you do this
   depends on who you want to see the definition.

 I like this because :
  All the prompting, syntax checks etc are done for you, it is possible to list
mutually exclusive options and have that checked too. Data type checks
can be specified - the example will only allow a valid date/time, and
will even convert CRASH TOMORROW into the real date for me!
The real winner is that it is the SAME parser for all commands. I 
have problems with any system that forces each program to parse its args
(CMS, NOS, UNIX...) - by all means use getopt, but who is going to rewrite
existing programs and manuals?

    -- 
Ian W Moor
  UUCP: seismo!mcvax!ukc!icdoc!iwm
  ARPA: iwm%icdoc@ucl                        
           
 Department of Computing   Whereat a great and far-off voice was heard, saying,
 Imperial College.         Poop-poop-poopy, and it was even so; and the days
 180 Queensgate            of Poopy Panda were long in the land.
 London SW7 Uk.         

jw@astgb1.UUCP (John Woodruff) (07/11/86)

In article <1320@psivax.UUCP>, friesen@psivax.UUCP (Stanley Friesen) writes:
> 	Oh, *great*:-) How does the DCL parse the arguments for a user
> written application program??

It's called SET COMMAND... you write a description of your command,
parameters, options, etc., including the runnable image name; and
give it to DCL.  Then you call a number of CLI$GETxxxx's for each
one.  Quite easy, in fact... I did it from Fortran.  I only wish
that the .CLD included documentation, and that HELP knew about the
DCL tables for such things as HELP xxx /PARAM.

I've been away from VMS for 3 years, and prefer Unix.  But let's
give VMS her due...

rcb@rti-sel.UUCP (07/14/86)

>
>However, even at best DCL "diagnostics" can be ambiguous.  For example,
>
>$ SHOW USERS/BOGUS
>
>gets me the diagnostic
>
>%DCL-W-IVQUAL, unrecognized qualifier - check validity, spelling, and placement
> \BOGUS\
>
>Hardly pointing out the specific problem!  Better something like this (under
>System V):

Seems reasonable to me. "/bogus" is unknown at that place. Could be in wrong
place or spelled wrong.

>
>$ who -bogus
>who:  illegal option -- o
>Usage:	who [-rbtpludAasHTq] [am i] [utmp_like_file]
>
>r	run level
>b	boot time
>t	time changes
>p	processes other than getty or users
>l	login processes
>u	useful information
>d	dead processes
>A	accounting information
>a	all (rbtpludA options)
>s	short form of who (no time since last output or pid)
>H	print header
>T	status of tty (+ writable, - not writable, x exclusive open, ? hung)
>q	quick who

I have NEVER seen a unix error message like this! At best I have seen

$ who -bogus
who:  illegal option -- o

or

$ who -bogus
Usage:	who [-rbtpludAasHTq] [am i] [utmp_like_file]

Of which I prefer the first as it at least tells me what I did wrong.

-- 
					Random (Randy Buckland)
					Research Triangle Institute
					...!mcnc!rti-sel!rcb

tim@ism780c.UUCP (07/17/86)

In article <6424QAA@PSUVM> QAA@PSUVM.BITNET writes:
>
>If you so choose, you may have your application parse ALL of the
>command line, spending tons of worthless cpu time deciding what is
>right and what is wrong, or you can opt to have DCL parse the command
>line for you.

In other words, you can spend tons or worthless CPU time, or you
can let DCL spend tons or worthless CPU time.  Or are you trying
to say that DCL can parse arguments without using CPU time?
--
Tim Smith                       USENET: sdcrdcf!ism780c!tim || ima!ism780!tim
"hey, bay-BEE'...hey, bay-BEE'" Compuserve: 72257,3706
                                Delphi || GEnie: mnementh

davidsen@steinmetz.UUCP (Davidsen) (08/04/86)

I apologise for the length of this, I cut it as much as posible.
Readers have to see the pro-UNIX posting (mildly sarcastic) and the
pro-VMS reply (rude and personal) to appreciate my answer about the
technical shortcomings of the answer.

In article <909@rti-sel.UUCP> rcb@rti-sel.UUCP (Random) writes:
>In article <1320@psivax.UUCP> friesen@psivax.UUCP (Stanley Friesen) writes:
>>In article <873@rti-sel.UUCP> rcb@rti-sel.UUCP (Random) writes:
>>>
	the original pro-VMS statement

>>>No. VMS programs will not let you invoke them with bogus arguments. Since
>>>the arguments are parsed by DCL before the program is invoked, if you give
>>>too many parameters or an unknown switch DCL will reject it with an error
>>>message that points out the specific problem.
>>
	the somewhat sarcastic reply

>>	Oh, *great*:-) How does the DCL parse the arguments for a user
>>written application program?? I can't see how it can do this without
>>some rather messy interface requirements.  This really sounds like a
>>way to make user-written programs second class citizens on the system.
>>I think the individual program is better qualified to analyse its own
>>arguments, whay is really needed is a *standard* for this, like getopts(3)!
>>-- 
>>				Sarima (Stanley Friesen)
>
	the vituperative personal attack

>Have you ever possibly considered finding out about something before
>talking about. It will usually make you look a lot less like a fool.

	followed by a correct but incomplete technical rebuttal!

>The DCL command definitions simply define how many parameters can be used,
>which ones are optional, the possible switches, The possible switch locations,
>and the possible types for parameters and switches. It can also be used
>to change the default values based on interactive or batch operation.
>The possible types are simply string, number, file, acl, etc. and also
>one of a list of user defined keywords. DCL is capable of parsing these
>properly because you give it a definition that defines all these possibilities.
... another 30 lines or so of "simple" explanation deleted ...

No one in their right mind could consider this "simple".

>
>An example of the definition file follows so that you might know what you
>are maligning.
... 13 lines of more "simple" stuff deleted ... loaded with keywords ...
>Simple, clean and easy to use. Definable on a per user basis, defined for
>a group of users by the system manager or on a system wide basis. The program
			  ^^^^^^^^^^^^ That's convenient.

>interface is also clean. To get the values, you only have to issue the 
>following call.
>
>	call dcl$get_value ("input_area", string_variable)
>
>and you have it. Easy, no? So, next time, ask someone about a feature you
		  ^^^^^^^^^ in a word **NO**. To write a program asking
about the calling sequence instead of typing the command at the prompt
is not by any stretch of definition "easy".

>know nothing about before you go shooting off your mouth (or keyboard).
^^ more tact and courtesy ^^

What really made this answer so obnoxious is that after all this
overkill flame, the poster didn't say (or, could it be, didn't know)
that the user can define his/her commands with a mechanism similar to
an alias, and get no parameter checking at all. It can even be put in a
startup file and done at login.

Examples: (! starts comments)
  $ check:==$usr$disk:[user.bin]check.exe ! binary executable image
  $ redo:==@usr$disk:[user.bin]redo.com   ! DCL (shell) command file
     ^   ^ ^   ^       ^    ^    ^
     |   | |   |       |    |    |__ filename
     |   | |   |       |    |_______ subdirectory
     |   | |   |       |____________ user directory
     |   | |   |____________________ device (may be logical = directory)
     |   | |________________________ $ for binary, @ for DCL shell
     |   |__________________________ mystic assignment operator
     |______________________________ symbol now defined as valid command

I hope this has spread some rational light on the subject. The ability
to have the arguments parsed is very useful, but time consuming for the
system operator. The method described above provides no checking, but
is easily doable by the user. It is far easier to write commands
knowing that they will never get bad arguments than to put recovery
code in each and every program. VMS provides both.

Please don't count me as pro-VMS, I have used it since we got our first
VAX (I believe it was S/N < 30) and still only consider it acceptable.
I find the UNIX interface more convenient and the response far better
for small programs due to the overhead of process start in VMS.
Flamers, please MEASURE the overhead for UNIX and VMS on similar
machines (in cpu or disk access) before rebutting this.
-- 
	-bill davidsen

  ihnp4!seismo!rochester!steinmetz!--\
                                       \
                    unirot ------------->---> crdos1!davidsen
                          chinet ------/
         sixhub ---------------------/        (davidsen@ge-crd.ARPA)

"Stupidity, like virtue, is its own reward"

taylor@glasgow.glasgow.UUCP (Jem Taylor) (08/11/86)

In article <859@kbsvax.steinmetz.UUCP> davidsen@kbsvax.UUCP (Davidsen) writes:
>In article <909@rti-sel.UUCP> rcb@rti-sel.UUCP (Random) writes:
>>In article <1320@psivax.UUCP> friesen@psivax.UUCP (Stanley Friesen) writes:
>>>In article <873@rti-sel.UUCP> rcb@rti-sel.UUCP (Random) writes:
>>>>
>	the original pro-VMS statement
>>>>No. VMS programs will not let you invoke them with bogus arguments. Since
>>>>the arguments are parsed by DCL before the program is invoked, if you give
>>>>too many parameters or an unknown switch DCL will reject it with an error
>>>>message that points out the specific problem.
...
>overkill flame, the poster didn't say (or, could it be, didn't know)
>that the user can define his/her commands with a mechanism similar to
>an alias, and get no parameter checking at all. It can even be put in a
>startup file and done at login.
>
>Examples: (! starts comments)
>  $ check:==$usr$disk:[user.bin]check.exe ! binary executable image
>  $ redo:==@usr$disk:[user.bin]redo.com   ! DCL (shell) command file
>     |   | |________________________ $ for binary, @ for DCL shell
>     |   |__________________________ mystic assignment operator
>     |______________________________ symbol now defined as valid command
>
mystic, yes, but powerful. And much of unix is mystic of course ...

	= and := are 'local' symbol assigns - like 'set'
	== and :== are 'global' - like setenv

(except that unlike set and setenv, these things are _also_ usable as aliases
as in csh )

	the ':' suppresses symbol substition on the RHS unless the symbol is
	explicitly quoted.
Thus
	A == B
and
	A:== 'B'
are equivalent. If you don't use ':', you need '"' around strings. The example
here sets C to a string, rather than A to the VALUE OF B as above :

	C == "text"
or
	C :== text

Like everything, once you are used to it, it's fine.


>I hope this has spread some rational light on the subject. The ability
>to have the arguments parsed is very useful, but time consuming for the
>system operator. The method described above provides no checking, but
>is easily doable by the user. It is far easier to write commands
>knowing that they will never get bad arguments than to put recovery
>code in each and every program. VMS provides both.
>
It's NOT time consuming for the operator. The .CLD (Command language definition)
of a command is written by the author at the same time as the command. I write
my .CLD first, then the .HLP ( Help ) input for the LIBRARY/HELP command, and
finally code the command itself. This ensures that the command interface is
properly defined and that the help page is true; finally the code has to
conform to the definition.
The .HLP file is incorporated into the system help library at installation of
the command, and the .CLD is incorporated into the system command table at
the same time - once only. This is akin to putting the files into /bin and
/usr/man (or wherever) - which always strikes me as rather ad hoc, the set
of available commands being a one-to-one mapping to the contents of certain
directories of the filestore.

One very powerful aspect of .CLD which no-one mentions is the 'image' keyword,
which defines where the executable image is to be found. If no image is
specified,
	SYS$SYSTEM:command_name.EXE
is assumed, but the file can be put anywhere and need not have the same name
as the command.
Even more powerful is the use in this example:

define verb mycommand
	image	userdisk:[mydir]mycommand1.exe
	....
	qualifier	special	syntax=otherformat

define syntax otherformat
	image	otherdisk:[mydir]mycommand2.exe

with this definition, 'myco' (DCL supports unique truncation of the command
verb) will invoke the image mycommand1, but 'mycom/spe' enforces the alternate
syntax of the command and invokes a different image. This means that a number
of different programs can be given the same name, as in DEFINE (define a
logical name for a device), DEFINE/KEY (redefine the keyboard) etc, but invoke
unrelated images. I have used this mechanism to support the use of two images
with common code, one small and fast for the common options, the other more
powerful but larger and slower. Users need not know that they are using 
different images, and do not need to remember which of 'prog', 'xprog' or
'nprog3' they should be using this week.

>Please don't count me as pro-VMS, I have used it since we got our first
>VAX (I believe it was S/N < 30) and still only consider it acceptable.
>I find the UNIX interface more convenient and the response far better
>for small programs due to the overhead of process start in VMS.
>Flamers, please MEASURE the overhead for UNIX and VMS on similar
>machines (in cpu or disk access) before rebutting this.

In my experience of VMS 782's and 785's versus Unix 750's and 780's, I find
the above to be true ( SPAWN takes an age in VMS ), but the VMS systems
seem to degrade more gracefully when too many users are logged on. The Unix
system seems to give up completely when overloaded. Obviously page and swap
space tuning and the myriad sysgen parameters under VMS give a diligent
system manager more scope to fit the machine to the performance demanded of
it.

-Jem.	I'm very happy with my 42nix WCW MG-1 workstation - thou' it did
crash completely the other day when I put 25+ clocks on the screen, all with
the second hand moving, and tried to move them around *fast*.

-- 

________________________________________________________________________________

JANET:   taylor@uk.ac.glasgow.cs                 -o     Jemima
USENET:  {ukc,ucl-cs}!cs.glasgow.ac.uk!taylor     (=-)   Puddleduck
ARPANET: taylor%cs.glasgow.ac.uk@ucl-cs.arpa
Phone:   +44 (0)41 339-8855 extn. 6054
Mail:    J.A.Taylor, Computer Science, 17 Lilybank Gardens, GB-GLASGOW G12 8QQ
________________________________________________________________________________