[comp.os.vms] MMS: My Opinion

forrest@blia.BLI.COM (Jon Forrest) (08/14/87)

I've used MMS a lot in the last year. The problems reported about it
recently aren't the ones that bother me. Instead, the following are
the deficiencies I've found with it. I'd like to point out that my opinion
of MMS isn't as bad as that of certain people. It works reliably and is
fast enough for me. I do agree that the documentation leaves a lot
to be desired.

1. There should be a macro like the existing MMS$CHANGED_LIST macro
but one that does NOT include the file types in the list. If this
macro were to exist then it would be possible to compile many
source files with one command, and then to insert the newly
created object files into a library with one command. For
example, assume the macro I'm asking for is called
MMS$CHANGED_NEW. Then the following would result in one
CC command and one LIBRARIAN command.

a.olb : x.obj, y.obj, z.obj ! this could be ANY number of files
	cc MMS$CHANGED_NEW  ! compile them all
	librarian/replace MMS$TARGET_NAME MMS$CHANGED_NEW ! insert them all

Currently it is necessary to invoke the compiler and librarian once for
each file to be compiled and inserted in the library. This is a waste of
resources since the compiler and librarian actually need be started only once.
In a situation where a hundred source files are to be compiled this extra
overhead could be considerable.

2. It should be possible to make a rule that says that a library module depends
on a source file and not on the object file. Of course,
the object file would be required but the modification date
of the source file would be used to determine what has to be
rebuilt, not that of the object file. This would allow object
files to be deleted without disturbing the dependency information.
It seems wasteful to keep object files around after they are put in an object
library.

For example, the following expresses what I have in mind.

a.olb : a(x=x.c)

This means that the module named "x" is rebuilt when the
modification date of "x.c" is newer than the date "x"
was inserted in "a.olb". This assumes that the date "x.obj"
was inserted in "a.olb" was when "x.obj" was last modified.
This is especially important when a large number of object
files are kept in a library. Currently, all the object files
must be kept both in the library and as normal files. This is
wasteful.

3. There is an incompatability between MMS and Unix "make"
that isn't mentioned in the manual. "Make" allows description
files such as:

a : a.exe
a.exe : a.c

MMS gives the fatal GWKNOACTS message for the first line
since there are no builtin rules to satisify this
dependency. "Make" gives no error messages. I understand
why MMS might want to print a message in a situation like
this but this situation should not generate a fatal error.

4. A program being run from a MAKEFILE. finds that its
SYS$ERROR is a mailbox, and not the terminal from which
MMS is being run. This causes problems if the program being
run uses the terminal type of SYS$ERROR. At least, this
should be documented.


Jon Forrest

forrest@blia.BLI.COM
ucbvax!mtxinu!blia!forrest
{pyramid|voder}!blia!forrest