Quick Tour
  What's M?

It may be hard to get a feel for M3-Lite without actually downloading a copy of it, but here are some highlights.


First, it is really 3 servers in one. Besides serving up the ANSI Standard M Language, it also provides M database services to other software packages through ODBC or standard socket connections. Perhaps most exciting of all, it contains a complete web server, robust enough to put your Apache or MSII server out of business. And forget about CGI or various web server API's to link your database to the web -- you have a direct connection.


We hope that you will be pleasantly surprised at how small and quick it is. We have been actively fighting the "software bloat" that seems to have taken over and you will be glad to notice that it can be downloaded from our web site in just a few seconds. At only 76K, it's actually smaller than some web pages.

This "smaller footprint" translates into faster startup and shutdown. With almost instantaneous startup, there is no wait. It means less code space that has to be loaded in RAM which yields more memory for disk and routine caching.


Finally, M3-Lite is rich in features. It comes with an SQL driver (inquiry only in M3-Lite) and the SQL dictionary tools which allows you to view your database from ODBC or HTML clients such as Crystal Reports or Microsoft Excel. Database integrity is insured by means of before image journalling. A programming shell provides a wide range of programming tools, editors and shortcuts. On-line documentation and programming examples help you get started immediately.


M is a powerful, general purpose, procedural computer language. Its original name, MUMPS (an acronym for Massachusetts General Hospital Utility Multi-Programming System), hints at its origins in the medical community. It was developed in 1966 by the Laboratory of Computer Science at the aforementioned hospital under a grant from the National Center for Health Services Research and Development. MUMPS was widely used in the medical industry in the 1970's, but its use quickly expanded to other applications. Users' groups sprang up in Europe, Japan and Brazil in the 1980's, and by 1990 M was in widespread use around the world, particularly in hospitals. Every few years, new developments in the language are standardized by the American National Standards Institute (ANSI), ensuring portability.

Part of what makes M so unique and powerful is its data-handling capabilities. Variables in M are untyped; that is, they do not need to be named at the beginning of a routine. "Global" variables are automatically stored on disk as they are created and changed. The well-developed set of string-handling commands make data manipulation easy and precise. M makes working with data simple, while allowing for very advanced operations.

Other powerful features of the M language include the indirection and pattern matching operators. Indirection allows fragments of code to remain unresolved until they are evaluated and executed at runtime. This eliminates the need for specificity when creating routines. Pattern matching allows data to be tested in great detail. The indirection and pattern matching operators can be used together: for example, patterns can be defined at run time through the use of indirection.

M runs in an encapsulated environment that supports multiple users and multitasking. Both data and program files (called "globals" and "routines," respectively) are stored in each user's operating system files.

For more information on M(UMPS), see


M3 is not the first M operating system of PG&A. Back in 1978, Mark Patterson wrote a non-standard M implementation for the Digital Equipment Micro-11 processors. In 1980 Marc Gray teamed up with him, formed Patterson, Gray and Associates, and they came out with an ANSI Standard implementation named PSM-11.

In 1984 PG&A received a contract from Sperry Corporation to port the PSM-11 operating systems to two of Sperry's product lines. This new version (called PSM-32) was later installed in a number of hospitals under contract with Sperry.

In 1986 PG&A enlisted the services of Mark Roux to help us port the PSM-32 version to the Digital Equipment VAX processor as well as help us with some of our programming tools.

But M operating systems would not be the golden egg for PG&A and after selling less than one hundred of them, they found their programming tools and other applications to be more productive.

In August of 1998 the bug hit again. After twelve years of application programming, PG&A once again has turned to systems programming with a new product for the next century.


ANSI Standard M - X11.1-1995
Database Self Expanding Windows File. 4096 byte block size. File permissions allow for shared read. The file is used in a non-buffered mode so data is written directly to the disk.
Globals Multi-way Balanced Tree structure. Each global is stored separately and may contain optional pointer blocks if it is larger than 4K in size.
Routines Routines are stored in 4k disk blocks and are loaded into memory upon demand. All users share the same memory copy.
Directories Routine and Global Directories are stored as global structures subscripted by the namespace.
Namespaces There are 64 Routine/Global namespaces available for each database. (Namespace is equivalent to UCI).
Routine Directory Path A user definable path table can specify the search order for finding a routine.
Bitmaps Each bitmap maps 32000 disk blocks (131 Mbytes).
Console Emulation The system console emulates a VT220 and supports most standard ANSI escape sequences and function keys.
Telnet Daemon M3-Lite contains a telnet Daemon (server) which provides the standard access to the programming and application character mode interface. The port number of telnet defaults to port 23 but can be changed in the M3.INI file. Version 2.0e defaults to port 123.
Programming Interface The programming mode of M3 is controlled by a direct mode shell which provides shortcuts to many utilities and programming facilities. The user can add his/her own shortcuts.
Integral Web Server A built-in web server serves up web pages for both system and application purposes. Web based HELP screens can show how this convenient facility makes it easy for you to put application data out on the local or wide area network.
SQL Queries SQL queries can be made to the M3 Database via Third Party Report Writers (via ODBC or Web connections) and/or user applications by means of a built-in SQL server and Data Dictionary file.
M3 Connect M3 listens on a reserved TCP/IP port for requests for service and then calls user definable interface routines to provide easy access to the M3 database and M functionality. M3 comes with some sample programs to show how this can be used to interface VB or other applications with M3.


CPUIntel 486 or later or compatible
RAM memoryVersion 2.0e - 8 Mbytes
 Version 2.1 - 4 to 64 Mbytes depending upon the # of users and size of partitions
Disk Capacity3.0 Mbytes mininum + user routines and data
WindowsMicrosoft's Windows 95/98/NT or 2000
Serial Ports(optional)

2000 Patterson, Gray & Associates. All rights reserved.