Mumps Class 2

 Using username "worldvistaEHR". Authenticating with public key "rsa-key-20101206" Linux cassandra 2.6.26-1-686 #1 SMP Fri Mar 13 18:08:45 UTC 2009 i686

The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Thu Jan 6 05:22:01 2011 from 192.168.56.1 worldvistaEHR@cassandra:~$ mumps -dir

GTM>zed "XUS"

GTM>; All storage of variables are in strings

GTM>; Using operators and functions:

GTM>; Language interprets strings as:

GTM>; 1. Number

GTM>; 2. Boolean

GTM>; 3. String

GTM>SET X=3 SET Y=4 SET Z=5

GTM>WRITE X SET A=5 3 GTM>WRITE A 5 GTM>SET X=3 SET Y=4 SET Z=5

GTM>SET X=3,Y=4,Z=5

GTM>;, means repeat command

GTM>IF A,B,C %GTM-E-UNDEF, Undefined local variable: B

GTM>IF X,Y,Z

GTM>; equivalent to

GTM>IF X IF Y IF Z

GTM>; All of Mumps is command argument command argument, except:

GTM>; FOR, IF, ELSE

GTM>; FOR, IF, ELSE scope is everything following them

GTM>; or a procedure indicated by a DO.

GTM>SET X=3 WRITE Y 4 GTM>SET P=0 IF P WRITE Y

GTM>SET P=1 IF P WRITE Y 4 GTM>; Opposite of IF is ELSE

GTM>SET P=1 IF P WRITE Y 4 GTM>SET P=0 IF P WRITE Y

GTM>ELSE WRITE Z %GTM-E-SPOREOL, Either a space or an end-of-line was expected but not found ELSE WRITE Z            ^-

GTM>ELSE WRITE Z 5 GTM>; Every Mumps command requires an argument

GTM>; If command has no argument (e.g. Else) put two spaces

GTM>; For command

GTM>FOR I=1:1:100 WRITE I,! QUIT:I=56 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56

GTM>; FOR executes arbitraty mumps commands; and QUIT stops a FOR loop.

GTM>; Mumps Syntax: Command Argument Command Argument etc.

GTM>; Arguments: Can be Literals

GTM>WRITE "HELLO" HELLO GTM>; Argument: Can be an expression:

GTM>WRITE 3+5 8 GTM>WRITE (2+3)=5 1 GTM>; = is a comparison Equal; like == in C.

GTM>; Expressions can contain functions.

GTM>; Wait a minute: what are functions??

GTM>; Functions in Mumps are divided into two categories:

GTM>; Intrinsic Functions (part of the Mumps Language)

GTM>; Extrinsic Functions (defined by the Programmer)

GTM>; Example of Intrinsic Functions:

GTM>WRITE $EXTRACT("STRING",1,2) ST GTM>WRITE $JUSTIFY("STRING",20) STRING GTM>ZED "XLFSTR"

GTM>; Example of Extrinsic Functions

GTM>WRITE $$LO^XLFSTR("STRING") %GTM-E-LABELMISSING, Label referenced but not defined: LO

GTM>ZED

GTM>WRITE $$LOW^XLFSTR("STRING") string GTM>; Instrinsic Functions have only one $

GTM>; Extrinsic Functions have 2 $$

GTM>; Extrnisic Functions are always part of a routine.

GTM>WRITE $EXTRACT("STRING",1,2) ST GTM>write $extract("STRING",1,2) ST GTM>write $$low^xlfstr("STRING") %GTM-E-ZLINKFILE, Error while zlinking "xlfstr" %GTM-E-FILENOTFND, File xlfstr not found

GTM>; Intrinsic commands are not case sensitive

GTM>; Extrinsic, being user defined, are case sensitive.

GTM>; Expressions

GTM>; Mumps syntax, really looks like this:

GTM>; Command expression command expression command expression

GTM>zed

GTM>; Abbreviation of Commands and Instrinsic Functions

GTM>; WRITE = W

GTM>; SET = S

GTM>; $EXTRACT = $E

GTM>WRITE "HELLO" HELLO GTM>W "HELLO" HELLO GTM>WR "HELLO" %GTM-E-INVCMD, Invalid command keyword encountered WR "HELLO" ^-

GTM>WRITE $EXTRACT("HELLO",1,2) HE GTM>WRITE $E("HELLO",1,2) HE GTM>W $E("HELLO",1,2) HE GTM>; READ = R

GTM>R X 8 GTM>W X 8 GTM>; Mumps does not have reserved words in the language

GTM>; Why?

GTM>; Because it has a set syntax of command expression

GTM>; If something is in the command section, it will be interpreted as a command

GTM>; and vice versa

GTM>SET SET=1

GTM>WRITE SET 1 GTM>; Entering numbers vs entering strings

GTM>SET X=0033

GTM>WRITE X 33 GTM>SET X="0033"

GTM>WRITE X 0033 GTM>SET X=987SSS %GTM-E-SPOREOL, Either a space or an end-of-line was expected but not found SET X=987SSS ^-

GTM>SET X=1/4

GTM>W X .25 GTM>S Y=0.333

GTM>W Y .333 GTM>SET Y="0.333"

GTM>WRITE Y 0.333 GTM>; Y is now a string

GTM>; Quick tip: To convert a string to number, use the + sign

GTM>WRITE Y 0.333 GTM>WRITE +Y .333 GTM>; If you don't use quotes in the expression, mumps will try to interpret your input as either:

GTM>; 1. A number

GTM>; 2. A variable

GTM>; If you use quotes in the expression, mumps will interpret your input as a string.

GTM>; In either case, the end result is stored as a string in Mumps.

GTM>SET Y=0.33

GTM>SET Y=X

GTM>; X is a variable; Y is now equal to X.

GTM>; Mumps Limits

GTM>; 95 Standard:

GTM>; - Strings can be 255 characters long

GTM>; - Numbers up to 15 digits accurate

GTM>; In reality:

GTM>; Cache: Strings 32000 characters long; GT.M: 1 million +

GTM>; GT.M can take numbers more than 15 digits accurate.

GTM>; Introducing... Exponential notation

GTM>S X=3E5

GTM>W X 300000 GTM>S X=3E20

GTM>W X 300000000000000000000 GTM>S X=3E40

GTM>W X 30000000000000000000000000000000000000000 GTM>S X=3E60 %GTM-E-NUMOFLOW, Numeric overflow S X=3E60 ^-

GTM>S X=3E50 %GTM-E-NUMOFLOW, Numeric overflow S X=3E50 ^-

GTM>S X=3E45

GTM>S X=3E46

GTM>S X=3E47 %GTM-E-NUMOFLOW, Numeric overflow S X=3E47 ^-

GTM>; Subscript Length is 255 characters

GTM>S X(1,2,3,4,5,6,7,8,9,"SAM","CAT",2)=1

GTM>ZWRITE X X=30000000000000000000000000000000000000000000000 X(1,2,3,4,5,6,7,8,9,"SAM","CAT",2)=1

GTM>WRITE $D(X) 11 GTM>WRITE $D(X(2)) 0 GTM>WRITE $D(X(1)) 10 GTM>WRITE $D(X(1,2)) 10 GTM>WRITE $D(X(1,3)) 0 GTM>; Combined subscript lenggh is 255 characters.

GTM>; Length of data in each global entry is 255 characters.

GTM>W ^SAM 5 GTM>; Variables

GTM>SET X=234

GTM>; X is a variable

GTM>; In Mumps: Variables can be up to 16 characters long.

GTM>; First letter can be %

GTM>; or [A-Za-z]

GTM>; Rest of characters can be alphabet or numbers

GTM>; What is a vaild variable name???

GTM>S 3SX=1 %GTM-E-VAREXPECTED, Variable expected in this context S 3SX=1 ^-

GTM>S DSLKJ=1

GTM>S %HEESI=1

GTM>S %3=1

GTM>S X3=1

GTM>S X%3=1 %GTM-E-EQUAL, Equal sign expected but not found S X%3=1 ^-

GTM>; % must be in the first position

GTM>S YT33WW=1

GTM>; %

GTM>; %1 to %9 can be used by programmers for temporary variables

GTM>; other % variables shouldn't be used unless you are writing utilities for VISTA.

GTM>zed "_DT"

GTM>zed "XUP"

GTM>