2019-09-25 10:26:47 -04:00
# MUMPS Examples
2019-09-23 11:33:02 -04:00
2019-09-23 12:13:32 -04:00
**MUMPS** ("Massachusetts General Hospital Utility Multi-Programming System"), or **M** , is a general-purpose computer programming language originally designed in 1966 for the healthcare industry. Its differentiating feature is its "built-in" database, enabling high-level access to disk storage using simple symbolic program variables and subscripted arrays; similar to the variables used by most languages to access main memory. [Read more... ](https://en.wikipedia.org/wiki/MUMPS )
The implementations currently available are:
- [Intersystems (Caché) ](http://www.intersystems.com/ )
- [FIS (GT.M) ](http://www.fisglobal.com/products-technologyplatforms-gtm )
- [MUMPS Database and Language by Ray Newman ](http://sourceforge.net/projects/mumps/ )
- [Open Mumps ](http://www.cs.uni.edu/~okane/ )
2019-09-26 13:04:37 -04:00
The examples in this tutorial are run with GT.M.
2019-09-23 11:33:02 -04:00
## Prerequisites
2019-09-26 13:04:37 -04:00
- [GT.M Administration and Operations Guide ](http://mumps.cz/gtm/books/ao/UNIX_manual/ao_UNIX_screen.pdf )
2019-09-26 11:09:35 -04:00
- [The GT.M Programmer's Guide ](http://www.mumps.cz/gtm/books/pg/UNIX_manual/webhelp/content/preface.html )
2019-09-26 13:04:37 -04:00
- [GT.M Message and Recovery Procedures Manual ](http://www.mupip.pl/books/mr/manual/titlepage.html )
2019-09-25 10:26:47 -04:00
- [MUMPS Technology Portal ](http://mumps.cz/ )
2019-09-26 10:04:21 -04:00
### Additional Documentation
- [Sourceforge ](http://mumps.sourceforge.net/ )
2019-09-25 10:26:47 -04:00
### GPL Mumps
2019-09-26 13:04:37 -04:00
- [The Mumps Programming Language ](https://www.cs.uni.edu/~okane/ )
- [Mumps Language Users' Guide ](https://www.cs.uni.edu/~okane/source/MUMPS-MDH/ReadMe.pdf )
- [Mumps Language Quick Introduction & Tutorial ](https://www.cs.uni.edu/~okane/source/MUMPS-MDH/MumpsTutorial.pdf )
2019-09-25 10:26:47 -04:00
2019-09-26 13:04:37 -04:00
---
2019-09-25 10:26:47 -04:00
2019-09-26 13:04:37 -04:00
## Quick Setup
2019-09-25 10:26:47 -04:00
To install GT.M on Debian based OS:
apt-get install fis-gtm
Set up the environment variables:
2019-09-28 13:16:40 -04:00
source /usr/lib/x86_64-linux-gnu/fis-gtm/V6.3-003A_x86_64/gtmprofile
2019-09-25 10:26:47 -04:00
Open the GT.M prompt:
gtm
GTM>write "Hello world"
Hello world
GTM>halt
To uninstall GT.M:
apt-get purge fis-gtm
---
2019-09-25 12:51:51 -04:00
## Run the Examples
2019-09-28 13:16:40 -04:00
Copy the example of your choice into `$gtmdir/$gtmver/r` :
2019-09-25 12:51:51 -04:00
2019-09-29 04:54:43 -04:00
cp -r < your-folder > /mumps-examples/06-databases/basic-sql-blog/* $gtmdir/$gtmver/r
2019-09-28 13:16:40 -04:00
Or alternatively create a symbolic link:
2019-09-29 04:54:43 -04:00
ln -s < your-folder > /mumps-examples/06-databases/basic-sql-blog/* ~/.fis-gtm/V6.3-003A_x86_64/r
2019-09-28 13:16:40 -04:00
2019-09-28 13:18:27 -04:00
Then run the example:
2019-09-28 13:16:40 -04:00
mumps -run ^Main
2019-09-25 12:51:51 -04:00
---
2019-09-23 11:33:02 -04:00
## 1. The Very Basics
2019-09-25 13:14:12 -04:00
### [`HelloWorld.m`](https://github.com/programarivm/mumps-examples/blob/master/01-the-very-basics/HelloWorld.m)
2019-09-25 10:26:47 -04:00
2019-09-23 11:33:02 -04:00
Hello world
2019-09-25 13:14:12 -04:00
### [`HelloWorldInLoop.m`](https://github.com/programarivm/mumps-examples/blob/master/01-the-very-basics/HelloWorldInLoop.m)
2019-09-25 10:26:47 -04:00
2019-09-23 13:50:48 -04:00
Hello world
Hello world
Hello world
Hello world
Hello world
Hello world
Hello world
Hello world
Hello world
Hello world
2019-09-25 13:14:12 -04:00
### [`HelloWorldInAnotherLoop.m`](https://github.com/programarivm/mumps-examples/blob/master/01-the-very-basics/HelloWorldInAnotherLoop.m)
2019-09-25 10:26:47 -04:00
2019-09-23 14:28:12 -04:00
Hello world
Hello world
Hello world
Hello world
Hello world
Hello world
Hello world
Hello world
Hello world
Hello world
2019-09-23 14:40:39 -04:00
2019-09-25 13:14:12 -04:00
### [`HelloWorldInNestedLoop.m`](https://github.com/programarivm/mumps-examples/blob/master/01-the-very-basics/HelloWorldInNestedLoop.m)
2019-09-25 10:26:47 -04:00
2019-09-23 14:40:39 -04:00
1:1 Hello world
1:2 Hello world
1:3 Hello world
1:4 Hello world
1:5 Hello world
2:1 Hello world
2:2 Hello world
2:3 Hello world
2:4 Hello world
2:5 Hello world
2019-09-24 06:31:06 -04:00
2019-09-25 13:14:12 -04:00
### [`ArithmeticOperations.m`](https://github.com/programarivm/mumps-examples/blob/master/01-the-very-basics/ArithmeticOperations.m)
2019-09-25 10:26:47 -04:00
2019-09-24 06:31:06 -04:00
There were 7 apples, 8 pears and 9 oranges,
a total of 24 fruits in a basket.
Then, something happened:
1 apple, 2 pears and 0 oranges were eaten!
Now there are 21 fruits in the basket,
the average fruit value is 7.
2019-09-24 12:36:34 -04:00
2019-09-25 13:14:12 -04:00
### [`Arrays.m`](https://github.com/programarivm/mumps-examples/blob/master/01-the-very-basics/Arrays.m)
2019-09-25 10:26:47 -04:00
2019-09-24 12:36:34 -04:00
Approaching the solar system:
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
Pluto
September 2019:
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
2019-09-26 05:38:49 -04:00
23 24 25 26 27 28 29
30 1 2 3 4 5 6
Genealogical tree:
Harry and Emily had Jack
Associative array:
Have you ever been to London?
### [`ArraysShortened.m`](https://github.com/programarivm/mumps-examples/blob/master/01-the-very-basics/ArraysShortened.m)
2019-09-26 10:04:21 -04:00
> The output obtained is the same as that in [`Arrays.m`](https://github.com/programarivm/mumps-examples/blob/master/01-the-very-basics/Arrays.m)
2019-09-24 15:57:41 -04:00
2019-09-29 04:54:43 -04:00
## 2. Functions
2019-09-24 15:57:41 -04:00
2019-09-29 04:54:43 -04:00
> TODO.
## 3. Utility Routines
> TODO.
## 4. User Defined Functions
### [`FactorialByReference.m`](https://github.com/programarivm/mumps-examples/blob/master/04-user-defined-functions/FactorialByReference.m)
2019-09-24 15:57:41 -04:00
Enter n: 5
5! = 120
2019-09-29 04:54:43 -04:00
### [`FactorialByValue.m`](https://github.com/programarivm/mumps-examples/blob/master/04-user-defined-functions/FactorialByValue.m)
2019-09-25 14:57:52 -04:00
Enter n: 5
5! = 120
2019-09-29 04:54:43 -04:00
### [`Fibonacci.m`](https://github.com/programarivm/mumps-examples/blob/master/04-user-defined-functions/Fibonacci.m)
2019-09-25 15:55:36 -04:00
Enter n: 9
F(9) = 34
2019-09-26 08:26:32 -04:00
2019-09-29 04:54:43 -04:00
## 5. User Defined Routines
2019-09-26 10:04:21 -04:00
2019-09-29 04:54:43 -04:00
### [`Main.m`](https://github.com/programarivm/mumps-examples/blob/master/05-user-defined-routines/Main.m)
2019-09-26 10:04:21 -04:00
Hello!
Enter n: 9
areaCircle(9) = 254.469
fibonacci(9) = 34
factorialByVal(9) = 362880
factorialByRef(9) = 362880
2019-09-29 04:54:43 -04:00
> For further details also visit [MyMathRoutines.m](https://github.com/programarivm/mumps-examples/blob/master/05-user-defined-routines/MyMathRoutines.m)
2019-09-26 10:04:21 -04:00
2019-09-29 04:54:43 -04:00
## 6. Databases
2019-09-26 08:26:32 -04:00
2019-09-29 04:54:43 -04:00
### [`GenealogicalTree.m`](https://github.com/programarivm/mumps-examples/blob/master/06-databases/GenealogicalTree.m)
2019-09-26 08:26:32 -04:00
Genealogical tree:
^gtree(0,1,1) is Jessica
$data(^gtree(0,2)) is 0
$data(^gtree(0,1,1,1)) is 1
$data(^gtree(0,0,0,0,0)) is 10
$data(^gtree(0)) is 11
2019-09-26 11:09:35 -04:00
2019-09-26 08:26:32 -04:00
Removing tree...
$data(^gtree(0,2)) is 0
$data(^gtree(0,1,1,1)) is 0
$data(^gtree(0,0,0,0,0)) is 0
$data(^gtree(0)) is 0
2019-09-26 16:48:50 -04:00
2019-09-29 04:54:43 -04:00
### [`basic-sql-crud/Main.m`](https://github.com/programarivm/mumps-examples/blob/master/06-databases/basic-sql-crud/Main.m)
2019-09-26 16:48:50 -04:00
User successfully created!
User successfully created!
User successfully fetched!
2019-09-27 06:30:58 -04:00
username: alice
email: alice-jones@no-reply.com
fullname: Alice Jones
2019-09-26 16:48:50 -04:00
User successfully updated!
User successfully fetched!
2019-09-27 06:30:58 -04:00
username: amelia
email: amelia-roberts@no-reply.com
fullname: Amelia Roberts
2019-09-26 16:48:50 -04:00
User successfully deleted!
User successfully fetched!
2019-09-27 06:30:58 -04:00
username:
email:
fullname:
2019-09-26 16:48:50 -04:00
2019-09-27 06:00:35 -04:00
Database successfully dropped!
2019-09-27 06:30:58 -04:00
For further details also visit:
2019-09-29 04:54:43 -04:00
- [`Database.m` ](https://github.com/programarivm/mumps-examples/blob/master/06-databases/basic-sql-crud/routines/Database.m )
- [`User.m` ](https://github.com/programarivm/mumps-examples/blob/master/06-databases/basic-sql-crud/routines/User.m )
2019-09-26 16:48:50 -04:00
2019-09-29 04:54:43 -04:00
### [`basic-sql-blog/Main.m`](https://github.com/programarivm/mumps-examples/blob/master/06-databases/basic-sql-blog/Main.m)
2019-09-27 06:21:17 -04:00
2019-09-28 18:35:31 -04:00
Category fetched (3):
description: Foobar
2019-09-28 18:25:47 -04:00
2019-09-28 18:35:31 -04:00
Post fetched (1):
2019-09-27 06:21:17 -04:00
slug: lorem-ipsum
title: Lorem ipsum
2019-09-27 13:48:25 -04:00
description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
2019-09-28 18:36:55 -04:00
Posts fetched by category (3):
2019-09-28 18:25:47 -04:00
(3,3,2) = curabitur-ullamcorper-ultricies~Curabitur ullamcorper ultricies~Curabitur ullamcorper ultricies nisi.
(4,3,2) = donec-vitae-sapien~Donec vitae sapien~Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante.
2019-09-27 13:48:25 -04:00
2019-09-28 18:36:55 -04:00
Posts fetched by user (1):
2019-09-28 18:25:47 -04:00
(1,1,1) = lorem-ipsum~Lorem ipsum~Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
(2,1,1) = donec-pede-justo~Donec pede justo~Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu.
2019-09-27 13:48:25 -04:00
2019-09-28 18:35:31 -04:00
Comment fetched (1):
2019-09-27 13:48:25 -04:00
description: This is awesome! Thank you.
2019-09-27 06:21:17 -04:00
Database successfully dropped!
For further details also visit:
2019-09-29 04:54:43 -04:00
- [`Category.m` ](https://github.com/programarivm/mumps-examples/blob/master/06-databases/basic-sql-blog/routines/Category.m )
- [`Comment.m` ](https://github.com/programarivm/mumps-examples/blob/master/06-databases/basic-sql-blog/routines/Comment.m )
- [`Database.m` ](https://github.com/programarivm/mumps-examples/blob/master/06-databases/basic-sql-blog/routines/Database.m )
- [`Post.m` ](https://github.com/programarivm/mumps-examples/blob/master/06-databases/basic-sql-blog/routines/Post.m )
- [`User.m` ](https://github.com/programarivm/mumps-examples/blob/master/06-databases/basic-sql-blog/routines/User.m )
2019-09-27 06:21:17 -04:00
2019-09-23 11:33:02 -04:00
---
### Contributions
Would you help make this tutorial better? Contributions are welcome.
- Feel free to send a pull request
- Drop an email at info@programarivm.com with the subject "Open MUMPS by Example"
- Leave me a comment on [Twitter ](https://twitter.com/programarivm )
- Say hello on [Google+ ](https://plus.google.com/+Programarivm )
Many thanks.