Mumps Class 15
From VistApedia
Jump to navigationJump to search
Using username "sw-dev".
sw-dev@172.16.16.108's password:
Linux swdev 2.6.31-20-generic #58-Ubuntu SMP Fri Mar 12 05:23:09 UTC 2010 i686
To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
236 packages can be updated.
197 updates are security updates.
Last login: Tue Mar 15 09:25:08 2011 from ayman-laptop.local
sw-dev@swdev:/var/worldvista/sw/dev$ ls
backup journals log old-localr tmp
bin localo md5sum replication vista-login-msg
globals localr objects routines vista-state
sw-dev@swdev:/var/worldvista/sw/dev$ mumps -dir
mumps: command not found
sw-dev@swdev:/var/worldvista/sw/dev$ $gtm_dist/mumps -dir
sw-dev> ; Indirection
sw-dev> ; Indirection in general is the substitution of a string with a language
expression
sw-dev> ; E.g.
sw-dev> SET X="Y"
sw-dev> SET Y=5
sw-dev> WRITE X
Y
sw-dev> WRITE Y
5
sw-dev> ; What if you want to treat what's in X as a variable?
sw-dev> WRITE @X
5
sw-dev> ; Another example
sw-dev> ; What if you want to set a variable you don't know at compile time?
sw-dev> ; What if you receive that variable from somewhere at run time?
sw-dev> S VAR="PATIENT"
sw-dev> S VALUE=5
sw-dev> S @VAR=VALUE
sw-dev> W PATIENT
5
sw-dev> ; @ sign, when appended to a string in Read, write, or set converts a st
ring to a variable.
sw-dev> ; Next form of indirection
sw-dev> ; Argument indirection
sw-dev> ; works with Set and $text
sw-dev> SET X=5
sw-dev> SET EXPRESSION="X=5"
sw-dev> WRITE EXPRESSION
X=5
sw-dev> SET EXPRESSION="X=200"
sw-dev> WRITE EXPRESSION
X=200
sw-dev> SET @EXPRESSION
sw-dev> WRITE X
200
sw-dev> WRITE EXPRESSION
X=200
sw-dev> WRITE @EXPRESSION
1
sw-dev> WRITE X=200
1
sw-dev> SET EXPRESSION="+1^XUP"
sw-dev> WRITE EXPRESSION
+1^XUP
sw-dev> WRITE @EXPRESSION
%GTM-E-INDEXTRACHARS, Indirection string contains extra trailing characters
+1^XUP
^-----
sw-dev> WRITE +1^XUP
%GTM-E-SPOREOL, Either a space or an end-of-line was expected but not found
WRITE +1^XUP
^-----
sw-dev> WRITE $TEXT(@EXPRESSION)
XUP ;SFISC/RWF - Setup enviroment for programmers ;10/12/06 12:45
sw-dev> ZBREAK ^XUP
sw-dev> ZSHOW "B"
^XUP
sw-dev> D ^XUP
%GTM-I-BREAKZBA, Break instruction encountered during ZBREAK action
At M source location XUP+2^XUP
sw-dev> ZSTEP INTO
Setting up programmer environment%GTM-I-BREAKZST, Break instruction encountered during ZSTEP action
At M source location XUP+3^XUP
sw-dev> SET $ZSTEP="WRITE $TEXT(@$ZPOSITION),! BREAK"
sw-dev> WRITE $ZPOSITION
XUP+3^XUP
sw-dev> WRITE $TEXT($ZPOSITION)
%GTM-E-TEXTARG, Invalid argument to $TEXT function
WRITE $TEXT($ZPOSITION)
^-----
sw-dev> WRITE $ZPOSITION="XUP+3^XUP"
1
sw-dev> ; Convert string to argument using '@'
sw-dev> WRITE $TEXT(@$ZPOS)
S U="^",$ECODE="",$ETRAP="" ;Clear error and error trap
sw-dev>
sw-dev> ; Yet another form of the '@'
sw-dev> ; @ for pattern indirection
sw-dev> WRITE "ABC"?.E
1
sw-dev> WRITE "ABC"?4.E
0
sw-dev> ; You can store the pattern as a string, then indirect it
sw-dev> SET PATTERN="4.E"
sw-dev> WRITE "ABC"?@PATTERN
0
sw-dev> WRITE "ABC"?PATTERN
%GTM-E-PATCODE, Illegal syntax for pattern
WRITE "ABC"?PATTERN
^-----
sw-dev> WRITE "ABC"?@PATTERN
0
sw-dev> ; Last form of '@' is Subscript Indirection
sw-dev> ; Created specifically for VISTA
sw-dev> ; How does this work?
sw-dev> ; Let's say that you have a very long variable name, with lots of changi
ng subscripts
sw-dev> S MYVAR="^TMP(""TEST"",$J)"
sw-dev> WRITE MYVAR
^TMP("TEST",$J)
sw-dev> ; Do something like this:
sw-dev> ; Set ^TMP("TEST",$J,1)="Hello"
sw-dev> SET @($E(MYVAR,1,$L(MYVAR)-1)_",1)")="Hello"
sw-dev> WRITE ^TMP("TEST",$J,1)
Hello
sw-dev> SET @MYVAR@(1)="Hello"
sw-dev> WRITE ^TMP("TEST",$J,1)
Hello
sw-dev> SET @MYVAR@(1)="Hello2"
sw-dev> WRITE ^TMP("TEST",$J,1)
Hello2
sw-dev> WRITE ^TMP("TEST",$J)
%GTM-E-GVUNDEF, Global variable undefined: ^TMP("TEST",26130)
sw-dev> WRITE ^TMP("TEST",$J)@(1)
%GTM-E-SPOREOL, Either a space or an end-of-line was expected but not found
WRITE ^TMP("TEST",$J)@(1)
^-----
sw-dev> SET Y=8
sw-dev> SET Y(1)="HLWKE"
sw-dev> SET Y(1,2)="YEST"
sw-dev> WRITE Y(1)
HLWKE
sw-dev> WRITE Y(1)(2)
%GTM-E-SPOREOL, Either a space or an end-of-line was expected but not found
WRITE Y(1)(2)
^-----
sw-dev> WRITE Y(1)@(2)
%GTM-E-SPOREOL, Either a space or an end-of-line was expected but not found
WRITE Y(1)@(2)
^-----
sw-dev> S X="Y(1)"
sw-dev> W @X@(2)
YEST
sw-dev> S X="Y"
sw-dev> W @X@(1,2)
YEST
sw-dev> ; Xecute command
sw-dev> ; X
sw-dev> X "WRITE HELLO"
%GTM-E-UNDEF, Undefined local variable: HELLO
At M source location XUP+3^XUP
sw-dev> X "WRITE ""HELLO"""
HELLO
sw-dev> X "SET X=10,Y=20,Z=30"
sw-dev> WRITE X,!,Y,!,Z
10
20
30
sw-dev> WRITE ^%ZVEMS
NEW FLAGQ,VEE S FLAGQ=0 D ^%ZVEMSY Q:FLAGQ KILL FLAGQ X ^%ZVEMS("ZS",1) NEW VEE
SHC,VEESHL S VEESHL="RUN" F X ^%ZVEMS("ZA",1) I $G(VEESHC)="^" X:$D(^%ZVEMS("ZK
",1)) ^(1) Q:VEESHC'="NO EXIT"
sw-dev> DO "WRITE X,!,Y,!Z"
%GTM-E-LABELEXPECTED, Label expected in this context
DO "WRITE X,!,Y,!Z"
^-----
sw-dev> XECUTE ^%ZVEMS
------------------------------------------
Your DUZ isn't defined. I'm calling ^XUP.
------------------------------------------
%GTM-I-BREAKZBA, Break instruction encountered during ZBREAK action
At M source location XUP+2^XUP
sw-dev> ZC
Setting up programmer environment
This is a TEST account.
Access Code: ********
Terminal Type set to: C-VT102
You have 38 new messages.
Select OPTION NAME:
==========================< I D N U M B E R >==========================
Enter your VShell ID number. Your User QWIK commands will not be
accessible if your ID is incorrect.
For first time users: Your ID number can be a number from .1 to 999999,
2 decimal digits. It can match your DUZ number but it doesn't have to.
The VShell will use your ID to store data that pertains only to you. If
VA KERNEL routine ^XUP is not in this UCI, you will need to enter your
ID number each time you enter the VShell from this UCI.
=========================================================================
=========================< D I S C L A I M E R >=========================
IN NO EVENT WILL I, THE DEVELOPER OF THIS SOFTWARE, BE LIABLE FOR DIRECT,
INCIDENTAL, INDIRECT, SPECIAL, OR CONSEQUENTIAL DAMAGES RESULTING FROM
ANY DEFECT IN THIS SOFTWARE OR ITS DOCUMENTATION OR ARISING OUT OF THE
USE OF OR INABILITY TO USE THE SOFTWARE OR ACCOMPANYING DOCUMENTATION.
DAVID BOLDUC
=========================================================================
Enter ID Number: 111//
TERMINAL TYPE: C-VT102
If your screen is now in Reverse Video, the REVERSE VIDEO OFF field in the
TERMINAL TYPE file may not be correct for your terminal type. This will
adversely effect some VSHELL screens and should be corrected.
Type 'W $C(27,91,109)' if you need to return your screen to normal.
VPE . . . Victory Programmer Environment . . . . . . . . . . . . David Bolduc
^,H,HALT=Quit ?=Help <F1>1,<F1>2=User QWIKs <F1>3,<F1>4=System QWIKs
>>H
sw-dev> ; Using Xecute to implement a Programmer mode shell
sw-dev> READ "CMD>",X,! X X
CMD>WRITE "HELLO"
HELLO
sw-dev> FOR READ "CMD>",X,! XECUTE X
CMD>WRITE "HELLO"
HELLOCMD>
CMD>
CMD>
%GTM-I-CTRLC, CTRL_C encountered
sw-dev> FOR READ "CMD>",X,! XECUTE X WRITE !
CMD>WRITE "HELLO"
HELLO
CMD>ZWRITE ^SAM
^SAM="منستيب,منت مسنتب منستيب^Male^3040915.0000^JOR^^^JOR ALABAMA^^^1231123123^^
^ISLAM^NEVER MARRIED^^NO^^Father^JOR ALABAMA^^^^^سيب,سيب^NO^1231231231
^^1231231231^NO^NO^^^"
^SAM(1)="منستيب,منت مسنتب منستيب"
^SAM(2)="Male"
^SAM(3)="3040915.0000"
^SAM(4)="JOR"
^SAM(5)=""
^SAM(6)=""
^SAM(7)="JOR ALABAMA"
^SAM(8)=""
^SAM(9)=""
^SAM(10)=1231123123
^SAM(11)=""
^SAM(12)=""
^SAM(13)="ISLAM"
^SAM(14)="NEVER MARRIED"
^SAM(15)=""
^SAM(16)="NO"
^SAM(17)=""
^SAM(18)="Father"
^SAM(19)="JOR ALABAMA"
^SAM(20)=""
^SAM(21)=""
^SAM(22)=""
^SAM(23)=""
^SAM(24)="سيب,سيب"
^SAM(25)="NO"
^SAM(26)=1231231231
^SAM(27)=""
^SAM(28)=1231231231
^SAM(29)="NO"
^SAM(30)="NO"
^SAM(31)=""
^SAM(32)=""
^SAM(33)=""
^SAM("V",1)="%=""172.16.16.88"""
^SAM("V",2)="DILOCKTM=3"
^SAM("V",3)="DISYS=19"
^SAM("V",4)="DT=3100919"
^SAM("V",5)="DTIME=30"
^SAM("V",6)="DUZ=0"
^SAM("V",7)="DUZ(0)="""""
^SAM("V",8)="ERR=0"
^SAM("V",9)="IO=""/dev/null"""
^SAM("V",10)="IO(0)=""/dev/null"""
^SAM("V",11)="IO(1,""/dev/null"")="""""
^SAM("V",12)="IO(""ERROR"")="""""
^SAM("V",13)="IO(""GTM-IP"")=""172.16.16.88"""
^SAM("V",14)="IO(""HOME"")=""47^/dev/null"""
^SAM("V",15)="IO(""IP"")=""172.16.19.73"""
^SAM("V",16)="IOBS=""$C(8)"""
^SAM("V",17)="IOF=""#"""
^SAM("V",18)="IOHG="""""
^SAM("V",19)="IOM=132"
^SAM("V",20)="ION=""NULL"""
^SAM("V",21)="IOPAR="""""
^SAM("V",22)="IOS=47"
^SAM("V",23)="IOSL=64"
^SAM("V",24)="IOST=""P-OTHER"""
^SAM("V",25)="IOST(0)=16"
^SAM("V",26)="IOT=""TRM"""
^SAM("V",27)="IOUPAR="""""
^SAM("V",28)="IOXY="""""
^SAM("V",29)="POP=0"
^SAM("V",30)="TYPE=1"
^SAM("V",31)="U=""^"""
^SAM("V",32)="X=""^XUTL(""""XUSYS"""",23771,1)"""
^SAM("V",33)="XPARSYS=""21;DIC(4.2,"""
^SAM("V",34)="XQMES=1"
^SAM("V",35)="XQY0=""XUS SIGNON"""
^SAM("V",36)="XR=""[XWB]"""
^SAM("V",37)="XWB(0,""LENV"")=3"
^SAM("V",38)="XWB(0,""RT"")=0"
^SAM("V",39)="XWB(0,""TYPE"")=1"
^SAM("V",40)="XWB(0,""VER"")=1"
^SAM("V",41)="XWB(2,""RNAM"")=""XUSRB"""
^SAM("V",42)="XWB(2,""RPC"")=""XUS SIGNON SETUP"""
^SAM("V",43)="XWB(2,""RTAG"")=""SETUP"""
^SAM("V",44)="XWB(2,""VER"")=1.108"
^SAM("V",45)="XWB(5,""XWB"",0)="""""
^SAM("V",46)="XWB(""PARAM"")="""""
^SAM("V",47)="XWBAPVER=1.108"
^SAM("V",48)="XWBCALL=""SETUP^XUSRB(.XWBY)"""
^SAM("V",49)="XWBCALL2="""""
^SAM("V",50)="XWBCLMAN=""RPCTEST"""
^SAM("V",51)="XWBDEBUG=0"
^SAM("V",52)="XWBENVL=3"
^SAM("V",53)="XWBERROR="""""
^SAM("V",54)="XWBNULL=""/dev/null"""
^SAM("V",55)="XWBOS=""GT.M"""
^SAM("V",56)="XWBPRT=0"
^SAM("V",57)="XWBPTYPE=2"
^SAM("V",58)="*XWBR=XWBP"
^SAM("V",59)="XWBRBUF="""""
^SAM("V",60)="XWBSEC="""""
^SAM("V",61)="XWBT(""BF"")=""#"""
^SAM("V",62)="XWBT(""PCNT"")=1"
^SAM("V",63)="XWBTBUF="""""
^SAM("V",64)="XWBTCMD="""""
^SAM("V",65)="XWBTDEV=0"
^SAM("V",66)="XWBTIME=90"
^SAM("V",67)="XWBTIME(1)=2"
^SAM("V",68)="XWBTIP=""172.16.19.73"""
^SAM("V",69)="XWBTSKT=0"
^SAM("V",70)="XWBVER=1.108"
^SAM("V",71)="XWBWRAP=0"
^SAM("V",72)="*XWBY=XWBP"
CMD>
%GTM-I-CTRLC, CTRL_C encountered
sw-dev> ZG
sw-dev> ; $GET
sw-dev> WRITE SAM
%GTM-E-UNDEF, Undefined local variable: SAM
sw-dev> WRITE $GET(SAM)
sw-dev> ; $Get protects you from undefined errors.
sw-dev> ; If a variable or global is undefined, you get an empty string instead
sw-dev> WRITE ^SAM(1,3,4,8)
%GTM-E-GVUNDEF, Global variable undefined: ^SAM(1,3,4,8)
sw-dev> WRITE $G(^SAM(1,3,4,8))
sw-dev> WRITE $G(^SAM(1,3,4,8))=""
1
sw-dev> WRITE $G(SAM,"not defined")
not defined
sw-dev> zed "KBANGET"
sw-dev> zl
sw-dev> zp ^KBANGET
KBANGET ; 3/15/11 10:45am
EN(A,B,C,D,E)
SET A=$G(A,0) ; Set a default value of zero for A if not defined
SET B=$G(B,"NONE")
SET C=$G(C,1)
SET D=$G(D,0)
SET E=$G(E,0)
QUIT A+B+C+D+E
sw-dev> D EN^KBANGET(1,2,3,4,5)
%GTM-E-STACKCRIT, Stack space critical
%GTM-E-ERRWZTRAP, Error while processing $ZTRAP
sw-dev> ZED
sw-dev> zl
sw-dev> D EN^KBANGET(1,2,3,4,5)
%GTM-E-NOTEXTRINSIC, Quit does not return to an extrinsic function: argument not allowed
sw-dev> zg
sw-dev> W $$EN^KBANGET(1,2,3,4,5)
15
sw-dev> W $$EN^KBANGET(1,2,3,4)
10
sw-dev> W $$EN^KBANGET(1,,3,4)
8
sw-dev> ZED
sw-dev> W $$EN^KBANGET(1,,,4)
6
sw-dev> ; $GET common scenarios for use
sw-dev> Output variables for functions that don't always exist.
%GTM-E-INVCMD, Invalid command keyword encountered
Output variables for functions that don't always exist.
^-----
sw-dev> ; Output variables for functions that don't always exist.
sw-dev> ; DIERR
sw-dev> ; if you do this when there is no error 'I DIERR', you crash
sw-dev> ; do this... I $G(DIERR)
sw-dev> ; ^DIR, ^DIC output DTOUT or DUOUT ; same issue
sw-dev> ; $Get also is used to set default values for parameters that are passed
into a procedure/function
sw-dev> ; $Get is also used in for loops when the exit variable doesn't exist ye
t.
sw-dev> zed
sw-dev> zl
sw-dev> zp FOR^KBANGET:FOR+10
FOR
NEW DONE
FOR I=1:1:10 QUIT:DONE=1 DO
. IF I>5 SET DONE=1
QUIT
sw-dev> D FOR^KBANGET
%GTM-E-UNDEF, Undefined local variable: DONE
sw-dev> ZED
sw-dev> zl
sw-dev> rec zp
sw-dev> zp FOR^KBANGET:FOR+10
FOR
NEW DONE
FOR I=1:1:10 QUIT:$G(DONE)=1 DO
. IF I>5 SET DONE=1
QUIT
sw-dev> rec D
sw-dev> D FOR^KBANGET
sw-dev> ; $TEXT - prints line of a routine
sw-dev> W $TEXT(FOR^KBANGET)
FOR
sw-dev> W $TEXT(FOR+1^KBANGET)
NEW DONE
sw-dev> W $TEXT(FOR+2^KBANGET)
FOR I=1:1:10 QUIT:$G(DONE)=1 DO
sw-dev> W $TEXT(FOR+3^KBANGET)
. IF I>5 SET DONE=1
sw-dev> W $TEXT(0)
sw-dev> ; $TEXT behaves differently in a routine.
sw-dev> zed
sw-dev> zp TEXT^KBANGET:TEXT+5
%GTM-E-ZPRTLABNOTFND, Label not found in routine
sw-dev> ZL
sw-dev> zp TEXT^KBANGET:TEXT+5
TEXT
WRITE $TEXT(+0)
QUIT
sw-dev> DO TEXT^KBANGET
KBANGET
sw-dev> ZED
sw-dev> zl
sw-dev> zp TEXT^KBANGET:TEXT+5
TEXT
WRITE $TEXT(+0)
WRITE $TEXT(+1)
QUIT
sw-dev> DO TEXT^KBANGET
KBANGETKBANGET ; 3/15/11 10:55am
sw-dev> zed
sw-dev> zl
sw-dev> DO TEXT^KBANGET
KBANGET
KBANGET ; 3/15/11 10:55am
sw-dev> zed
sw-dev> zl
sw-dev> rec zp
sw-dev> zp TEXT^KBANGET:TEXT+5
TEXT
WRITE $TEXT(+0),! ; Name of the routine
WRITE $TEXT(+1),! ; First line of the routine
QUIT
sw-dev> zp ^DI
DI ;SFISC/GFT-DIRECT ENTRY TO VA FILEMAN ;7/25/94 3:07 PM
V ;;22.0;VA FileMan;;Mar 30, 1999
;Per VHA Directive 10-93-142, this routine should not be modified.
G QQ:$G(^DI(.84,0))']""
C G QQ:$G(^DI(.84,0))']"" K (DTIME,DUZ) G ^DII
D G QQ:$G(^DI(.84,0))']"" G ^DII
P G QQ:$G(^DI(.84,0))']"" K (DTIME,DUZ)
Q G QQ:$G(^DI(.84,0))']"" S DUZ(0)="@" G ^DII
VERSION ;
S VERSION=$P($T(V),";",3),X="VA FileMan V."_VERSION Q
;
QQ ;
W $C(7),!!,"You must run ^DINIT first."
Q
sw-dev> D P^DI
VA FileMan 22.0
Select OPTION:
sw-dev>