Mumps Class 15

From VistApedia
Revision as of 15:37, 2 April 2011 by Shabiel (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, 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>