The Mumps Programming Language
Kevin C. O'Kane
Professor Emeritus
Computer Science Department
University of Northern Iowa
Cedar Falls, IA 50613
Last Update: June 22, 2025
Documentation
The Mumps Programming Language Textbook (Amazon versions)
Mumps Language Users' Guide (PDF)
Mumps Language Quick Introduction & Tutorial (PDF)
MDH Users' Guide (PDF)
Note: if you run an installer (any installer) while the Update Manager is
active, the installer may report missing files, This is because the Update Manager
locks the installation database until it is finished blocking your installer as a
result.
The native-single user version uses a faster database but is single user (only
one user at a time may access the database) and is not ACID compliant.
The sqlite3 version uses the Sqlite3 database. It may be
accessed by multiple users concurrently and is ACID compliant but
much slower.
Note: if you have a previous version installed, you may need to
remove it before installling the new version. This can be done in
the Synaptic package manager (package name: mumps-sqlite3 or
mumps-native-single-user) or with the command:
sudo dpkg --remove mumps-native-single-user
or
sudo dpkg --remove mumps-sqlite3
To install, on many systems, from an explorer window, double click the downloaded
.deb file.
Alternatively, in the directory containing the .deb file, do the following
(there may be errors indicating missing packages. Step 2 will fix this):
-
sudo dpkg -i mumps-native-single-user-amd64.deb
-
sudo apt install -f
Or, the following:
- sudo apt install gdebi
- sudo gdebi mumps-native-single-user-amd64.deb
Both will install the package and resolve dependencies.
Substitute mumps-sqlite3-amd64.deb for the Sqlite3 distro.
These installer files have been checked with current
versions of Linux Mint {Mate, Cinnamon, and Xfce} and Ubuntu.
They should work on other similar recent Debian based systems.
If not, try a re-build from the full source code below.
Please read the README.txt file linked below. There is also a copy
of the mumps-doc man page which will be installed.
This page (under development) is a brief tutorial introduction
to mumps.
The Mumps source distro now contains:
The legacy (2000) Mumps Interpreter,
The ISR project which is written in Mumps and MDH,
The Inverse Document Frequency Weighted Genomic Sequence Retrieval,
The Glade Compiler,
The OHSU Medline Database.
Mumps Programming Language Tutorial & Examples YouTube Playlist
(Also, see below)
High-res copy of an hierarchical medical record diagram
EER Relational Database Version of the Hierarchical Model
The MDH (Multi-Dimensional and Hierarchical) Toolkit is a collection of C++
classes and code to emulate many Mumps features in C++:
Multi-Dimensional & Hierarchical Toolkit Users' Guide (PDF)
Beginning in 1966, the Mumps programming language (also referred to as M), was developed by Neil Pappalardo and others in Dr. Octo Barnett's lab at the Massachusetts General Hospital on a PDP-7. It was later ported to a number of machines including the PDP-11 and VAX.
Mumps is a general purpose programming language that supports a novel, native, hierarchical database facility. The acronym stands for the Massachusetts General Hospital Utility Multi-programming System. It is widely used in financial and clinical applications and remains to this day the basis of the U.S. Veterans Administration's computerized medical record system VistA (Veterans Health Information Systems and Technology Architecture), the largest of its kind in the world.
As originally conceived, Mumps differs from other mini-computer based languages by providing a:
-
Hierarchical database facility. Mumps data sets are not only organized along traditional sequential and direct access methods, but also as trees whose data nodes can addressed as path descriptions in a manner which is easy for a novice programmer to master in a relatively short time;
-
Flexible and powerful string manipulation facilities. Mumps built-in string manipulation operators and functions provide programmers with access to efficient means to accomplish complex string manipulation and pattern matching operations.
Syntactically, Mumps is based on an earlier language named JOSS and has an appearance
similar to early versions of BASIC which was also based on JOSS. Another feature of Mumps which distinguished it from other language environments at the time was its ability to run multiple applications and serve multiple users concurrently on very primitive computers.
Over the years, a number of implementations were developed. Many of these are now
extinct or have evolved considerably from their original base. As the early
implementations began to differ linguistically from on another, an effort to
standardize Mumps began. This culminated in the 1977 ANSI standard for Mumps (X11.1-1977).
The standards effort continued until 1995 when the last standard was published
(see: American National Standard for Information Systems - Programming
Languages - M ANSI/MDC X11.1-1995). Since then, the standards writing
Mumps Development Committee has disbanded and there have been no new standards
developed. At present, the 1995 standard has lapsed in the United States but
remains in effect as ISO (ISO/IEC 11756:1999). Also, as of 1995, there were
related standards either published or in development for Mumps system
interconnections (X11.2), a graphical kernel definition (X11.3), X-window
binding (X11.4), TCP-IP binding (X11.5) and a windowing API (X11.6). These
have also lapsed in the United Sates but some are still in effect at ISO.
GPL Mumps is distributed in source code for Linux and Cygwin (for MS Windows).
It is licensed under the Gnu General Public License V2 and may be redistributed
subject to the conditions of the license. The package includes a robust Mumps
interpreter, a Mumps compiler (not up to date) and a Mumps-like class library
for C++ (MDH).
For the most part, GPL Mumps follows the 1995 standard but those areas where it deviates
from the standard are highlighted in the documentation. In addition to supporting a builtin
database, the GPL Mumps permits storage of the Mumps global arrays in relational database
management systems. At present, this includes sqlite3. When the globals are
stored in one of the RDBMS systems, they become ACID compliant and accessible by
means of SQL queries.
Also available is an document indexing, classification and
retrieval sytem using the vector space model written in Mumps.
Mumps Programming Tutorial