MUMPS V1 Installation


   Copyright (c) 1999, 2000, 2001, 2002, 2003
        Raymond Douglas Newman.  All rights reserved.
  
   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions
   are met:
  
   1. Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
   2. Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
   3. Neither the name of Raymond Douglas Newman nor the names of the
      contributors may be used to endorse or promote products derived from
      this software without specific prior written permission.
  
   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS"
   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
   THE POSSIBILITY OF SUCH DAMAGE.


This version runs on all FreeBSD Versions 3 and 4 and many linux versions.

To install MUMPS you will need a distribution.

Once you have transfered the compressed tar file, un-tar it using a command something like:

tar  -xzvf  mumps*.tgz

Then move the executable 'mumps' to a suitable location (like /usr/local/bin) or leave it where it is - as long as you can invoke it. After ensuring that 'mumps' belongs to the group that is going to use it, do a 'chmod 2750 mumps'. This will ensure that only users in this group have access to mumps and that all users accessing it will have the appropriate access to the database file.
Move the file utils to something like /usr/local/share - again it doesn't really matter where as long as it can be read.
On FreeBSD, ensure the following lines are in the kernel config file and re-build the kernel.
options         SYSVSHM
options         SYSVSEM
options         SYSVMSG
options         SHMALL=x                #allow for our shared memory (def=4mb)
options         SHMMAXPGS=x             #allow for our shared memory (def=4mb)

options         "P1003_1B"                     # These are needed for syscall
options         "_KPOSIX_PRIORITY_SCHEDULING"  # sched_yield() - but aren't
options         "_KPOSIX_VERSION=199309L"      # really required
where x is number of pages (4kb each on FreeBSD) of shared memory required (at least x=10250 is recommended for 40mb of shared memory).

NOTE: If the kernel already contains SYSVSHM and SYSVSEM, a small demo system should run without a kernel rebuild.

The mumps executable should be installed owned by a specified group and chmod 2750 mumps (as follows).
           2000    (set-group-ID-on-execution bit) Executable files with this
                   bit set run with effective gid equal gid of file owner.
           0400    Allow read by owner.
           0200    Allow write by owner.
           0100    Allow execution by owner.
           0040    Allow read by group members.
           0010    Allow execution by group members.
All users will then run with an effective group of the specified group. This means that multiple mumps installations on the same system must have multiple copies of the mumps executable each owned by a different group.

After installation, the files mumps and utils should be in the appropriate directories. Entering the command mumps should produce something like:
> mumps
----------------------------------------------------
This is MUMPS V1.40 for FreeBSD i386

Copyright (c) 1999, 2000, 2001, 2002, 2003
Raymond Douglas Newman.  All rights reserved.

To create a database:
> mumps -v volnam -b blocksize -s dbsize database
                   and optionally -m mapblocksize
  volnam is 1 to 8 alphas and sizes are in kbytes

To initialize an environment:
> mumps -j maxjobs -r routinemb -g globalmb database
                 routinemb and globalmg are optional

To attach to an environment:
> mumps -x command -e environment(uci) database
               where both switches are optional
----------------------------------------------------
>
To create a working environment, do the following (user input underlined):
> mumps -v TEST -b 8 -s 200 testdb
Creating volumeset TEST in file testdb
with 200 x 8kb blocks and a 8kb map/label block.
Database file created.
> mumps -j 4 testdb
Creating share for 4 jobs with 1mb routine space,
2mb (256) global buffers, 8kb label/map space
and 8kb for locktab.
Global buffer initialized.
MUMPS environment initialized.
    (The following two lines are needed only if you want our utilities,
     use actual path for the file utils)
> mumps -x 'O 1:("/usr/local/share/utils":"R") U 1 R X X X' testdb
%C
%D
...
> mumps -x 'D ^%M' testdb
MCL>
At this stage, the MUMPS routine %M (MUMPS Command Language) is running. Enter HELP (or press the < Help> key) for information on the commands.

To access "raw" MUMPS (not MCL), use the command:
> mumps testdb
This will prompt with M>. MCL (if it has been loaded) may be accessed from here with D ^%M.
An experienced MUMPS programmer/user will find the utilities quite familiar. For example D ^%RD (routine directory), D ^%GD etc.

The environment may be shutdown by entering K ^$J (in MCL use D ^SSD) - This frees the shared memory and semaphores and kills all jobs using this environment.
Note that multiple MUMPS environments may be simultaneously active on the same system (resources permitting).