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).