Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!cbatt!ucbvax!mumps.DEC.COM!craig From: craig@mumps.DEC.COM.UUCP Newsgroups: mod.computers.vax Subject: MUMPS Message-ID: <8701231838.AA27652@decwrl.dec.com> Date: Fri, 23-Jan-87 13:36:41 EST Article-I.D.: decwrl.8701231838.AA27652 Posted: Fri Jan 23 13:36:41 1987 Date-Received: Sat, 24-Jan-87 06:36:41 EST Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet Lines: 101 Approved: info-vax@sri-kl.arpa A recent query asked: A friend of mine running an 8300 recently asked about Mumps for VMS. I seem to remember this from somewhere, but can place it well enough to find it. Does anybody know if such a language exists, and where I could find it? MUMPS is a programming language developed at Mass. General Hospital in the late 60's. It is an ANSI standard language, and has a large and active community of users world-wide. It was originally developed to handle medical databases, but these requirements led to the development of a language which is optimized for handling any sort of large database, in an on-line, interactive environment. Far from being "a dinosaur", as has been stated in this mailing by people quoting 10 year old (mis)information, MUMPS is thriving world- wide. (I might point out that the dinosaurs evolved into birds, with a concommitant increase in efficienty of locomotion). It is popular with some of the largest corporations in the US, including Digital Equip. Corp., Shell Oil, General Motors, Coca Cola, American Airlines, Chase Manhattan Bank and others. Even IBM has recently announced the availability of MUMPS on some of its systems. MUMPS has 1 data type; the variable-length string (numbers being a special case of a string), and one data structure; the subscripted array. A MUMPS array contains number or strings subscripts, which are automatically sorted according to the ASCII value of the subscript. (This means a MUMPS programmer never has to write a sort routine!) If the array is on disk, its called a global. The only difference to the programmer between an array in memory, or one on disk is the "^" character preceeding the array reference. The programmer logically sees the database as a heiarchial tree. A rich set of commands and functions exist to allow the programmer to traverse the tree, retrieve any element, determine whether an element is defined or not, etc. Most commercial implementations of the language store globals as multi-way balanced B-trees, providing excellent I/O response time when the database is accessed. A record in a typical database with 1 million records can be retrieve in 3 disk seeks, no matter where in the database its located. MUMPS is interpreted, and lends itself to rapid prototyping, typically shortening development time considerably when compared to compiled languages which have to go through the edit-compile-link-run cycle of debugging. The fact that MUMPS is interpreted also means the language allows the run-time behavior of code to be easily modified. The Xecute command and Indirection operator, for example, provide unparalleled flexibility to the MUMPS programmer. Most modern implementations now pre-compile code (stripping out comments, optimizing arithmetic operations, etc.), to improve efficiency. MUMPS allows any command or function to be entered by typing the first letter of the command or function. This feature (a real plus if you're writing a long program) has given MUMPS the undeserved reputation of being cryptic and unstructured. Nothing could be farther from the truth. MUMPS encourages the programmer to build discrete modules of code, and to call them at runtime with the DO command. (Of course, it's possible to write unreadable, unstructured code, but that isn't unique to MUMPS). The syntax of MUMPS is very simple and straightforward and is established by the MUMPS Development Committee (MDC) which is the ANSI committee responsible for codifying the MUMPS standard. Vendors can extend the language, by adding "Z" commands and functions. There is also a rich set of operators string manipulation, arithmetic and logical operations, and pattern matching. Some new additions to the language have recently been added by the MDC. These include parameter passing, variable stacking (with the NEW command), and some new functions ($TRANSLATE, $FNUMBER, $GET, $QUERY). MUMPS isn't the language for all applications (what language is?), but for interactive, database or string-processing applications its without peer. There are several implementations available for the VAX, I happen to be affiliated with the group which produces VAX DSM (Digital Standard Mumps), the DEC implementation. Other vendors, and more information, can be located through the Mumps Users Group (MUG), 4321 Hartwick Road, College Park, MD. 20740 (301) 779-6555. Bob Craig DSM Technical Programs Group Digital Equip. Corp. Marlboro, Ma. DEC E-NET -> OZONE::CRAIG UUCP -> {your favorite path}!decwrl!dec-rhea!dec-ozone!craig ARPA -> craig%ozone.DEC@decwrl.ARPA