Initially, the books about M[UMPS] were published by local interest groups and were not for sale in the general bookstores. About 10 years ago, this changed when textbooks about M[UMPS] started to appear in the regular press in German, French, and Dutch. I was extremely happy when, around 1990, two new textbooks appeared which were in English, and were available in the general bookstores. One of those two was the first edition of Dr. Walters The ABCs of MUMPS.
Of course, books about computer languages have one major disadvantage: it takes quite an amount of time to prepare the publication of a book and by the time a book is printed, the text in that book is already showing its age. The subject matter of computer languages evolves so rapidly that it takes only a couple of years for books to change from the latest and greatest to largely obsolete. The books about M[UMPS] that appeared five years ago are no exception in this context. Consequently, I was delighted when Dr. Walters told me he was working on a revision of the ABCs. The M[UMPS] language has made a number of important leaps forward over the past five years, and the first edition of the ABCs, of course, only describes the language as it was when that edition was published.
This new edition still describes the elementary building blocks of the M[UMPS] language. These havent changed. But the importance of this new edition is that it also describes those new language elements that have been added over the past five years. Several of the commands and functions in the language have been extended to offer new capabilities, and a couple of completely new sections have been added to the language. The publication of this book is scheduled to occur only a couple of months after ANSI gave its final approval to the 1995 version of the standard for this language and I am happy to have been able to assist Dr. Walters in ensuring that as many as possible of the new additions to the language are covered in this book.
Thirty years have passed since a modest system in a lab of a university hospital was given the nickname MUMPS. This system has now evolved to a programming environment with international acceptance. Currently, many people still call the language by its original name, and probably equally many prefer to call it by the name M. Whatever name people use for the language, its strengths are still the same: the language offers access to a multiuser database, it offers all the flexibility of a programming language, it offers all the capabilities of a preprogrammed environment to enforce carefully defined access, both in the limiting sense of security requirements and in the extending sense of opening up sources of information for those who need it for their daily activities. The programming language can be used to maintain purely hierarchic databases, as well as purely relational ones, as well as any form or type of hybrid. Certainly, these capabilities are also available in the systems that can be found advertised in the popular software press. Unfortunately, most of these offer only some of these advantages, and those that have the capability to offer all the same benefits do so only if they are implemented in an environment that is tailored to fit. M[UMPS] still offers its advantages regardless of its environment, and will continue to do so.
The programming language was originally mainly used in hospital environments, and currently primarily finds its application in banking environments, stock exchanges, libraries, travel agencies, hotel administration, pizza delivery and, of course, diverse medical systems are still supported as ever before.
It is obvious to me that the M[UMPS] language is still thriving, and I am delighted to see continued updates in the literature about this language.
Ed de Moel, Chairman MUMPS Development Committee
November 1996
Preface
The first version of this book, The ABCs of MUMPS published in 1989 by Digital Press, covered all the features of the M Programming language, as it was then known, including elements that did not get incorporated into the standard until the next year. The text was aimed at novice programmers, unfamiliar with basic concepts of high-level languages in general and M in particular. Another text written by a close friend appeared at the same time and was aimed at experienced programmers.
Since the appearance in 1989 of these two texts, a great deal has happened. The language has evolved. New language elements make it virtually impossible to encompass the entire spectrum of programming in M and still maintain an approach suitable for introductory-level students. These features are important, and they belong in a standard reference on the language. John Lewkowicz, author of the second text alluded to earlier, has decided not to update his text, and there seem to be no other authors wishing to write an English introductory or intermediate text.
As a result, the new text which you are holding is a hybrid: Part I retains the introductory elements, little changed from the ABCs version with the exception of adding some new language features and a few exercises. It still has advice to experienced programmers as to the content of each chapter, so that those readers could decide whether to delve into the material covered in that chapter. In addition, we have added an entirely new section, Part II, which is aimed at people with programming experience in other languages. This section begins with an overview that may serve as a useful summary for Part I, and then moves into language elements that require programming experience to use effectively. Some of the slightly more complex language elements formerly included in The ABCs have been moved to this section to retain the novice focus of Part I.