Mumps Class 2
From VistApedia
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>