Mumps Class 4
From VistApedia
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/ 213 packages can be updated. 174 updates are security updates. Last login: Sun Jan 16 09:28:21 2011 from hebalafi-laptop.local sw-dev@swdev:/var/worldvista/sw/dev$ gtm sw-dev> D ^%RD Routine directory Routine: KJO* KJO8CIRC KJOXCIRM Total of 2 routines. Routine: sw-dev> ZED "KJOXCIRM" sw-dev> ZP ^KJOXCIRM CIRM ; N X,RA,P S X=0,R=0,P=3.14 ; MENU W !,!,! W "SELECT AN OPTION:-",! W "1.CALCULATE A CIRCUMFERENCE FOR A CIRCLE WITH A RADUIS OF (12.5)",! W "2.ENTER A RADUIS TO CALCULATE THE CIRCUMFERENCE FOR THE CIRCLE",! W "3.QUIT",! R X,! IF X>3 W "ENTER A VALIED OPTION NUMBER",! GOTO MENU IF X=3 Q IF X=1 W !,"THE CIRM FOR THE CIRCLE IS:- ",2*12.5*P,! GOTO MENU IF X=2 W "PLEASE ENTER THE CIRLCE RADUIS:- " R RA IF RA<0 S RA=0 W !,"THE CIRM FOR THE CIRCLE IS:- ",2*RA*P,! GOTO MENU sw-dev> D ^KJOXCIRM SELECT AN OPTION:- 1.CALCULATE A CIRCUMFERENCE FOR A CIRCLE WITH A RADUIS OF (12.5) 2.ENTER A RADUIS TO CALCULATE THE CIRCUMFERENCE FOR THE CIRCLE 3.QUIT -1 %GTM-E-UNDEF, Undefined local variable: RA At M source location MENU+11^KJOXCIRM sw-dev> ZG sw-dev> D ^KJOXCIRM SELECT AN OPTION:- 1.CALCULATE A CIRCUMFERENCE FOR A CIRCLE WITH A RADUIS OF (12.5) 2.ENTER A RADUIS TO CALCULATE THE CIRCUMFERENCE FOR THE CIRCLE 3.QUIT 0 %GTM-E-UNDEF, Undefined local variable: RA At M source location MENU+11^KJOXCIRM sw-dev> ZG sw-dev> D ^KJOXCIRM SELECT AN OPTION:- 1.CALCULATE A CIRCUMFERENCE FOR A CIRCLE WITH A RADUIS OF (12.5) 2.ENTER A RADUIS TO CALCULATE THE CIRCUMFERENCE FOR THE CIRCLE 3.QUIT 4 ENTER A VALIED OPTION NUMBER SELECT AN OPTION:- 1.CALCULATE A CIRCUMFERENCE FOR A CIRCLE WITH A RADUIS OF (12.5) 2.ENTER A RADUIS TO CALCULATE THE CIRCUMFERENCE FOR THE CIRCLE 3.QUIT 1 THE CIRM FOR THE CIRCLE IS:- 78.5 SELECT AN OPTION:- 1.CALCULATE A CIRCUMFERENCE FOR A CIRCLE WITH A RADUIS OF (12.5) 2.ENTER A RADUIS TO CALCULATE THE CIRCUMFERENCE FOR THE CIRCLE 3.QUIT 2 PLEASE ENTER THE CIRLCE RADUIS:- 66 THE CIRM FOR THE CIRCLE IS:- 414.48 SELECT AN OPTION:- 1.CALCULATE A CIRCUMFERENCE FOR A CIRCLE WITH A RADUIS OF (12.5) 2.ENTER A RADUIS TO CALCULATE THE CIRCUMFERENCE FOR THE CIRCLE 3.QUIT 2 PLEASE ENTER THE CIRLCE RADUIS:- -8 THE CIRM FOR THE CIRCLE IS:- 0 SELECT AN OPTION:- 1.CALCULATE A CIRCUMFERENCE FOR A CIRCLE WITH A RADUIS OF (12.5) 2.ENTER A RADUIS TO CALCULATE THE CIRCUMFERENCE FOR THE CIRCLE 3.QUIT 3 sw-dev> ZED sw-dev> D ^%RD Routine directory Routine: KJO* KJO8CIRC KJOXCIRM Total of 2 routines. Routine: sw-dev> sw-dev> ZP ^KJO8CIRC KJO8CIRC ; ; S PI=(22/7) W !,"Circumference of a circle of radius (12.5) is: " S Circim=2*PI*12.5 W Circim,! ; W !,"Enter a new radius for another circle: " R RAD S Circim=2*PI*RAD W !,"Circumference of a circle of radius ("_RAD_") is: " I Circim<0 W "0",! E W Circim,! W "See you next time, bye" ; sw-dev> ZED "KJO8CIRC" sw-dev> ZED "KJOXCIRM" sw-dev> ZED "KJO8CIRC" sw-dev> D ^KJO8CIRC Circumference of a circle of radius (12.5) is: 78.5714285714285712 Enter a new radius for another circle: 33 Circumference of a circle of radius (33) is: 207.428571428571428 See you next time, bye sw-dev> D ^KJO8CIRC Circumference of a circle of radius (12.5) is: 78.5714285714285712 Enter a new radius for another circle: -12 Circumference of a circle of radius (-12) is: 0 See you next time, bye sw-dev> h sw-dev@swdev:/var/worldvista/sw/dev$ gtm sw-dev> ; Strings, and String Operators sw-dev> ; To store a string, use quotes sw-dev> ; otherwise Mumps will try to interpret it as a number, sw-dev> ; then store the number as a string. sw-dev> W "03" 03 sw-dev> W 03 3 sw-dev> ; String functions: $ASCII, $CHAR, $TRANSLATE, $LENGTH, $PIECE sw-dev> ; $EXTRACT, $FIND sw-dev> WRITE $ASCII( %GTM-E-EXPR, Expression expected but not found WRITE $ASCII( ^----- sw-dev> WRITE $ASCII("A") 65 sw-dev> WRITE $ASCII("a") 97 sw-dev> WRITE $ASCII("ا") 199 sw-dev> S X="A" sw-dev> WRITE $ASCII(X) 65 sw-dev> S X="Apple" sw-dev> WRITE $ASCII(X) 65 sw-dev> ; $ASCII TAKES first character by default sw-dev> ; there is a 2 argument $ASCII sw-dev> WRITE $ASCII(X,2) 112 sw-dev> WRITE $ASCII(X,3) 112 sw-dev> ; 2 argument $ASCII gives you the character at a specific position sw-dev> ; Opposite of $ASCII is $Character sw-dev> W $CHARACTER(65) %GTM-E-INVFCN, Invalid function name sw-dev> W $CHAR(65) A sw-dev> W $CHAR(27) w-dev> sw-dev> W $CHAR(27),"c" sw-dev> W $CHAR(27),"[31m" sw-dev> W $CHAR(27),"c" sw-dev> WRITE $CHAR(10) sw-dev> WRITE $CHAR(10,13) sw-dev> ; 10 is new line sw-dev> ; 13 is carriage return sw-dev> ; Linux line endings are just $C(10) sw-dev> ; Windows line endings are $C(13,10) sw-dev> ; $Character is abbreviated as $C sw-dev> ; $C can take any number of arguments sw-dev> WRITE $CHAR(65,66,67,68,69,70) ABCDEF sw-dev> ; $TRANSLATE sw-dev> ; $Translate has two uses: change characters or remove characters sw-dev> ; Most common use of $Translate is to change case. sw-dev> S X="Apple" sw-dev> W $TRANSLATE("Apple","p","P") APPle sw-dev> W $TRANSLATE("Apple","abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTU VWXYZ") APPLE sw-dev> ; This function is in XLFSTR in VISTA. sw-dev> ZP UP^XLFSTR:UP+3 UP(X) Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ") ; LOW(X) Q $TR(X,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz") ; sw-dev> ; To use this function: sw-dev> WRITE $$UP^XLFSTR("Hello") HELLO sw-dev> WRITE $$LOW^XLFSTR("HELLO") hello sw-dev> WRITE $$LOW^XLFSTR("HEL3243234LO") hel3243234lo sw-dev> ; Other use is to remove characters sw-dev> ; E.g. remove spaces sw-dev> WRITE $TR("Mary had a little lamb."," ","") Maryhadalittlelamb. sw-dev> ; $Translate has a 2 argument form; the 3rd argument is assumed to be an empty string. sw-dev> ; $Translate has a 2 argument form; the 3rd argument is assumed to be an sw-dev> WRITE $TR("Mary had a little lamb."," ") Maryhadalittlelamb. sw-dev> ; 2 argument form of $Translate removes everything in the second argumen t from the string. sw-dev> WRITE $TR("hELO2982374O","1234567890") hELOO sw-dev> ; $Length / $L sw-dev> WRITE $L("apple") 5 sw-dev> ; $Length as a 2 argument form. sw-dev> ; This counts the pieces if the second argument is considered to be a de limiter sw-dev> WRITE $L("apple,pear",",") 2 sw-dev> ; This is typically used with $Piece sw-dev> ; $Piece / $P sw-dev> ; Given a delimiter, what's the piece of of the string at a specific pos ition? sw-dev> zwrite ^DPT(1:3,0) ^DPT(1,0)="ييي,مريض ثلاثة^F^2450124^^2^^NOE^^000003322^^LAS VEGAS^32^^^68^306051 1^^^^1" ^DPT(2,0)="ييي,مريض اربعة-عشر^M^2571225^^15^^SAILOR^29^123456789^Test patient on ly, please use to test, train^BOSTON^25^^^112^3100530^^^^1" ^DPT(3,0)="ييي,مريض عشرة^M^3090115^^15^^UNEMPLOYED^^769011509P^^MIAMI^12^^^112^3 100223^^^^1" sw-dev> ; Vista's delimiter is usually the "^" sw-dev> S X="ONE^TWO^THREE^FOUR^FIVE" sw-dev> WRITE $PIECE(X,"^",1) ONE sw-dev> WRITE $PIECE(X,"^",2) TWO sw-dev> WRITE $PIECE(X,"^",4) FOUR sw-dev> WRITE $PIECE(X,"^",5) FIVE sw-dev> WRITE $PIECE(X,"^",6) sw-dev> ; Empty string sw-dev> WRITE $PIECE(X,"^",6)="" 1 sw-dev> ; Mumps confirms that it is an empty string sw-dev> ; $Piece has 2 argument and 4 argument forms, in addition to the most co mmon 3 argument form. sw-dev> WRITE $PIECE(X,"^") ONE sw-dev> ; 2 argument gives you the first piece. sw-dev> ; 4 argument sw-dev> WRITE $PIECE(X,"^",1,2) ONE^TWO sw-dev> WRITE $PIECE(X,"^",1,3) ONE^TWO^THREE sw-dev> WRITE $PIECE(X,"^",1,4) ONE^TWO^THREE^FOUR sw-dev> WRITE $PIECE(X,"^",1,5) ONE^TWO^THREE^FOUR^FIVE sw-dev> WRITE $PIECE(X,"^",1,6) ONE^TWO^THREE^FOUR^FIVE sw-dev> WRITE $PIECE(X,"^",1,6)=$PIECE(X,"^",1,5) 1 sw-dev> ; 4 argument $Piece gives you a portion of the delimited string, as you desire. sw-dev> W ^DPT(1,0) ييي,مريض ثلاثة^F^2450124^^2^^NOE^^000003322^^LAS VEGAS^32^^^68^3060511^^^^1 sw-dev> W $P(^DPT(1,0),"^",2) F sw-dev> W $P(^DPT(1,0),"^",3) 2450124 sw-dev> S X=$P(^DPT(1,0),"^",3) sw-dev> W X 2450124 sw-dev> W $$FMTE^XLFDT(X) Jan 24, 1945 sw-dev> ; $Extract sw-dev> ; $E sw-dev> ; Gets a piece of a string by character sw-dev> S X="HELLO MARY" sw-dev> W $EXTRACT(X,1,3) HEL sw-dev> W $EXTRACT(X,1,4) HELL sw-dev> W $EXTRACT(X,0,4) HELL sw-dev> W $EXTRACT(X,0,4)=$EXTRACT(X,1,4) 1 sw-dev> ; $EXTRACT most commonly is a 3 argument form sw-dev> ; 1st argument: String sw-dev> ; 2nd : Staring position sw-dev> ; 3rd : Ending position sw-dev> ; Also has 1 and 2 argument forms sw-dev> W $E(X) H sw-dev> ; 1 arg form gets you the first character sw-dev> W $E(X,1) H sw-dev> W $E(X,2) E sw-dev> W $E(X,3) L sw-dev> W $E(X,4) L sw-dev> W $E(X,5) O sw-dev> ; 2 argument form gets the specific character sw-dev> W $E(X,-1) sw-dev> W $E(X,-2) sw-dev> W $E(X,-3) sw-dev> W $E(X,-3)="" 1 sw-dev> ; $FIND / $F sw-dev> ; compare with [ "contains" sw-dev> W "ABCD"["C" 1 sw-dev> W $FIND("ABCD","C") 4 sw-dev> ; Returns to you the position AFTER the found string sw-dev> ; -1 to get the actual position sw-dev> W $FIND("ABCD","C")-1 3 sw-dev> W $FIND("Hello Mary Mary Mary","Mary") 11 sw-dev> ; Oooops... it gets the character AFTER the string sw-dev> ; to get the actual position sw-dev> W $FIND("Hello Mary Mary Mary","Mary")-$LENGTH("Mary") 7 sw-dev> ; 3 arg form of $FIND makes $Find start searching at a specific position sw-dev> W $FIND("Hello Mary Mary Mary","Mary",8) 16 sw-dev> W $FIND("Hello Mary Mary Mary","Mary",7) 11 sw-dev> W $FIND("Hello Mary Mary Mary","Mary",8)-$Length("Mary") 12 sw-dev> W $EXTRACT("Hello Mary Mary Mary",12) M sw-dev>