MUMPS Technial Information
Acknowledgement
A modified form of the pattern match code from FreeMUMPS is now used in this
implementation - many thanks to the FreeMUMPS people.
Policy
This release is provided free of charge to anyone who wants
it (via the net).
We felt that a freely available MUMPS implementation was
required to keep the language alive and develop the MUMPS language as
a tool in its own right.
The environment is implemented as a p-code compiler and interpreter.
At this stage, the compiler efficiency and runtime speed leave a bit
to be desired. They are, however, quite quick enough for small
to medium sized systems.
Variable, routine and tag names are significant only in the first eight bytes.
Local variable string length maximum is 32767 bytes. Global variable string
length maximum is the blocksize (less block overhead of 20 to 30 bytes) or
32767 whichever is the lesser. Maximum number of globals per uci is about
block size divided by 20.
The maximum size of a compiled routine or a routine source line
is the same as the global variable string
length maximum. Therefore, if you need large routines, use a large block size.
The maximum number of tags in a routine is 255.
Routines are run from a common shared memory area to optimize memory usage
and speed in multi user environemnts. The -r switch at environemnt
initialization specifies the number of mb of memory to reserve for this use.
Should there be insufficient memory to load a routine into the shared memory
area, an error is returned to the application.
Although the database design is based on B trees, it is nothing like any
existing MUMPS implementations.
We hope that the future will show this design to be quite fast.
Database block size is specified at database creation time and is from 4 to
256 kb. Database size is specified at create time. The minimum size is 100
blocks and the maximum size is 2147483647 blocks (ie. with 256kb blocks, about
500 terrabytes - if the O/S and hardware can handle it).
The maximum size to which a database can be expanded is map block size in
bytes minus 1024 times 8 blocks (MBB-1024*8 blocks). Database integrity
checking is implemented (see $&%IC() and routine ^IC).
As networking has become such an important part of the computing environment,
we have attempted to make the tcp/ip interface as usefull as possible. We do,
however, realise, that there is more work to do in this area.
Enjoy - the MUMPS development Team.