M technology
   HOME

TheInfoList



OR:

MUMPS ("Massachusetts General Hospital Utility Multi-Programming System"), or M, is an imperative, high-level
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
with an integrated transaction processing
key–value database A key–value database, or key–value store, is a data storage paradigm designed for storing, retrieving, and managing associative arrays, a data structure more commonly known today as a ''dictionary'' or ''hash table''. Dictionaries contain a ...
. It was originally developed at
Massachusetts General Hospital Massachusetts General Hospital (Mass General or MGH) is a teaching hospital located in the West End neighborhood of Boston, Massachusetts. It is the original and largest clinical education and research facility of Harvard Medical School/Harvar ...
for managing patient medical records and hospital laboratory information systems. MUMPS technology has since expanded as the predominant database for health information systems and
electronic health record An electronic health record (EHR) is the systematized collection of electronically stored patient and population health information in a digital format. These records can be shared across different health care settings. Records are shared thro ...
s in the United States. MUMPS-based information systems, such as
Epic Systems Epic Systems Corporation is an American privately held healthcare software company based in Verona, Wisconsin. According to the company, hospitals that use its software held medical records of 78% of patients in the United States and over 3% ...
', provide health information services for over 78% of patients across the U.S. A unique feature of the MUMPS technology is its integrated
database language In computing, a database is an organized collection of data or a type of data store based on the use of a database management system (DBMS), the software that interacts with end users, applications, and the database itself to capture and analy ...
, allowing direct, high-speed read-write access to permanent disk storage.


History


1960s-1970s - Genesis

MUMPS was developed by Neil Pappalardo, Robert A. Greenes, and Curt Marble in Dr. Octo Barnett's lab at the
Massachusetts General Hospital Massachusetts General Hospital (Mass General or MGH) is a teaching hospital located in the West End neighborhood of Boston, Massachusetts. It is the original and largest clinical education and research facility of Harvard Medical School/Harvar ...
(MGH) in
Boston Boston is the capital and most populous city in the Commonwealth (U.S. state), Commonwealth of Massachusetts in the United States. The city serves as the cultural and Financial centre, financial center of New England, a region of the Northeas ...
during 1966 and 1967. It grew out of frustration, during a
National Institutes of Health The National Institutes of Health (NIH) is the primary agency of the United States government responsible for biomedical and public health research. It was founded in 1887 and is part of the United States Department of Health and Human Service ...
(NIH) supported hospital information systems project at the MGH, with the development in assembly language on a time-shared
PDP-1 The PDP-1 (Programmed Data Processor-1) is the first computer in Digital Equipment Corporation's PDP series and was first produced in 1959. It is known for being the most important computer in the creation of hacker culture at the Massachusetts ...
by primary contractor Bolt, Beranek & Newman (BBN). MUMPS came out of an internal "
skunkworks Skunkworks or Skunk works may refer to: * Skunk Works, an official trademark for the Lockheed Martin Advanced Development Programs (formerly Lockheed Advanced Development Projects). * Skunkworks project, a project typically developed by a small ...
" project at MGH by Pappalardo, Greenes, and Marble to create an alternative development environment. As a result of initial demonstration of capabilities, Dr. Barnett's proposal to NIH in 1967 for renewal of the hospital computer project grant took the bold step of proposing that the system be built in MUMPS going forward, rather than relying on the BBN approach. The project was funded, and serious implementation of the system in MUMPS began. The original MUMPS system was, like
Unix Unix (, ; trademarked as UNIX) is a family of multitasking, multi-user computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
a few years later, built on a DEC
PDP-7 The PDP-7 is an 18-bit computing, 18-bit minicomputer produced by Digital Equipment Corporation as part of the Programmed Data Processor, PDP series. Introduced in 1964, shipped since 1965, it was the first to use their Flip-Chip module, Flip- ...
. Octo Barnett and Neil Pappalardo obtained a
backward compatible In telecommunications and computing, backward compatibility (or backwards compatibility) is a property of an operating system, software, real-world product, or technology that allows for interoperability with an older legacy system, or with inpu ...
PDP-9 The PDP-9, the fourth of the five 18-bit minicomputers produced by Digital Equipment Corporation, was introduced in 1966. A total of 445 PDP-9 systems were produced, of which 40 were the compact, low-cost PDP-9/L units.. History The 18-bit PDP ...
, and began using MUMPS in the admissions cycle and laboratory test reporting. MUMPS was then an
interpreted language In computer science, an interpreter is a computer program that directly executes instructions written in a programming or scripting language, without requiring them previously to have been compiled into a machine language program. An inter ...
, yet even then, it incorporated a
hierarchical database A hierarchical database model is a data model in which the data is organized into a tree-like structure. The data are stored as records which is a collection of one or more fields. Each field contains a single value, and the collection of fields i ...
file system to standardize interaction with the data and abstract disk operations so they were only done by the MUMPS language itself. MUMPS was also used in its earliest days in an experimental clinical progress note entry system and a radiology report entry system. Some aspects of MUMPS can be traced from
RAND Corporation The RAND Corporation, doing business as RAND, is an American nonprofit global policy think tank, research institute, and public sector consulting firm. RAND engages in research and development (R&D) in several fields and industries. Since the ...
's
JOSS JOSS (acronym for JOHNNIAC Open Shop System) was one of the first interactive, time-sharing programming languages. It pioneered many features that would become common in languages from the 1960s into the 1980s, including use of line numbers as bo ...
through BBN's
TELCOMP TELCOMP was a programming language developed at Bolt, Beranek and Newman (BBN) in about 1964 and in use until at least 1974. BBN offered TELCOMP as a paid service, with first revenue in October 1965. The service was sold to On-Line Systems, Inc ...
and
STRINGCOMP STRINGCOMP was a programming language developed at Bolt, Beranek and Newman (BBN). It was one of the three variants of JOSS II (along with TELCOMP and FILECOMP) that were developed by BBN. It had extended string handling capabilities to augm ...
. The MUMPS team chose to include portability between machines as a design goal. An advanced feature of the MUMPS language not widely supported in
operating system An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ...
s or in
computer hardware Computer hardware includes the physical parts of a computer, such as the central processing unit (CPU), random-access memory (RAM), motherboard, computer data storage, graphics card, sound card, and computer case. It includes external devices ...
of the era was multitasking. Although
time-sharing In computing, time-sharing is the Concurrency (computer science), concurrent sharing of a computing resource among many tasks or users by giving each Process (computing), task or User (computing), user a small slice of CPU time, processing time. ...
on
mainframe computer A mainframe computer, informally called a mainframe or big iron, is a computer used primarily by large organizations for critical applications like bulk data processing for tasks such as censuses, industry and consumer statistics, enterprise ...
s was increasingly common in systems such as
Multics Multics ("MULTiplexed Information and Computing Service") is an influential early time-sharing operating system based on the concept of a single-level memory.Dennis M. Ritchie, "The Evolution of the Unix Time-sharing System", Communications of t ...
, most mini-computers did not run parallel programs and threading was not available at all. Even on mainframes, the variant of batch processing where a program was run to completion was the most common implementation for an operating system of multi-programming. It was a few years until Unix was developed. The lack of memory management hardware also meant that all multi-processing was fraught with the possibility that a memory pointer could change some other process. MUMPS programs do not have a standard way to refer to memory directly at all, in contrast to
C language C (''pronounced'' '' – like the letter c'') is a general-purpose programming language. It was created in the 1970s by Dennis Ritchie and remains very widely used and influential. By design, C's features cleanly reflect the capabilities o ...
, so since the multitasking was enforced by the language, not by any program written in the language it was impossible to have the risk that existed for other systems. Dan Brevik's DEC MUMPS-15 system was adapted to a DEC
PDP-15 The PDP-15 was an 18-bit minicomputer by Digital Equipment Corporation that first shipped in February 1970. It was the fifth and last of DEC's 18-bit machines, a series that had started in December 1959 with the PDP-1. More than 400 were ordered ...
, where it lived for some time. It was first installed at Health Data Management Systems of Denver in May 1971. The portability proved to be useful and MUMPS was awarded a government research grant, and so MUMPS was released to the public domain which was a requirement for grants. MUMPS was soon ported to a number of other systems including the popular DEC
PDP-8 The PDP-8 is a family of 12-bit minicomputers that was produced by Digital Equipment Corporation (DEC). It was the first commercially successful minicomputer, with over 50,000 units sold during the model's lifetime. Its basic design follows the pi ...
, the
Data General Nova The Nova is a series of 16-bit computing, 16-bit minicomputers released by the American company Data General. The Nova family was very popular in the 1970s and ultimately sold tens of thousands of units. The first model, known simply as "Nov ...
and on DEC
PDP-11 The PDP–11 is a series of 16-bit minicomputers originally sold by Digital Equipment Corporation (DEC) from 1970 into the late 1990s, one of a set of products in the Programmed Data Processor (PDP) series. In total, around 600,000 PDP-11s of a ...
and the
Artronix Artronix Incorporated began in 1970 and has roots in a project in a computer science class at Washington University School of Medicine in St Louis, Missouri, St Louis. The class designed, built and tested a 12-bit minicomputer, which later evolved ...
PC12 minicomputer PC12 by Artronix was a minicomputer built with 7400-series integrated circuits, 7400-series TTL technology and Ferrite (magnet), ferrite core memory. Computers were manufactured at the Artronix facility in suburban St. Louis, Missouri. The instru ...
. Word about MUMPS spread mostly through the medical community, and was in widespread use, often being locally modified for their own needs. Versions of the MUMPS system were rewritten by technical leaders Dennis "Dan" Brevik and Paul Stylos of DEC in 1970 and 1971. By the early 1970s, there were many and varied implementations of MUMPS on a range of hardware platforms. Another noteworthy platform was Paul Stylos' DEC MUMPS-11 on the PDP-11, and
MEDITECH Medical Information Technology, Inc., shortened to Meditech, is a privately held Massachusetts-based software and service company that develops and sells information systems for healthcare organizations. History In 1969, Neil Pappalardo began d ...
's
MIIS A Mii ( ) is a customizable avatar (computing), avatar used by Nintendo on their video game consoles and mobile apps, first being introduced with the Wii console in 2006. Since their introduction, Miis have also appeared on the Nintendo DS, Nint ...
. In the Fall of 1972, many MUMPS users attended a conference in Boston which standardized the then-fractured language, and created the MUMPS Users Group and MUMPS Development Committee (MDC) to do so. These efforts proved successful; a standard was complete by 1974, and was approved, on September 15, 1977, as
ANSI The American National Standards Institute (ANSI ) is a private nonprofit organization that oversees the development of voluntary consensus standards for products, services, processes, systems, and personnel in the United States. The organiz ...
standard, X11.1-1977. At about the same time DEC launched DSM-11 (Digital Standard MUMPS) for the PDP-11. This quickly dominated the market, and became the reference implementation of the time. Also,
InterSystems InterSystems Corporation is a privately held vendor of software systems and technology for high-performance database management, rapid application development, integration, and healthcare information systems. The vendor's products includInter ...
sold ISM-11 for the PDP-11 (which was identical to DSM-11).


1980s

During the early 1980s several vendors brought MUMPS-based platforms that met the ANSI standard to market. The most significant were: * Digital Equipment Corporation with DSM (Digital Standard MUMPS). For the PDP-11 series DSM-11 was released 1977. VAX DSM was sold in parallel after released 1978. Both hardware families as well as MUMPS versions were available until 1995 from DEC. The DSM-11 was ported to the
Alpha Alpha (uppercase , lowercase ) is the first letter of the Greek alphabet. In the system of Greek numerals, it has a value of one. Alpha is derived from the Phoenician letter ''aleph'' , whose name comes from the West Semitic word for ' ...
in two variants: DSM for OpenVMS, and as DSM for Ultrix. *
InterSystems InterSystems Corporation is a privately held vendor of software systems and technology for high-performance database management, rapid application development, integration, and healthcare information systems. The vendor's products includInter ...
with ISM (InterSystems M) on VMS (M/VX), ISM-11 later M/11+ on the PDP-11 platform (1978), M/PC on MS-DOS, M/DG on
Data General Data General Corporation was an early minicomputer firm formed in 1968. Three of the four founders were former employees of Digital Equipment Corporation (DEC). Their first product, 1969's Data General Nova, was a 16-bit minicomputer intended to ...
, M/VM on IBM VM/CMS, and M/UX on various Unixes. * Greystone Technology Corporation founded 1980, with a compiled version called GT.M for AIX, HP-UX, UNIX and OpenVMS * DataTree Inc. with an Intel PC-based product called DTM. (1982) * Micronetics Design Corporation (1980) with a product line called MSM. MSM-PC, MSM/386, MS-UNIX, MSM-NT, MSM/VM fo IBM, VAX/VMS platforms and OpenVMS Alpha platforms. * Computer Consultants (later renamed MGlobal), a
Houston Houston ( ) is the List of cities in Texas by population, most populous city in the U.S. state of Texas and in the Southern United States. Located in Southeast Texas near Galveston Bay and the Gulf of Mexico, it is the county seat, seat of ...
-based company originally created CCSM on 6800, then 6809, and eventually a port to the 68000, which later became MacMUMPS, a
Mac OS Mac operating systems were developed by Apple Inc. in a succession of two major series. In 1984, Apple debuted the operating system that is now known as the classic Mac OS with its release of the original Macintosh System Software. The system ...
-based product. They also worked on the MGM MUMPS implementation. MGlobal also ported their implementation to the DOS platform. MGlobal MUMPS was the first commercial MUMPS for the IBM PC and the only implementation for the classic Mac OS. *
Tandem Computers Tandem Computers, Inc. was the dominant manufacturer of fault-tolerant computer systems for Automated teller machine, ATM networks, banks, stock exchanges, telephone switching centers, 911 systems, and other similar commercial transaction proc ...
developed an implementation for their fault-tolerant computers. *
IBM International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
briefly sold a MUMPS implementation named MUMPS/VM which ran as a
virtual machine In computing, a virtual machine (VM) is the virtualization or emulator, emulation of a computer system. Virtual machines are based on computer architectures and provide the functionality of a physical computer. Their implementations may involve ...
on top of
VM/370 VM (often: VM/CMS) is a family of IBM virtual machine operating systems used on IBM mainframes System/370, System/390, zSeries, System z and compatible systems, including the Hercules emulator for personal computers. Design The heart of t ...
. This period also saw considerable MDC activity. The second revision of the ANSI standard for MUMPS (X11.1-1984) was approved on November 15, 1984.


1990s

* On November 11, 1990, the third revision of the ANSI standard (X11.1-1990) was approved. * In 1992 the same standard was also adopted as
ISO The International Organization for Standardization (ISO ; ; ) is an independent, non-governmental, international standard development organization composed of representatives from the national standards organizations of member countries. Me ...
standard 11756–1992. Use of M as an alternative name for the language was approved around the same time. * On December 8, 1995, the fourth revision of the standard ( X11.1-1995) was approved by ANSI, and by
ISO The International Organization for Standardization (ISO ; ; ) is an independent, non-governmental, international standard development organization composed of representatives from the national standards organizations of member countries. Me ...
in 1999 a
ISO 11756:1999
which was als
published by ANSI
The MDC finalized a further revision to the standard in 1998 but this has not been presented to ANSI for approval. * In 1999 the last M Standard (ISO-IEC 11756-1999) was approved. ISO re-affirmed this on 2020. Together wit

an


2000s

* By 1998, the
middleware Middleware is a type of computer software program that provides services to software applications beyond those available from the operating system. It can be described as "software glue". Middleware makes it easier for software developers to imple ...
vendor InterSystems had become the dominant player in the MUMPS market with the purchase of several other vendors. Initially they acquired DataTree Inc. in 1993. On December 30, 1994, InterSystems acquired the DSM product line from DEC. InterSystems consolidated these products into a single product line, branding them, on several hardware platforms, as OpenM. In 1997, InterSystems launched a new product named Caché. This was based on their ISM product, but with influences from the other implementations. Micronetics Design Corporation, at this time #2 on the market, was acquired by InterSystems on June 21, 1998. InterSystems remains the dominant "M vendor" owning MSM, DSM, ISM, DTM and selling its IRIS Data Platform (and, until 2018, its predecessor Caché) to M developers who write applications for a variety of operating systems. Also Intersystems did not use the term M anymore, neither followed the M standard. * Greystone Technology Corporation's GT.M implementation was sold to Sanchez Computer Associates (now part of FIS) in the mid-1990s. On November 7, 2000, Sanchez made GT.M for Linux available under the
GPL The GNU General Public Licenses (GNU GPL or simply GPL) are a series of widely used free software licenses, or ''copyleft'' licenses, that guarantee end users the freedom to run, study, share, or modify the software. The GPL was the first c ...
license and on October 28, 2005, GT.M for
OpenVMS OpenVMS, often referred to as just VMS, is a multi-user, multiprocessing and virtual memory-based operating system. It is designed to support time-sharing, batch processing, transaction processing and workstation applications. Customers using Op ...
and
Tru64 UNIX Tru64 UNIX is a discontinued 64-bit UNIX operating system for the DEC Alpha, Alpha instruction set architecture (ISA), currently owned by Hewlett-Packard (HP). Previously, Tru64 UNIX was a product of Compaq, and before that, Digital Equipment Corp ...
were also made available under the AGPL license. GT.M continues to be available on other
UNIX Unix (, ; trademarked as UNIX) is a family of multitasking, multi-user computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
platforms under a traditional license. * During 2000, Ray Newman and others released MUMPS V1, an implementation of MUMPS (initially on FreeBSD) similar to DSM-11. MUMPS V1 has since been ported to
Linux Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
,
Mac OS X macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
, and
Windows Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
(using cygwin). Initially only for the x86 CPU, MUMPS V1 has now been ported to the Raspberry Pi. * Released in April 2002 an MSM derivative called M21 is offered from the Real Software Company of Rugby, UK. * There are also several open source implementations of MUMPS, including some research projects. The most notable of these i
Mumps/II
by Dr. Kevin O'Kane (Professor Emeritus,
University of Northern Iowa The University of Northern Iowa (UNI) is a public university in Cedar Falls, Iowa, United States. UNI offers more than 90 majors across five colleges. The fall 2024 total enrollment was 9,283 students. The university was initially founded in 1 ...
) and students' project. Dr. O'Kane has also ported the interpreter to Mac OS X. * One of the original creators of the MUMPS language, Neil Pappalardo, founded a company called
MEDITECH Medical Information Technology, Inc., shortened to Meditech, is a privately held Massachusetts-based software and service company that develops and sells information systems for healthcare organizations. History In 1969, Neil Pappalardo began d ...
in 1969. They extended and built on the MUMPS language, naming the new language MIIS (and later, another language named MAGIC). Unlike InterSystems, MEDITECH no longer sells middleware, so MIIS and MAGIC are now only used internally at MEDITECH. * A lightweight implementation is MiniM from Eugene Karataev which halted development in 2024


Name

The chief executive of InterSystems disliked the name MUMPS and felt that it represented a serious marketing obstacle. Thus, favoring M to some extent became identified as alignment with InterSystems. The 1990 ANSI Standard was open to both M and MUMPS and after a "world-wide" discussion in 1992 the Mumps User Groups officially changed the name to M. The dispute also reflected rivalry between organizations (the M Technology Association, the MUMPS Development Committee, the ANSI and ISO Standards Committees) as to who determines the "official" name of the language. As of 2020, the ISO still mentions both M and MUMPS as officially accepted names.
Massachusetts General Hospital Massachusetts General Hospital (Mass General or MGH) is a teaching hospital located in the West End neighborhood of Boston, Massachusetts. It is the original and largest clinical education and research facility of Harvard Medical School/Harvar ...
registered "MUMPS" as a trademark with the USPTO on November 28, 1971, and renewed it on November 16, 1992, but let it expire on August 30, 2003.


Design


Overview

MUMPS is a language intended for and designed to build database applications. Secondary language features were included to help programmers make applications using minimal computing resources. The original implementations were interpreted, though modern implementations may be fully or partially
compiled In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
. Individual "programs" run in memory "partitions". Early MUMPS memory partitions were limited to 2048 bytes so aggressive abbreviation greatly aided multi-programming on severely resource limited hardware, because more than one MUMPS job could fit into the very small memories extant in hardware at the time. The ability to provide multi-user systems was another language design feature. The word "Multi-Programming" in the acronym points to this. Even the earliest machines running MUMPS supported multiple jobs running at the same time. With the change from mini-computers to micro-computers a few years later, even a "single user PC" with a single 8-bit CPU and 16K or 64K of memory could support multiple users, who could connect to it from (non-
graphical Graphics () are visual images or designs on some surface, such as a wall, canvas, screen, paper, or stone, to inform, illustrate, or entertain. In contemporary usage, it includes a pictorial representation of the data, as in design and manufactu ...
) video display terminals. Since memory was tight originally, the language design for MUMPS valued very terse code. Thus, every MUMPS command or function name could be abbreviated from one to three letters in length, e.g. (exit program) as , = function, = command, = function. Spaces and end-of-line markers are significant in MUMPS because line scope promoted the same terse language design. Thus, a single line of program code could express, with few characters, an idea for which other programming languages could require 5 to 10 times as many characters. Abbreviation was a common feature of languages designed in this period (e.g., FOCAL-69, early BASICs such as
Tiny BASIC Tiny BASIC is a family of dialects of the BASIC programming language that can fit into 4 or fewer KBs of memory. Tiny BASIC was designed by Dennis Allison and the People's Computer Company (PCC) in response to the open letter published by Bi ...
, etc.). An unfortunate side effect of this, coupled with the early need to write minimalist code, was that MUMPS programmers routinely did not comment code and used extensive abbreviations. This meant that even an expert MUMPS programmer could not just skim through a page of code to see its function but would have to analyze it line by line. Database interaction is transparently built into the language. The MUMPS language provides a
hierarchical database A hierarchical database model is a data model in which the data is organized into a tree-like structure. The data are stored as records which is a collection of one or more fields. Each field contains a single value, and the collection of fields i ...
made up of persistent
sparse array In numerical analysis and scientific computing, a sparse matrix or sparse array is a matrix in which most of the elements are zero. There is no strict definition regarding the proportion of zero-value elements for a matrix to qualify as sparse ...
s, which is implicitly "opened" for every MUMPS application. All variable names prefixed with the caret character () use permanent (instead of RAM) storage, will maintain their values after the application exits, and will be visible to (and modifiable by) other running applications. Variables using this shared and permanent storage are called ''Globals'' in MUMPS, because the scoping of these variables is "globally available" to all jobs on the system. The more recent and more common use of the name "global variables" in other languages is a more limited scoping of names, coming from the fact that unscoped variables are "globally" available to any programs running in the same process, but not shared among multiple processes. The MUMPS Storage mode (i.e. globals stored as persistent sparse arrays), gives the MUMPS database the characteristics of a
document-oriented database A document-oriented database, or document store, is a computer program and data storage system designed for storing, retrieving and managing document-oriented information, also known as semi-structured data. Document-oriented databases are one ...
. All variable names which are not prefixed with caret character () are temporary and private. Like global variables, they also have a hierarchical storage model, but are only "locally available" to a single job, thus they are called "locals". Both "globals" and "locals" can have child nodes (called ''subscripts'' in MUMPS terminology). Subscripts are not limited to numerals—any
ASCII ASCII ( ), an acronym for American Standard Code for Information Interchange, is a character encoding standard for representing a particular set of 95 (English language focused) printable character, printable and 33 control character, control c ...
character or group of characters can be a subscript identifier. While this is not uncommon for modern languages such as Perl or JavaScript, it was a highly unusual feature in the late 1970s. This capability was not universally implemented in MUMPS systems before the 1984 ANSI standard, as only canonically numeric subscripts were required by the standard to be allowed. Thus, the variable named 'Car' can have subscripts "Door", "Steering Wheel", and "Engine", each of which can contain a value and have subscripts of their own. The variable could have a nested variable subscript of "Color" for example. Thus, you could say SET ^Car("Door","Color")="BLUE" to modify a nested child node of . In MUMPS terms, "Color" is the 2nd subscript of the variable (both the names of the child-nodes and the child-nodes themselves are likewise called subscripts). Hierarchical variables are similar to objects with properties in many
object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
languages. Additionally, the MUMPS language design requires that all subscripts of variables are automatically kept in sorted order. Numeric subscripts (including floating-point numbers) are stored from lowest to highest. All non-numeric subscripts are stored in alphabetical order following the numbers. In MUMPS terminology, this is ''canonical order''. By using only non-negative integer subscripts, the MUMPS programmer can emulate the
arrays An array is a systematic arrangement of similar objects, usually in rows and columns. Things called an array include: {{TOC right Music * In twelve-tone and serial composition, the presentation of simultaneous twelve-tone sets such that the ...
data type from other languages. Although MUMPS does not natively offer a full set of
DBMS In computing, a database is an organized collection of data or a type of data store based on the use of a database management system (DBMS), the software that interacts with end users, applications, and the database itself to capture and ana ...
features such as mandatory schemas, several DBMS systems have been built on top of it that provide application developers with flat-file, relational, and
network database In computing, the network model is a database model conceived as a flexible way of representing objects and their relationships. Its distinguishing feature is that the schema, viewed as a graph in which object types are nodes and relationship t ...
features. Additionally, there are built-in operators which treat a delimited string (e.g.,
comma-separated values Comma-separated values (CSV) is a text file format that uses commas to separate values, and newlines to separate records. A CSV file stores Table (information), tabular data (numbers and text) in plain text, where each line of the file typically r ...
) as an array. Early MUMPS programmers would often store a structure of related information as a delimited string, parsing it after it was read in; this saved disk access time and offered considerable speed advantages on some hardware. MUMPS has no data types. Numbers can be treated as strings of digits, or strings can be treated as numbers by numeric operators (''coerced'', in MUMPS terminology). Coercion can have some odd side effects, however. For example, when a string is coerced, the parser turns as much of the string (starting from the left) into a number as it can, then discards the rest. Thus the statement IF 20<"30 DUCKS" is evaluated as TRUE in MUMPS. Other features of the language are intended to help MUMPS applications interact with each other in a multi-user environment. Database locks, process identifiers, and atomicity of database update transactions are all required of standard MUMPS implementations. In contrast to languages in the C or Wirth traditions, some space characters between MUMPS statements are significant. A single space separates a command from its argument, and a space, or newline, separates each argument from the next MUMPS token. Commands which take no arguments (e.g., ELSE) require two following spaces. The concept is that one space separates the command from the (nonexistent) argument, the next separates the "argument" from the next command. Newlines are also significant; an IF, ELSE or FOR command processes (or skips) everything else till the end-of-line. To make those statements control multiple lines, you must use the DO command to create a code block.


Hello, World! example

A simple
"Hello, World!" program A "Hello, World!" program is usually a simple computer program that emits (or displays) to the screen (often the Console application, console) a message similar to "Hello, World!". A small piece of code in most general-purpose programming languag ...
in MUMPS might be: write "Hello, World!",! and would be run with the command do ^hello after it has been saved to disk. For direct execution of the code a kind of "label" (any alphanumeric string) on the first position of the program line is needed to tell the mumps interpreter where to start execution. Since MUMPS allows commands to be strung together on the same line, and since commands can be abbreviated to a single letter, this routine could be made more compact: w "Hello, World!",! The ',!' after the text generates a newline. This code would return to the prompt.


Features

ANSI X11.1-1995 gives a complete, formal description of the language; an annotated version of this standard is available online. Language features include: ; Data types : There is one universal
data type In computer science and computer programming, a data type (or simply type) is a collection or grouping of data values, usually specified by a set of possible values, a set of allowed operations on these values, and/or a representation of these ...
, which is implicitly coerced to string, integer, or floating-point data types as context requires. ; Booleans : In IF commands and other syntax that has expressions evaluated as conditions, any string value is evaluated as a numeric value and, if that is a nonzero value, then it is interpreted as True. a yields 1 if a is less than b, 0 otherwise. ; Declarations : None. All variables are dynamically created at the first time a value is assigned. ; Lines : are important syntactic entities, unlike their status in languages patterned on C or Pascal. Multiple statements per line are allowed and are common. The scope of any , , and command is "the remainder of current line." ; Case sensitivity : Commands and intrinsic functions are case-insensitive. In contrast, variable names and labels are case-sensitive. There is no special meaning for upper vs. lower-case and few widely followed conventions. The percent sign (%) is legal as first character of variables and labels. ; Postconditionals : execution of almost any command can be controlled by following it with a colon and a truthvalue expression. SET:N<10 A="FOO" sets A to "FOO" if N is less than 10; DO:N>100 PRINTERR, performs PRINTERR if N is greater than 100. This construct provides a conditional whose scope is less than a full line. ; Abbreviation : You can abbreviate nearly all commands and native functions to one, two, or three characters. ; Reserved words : None. Since MUMPS interprets source code by context, there is no need for reserved words. You may use the names of language commands as variables, so the following is perfectly legal MUMPS code: : GREPTHIS() NEW SET,NEW,THEN,IF,KILL,QUIT SET IF="KILL",SET="11",KILL="11",QUIT="RETURN",THEN="KILL" IF IF=THEN DO THEN QUIT:$QUIT QUIT QUIT ; (quit) THEN IF IF,SET&KILL SET SET=SET+KILL QUIT :MUMPS can be made more obfuscated by using the contracted operator syntax, as shown in this terse example derived from the example above: : GREPTHIS() N S,N,T,I,K,Q S I="K",S="11",K="11",Q="R",T="K" I I=T D T Q:$Q Q Q T I I,S&K S S=S+K Q ; Arrays : are created dynamically, stored as
B-tree In computer science, a B-tree is a self-balancing tree data structure that maintains sorted data and allows searches, sequential access, insertions, and deletions in logarithmic time. The B-tree generalizes the binary search tree, allowing fo ...
s, are sparse (i.e. use almost no space for missing nodes), can use any number of subscripts, and subscripts can be strings or numeric (including floating point). Arrays are always automatically stored in sorted order, so there is never any occasion to sort, pack, reorder, or otherwise reorganize the database. Built-in functions such as , , (deprecated), and functions provide efficient examination and traversal of the fundamental array structure, on disk or in memory. : for i=10000:1:12345 set sqtable(i)=i*i set address("Smith","Daniel")="[email protected]" ; Local arrays : variable names not beginning with caret (i.e. "^") are stored in memory by process, are private to the creating process, and expire when the creating process terminates. The available storage depends on implementation. For those implementations using partitions, it is limited to the partition size (a small partition might be 32K). For other implementations, it may be several megabytes. ; Global arrays : ^abc, ^def. These are stored on disk, are available to all processes, and are persistent when the creating process terminates. Very large globals (for example, hundreds of gigabytes) are practical and efficient in most implementations. This is MUMPS' main "database" mechanism. It is used instead of calling on the operating system to create, write, and read files. ; Indirection : in many contexts, @VBL can be used, and effectively substitutes the contents of VBL into another MUMPS statement. SET XYZ="ABC" SET @XYZ=123 sets the variable ABC to 123. SET SUBROU="REPORT" DO @SUBROU performs the subroutine named REPORT. This substitution allows for
lazy evaluation In programming language theory, lazy evaluation, or call-by-need, is an evaluation strategy which delays the evaluation of an Expression (computer science), expression until its value is needed (non-strict evaluation) and which avoids repeated eva ...
and late binding as well as effectively the operational equivalent of "pointers" in other languages. ; Piece function : This breaks variables into segmented pieces guided by a user specified separator string (sometimes called a "delimiter"). Those who know awk will find this familiar. $PIECE(STRINGVAR,"^",3) means the "third caret-separated piece of ." The piece function can also appear as an assignment (SET command) target. :$PIECE("world.std.com",".",2) yields . :After : SET X="[email protected]" :SET $P(X,"@",1)="office" causes X to become "[email protected]" (note that is equivalent to and could be written as such). ; Order function : This function treats its input as a structure, and finds the next index that exists which has the same structure except for the last subscript. It returns the sorted value that is ordered after the one given as input. (This treats the array reference as a content-addressable data rather than an address of a value.) : Set stuff(6)="xyz",stuff(10)=26,stuff(15)="" :$Order(stuff("")) yields , $Order(stuff(6)) yields , $Order(stuff(8)) yields , $Order(stuff(10)) yields , $Order(stuff(15)) yields . : Set i="" For Set i=$O(stuff(i)) Quit:i="" Write !,i,10,stuff(i) :Here, the argument-less repeats until stopped by a terminating . This line prints a table of and where is successively 6, 10, and 15. :For iterating the database, the Order function returns the next key to use. : GTM>S n="" GTM>S n=$order(^nodex(n)) GTM>zwr n n=" building" GTM>S n=$order(^nodex(n)) GTM>zwr n n=" name:gd" GTM>S n=$order(^nodex(n)) GTM>zwr n n="%kml:guid" MUMPS supports multiple simultaneous users and processes even when the underlying operating system does not (e.g.,
MS-DOS MS-DOS ( ; acronym for Microsoft Disk Operating System, also known as Microsoft DOS) is an operating system for x86-based personal computers mostly developed by Microsoft. Collectively, MS-DOS, its rebranding as IBM PC DOS, and a few op ...
). Additionally, there is the ability to specify an environment for a variable, such as by specifying a machine name in a variable (as in SET ^, "DENVER", A(1000)="Foo"), which can allow you to access data on remote machines.


Criticism

Some aspects of MUMPS syntax differ strongly from that of more modern languages, which can cause confusion, although those aspects vary between different versions of the language. On some versions, whitespace is not allowed within expressions, as it ends a statement: 2 + 3 is an error, and must be written 2+3. All operators have the same precedence and are
left-associative In programming language theory, the associativity of an operator is a property that determines how operators of the same precedence are grouped in the absence of parentheses. If an operand is both preceded and followed by operators (for exampl ...
(2+3*10 evaluates to 50). The operators for "less than or equal to" and "greater than or equal to" are '> and '< (that is, the Boolean negation operator ' plus a strict comparison operator in the opposite direction), although some versions allow the use of the more standard <= and >= respectively. Periods (.) are used to indent the lines in a DO block, not whitespace. The ELSE command does not need a corresponding IF, as it operates by inspecting the value in the built-in system variable $test. MUMPS
scoping In computer programming, the scope of a name binding (an association of a name to an entity, such as a variable) is the part of a program where the name binding is valid; that is, where the name can be used to refer to the entity. In other parts ...
rules are more permissive than other modern languages. Declared local variables are scoped using the stack. A routine can normally see all declared locals of the routines below it on the call stack, and routines cannot prevent routines they call from modifying their declared locals, unless the caller manually creates a new stack level (do) and aliases each of the variables they wish to protect (. new x,y) before calling any child routines. By contrast, undeclared variables (variables created by using them, rather than declaration) are in scope for all routines running in the same process, and remain in scope until the program exits. Because MUMPS database references differ from internal variable references only in the caret prefix, it is dangerously easy to unintentionally edit the database, or even to delete a database "table".


Users

The US Department of Veterans Affairs (formerly the Veterans Administration) was one of the earliest major adopters of the MUMPS language. Their development work (and subsequent contributions to the free MUMPS application codebase) was an influence on many medical users worldwide. In 1995, the Veterans Affairs' patient Admission/Tracking/Discharge system,
Decentralized Hospital Computer Program Vista may refer to: Software *Windows Vista, the line of Microsoft Windows client operating systems released in 2006 and 2007 *VistA, (Veterans Health Information Systems and Technology Architecture) a medical records system of the United States ...
(DHCP) was the recipient of the Computerworld Smithsonian Award for best use of Information Technology in Medicine. In July 2006, the Department of Veterans Affairs (VA) /
Veterans Health Administration The Veterans Health Administration (VHA) is the component of the United States Department of Veterans Affairs (VA) led by the Under Secretary of Veterans Affairs for Health that implements the healthcare program of the VA through a Nationali ...
(VHA) was the recipient of the Innovations in American Government Award presented by the Ash Institute of the
John F. Kennedy School of Government The John F. Kennedy School of Government, commonly referred to as Harvard Kennedy School (HKS), is the school of public policy of Harvard University, a private university in Cambridge, Massachusetts. Harvard Kennedy School offers master's de ...
at
Harvard University Harvard University is a Private university, private Ivy League research university in Cambridge, Massachusetts, United States. Founded in 1636 and named for its first benefactor, the History of the Puritans in North America, Puritan clergyma ...
for its extension of DHCP into the Veterans Health Information Systems and Technology Architecture (
VistA Vista may refer to: Software *Windows Vista, the line of Microsoft Windows client operating systems released in 2006 and 2007 * VistA, (Veterans Health Information Systems and Technology Architecture) a medical records system of the United States ...
). Nearly the entire VA hospital system in the United States, the
Indian Health Service The Indian Health Service (IHS) is an operating division (OPDIV) within the U.S. Department of Health and Human Services (HHS). IHS is responsible for providing direct medical and public health services to members of federally recognized Native ...
, and major parts of the
Department of Defense The United States Department of Defense (DoD, USDOD, or DOD) is an executive department of the U.S. federal government charged with coordinating and supervising the six U.S. armed services: the Army, Navy, Marines, Air Force, Space Force, ...
CHCS hospital system use MUMPS databases for clinical data tracking. Other healthcare IT companies using MUMPS include: *
Epic Epic commonly refers to: * Epic poetry, a long narrative poem celebrating heroic deeds and events significant to a culture or nation * Epic film, a genre of film defined by the spectacular presentation of human drama on a grandiose scale Epic(s) ...
*
MEDITECH Medical Information Technology, Inc., shortened to Meditech, is a privately held Massachusetts-based software and service company that develops and sells information systems for healthcare organizations. History In 1969, Neil Pappalardo began d ...
* GE Healthcare (formerly IDX Systems and Centricity) * AmeriPath (part of Quest Diagnostics) * Care Centric *
Allscripts Veradigm Inc. (formerly Allscripts Healthcare Solutions, Inc.) is a publicly traded American company that provides physician practices, hospitals, and other healthcare providers with practice management and electronic health record (EHR) tech ...
* Coventry Health Care * EMIS Health * Sunquest Information Systems (formerly Misys Healthcare). * Netsmart Many reference laboratories, such as DASA,
Quest Diagnostics Quest Diagnostics Incorporated is an American clinical laboratory. A Fortune 500, ''Fortune'' 500 company, Quest operates in the United States, Puerto Rico, Mexico, and Brazil. Quest also maintains collaborative agreements with various hospitals ...
, and Dynacare, use MUMPS software written by or based on Antrim Corporation code. Antrim was purchased by Misys Healthcare (now Sunquest Information Systems) in 2001. MUMPS is also widely used in financial applications. MUMPS gained an early following in the financial sector and is in use at many banks and credit unions. It is used by the
Bank of England The Bank of England is the central bank of the United Kingdom and the model on which most modern central banks have been based. Established in 1694 to act as the Kingdom of England, English Government's banker and debt manager, and still one ...
and
Barclays Bank Barclays PLC (, occasionally ) is a British multinational universal bank, headquartered in London, England. Barclays operates as two divisions, Barclays UK and Barclays International, supported by a service company, Barclays Execution Services ...
.


Implementations

Since 2005, the most popular implementations of MUMPS have been Greystone Technology MUMPS (GT.M) from Fidelity National Information Services, and Caché, from Intersystems Corporation. The European Space Agency announced on May 13, 2010, that it will use the
InterSystems Caché InterSystems Caché ( ) is a commercial operational database management system from InterSystems, used to develop software applications for healthcare management, banking and financial services, government, and other sectors. Customer software c ...
database to support the ''Gaia'' mission. This mission aims to map the
Milky Way The Milky Way or Milky Way Galaxy is the galaxy that includes the Solar System, with the name describing the #Appearance, galaxy's appearance from Earth: a hazy band of light seen in the night sky formed from stars in other arms of the galax ...
with unprecedented precision. InterSystems is in the process of phasing out Caché in favor of Iris. Other current implementations include: * M21 * YottaDB * MiniM
Reference Standard M (RSM)

FreeM


See also

*
Profile Scripting Language Profile Scripting Language (PSL) is a superset of the MUMPS programming language that adds Object-oriented programming, object-oriented language features. It is currently developed by FIS (company), Fidelity National Information Services (hereaft ...
* Caché ObjectScript * GT.M *
InterSystems Caché InterSystems Caché ( ) is a commercial operational database management system from InterSystems, used to develop software applications for healthcare management, banking and financial services, government, and other sectors. Customer software c ...


References


Further reading

* * * Lewkowicz, John. ''The Complete MUMPS: An Introduction and Reference Manual for the MUMPS Programming Language.'' * Kirsten, Wolfgang, et al. (2003) ''Object-Oriented Application Development Using the Caché Postrelational Database'' * * O'Kane, K.C.; ''A language for implementing information retrieval software,'' Online Review, Vol 16, No 3, pp 127–137 (1992). * O'Kane, K.C.; and McColligan, E. E., ''A case study of a Mumps intranet patient record,'' Journal of the Healthcare Information and Management Systems Society, Vol 11, No 3, pp 81–95 (1997). * O'Kane, K.C.; and McColligan, E.E., ''A Web Based Mumps Virtual Machine,'' Proceedings of the American Medical Informatics Association 1997 * O'Kane, K.C., The Mumps Programming Language, Createspace, , 120 pages (2010).


External links

* *
Mumps Programming Language Interpreter (GPL)
by Kevin O'Kane, University of Northern Iowa *


Development and Operation of a MUMPS Laboratory Information System: A Decade's Experience at Johns Hopkins Hospital

IDEA Systems' technology solutions based on YottaDB (formerly FIS GT.M) and Caché

MUMPS documentation, topics, and resources (mixed Czech and English)
{{authority control MUMPS programming language Data processing Data-centric programming languages Digital Equipment Corporation Dynamically typed programming languages Health informatics IEC standards ISO standards Massachusetts General Hospital PDP-11 Persistent programming languages Programming languages with an ISO standard Scripting languages Programming languages created in 1966