Volume 7, number 3, June 1999, pages 17-18

Windills
ntering the new Millennium with a new MDC Standard

by Ed J.P.M. de Moel

As I am writing this column, it is almost a year ago that I last attended a meeting of the MDC. That is, I have missed the only meeting that has been held between June of last year and this summer. This does make it hard to report on current progress in the committee, but I'll try anyway.

Just because there haven't been many meetings doesn't mean that there hasn't been any activity. In September of last year, the committee voted to "freeze" the set of extensions that were approved at that moment, and consolidate them into a new standard. Whether or not that new consolidated document will be presented for consideration as a new ANSI standard will depend on the level of interest in the industry. For the time being, we have a new MDC standard.

This new document incorporates 106 new extensions into the ANSI standards that were approved around 1995. As yet, I haven't seen many of these implemented in any of the major commercial versions, and that is the reason why the MDC is a bit reluctant to introduce the new document into the ANSI arena: without obvious support from the industry, there is little gain in having a standard that exists on paper only.

The Latest Additions

The most notable additions to the new MDC standard, in my opinion, are the ones that increase the possibilities for M[UMPS] programs to interact with the world outside of the familiar confinements.

The ASSIGN command allows a M[UMPS] program to access a handle to an object (that will typically exist outside of the M[UMPS] world). In a trial implementation, I have used this new feature to manipulate a "commercial off the shelf" text processor to produce reports about information in a M[UMPS] database. Accessing this text processor through its (OLE) object handles and entry-points allowed me to use all the formatting features of this text processor, and I didn't have to worry about typical details such as letter size, line breaks and page breaks.

The "Sockets" interface allows a M[UMPS] program to make use of communication channels that are based on the TCP/IP protocol. In a trial implementation, I have used this new feature to transmit information across a network, and I am currently working on a project where this feature is being used to implement transmission of images throughout a hospital based on the DICOM standards.

Neither the "ASSIGN" command, nor the "Sockets" binding makes any significant changes to the syntax of "M[UMPS] as we know it", but the semantical implications of both extensions mean that a wealth of options that were inaccessible before (or only accessible through non-portable interfaces) could now be utilized in standard programs. (It would really be nice to see the trial implementations be adapted to reflect all details of the documents that made it into the new MDC standard.)

Other extensions

106 extensions sounds like a large number (and it is). About half of these extensions are really elaborations or clarifications that resolve questions that were raised by people attempting to translate the text of the standard from English into their language, and by people who attempted to implement the current ANSI standard.

These clarifications aside, there are still over 50 actual new additions to the language in this new MDC standard.

I'm certain that everyone will find their own favorites among these extensions (I mentioned some of mine earlier in this column). Below are more extensions that I really like.

$REFERENCE

Special variable $REFERENCE can be used to find the name of the global variable that defined the current value of the "naked indicator" (or made that value undefined, as the case may be). Since this special variable may also occur as an argument to the NEW command, it has become possible to write subroutines that use global variables without changing the naked indicator:

SUB NEW $REFERENCE
 ...
 QUIT

will have the effect that the naked indicator will be restored to its previous state (either the name of a global variable, or an empty string when the naked indicator was undefined) when the QUIT command is executed.

Mathematical Functions

The addition of a slew of mathematical library functions opens quite a number of new possibilities. Based on criticism on the 1990 ANSI standard, the committee set out to add all mathematical functions that occur in the standards for FORTRAN, Ada and C as standard library functions for M[UMPS]. Granted, if the library functions are implemented as M[UMPS] code, they may not be as fast as one would expect from software written in FORTRAN, Ada or C, but with the current speed of CPUs, this is becoming less and less of an issue. (Of course, the standard does invite implementors to use more efficient code than the samples that are provided with the standard.)

User Definable I/O and "structured variables"

I/O has been part of the standard from the very beginning, and the 1995 standard introduced the concept of "structured system variables". As nice as these features may be, there is always a desire to use these concepts in a way that "slightly exceeds" the standardized definition.

Up to now, one had to entice ones implementor to make specific ("Z") extensions to turn any such desires into an accessible implementation. Using these "user definable" extensions, however, an end-user can provide code that conforms to the language standard and that implements any such desires. The mechanism that enables the "user defined" extensions is left "implementation-specific" in the new standard, but the extensions themselves can be standard.

Where Can I See All This?

The text of the above-mentioned extensions, and all other ones that are included in the new MDC standards is available from the MTA office for a price that covers the photocopying and mailing expenses. The stack of paper is currently about 750 pages, so that price is no longer a trivial one.


Ed de Moel is past chairman of the MDC and works with Jacquard Systems Research. His experience includes developing software for research in medicine and physics. Over the past ten years, Ed's has mostly focused on the production of tools for data management and analysis, and tools for the support of day-to-day operation of medical systems. Ed can be reached by e-mail.