MUMPS Validation Test Suite V9.10 Part-84 (DO ^VV2) JUL 15, 1996 VV2 VV2 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;PART-84 DRIVER ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 START ; I $D(^VENVIRON("INTEGRITY"))=0 D ^VINT9 I ^VENVIRON("INTEGRITY")="OK" G START1 I ^VENVIRON("INTEGRITY")="NOT OK" G START1 D ^VINT9 START1 ; I $D(^VENVIRON("COMPLETE"))=1 D EDIT^VENVIRON I $D(^VENVIRON("COMPLETE"))=0 D ^VENVIRON S ^VREPORT="Part-84" K ^VREPORT("Part-84") I $D(^VENVIRON("OUTPUT USE"))=1 U ^VENVIRON("OUTPUT USE") W #,"*** Standard MUMPS Validation Test Suite Version 9.10, Part-84 (DRIVER) ***" W !," ( The last Test ID number for Part-84 is II-182. )",!! V2CS W !!,"1---V2CS" D ^V2CS ;Command space V2LCC1 W !!,"2---V2LCC1" D ^V2LCC1 ;Lower case command words and $data -1- V2LCC2 W !!,"3---V2LCC2" D ^V2LCC2 ;Lower case command words and $data -2- V2LCF1 W !!,"4---V2LCF1" D ^V2LCF1 ;Lower case function names (less $data) and special variable names -1- V2LCF2 W !!,"5---V2LCF2" D ^V2LCF2 ;Lower case function names (less $data) and special variable names -2- V2LCF3 W !!,"6---V2LCF3" D ^V2LCF3 ;Lower case function names (less $data) and special variable names -3- V2LCF4 W !!,"7---V2LCF4" D ^V2LCF4 ;Lower case function names (less $data) and special variable names -4- V2FN1 W !!,"8---V2FN1" D ^V2FN1 ;Functions extended -1- V2FN2 W !!,"9---V2FN2" D ^V2FN2 ;Functions extended -2- V2LHP1 W !!,"10---V2LHP1" D ^V2LHP1 ;Left hand $PIECE -1- V2LHP2 W !!,"11---V2LHP2" D ^V2LHP2 ;Left hand $PIECE -2- V2LHP3 W !!,"12---V2LHP3" D ^V2LHP3 ;Left hand $PIECE -3- V2LHP4 W !!,"13---V2LHP4" D ^V2LHP4 ;Left hand $PIECE -4- V2VNIA W !!,"14---V2VNIA" D ^V2VNIA ;Variable name indirection -1- V2VNIB W !!,"15---V2VNIB" D ^V2VNIB ;Variable name indirection -2- V2VNIC W !!,"16---V2VNIC" D ^V2VNIC ;Variable name indirection -3- V2NR W !!,"17---V2NR" D ^V2NR ;Naked reference V2READ W !!,"18---V2READ" D ^V2READ ;Read count V2PAT1 W !!,"19---V2PAT1" D ^V2PAT1 ;Pattern match -1- V2PAT2 W !!,"20---V2PAT2" D ^V2PAT2 ;Pattern match -2- V2PAT3 W !!,"21---V2PAT3" D ^V2PAT3 ;Pattern match -3- V2PAT4 W !!,"22---V2PAT4" D ^V2PAT4 ;Pattern match -4- V2NO1 W !!,"23---V2NO1" D ^V2NO1 ;$NEXT and $ORDER -1- V2NO2 W !!,"24---V2NO2" D ^V2NO2 ;$NEXT and $ORDER -2- V2SSUB1 W !!,"25---V2SSUB1" D ^V2SSUB1 ;String subscript -1- V2SSUB2 W !!,"26---V2SSUB2" D ^V2SSUB2 ;String subscript -2- END W !,"*** Standard MUMPS Test Validation Suite Version 9.10, Part-84 END ***",!! Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2CS V2CS ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;COMMAND SPACE ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"1---V2CS: Command spaces",! 1 W !,"II-1 cs between ls and comment" S ^ABSN="20001",^ITEM="II-1 cs between ls and comment",^NEXT="2^V2CS,V2LCC1^VV2" D ^V2PRESET S ^VCOMP=1 ;S ^VCOMP="ERROR" S ^VCORR="1" D ^VEXAMINE ; 2 W !,"II-2 cs between command and command" S ^ABSN="20002",^ITEM="II-2 cs between command and command",^NEXT="3^V2CS,V2LCC1^VV2" D ^V2PRESET S ^VCOMP=1 S ^VCOMP=^VCOMP_2 S ^VCOMP=^VCOMP_3 S ^VCORR=123 D ^VEXAMINE ; 3 W !,"II-3 cs after IF command" S ^ABSN="20003",^ITEM="II-3 cs after IF command",^NEXT="4^V2CS,V2LCC1^VV2" D ^V2PRESET S ^VCOMP="" I 1 I S ^VCOMP=^VCOMP_4 S:0 ^VCOMP=^VCOMP_1 I S ^VCOMP=^VCOMP_5 S ^VCORR=45 D ^VEXAMINE ; 4 W !,"II-4 cs after ELSE command" S ^ABSN="20004",^ITEM="II-4 cs after ELSE command",^NEXT="5^V2CS,V2LCC1^VV2" D ^V2PRESET S ^VCOMP="" I .1 S ^VCOMP=^VCOMP_"1" E S ^VCOMP="ELSE-cs --ERROR" I 0 S ^VCOMP=^VCOMP_" IF 0 " E S ^VCOMP=^VCOMP_5 S ^VCORR="15" D ^VEXAMINE ; 5 W !,"II-5 cs among FOR - QUIT - DO command" S ^ABSN="20005",^ITEM="II-5 cs among FOR - QUIT - DO command",^NEXT="6^V2CS,V2LCC1^VV2" D ^V2PRESET S ^VCOMP="" F I=6:1:8 Q:I=10 D:1 A:I>0 ; F I=9:1:15 QUIT:I=11 DO A ; S ^VCORR="678910" D ^VEXAMINE ; 6 W !,"II-6 cs between ls and comment in XECUTE command" S ^ABSN="20006",^ITEM="II-6 cs between ls and comment in XECUTE command",^NEXT="7^V2CS,V2LCC1^VV2" D ^V2PRESET S ^VCOMP="" S A=" ; S ^VCOMP=""ls-cs-comment in XECUTE -- ERROR """ X A S ^VCORR="" D ^VEXAMINE ; 7 W !,"II-7 cs between commands in XECUTE command" S ^ABSN="20007",^ITEM="II-7 cs between commands in XECUTE command",^NEXT="8^V2CS,V2LCC1^VV2" D ^V2PRESET S ^VCOMP="" S A=" S ^VCOMP=11 S ^VCOMP=^VCOMP_12 ;COMMENT" X A ; S ^VCORR="1112" D ^VEXAMINE ; 8 W !,"II-8 cs between commands with indirection argument" S ^ABSN="20008",^ITEM="II-8 cs between commands with indirection argument",^NEXT="V2LCC1^VV2" D ^V2PRESET S ^VCOMP="",A="B",B=13,C="D=14",E="E1",E1=15 S ^VCOMP=@A S @C S ^VCOMP=^VCOMP_D,F=@E SET ^VCOMP=^VCOMP_F ; S ^VCORR="131415" D ^VEXAMINE ; END W !!,"End of 1---V2CS",! K Q ; SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q A S ^VCOMP=^VCOMP_I Q ; V2LCC1 V2LCC1 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;LOWER CASE COMMAND WORDS AND $data -1- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"2---V2LCC1: Lower case command words and $data -1-",! ; I $D(^VENVIRON("INPUT USE"))=1 U ^VENVIRON("INPUT USE") W !,"This routine (2---V2LCC1) contains 2 tests to be checked by OPERATOR." REP W !!,"When you are ready, press ""Y/y"" and a : " READ Y,! IF Y="Y" GOTO REP1 IF Y="y" GOTO REP1 GOTO REP REP1 I $D(^VENVIRON("OUTPUT USE"))=1 U ^VENVIRON("OUTPUT USE") ; 9 W !,"II-9 for" S ^ABSN="20009",^ITEM="II-9 for",^NEXT="10^V2LCC1,V2LCC2^VV2" D ^V2PRESET S ^VCOMP="" for I=1:1:3 S ^VCOMP=^VCOMP_I fOR I(2)=-5:-1:-7 S ^VCOMP=^VCOMP_I(2) ;COMMENT S ^VCORR="123-5-6-7" D ^VEXAMINE ; 10 W !,"II-10 f" S ^ABSN="20010",^ITEM="II-10 f",^NEXT="11^V2LCC1,V2LCC2^VV2" D ^V2PRESET S ^VCOMP="" f I=3:1:5.5 SET ^VCOMP=^VCOMP_I S ^VCORR="345" D ^VEXAMINE ; 11 W !,"II-11 write (by OPERATOR)" S ^ABSN="20011",^ITEM="II-11 write (by OPERATOR)",^NEXT="12^V2LCC1,V2LCC2^VV2" D ^V2PRESET W !," Following two lines should be identical:" W !," write " write !," write " D MANPF2^VEXAMINE I $D(RES)=1 I RES="AGAIN" G 11 ; 12 W !,"II-12 w (by OPERATOR)" S ^ABSN="20012",^ITEM="II-12 w (by OPERATOR)",^NEXT="13^V2LCC1,V2LCC2^VV2" D ^V2PRESET W !," Following two lines should be identical:" W !," w " w !," w " D MANPF2^VEXAMINE I $D(RES)=1 I RES="AGAIN" G 12 ; 13 W !,"II-13 do" S ^ABSN="20013",^ITEM="II-13 do",^NEXT="14^V2LCC1,V2LCC2^VV2" D ^V2PRESET S ^VCOMP="" do C S ^VCORR="do" D ^VEXAMINE ;(test corrected in V7.2;24/2/88) ; 14 W !,"II-14 d" S ^ABSN="20014",^ITEM="II-14 d",^NEXT="15^V2LCC1,V2LCC2^VV2" D ^V2PRESET S ^VCOMP="" d C1 S ^VCORR="d" D ^VEXAMINE ;(test corrected in V7.2;24/2/88) ; 15 W !,"II-15 hang" S ^ABSN="20015",^ITEM="II-15 hang",^NEXT="16^V2LCC1,V2LCC2^VV2" D ^V2PRESET S ^VCOMP=1 ;(test changed in V7.5;20/8/90) hang 1 S ^VCOMP=^VCOMP_2 S ^VCOMP=^VCOMP_3 S ^VCORR="123" D ^VEXAMINE ; 16 W !,"II-16 h" S ^ABSN="20016",^ITEM="II-16 h",^NEXT="17^V2LCC1,V2LCC2^VV2" D ^V2PRESET S ^VCOMP=11 ;(test changed in V7.5;20/8/90) h .1 S ^VCOMP=^VCOMP_22 S ^VCOMP=^VCOMP_33 S ^VCORR="112233" D ^VEXAMINE ; 17 W !,"II-17 quit" S ^ABSN="20017",^ITEM="II-17 quit",^NEXT="18^V2LCC1,V2LCC2^VV2" D ^V2PRESET S ^VCOMP="" DO EX17 S ^VCORR="quit" D ^VEXAMINE ;(test corrected in V7.2;24/2/88) ; 18 W !,"II-18 q" S ^ABSN="20018",^ITEM="II-18 q",^NEXT="19^V2LCC1,V2LCC2^VV2" D ^V2PRESET S ^VCOMP="" DO EX18 S ^VCORR="q" D ^VEXAMINE ;(test corrected in V7.2;24/2/88) ; 19 W !,"II-19 goto" S ^ABSN="20019",^ITEM="II-19 goto",^NEXT="20^V2LCC1,V2LCC2^VV2" D ^V2PRESET S ^VCOMP="" goto D S ^VCOMP=^VCOMP_"ERROR goto" S ^VCOMP=^VCOMP_"ERROR goto next line" G19 S ^VCORR="goto" D ^VEXAMINE ; 20 W !,"II-20 g" S ^ABSN="20020",^ITEM="II-20 g",^NEXT="V2LCC2^VV2" D ^V2PRESET S ^VCOMP="" g D1 S ^VCOMP=^VCOMP_"ERROR g" S ^VCOMP=^VCOMP_"ERROR g next line" G20 S ^VCORR="g" D ^VEXAMINE ; END w !!,"End of 2---V2LCC1",! k q ; SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q C S ^VCOMP=^VCOMP_"do" QUIT S ^VCOMP=^VCOMP_"ERROR do" S ^VCOMP=^VCOMP_"ERROR do next line" QUIT C1 S ^VCOMP=^VCOMP_"d" Q S ^VCOMP=^VCOMP_"ERROR d" S ^VCOMP=^VCOMP_"ERROR d next line" QUIT D S ^VCOMP=^VCOMP_"goto" G G19 S ^VCOMP=^VCOMP_"ERROR D goto " S ^VCOMP=^VCOMP_"ERROR D goto next line" GOTO G19 D1 S ^VCOMP=^VCOMP_"g" G G20 S ^VCOMP=^VCOMP_"ERROR D1 goto " S ^VCOMP=^VCOMP_"ERROR D1 goto next line" GOTO G20 EX17 S ^VCOMP=^VCOMP_"quit" quit S ^VCOMP=^VCOMP_"ERROR EX17 quit" S ^VCOMP=^VCOMP_"ERROR EX17 next line" QUIT EX18 S ^VCOMP=^VCOMP_"q" q S ^VCOMP=^VCOMP_"ERROR EX18 q" S ^VCOMP=^VCOMP_"ERROR EX18 next line" QUIT V2LCC2 V2LCC2 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;LOWER CASE COMMAND WORDS AND $data -2- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"3---V2LCC2: Lower case command words and $data -2-",! 21 W !,"II-21 if" S ^ABSN="20021",^ITEM="II-21 if",^NEXT="22^V2LCC2,V2LCF1^VV2" D ^V2PRESET S ^VCOMP="" if .1 SET ^VCOMP=^VCOMP_7 if S ^VCOMP=^VCOMP_8 if S ^VCOMP=^VCOMP_9 S ^VCOMP=^VCOMP_" "_$TEST if 0.0 S ^VCOMP=^VCOMP_"ERORR if0" S ^VCOMP=^VCOMP_" "_$TEST,^VCORR="789 1 0" D ^VEXAMINE ; 22 W !,"II-22 i" S ^ABSN="20022",^ITEM="II-22 i",^NEXT="23^V2LCC2,V2LCF1^VV2" D ^V2PRESET S ^VCOMP="" i .1 SET ^VCOMP=^VCOMP_10 i S ^VCOMP=^VCOMP_11 i S ^VCOMP=^VCOMP_12 S ^VCOMP=^VCOMP_" "_$TEST i 0.0 S ^VCOMP=^VCOMP_"ERORR i0" S ^VCOMP=^VCOMP_" "_$TEST,^VCORR="101112 1 0" D ^VEXAMINE ; 23 W !,"II-23 else" S ^ABSN="20023",^ITEM="II-23 else",^NEXT="24^V2LCC2,V2LCF1^VV2" D ^V2PRESET S ^VCOMP="" if 1 S ^VCOMP=^VCOMP_$TEST_" " elSe S ^VCOMP=^VCOMP_"elSe COMMAND ERROR" ELse S ^VCOMP=^VCOMP_"ELse COMMAND ERROR" if 0.000 S ^VCOMP=^VCOMP_"ERROR if0" ;(test corrected in V7.6;1/3/91) S ^VCOMP=^VCOMP_$T_" " else S ^VCOMP=^VCOMP_"#" ELse S ^VCOMP=^VCOMP_"$" S ^VCOMP=^VCOMP_" "_$T,^VCORR="1 0 #$ 0" D ^VEXAMINE ; 24 W !,"II-24 e" S ^ABSN="20024",^ITEM="II-24 e",^NEXT="25^V2LCC2,V2LCF1^VV2" D ^V2PRESET S ^VCOMP="" i 00010000 S ^VCOMP=^VCOMP_$TEST_" " e S ^VCOMP=^VCOMP_"elSe COMMAND ERROR" i 0.0 S ^VCOMP=^VCOMP_"ERROR i0" S ^VCOMP=^VCOMP_$T_" " e S ^VCOMP=^VCOMP_"#" S ^VCOMP=^VCOMP_" "_$T,^VCORR="1 0 # 0" D ^VEXAMINE ; 25 W !,"II-25 set" S ^ABSN="20025",^ITEM="II-25 set",^NEXT="26^V2LCC2,V2LCF1^VV2" D ^V2PRESET S ^VCOMP="" set ^VCOMP="A" set:1 ^VCOMP=^VCOMP_"B" set:000 ^VCOMP=^VCOMP_"ERROR set" S ^VCORR="AB" D ^VEXAMINE ; 26 W !,"II-26 s" S ^ABSN="20026",^ITEM="II-26 s",^NEXT="27^V2LCC2,V2LCF1^VV2" D ^V2PRESET S ^VCOMP="" s ^VCOMP="C" s:1 ^VCOMP=^VCOMP_"D" s:000 ^VCOMP=^VCOMP_"ERROR s" S ^VCORR="CD" D ^VEXAMINE ; 27 W !,"II-27 kill" S ^ABSN="20027",^ITEM="II-27 kill",^NEXT="28^V2LCC2,V2LCF1^VV2" D ^V2PRESET S ^VCOMP="" ;(test corrected in V7.2;24/2/88) set ABCDEFGH=9,ABCDEFG1=10 s ABCDEFG2=11,ABCDEFG2(4)=1,ABCDEFG1(9)=1 S ^VCOMP=ABCDEFGH_ABCDEFG1_ABCDEFG2 kill ABCDEFGH Kill ABCDEFG2 S ^VCOMP=^VCOMP_$DATA(ABCDEFGH)_$DATA(ABCDEFG2)_$D(ABCDEFG1) S ^VCORR="910110011" D ^VEXAMINE ; 28 W !,"II-28 k" ;(test corrected in V7.2;24/2/88) S ^ABSN="20028",^ITEM="II-28 k",^NEXT="29^V2LCC2,V2LCF1^VV2" D ^V2PRESET S ^VCOMP="" KILL ABCDEFG1 set ABCDEFGH=19,ABCDEFG1=110 s ABCDEFG2=111 S ^VCOMP=ABCDEFGH_ABCDEFG1_ABCDEFG2 k ABCDEFGH k:1 ABCDEFG2 S ^VCOMP=^VCOMP_$DATA(ABCDEFGH)_$DATA(ABCDEFG2)_$D(ABCDEFG1) S ^VCORR="19110111001" D ^VEXAMINE ; 29 W !,"II-29 $data" S ^ABSN="20029",^ITEM="II-29 $data",^NEXT="30^V2LCC2,V2LCF1^VV2" D ^V2PRESET S ^VCOMP="" ;(test corrected in V7.2;24/2/88) SET ABCDEFGH=9,ABCDEFG1=10 s ABCDEFG2=11,ABCDEFG2(4)=1,ABCDEFG1(9)=1 S ^VCOMP=ABCDEFGH_ABCDEFG1_ABCDEFG2 KILL ABCDEFGH K ABCDEFG2 S ^VCOMP=^VCOMP_$data(ABCDEFGH)_$Data(ABCDEFG2)_$dATA(ABCDEFG1) S ^VCORR="910110011" D ^VEXAMINE ; 30 W !,"II-30 $d" ;(test corrected in V7.2;24/2/88) S ^ABSN="20030",^ITEM="II-30 $d",^NEXT="31^V2LCC2,V2LCF1^VV2" D ^V2PRESET S ^VCOMP="" KILL ABCDEFG1 set ABCDEFGH=19,ABCDEFG1=110 s ABCDEFG2=111 S ^VCOMP=ABCDEFGH_ABCDEFG1_ABCDEFG2 K ABCDEFGH KILL ABCDEFG2 S ^VCOMP=^VCOMP_$d(ABCDEFGH)_$d(ABCDEFG2)_$d(ABCDEFG1) S ^VCORR="19110111001" D ^VEXAMINE ; 31 W !,"II-31 xecute" S ^ABSN="20031",^ITEM="II-31 xecute",^NEXT="32^V2LCC2,V2LCF1^VV2" D ^V2PRESET S ^VCOMP="" xecute "s AA=12,AB=20 set ^VCOMP=AA*AB" S ^VCORR="240" D ^VEXAMINE ; 32 W !,"II-32 x" S ^ABSN="20032",^ITEM="II-32 x",^NEXT="V2LCF1^VV2" D ^V2PRESET S ^VCOMP="",X="s BB=3,BA(2)=""ABCD""" x X S ^VCOMP=BB_BA(2) S ^VCORR="3ABCD" D ^VEXAMINE ; END w !!,"End of 3---V2LCC2",! k q Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2LCF1 V2LCF1 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;LOWER CASE FUNCTION NAMES (LESS $data) AND SPECIAL VARIABLES -1- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 w !!,"4---V2LCF1: Lower case function names (LESS $data)",! W " and special variables -1-",! W !,"Function names are lower case ($a $c $e $f $j $l $o $p)",! 33 W !,"II-33 $ascii" S ^ABSN="20033",^ITEM="II-33 $ascii",^NEXT="34^V2LCF1,V2LCF2^VV2" D ^V2PRESET S ^VCOMP="",ABC="ABC",ABC(1)="00123.45" S ^VCOMP=$ascii(ABC)_$aSCII(ABC,2)_$Ascii(ABC,3)_$ascII(ABC(1)) S ^VCORR="65666748" D ^VEXAMINE ; 34 W !,"II-34 $a" S ^ABSN="20034",^ITEM="II-34 $a",^NEXT="35^V2LCF1,V2LCF2^VV2" D ^V2PRESET S ^VCOMP="",ABC="ABC",ABC(1)="00123.45" S ^VCOMP=$a(ABC)_$a(ABC,2)_$a(ABC,3)_$a(+ABC(1)) S ^VCORR="65666749" D ^VEXAMINE ; 35 W !,"II-35 $char" S ^ABSN="20035",^ITEM="II-35 $char",^NEXT="36^V2LCF1,V2LCF2^VV2" D ^V2PRESET S ^VCOMP="",X=32,X(1)=33,^VCOMP=$char(65)_$cHaR(66)_$Char(67,X,X(1)),^VCORR="ABC !" D ^VEXAMINE ; 36 W !,"II-36 $c" S ^ABSN="20036",^ITEM="II-36 $c",^NEXT="37^V2LCF1,V2LCF2^VV2" D ^V2PRESET S ^VCOMP="",X=70,^VCOMP=$c(65)_$c(66)_$c(67,68,69.9,X),^VCORR="ABCDEF" D ^VEXAMINE ; 37 W !,"II-37 $extract" S ^ABSN="20037",^ITEM="II-37 $extract",^NEXT="38^V2LCF1,V2LCF2^VV2" D ^V2PRESET S ^VCOMP="",X="ABC",X(1)="00123.45" S ^VCOMP=$extract(X,2)_$Extract(X,3)_$exTRACT(X(1),1)_$extracT(X(1)+0,1),^VCORR="BC01" D ^VEXAMINE ; 38 W !,"II-38 $e" S ^ABSN="20038",^ITEM="II-38 $e",^NEXT="39^V2LCF1,V2LCF2^VV2" D ^V2PRESET S ^VCOMP="",X="ABC",X(1)="00123.45" S ^VCOMP=$e(X,2)_$e(X,3)_$e(X(1),1)_$e(X(1)+0,2.9),^VCORR="BC02" D ^VEXAMINE ; 39 W !,"II-39 $find" S ^ABSN="20039",^ITEM="II-39 $find",^NEXT="40^V2LCF1,V2LCF2^VV2" D ^V2PRESET S ^VCOMP="",ABC="ABC",ABC(1)="00123.45" S ^VCOMP=$find("abc","d")_$Find(ABC,"")_$fiND(ABC(1),"."),^VCORR="017" D ^VEXAMINE ; 40 W !,"II-40 $f" S ^ABSN="20040",^ITEM="II-40 $f",^NEXT="41^V2LCF1,V2LCF2^VV2" D ^V2PRESET S ^VCOMP="",ABC="ABC",ABC(1)="00123.45" S ^VCOMP=$f("ABCabc","b")_$f(ABC,"")_$f(ABC(1),"."),^VCORR="617" D ^VEXAMINE ; 41 W !,"II-41 $justify" S ^ABSN="20041",^ITEM="II-41 $justify",^NEXT="42^V2LCF1,V2LCF2^VV2" D ^V2PRESET S ^VCOMP="",ABC="ABC",ABC(1)="00123.45" S ^VCOMP=$justify(1.23,4,1)_$Justify(ABC,4)_$JUStify(ABC(1),7,1) S ^VCORR=" 1.2 ABC 123.5" D ^VEXAMINE ; 42 W !,"II-42 $j" S ^ABSN="20042",^ITEM="II-42 $j",^NEXT="V2LCF2^VV2" D ^V2PRESET S ^VCOMP="",ABC="ABC",ABC(1)="00123.45" S ^VCOMP=$j(1.23,4,1)_$j(ABC,4)_$j(ABC(1),7,1),^VCORR=" 1.2 ABC 123.5" D ^VEXAMINE ; END w !!,"End of 4---V2LCF1",! k q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2LCF2 V2LCF2 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;LOWER CASE FUNCTION NAMES (LESS $data) AND SPECIAL VARIABLES -2- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 w !!,"5---V2LCF2: Lower case function names (LESS $data)",! W " and special variables -2-",! W !,"Function names are lower case ($a $c $e $f $j $l $o $p)",! ; 43 W !,"II-43 $length" S ^ABSN="20043",^ITEM="II-43 $length",^NEXT="44^V2LCF2,V2LCF3^VV2" D ^V2PRESET S ^VCOMP="",ABC="ABC",ABC(1)="00123.45" S ^VCOMP=$length("abcde")_$Length(ABC)_$leNGTH(ABC(1)),^VCORR="538" D ^VEXAMINE ; 44 W !,"II-44 $l" S ^ABSN="20044",^ITEM="II-44 $l",^NEXT="45^V2LCF2,V2LCF3^VV2" D ^V2PRESET S ^VCOMP="",ABC="ABC",ABC(1)="00123.45" S ^VCOMP=$l("abcde")_$l(ABC)_$l(ABC(1)),^VCORR="538" D ^VEXAMINE ; 45 W !,"II-45 $next" S ^ABSN="20045",^ITEM="II-45 $next",^NEXT="46^V2LCF2,V2LCF3^VV2" D ^V2PRESET W !," (This test II-45 was withdrawn in 20/8/1992 on X11.1-1984, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 46 W !,"II-46 $n" S ^ABSN="20046",^ITEM="II-46 $n",^NEXT="47^V2LCF2,V2LCF3^VV2" D ^V2PRESET W !," (This test II-46 was withdrawn in 20/8/1992 on X11.1-1984, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 47 W !,"II-47 $order" S ^ABSN="20047",^ITEM="II-47 $order",^NEXT="48^V2LCF2,V2LCF3^VV2" D ^V2PRESET K ABC S ^VCOMP="",ABC="ABC",ABC(1)="00123.45" S ^VCOMP=$order(ABC(""))_$Order(ABC(1)) S ^VCORR="1" D ^VEXAMINE ; 48 W !,"II-48 $o" S ^ABSN="20048",^ITEM="II-48 $o",^NEXT="49^V2LCF2,V2LCF3^VV2" D ^V2PRESET K ABC S ^VCOMP="",ABC(1)="00123.45" S ^VCOMP=$o(ABC(""))_$o(ABC(1)) S ^VCORR="1" D ^VEXAMINE ; 49 W !,"II-49 $piece" S ^ABSN="20049",^ITEM="II-49 $piece",^NEXT="50^V2LCF2,V2LCF3^VV2" D ^V2PRESET S ^VCOMP="",ABC="ABC",ABC(1)="00123.45" S ^VCOMP=$piece(ABC,"A",2)_$Piece(ABC,"B",1)_$PIece(ABC(1),".",1),^VCORR="BCA00123" D ^VEXAMINE ; 50 W !,"II-50 $p" S ^ABSN="20050",^ITEM="II-50 $p",^NEXT="V2LCF3^VV2" D ^V2PRESET S ^VCOMP="",ABC="ABC",ABC(1)="00123.45" S ^VCOMP=$p(ABC,"A",2)_$p(ABC,"B",1)_$p(ABC(1),".",1),^VCORR="BCA00123" D ^VEXAMINE ; END w !!,"End of 5---V2LCF2",! k q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2LCF3 V2LCF3 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;LOWER CASE FUNCTION NAMES (LESS $data) AND SPECIAL VARIABLES -3- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 w !!,"6---V2LCF3: Lower case function names (less $data)" W !," and special variable neames -3-",! W !,"Function names are lower case ($r $s $t)",! 51 W !,"II-51 $random" S ^ABSN="20051",^ITEM="II-51 $random",^NEXT="52^V2LCF3,V2LCF4^VV2" D ^V2PRESET S ^VCOMP="",^VCOMP=$random(1)_$Random(1),^VCORR="00" D ^VEXAMINE ; 52 W !,"II-52 $r" S ^ABSN="20052",^ITEM="II-52 $r",^NEXT="53^V2LCF3,V2LCF4^VV2" D ^V2PRESET S ^VCOMP="",^VCOMP=$r(1)_$r(1),^VCORR="00" D ^VEXAMINE ; 53 W !,"II-53 $select" S ^ABSN="20053",^ITEM="II-53 $select",^NEXT="54^V2LCF3,V2LCF4^VV2" D ^V2PRESET K ABC S ^VCOMP="",ABC="ABC",ABC(1)="00123.45" S ^VCOMP=$select(ABC="ABC":"abc",1:1)_$Select(ABC=1:"EFG",1:2),^VCORR="abc2" D ^VEXAMINE ; 54 W !,"II-54 $s" S ^ABSN="20054",^ITEM="II-54 $s",^NEXT="55^V2LCF3,V2LCF4^VV2" D ^V2PRESET K ABC S ^VCOMP="",ABC="abc",ABC(1)="00123.45" S ^VCOMP=$s(ABC="abc":"abc",1:1)_$s(ABC(1)=1:"EFG",1:2),^VCORR="abc2" D ^VEXAMINE ; 55 W !,"II-55 $text" SET ^ABSN="20055",^ITEM="II-55 $text",^NEXT="56^V2LCF3,V2LCF4^VV2" D ^V2PRESET S ^VCOMP="" S ^VCOMP=$p($text(55)," ",1)_$p($Text(55+1)," ",2),^VCORR="55SET" D ^VEXAMINE ; 56 W !,"II-56 $t" S ^ABSN="20056",^ITEM="II-56 $t",^NEXT="57^V2LCF3,V2LCF4^VV2" D ^V2PRESET S ^VCOMP="" S ^VCOMP=$p($t(56)," ",1)_$p($t(56+1)," ",2),^VCORR="56S" D ^VEXAMINE ; 57 W !!,"Special variable names are lower case ($x $y $i $j $h $s $t)",! W !,"II-57 $x" S ^ABSN="20057",^ITEM="II-57 $x",^NEXT="58^V2LCF3,V2LCF4^VV2" D ^V2PRESET S ^VCOMP="" S ^VCOMP=$x,^VCORR=+$x D ^VEXAMINE ; 58 W !,"II-58 $y" S ^ABSN="20058",^ITEM="II-58 $y",^NEXT="59^V2LCF3,V2LCF4^VV2" D ^V2PRESET S ^VCOMP="" S ^VCOMP=$y,^VCORR=+$y D ^VEXAMINE ; 59 W !,"II-59 $io" S ^ABSN="20059",^ITEM="II-59 $io",^NEXT="60^V2LCF3,V2LCF4^VV2" D ^V2PRESET S ^VCOMP="" S ^VCOMP=$io,^VCORR=$IO D ^VEXAMINE ;(test corrected in V7.3;20/6/88) ; 60 W !,"II-60 $i" S ^ABSN="20060",^ITEM="II-60 $i",^NEXT="V2LCF4^VV2" D ^V2PRESET S ^VCOMP="" S ^VCOMP=$i,^VCORR=$I D ^VEXAMINE ;(test corrected in V7.3;20/6/88) ; END w !!,"End of 6---V2LCF3",! k q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2LCF4 V2LCF4 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;LOWER CASE FUNCTION NAMES (LESS $data) AND SPECIAL VARIABLES -4- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 w !!,"7---V2LCF4: Lower case function names (less $data)" W !," and special variable neames -4-",! ; 61 W !,"II-61 $job" S ^ABSN="20061",^ITEM="II-61 $job",^NEXT="62^V2LCF4,V2FN1^VV2" D ^V2PRESET S ^VCOMP="" S ^VCOMP=$JOB_$job,^VCORR=+$JOB_(+$job) D ^VEXAMINE ; 62 W !,"II-62 $j" S ^ABSN="20062",^ITEM="II-62 $j",^NEXT="63^V2LCF4,V2FN1^VV2" D ^V2PRESET S ^VCOMP="" S ^VCOMP=$J_$j,^VCORR=+$J_(+$j) D ^VEXAMINE ; 63 W !,"II-63 $horolog" S ^ABSN="20063",^ITEM="II-63 $horolog",^NEXT="64^V2LCF4,V2FN1^VV2" D ^V2PRESET S ^VCOMP="" S H1=$HOROLOG,H2=$horolog,H3=$HOROLOG,H4=$Horolog S ^VCOMP=$P(H1,",",1)_$P(H2,",",1)_$P(H3,",",2)_$P(H4,",",2)_(H2?1.N1","1.N) S ^VCORR=+$P(H1,",",1)_(+$P(H2,",",1))_(+$P(H3,",",2))_(+$P(H4,",",2))_1 D ^VEXAMINE ; 64 W !,"II-64 $h" S ^ABSN="20064",^ITEM="II-64 $h",^NEXT="65^V2LCF4,V2FN1^VV2" D ^V2PRESET S ^VCOMP="" S H1=$H,H2=$h S ^VCOMP=$P(H1,",",1)_$P(H2,",",1)_$P(H1,",",2)_$P(H2,",",2)_(H2?1.N1","1.N) S ^VCORR=+$P(H1,",",1)_(+$P(H2,",",1))_(+$P(H1,",",2))_(+$P(H2,",",2))_1 D ^VEXAMINE ; 65 W !,"II-65 $storage" S ^ABSN="20065",^ITEM="II-65 $storage",^NEXT="66^V2LCF4,V2FN1^VV2" D ^V2PRESET S ^VCOMP="",SU=$STORAGE,SL=$storage S ^VCOMP=SU_SL S ^VCORR=+SU_(+SL) D ^VEXAMINE ; 66 W !,"II-66 $s" S ^ABSN="20066",^ITEM="II-66 $s",^NEXT="67^V2LCF4,V2FN1^VV2" D ^V2PRESET S ^VCOMP="",SU=$S,SL=$s S ^VCOMP=SU_SL S ^VCORR=+SU_(+SL) D ^VEXAMINE ; 67 W !,"II-67 $test" S ^ABSN="20067",^ITEM="II-67 $test",^NEXT="68^V2LCF4,V2FN1^VV2" D ^V2PRESET S ^VCOMP="" I 1 S ^VCOMP=^VCOMP_$TEST_$test_$TEst I 0 S ^VCOMP=^VCOMP_$TEST_$test_$TEst S ^VCORR="111000" D ^VEXAMINE ; 68 W !,"II-68 $t" S ^ABSN="20068",^ITEM="II-68 $t",^NEXT="V2FN1^VV2" D ^V2PRESET S ^VCOMP="" I 1 S ^VCOMP=^VCOMP_$T_$t I 0 S ^VCOMP=^VCOMP_$T_$t S ^VCORR="1100" D ^VEXAMINE ; END w !!,"End of 7---V2LCF4",! k q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2FN1 V2FN1 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;FUNCTIONS EXTENDED ($D,$E,$F,$J,$L,$P,$T) -1- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"8---V2FN1: Functions extended ($D,$E,$F,$J,$L,$P,$T) -1-",! W !,"$DATA(glvn)",! 69 W !,"II-69 Effect of local variable descendant KILL" S ^ABSN="20069",^ITEM="II-69 Effect of local variable descendant KILL",^NEXT="70^V2FN1,V2FN2^VV2" D ^V2PRESET S ^VCOMP="" K VV S VV(1)=0,VV(1,2)=0 k VV(1,2) S ^VCOMP=$d(VV(1)) S ^VCORR=1 D ^VEXAMINE ; 70 W !,"II-70 Effect of global variable descendant KILL" S ^ABSN="20070",^ITEM="II-70 Effect of global variable descendant KILL",^NEXT="71^V2FN1,V2FN2^VV2" D ^V2PRESET S VCOMP="" K ^VV S ^VV(1)=0,^(1,2)=0 K ^(2) S VCOMP=$D(^VV(1))_" "_$D(^VV(1,2)) S ^VCOMP=VCOMP,^VCORR="1 0" D ^VEXAMINE ; 71 W !!,"$EXTRACT(expr)",! W !,"II-71 expr is a strlit" S ^ABSN="20071",^ITEM="II-71 expr is a strlit",^NEXT="72^V2FN1,V2FN2^VV2" D ^V2PRESET S ^VCOMP="",^VCOMP=$e("ABC"),^VCORR="A" D ^VEXAMINE ; 72 W !,"II-72 expr is 255 characters" S ^ABSN="20072",^ITEM="II-72 expr is 255 characters",^NEXT="73^V2FN1,V2FN2^VV2" D ^V2PRESET S ^VCOMP="",X="B" F I=1:1:254 S X=X_"A" S ^VCOMP=$extract(X),^VCORR="B" D ^VEXAMINE ; 73 W !,"II-73 expr is an empty string" S ^ABSN="20073",^ITEM="II-73 expr is an empty string",^NEXT="74^V2FN1,V2FN2^VV2" D ^V2PRESET S ^VCOMP="ERROR",^VCOMP=$e(""),^VCORR="" D ^VEXAMINE ; 74 W !,"II-74 expr is a numeric literal" S ^ABSN="20074",^ITEM="II-74 expr is a numeric literal",^NEXT="75^V2FN1,V2FN2^VV2" D ^V2PRESET S ^VCOMP="123" S ^VCOMP=$E(-123.3E-2)_$E(000.34)_$E(0.23E5)_$e(00076.450) S ^VCORR="-.27" D ^VEXAMINE ; 75 W !!,"$FIND(expr1,expr2,intexpr3)",! W !,"II-75 intexpr3<0 and expr1 is a strlit" S ^ABSN="20075",^ITEM="II-75 intexpr3<0 and expr1 is a strlit",^NEXT="76^V2FN1,V2FN2^VV2" D ^V2PRESET S ^VCOMP="",^VCOMP=$f("ABC","A",-1),^VCORR="2" D ^VEXAMINE ; 76 W !,"II-76 intexpr3<0 and expr1 is a variable" S ^ABSN="20076",^ITEM="II-76 intexpr3<0 and expr1 is a variable",^NEXT="77^V2FN1,V2FN2^VV2" D ^V2PRESET S ^VCOMP="",X="ABC8",Y="B",^VCOMP=$Find(X,Y,123-557),^VCORR=3 D ^VEXAMINE ; 77 W !!,"$JUSTIFY(numexpr1,intexpr2,intexpr3)",! W !,"II-77 055 # S ^VREPORT(^VREPORT,^ABSN,"VCOMP")=^VCOMP S ^VREPORT(^VREPORT,^ABSN,"VCORR")=^VCORRN W !," COMPUTED =""",^VCOMP,"""" W:$Y>55 # W !," CORRECT =""",^VCORR,"""" W:$Y>55 # K ^VCORRN H 1 Q ; SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2LHP1 V2LHP1 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;LEFT HAND $PIECE -1- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"10---V2LHP1: Left hand $PIECE -1-",! W !,"$PIECE(glvn,expr1)",! 96 W !,"II-96 expr1 is a string literal" S ^ABSN="20097",^ITEM="II-96 expr1 is a string literal",^NEXT="97^V2LHP1,V2LHP2^VV2" D ^V2PRESET S X="A^B^C",$P(X,"^")="D",^VCOMP=X,^VCORR="D^B^C" D ^VEXAMINE ; 97 W !!,"$PIECE(glvn,expr1,intexpr2)",! W !,"II-97 expr1 is a string literal" S ^ABSN="20098",^ITEM="II-97 expr1 is a string literal",^NEXT="98^V2LHP1,V2LHP2^VV2" D ^V2PRESET S VCOMP="A1B1C",$P(VCOMP,"1A",3)="DD" S ^VCOMP=VCOMP,^VCORR="A1B1C1A1ADD" D ^VEXAMINE ;test corrected V7.5;23/7/90 ; 98 W !!,"$PIECE(glvn,expr1,intexpr2,intexpr3) K=max(0,$L(glvn,expr1)-1)",! W !,"II-98 intexpr2>intexpr3" S ^ABSN="20099",^ITEM="II-98 intexpr2>intexpr3",^NEXT="99^V2LHP1,V2LHP2^VV2" D ^V2PRESET S ^VCOMP="A^B^C",$P(^VCOMP,"^",2,1)="D",^VCORR="A^B^C" D ^VEXAMINE ; 99 W !,"II-99 intexpr3<1" 991 S ^ABSN="20100",^ITEM="II-99.1 intexpr2=1",^NEXT="992^V2LHP1,V2LHP2^VV2" D ^V2PRESET S VCOMP="A^B^C",$P(VCOMP,"^",1,-1)="D" S ^VCOMP=VCOMP,^VCORR="A^B^C" D ^VEXAMINE ; 992 S ^ABSN="20101",^ITEM="II-99.2 intexpr2intexpr3" S ^ABSN="20113",^ITEM="II-104 $D(glvn)=0 and intexpr2>intexpr3",^NEXT="105^V2LHP2,V2LHP3^VV2" D ^V2PRESET K ^V S $P(^V,"^",3,2)=1,^VCOMP=$D(^V),^VCORR="0" D ^VEXAMINE ; 105 W !,"II-105 $D(glvn)=0 and intexpr3>intexpr2>1" S ^ABSN="20114",^ITEM="II-105 $D(glvn)=0 and intexpr3>intexpr2>1",^NEXT="106^V2LHP2,V2LHP3^VV2" D ^V2PRESET K X S $P(X,"^",2,3)=$D(X),^VCOMP=X,^VCORR="^0" D ^VEXAMINE ; 106 W !,"II-106 intexpr2<1" S ^ABSN="20115",^ITEM="II-106 intexpr2<1",^NEXT="107^V2LHP2,V2LHP3^VV2" D ^V2PRESET S VCOMP="" S X="A/B/C",$P(X,"/",-3,2)="D" S VCOMP=VCOMP_X_" " S X="A/B/C",$P(X,"/",-99999,33)="D" S VCOMP=VCOMP_X S ^VCOMP=VCOMP,^VCORR="D/C D" D ^VEXAMINE ; 107 W !,"II-107 glvn is naked reference" S ^ABSN="20116",^ITEM="II-107 glvn is naked reference",^NEXT="108^V2LHP2,V2LHP3^VV2" D ^V2PRESET W !," (This test II-107 was withdrawn in 10/10/1992 on X11.1-1990, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 108 W !,"II-108 Interpretation sequence of subscripted left hand $PIECE" S ^ABSN="20117",^ITEM="II-108 Interpretation sequence of subscripted left hand $PIECE",^NEXT="V2LHP3^VV2" D ^V2PRESET W !," (This test II-108 was withdrawn in 10/10/1992 on X11.1-1990, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; END W !!,"End of 11---V2LHP2",! K K ^V Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2LHP3 V2LHP3 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;LEFT HAND $PIECE -2- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"12---V2LHP3: Left hand $PIECE -2-",! 109 W !,"II-109 If setpiece on gvn affects naked indicator when intexpr2>intexpr3" ;(title changed in V7.5;20/12/89) S ^ABSN="20118",^ITEM="II-109 If setpiece on gvn affects naked indicator when intexpr2>intexpr3",^NEXT="110^V2LHP3,V2LHP4^VV2" D ^V2PRESET W !," (This test II-109 was withdrawn in 10/10/1992 on X11.1-1990, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 110 W !,"II-110 If setpiece on gvn affects naked indicator when intexpr3<1" ;(title changed in V7.5;20/12/89) S ^ABSN="20119",^ITEM="II-110 If setpiece on gvn affects naked indicator when intexpr3<1",^NEXT="182^V2LHP3,V2LHP4^VV2" D ^V2PRESET W !," (This test II-110 was withdrawn in 10/10/1992 on X11.1-1990, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 182 W !,"II-182 If setpiece on lvn affects naked indicator" ;(Test added in V7.5;20/12/89) S ^ABSN="20120",^ITEM="II-182 If setpiece on lvn affects naked indicator",^NEXT="111^V2LHP3,V2LHP4^VV2" D ^V2PRESET W !," (This test II-182 was withdrawn in 10/10/1992 on X11.1-1984, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 111 W !,"II-111 Lower case left hand ""$piece""" S ^ABSN="20121",^ITEM="II-111 Lower case left hand ""$piece""",^NEXT="112^V2LHP3,V2LHP4^VV2" D ^V2PRESET S VCOMP="" S X="A^B^C",$piece(X,"^")="D" S VCOMP=VCOMP_X_" " S X="A^B^C",$p(X,"^",3)="D" S VCOMP=VCOMP_X_" " S X="A^B^C",$piECE(X,"^",2,1)="D" S VCOMP=VCOMP_X S ^VCOMP=VCOMP,^VCORR="D^B^C A^B^D A^B^C" D ^VEXAMINE ; 112 W !,"II-112 Left hand $PIECE with postcondition" S ^ABSN="20122",^ITEM="II-112 Left hand $PIECE with postcondition",^NEXT="113^V2LHP3,V2LHP4^VV2" D ^V2PRESET S VCOMP="" K X S:$D(X)=0 X="A**B**C",$PIECE(X,"**",2)="D" S VCOMP=VCOMP_X_" " S:$D(X)=0 $P(X,"**",2)="E" S VCOMP=VCOMP_X S ^VCOMP=VCOMP,^VCORR="A**D**C A**D**C" D ^VEXAMINE ; 113 W !,"II-113 Indirection of left hand $PIECE" S ^ABSN="20123",^ITEM="II-113 Indirection of left hand $PIECE",^NEXT="V2LHP4^VV2" D ^V2PRESET S VCOMP="" S X="A---B---CDEFG---H",Y="---",Z="$P(X,Y,2,3)=123",@Z S VCOMP=VCOMP_X_" " S A="C",C="A^B^C^D^E^F",B="D",D="^",$P(@A,@B,3,4)="G" S VCOMP=VCOMP_@A S ^VCOMP=VCOMP,^VCORR="A---123---H A^B^G^E^F" D ^VEXAMINE ; END W !!,"End of 12---V2LHP3",! K K ^V Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2LHP4 V2LHP4 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;LEFT HAND $PIECE -4- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"13---V2LHP4: Left hand $PIECE -4-",! ; 114 W !,"II-114 expr2 is an empty string" ;title corrected in V7.5;20/12/89 S ^ABSN="20124",^ITEM="II-114 expr2 is an empty string",^NEXT="115^V2LHP4,V2VNIA^VV2" D ^V2PRESET S ^VCOMP="" S A="ABC",$P(A,"")="D",B="ABC",$P(B,"",2)="D" S C="ABCD",$P(C,"",2,3)="E",D="ABC",$P(D,"",1,3)="D" S ^VCOMP=A_" "_B_" "_C_" "_D,^VCORR="D ABCD ABCDE D" D ^VEXAMINE ; 115 W !,"II-115 Value of glvn is numeric data" S ^ABSN="20125",^ITEM="II-115 Value of glvn is numeric data",^NEXT="116^V2LHP4,V2VNIA^VV2" D ^V2PRESET S VCOMP="" S X=002305102,$P(X,0.0,2,2)=15 S VCOMP=VCOMP_X_" " S X=1212.425,$P(X,".",2,3)="000" S VCOMP=VCOMP_X_" " S X=12.324E2,$P(X,2,3,999)=00 S VCOMP=VCOMP_X S ^VCOMP=VCOMP,^VCORR="2301502 1212.000 12320" D ^VEXAMINE ; 116 W !,"II-116 Control characters are used as delimiters (expr1)" S ^ABSN="20126",^ITEM="II-116 Control characters are used as delimiters (expr1)",^NEXT="117^V2LHP4,V2VNIA^VV2" D ^V2PRESET S VCOMP="" S Y=$C(13),VCOMP="A"_Y_"B"_Y_"C",$P(VCOMP,Y,2,2)="D" S ^VCOMP=VCOMP,^VCORR="A"_Y_"D"_Y_"C" D ^VEXAMINE ; 117 W !,"II-117 Value of expr1 contains operators" S ^ABSN="20127",^ITEM="II-117 Value of expr1 contains operators",^NEXT="118^V2LHP4,V2VNIA^VV2" D ^V2PRESET S VCOMP="" S X=012030405,$P(X,+"A"-"E",3)=6 S VCOMP=VCOMP_X_" " S X=21319,$P(X,2=2)=003 S VCOMP=VCOMP_X_" " S X="A1B1C",$P(X,"ABC"["C",02,10E2)="" S VCOMP=VCOMP_X S ^VCOMP=VCOMP,^VCORR="12030605 31319 A1" D ^VEXAMINE ; 118 W !,"II-118 intexpr2 and intexpr3 are numlits" S ^ABSN="20128",^ITEM="II-118 intexpr2 and intexpr3 are numlits",^NEXT="119^V2LHP4,V2VNIA^VV2" D ^V2PRESET S VCOMP="A*B*C",$P(VCOMP,"*",002.30,2.99999)="D" S ^VCOMP=VCOMP,^VCORR="A*D*C" D ^VEXAMINE ; 119 W !,"II-119 Value of expr1,intexpr2,intexpr3 are functions" 1191 S ^ABSN="20129",^ITEM="II-119.1 $C",^NEXT="1192^V2LHP4,V2VNIA^VV2" D ^V2PRESET S VCOMP="A*B*C",$P(VCOMP,$C(42))="D" S ^VCOMP=VCOMP,^VCORR="D*B*C" D ^VEXAMINE ; 1192 S ^ABSN="20130",^ITEM="II-119.2 $L",^NEXT="1193^V2LHP4,V2VNIA^VV2" D ^V2PRESET S VCOMP="ABCABCABCABCABCABCABC",Y="B",$P(VCOMP,Y,2,$L(VCOMP,Y))="-" S ^VCOMP=VCOMP,^VCORR="AB-" D ^VEXAMINE ; 1193 S ^ABSN="20131",^ITEM="II-119.3 $P",^NEXT="V2VNIA^VV2" D ^V2PRESET S Y="ABC*ABC*ABC*ABC",VCOMP="" F I=1:1 S A=$T(TEX+I),X=Y Q:A="" S $P(X,$P(A,";",2),$P(A,";",3),$P(A,";",4))=$P(A,";",5),VCOMP=VCOMP_X_" " S ^VCOMP=VCOMP,^VCORR="DDD*ABC*ABC*ABC ABCDDDABC DDDABC*ABC ABC*ABC*ABC*ABCD " D ^VEXAMINE ; END W !!,"End of 13---V2LHP4",! K K ^V Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q TEX ; ;*;1;1;DDD;DDD*ABC*ABC*ABC ;ABC;2;4;DDD;ABCDDDABC ;ABC*A;1;2;DDD;DDDABC*ABC ;ABC*ABC*ABC*ABC;2;3;D;ABC*ABC*ABC*ABCD V2VNIA V2VNIA ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;VARIABLE NAME INIDIRECTION -1- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"14---V2VNIA: Variable name indirection -1-",! W !,"@lnamind@(L expr)",! 120 S ^ABSN="20132",^ITEM="II-120 lnamind is a lvn",^NEXT="121^V2VNIA,V2VNIB^VV2" W !,^ITEM D ^V2PRESET S VCOMP="",X="A(1)",@X@(2)=1,@X@(2,3)=2,X="A",@X@(2)=X S X="A(1)",Y="A",VCOMP=VCOMP_@X@(2)_@X@(2,3)_@Y@(2) S VCOMP=VCOMP_A(1,2)_A(1,2,3)_A(2) S ^VCOMP=VCOMP,^VCORR="12A12A" D ^VEXAMINE ; 121 S ^ABSN="20133",^ITEM="II-121 lnamind is a string literal",^NEXT="122^V2VNIA,V2VNIB^VV2" W !,^ITEM D ^V2PRESET S VCOMP="",@"A(1)"@(2)=1,@"A(1)"@(2,3)=2,@"A"@(2)=3 S VCOMP=@"A(1)"@(2)_@"A(1,2)"@(3)_@"A"@(2) S VCOMP=VCOMP_A(1,2)_A(1,2,3)_A(2) S ^VCOMP=VCOMP,^VCORR="123123" D ^VEXAMINE ; 122 S ^ABSN="20134",^ITEM="II-122 lnamind is a rexpratom",^NEXT="123^V2VNIA,V2VNIB^VV2" W !,^ITEM D ^V2PRESET S VCOMP="" S @("A"_"(1,2)")@(3,4)=4,@$C(65,40,49,44,50,44,51,41)@($C(53))=5 S @$E("A(1,2,3)B(1,2,3)",1,8)@($E(5678,2))=6,@$P("A(1,2)^B(1,2)","^",1)@(3,7)=7 S @($E("ABC")_$C(40,49,44,50)_",3)")@(8)=8 S X="A(1,2,3)" S VCOMP=VCOMP_@X@(4)_@X@(5)_@X@(6)_@X@(7)_@X@(8) S X="A(""A"")",@X@("B","C")="C" S @"A(""A"",""B"")"@($C($A("D")))=$C($A(@"A(""A"")"@("B","C"))+1) S X="A(""A"",""B"")" S VCOMP=VCOMP_@X@("C")_@X@("D") S ^VCOMP=VCOMP,^VCORR="45678CD" D ^VEXAMINE ; 123 W !!,"@gnamind@(L expr)",! S ^ABSN="20135",^ITEM="II-123 gnamind is a gvn",^NEXT="124^V2VNIA,V2VNIB^VV2" W !,^ITEM D ^V2PRESET S ^VCOMP="" S ^VV="^VV(1)",@^VV@(2)=2 S ^VCOMP=^VV(1,2),^VCORR=2 D ^VEXAMINE ; 124 S ^ABSN="20136",^ITEM="II-124 gnamind is a indirection",^NEXT="125^V2VNIA,V2VNIB^VV2" W !,^ITEM D ^V2PRESET S ^VCOMP="" S ^VV="^VV(1)",^VV(1)="^VV(2)",^VV(2)="^VV(3)",^VV(3)="^VV(""A"",""B"")" S ^VV(1,3)="^VV(2,3)" S @@^VV@(3)=3,^VCOMP=^VV(2,3),^VCORR=3 D ^VEXAMINE ; 125 S ^ABSN="20137",^ITEM="II-125 gnamind is 2 levels indirection",^NEXT="126^V2VNIA,V2VNIB^VV2" W !,^ITEM D ^V2PRESET S ^VCOMP="" S ^VV="^VV(1)",^VV(1)="^VV(2)",^VV(2)="^VV(3)",^VV(3)="^VV(""A"",""B"")" S ^VV(1,3)="^VV(2,3)",^VV(1,4)="^VV(""A"",""B"")",^VV("A","B")="^VV(3,4)" S @@@^VV@(4)=4,^VCOMP=^VV(3,4),^VCORR=4 D ^VEXAMINE ; 126 S ^ABSN="20138",^ITEM="II-126 Subscript is variable name indirection",^NEXT="127^V2VNIA,V2VNIB^VV2" W !,^ITEM D ^V2PRESET S ^VCOMP="" S ^VV="^VV(1)",^VV(1)="^VV(2)",^VV(2)="^VV(3)",^VV(3)="^VV(""A"",""B"")" S ^VV(1,3)="^VV(2,3)",^VV(1,4)="^VV(""A"",""B"")",^VV("A","B")="^VV(3,4)" S @^VV(3)@(@^VV(2)@(4))=5,^VCOMP=^VV("A","B",4),^VCORR="5" D ^VEXAMINE ; 127 W !!,"@lnamind@(L expr)",! S ^ABSN="20139",^ITEM="II-127 Multi use variable name indirection",^NEXT="128^V2VNIA,V2VNIB^VV2" W !,^ITEM D ^V2PRESET S VCOMP="" S X="A",A(1,2)="B(3,4)",@@X@(1,2)@(5,6)=1 S X="A",A(1,2)="B(1,2)",B(1,2)=5,@@X@(1,2)@(@A(1,2),6)=2 S @@X@(1,2)@(@@X@(1,2)@(5,6)+4,7)=3 S VCOMP=VCOMP_B(3,4,5,6)_B(1,2,5,6)_B(1,2,6,7) S ^VCOMP=VCOMP,^VCORR="123" D ^VEXAMINE ; 128 W !!,"@gnamind@(L expr)",! S ^ABSN="20140",^ITEM="II-128 Multi use variable name indirection",^NEXT="129^V2VNIA,V2VNIB^VV2" W !,^ITEM D ^V2PRESET S VCOMP="" K ^VV,^V,^V2 S ^V2="^VV",^VV(1,2)="^VV(3,4)",@@^V2@(1,2)@(5,6)=1 S ^VV(1,2)="^V(1,2)",^V(1,2)=5,@@^V2@(1,2)@(@^VV(1,2),6)=2 S @@^V2@(1,2)@(@@^V2@(1,2)@(5,6)+4,7)=3 S VCOMP=VCOMP_^VV(3,4,5,6)_^V(1,2,5,6)_^V(1,2,6,7) S ^VCOMP=VCOMP,^VCORR="123" D ^VEXAMINE ; 129 S ^ABSN="20141",^ITEM="II-129 Effect of naked indicator by variable name indirection",^NEXT="V2VNIB^VV2" W !,^ITEM D ^V2PRESET S VCOMP="" K ^V S A="^V(1)",@A@(1,2)=2 S VCOMP=^(2)_^V(1,1,2) S ^V(1)="^(5)",^(2)=1,^(5,1)="^(3)" S VCOMP=VCOMP_$D(^V(11)) S @@^(1)@(^(2))=3 S VCOMP=VCOMP_^(3)_^V(5,3) S ^VCOMP=VCOMP,^VCORR="22033" D ^VEXAMINE ; END W !!,"End of 14---V2VNIA",! K K ^VV,^V,^V2 Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2VNIB V2VNIB ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;VARIABLE NAME INIDIRECTION -2- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"15---V2VNIB: Variable name indirection -2-",! 130 S ^ABSN="20142",^ITEM="II-130.1 local",^NEXT="1302^V2VNIB,V2VNIC^VV2" W !,^ITEM D ^V2PRESET K S VCOMP="" S B="C(K)",K=1,C(1,"A")=2 S:@B@("A")=2 D(1)="" S:@B@("A")=3 D(2)="" S VCOMP=VCOMP_$D(D(1))_$D(D(2)) S ^VCOMP=VCOMP,^VCORR="10" D ^VEXAMINE ; 1302 S ^ABSN="20143",^ITEM="II-130.2 global",^NEXT="1303^V2VNIB,V2VNIC^VV2" D ^V2PRESET S VCOMP="" K ^VV S B="^VV",^VV("A")=2 S:@B@("A")=2 ^VV(10)="" S:@B@("A")=3 ^VV(11)="" S VCOMP=VCOMP_$D(^VV(10))_$D(^VV(11)) S ^VCOMP=VCOMP,^VCORR="10" D ^VEXAMINE ; 1303 S ^ABSN="20144",^ITEM="II-130.3 DO and GOTO command",^NEXT="131^V2VNIB,V2VNIC^VV2" D ^V2PRESET S VCOMP="" K ^VV S B="C(K)",C(1,2,3,4)=11,K=1,C(1,"A")=2,C(1)=3,I=4,C(1,9)="A" D:@B@("A")=2 EA:@B@(2,3,4)=11,EB:@B@(@B@(@B@(9)),@B,I)=11,EC:@B@(2,3,4)=10 D:@B@("A")=3 EA:@B@(2,3,4)=11,EB:@B@(@B@(@B@(9)),@B,I)=11,EC:@B@(2,3,4)=10 ; S B="^VV",^VV(1,2,3,4)=11,^VV("A")=2,^VV=3,I=4,^VV(9)="A" D:@B@("A")=2 EA:@B@(1,2,3,4)=11,EB:@B@(1,@B@(@B@(9)),@B,I)=11,EC:@B@(1,2,3,4)=10 D:@B@("A")=3 EA:@B@(1,2,3,4)=11,EB:@B@(1,@B@(@B@(9)),@B,I)=11,EC:@B@(1,2,3,4)=10 G:@B@("A")=2 G130:@B@(1,2,3,4)=11 S VCOMP=VCOMP_" ER GOTO 1 " S VCOMP=VCOMP_" ER GOTO 2 " ; G130 S ^VCOMP=VCOMP,^VCORR="ABAB" D ^VEXAMINE ; 131 S ^ABSN="20145",^ITEM="II-131 Variable name indirection in expr to the right of the =",^NEXT="132^V2VNIB,V2VNIC^VV2" W !,^ITEM D ^V2PRESET K S VCOMP="" S B="C(K)",C(1,2,3,4)=11,K=1,C(1,"A")=2,C(1)=3,I=4,C(1,9)="A" S:@B@(@B@(@B@(9)),@B,I)=11 @B@(1)=@B@(9),@B@(2)=@B@(@B@(9)) S:@B@(@B@(@B@(9)),@B,I)=10 @B@(3)=@B@(9),@B@(4)=@B@(@B@(9)) ;local S VCOMP=VCOMP_"*"_$D(C(1,1))_"*"_$D(C(1,2))_"*"_$D(C(1,3))_"*"_$D(C(1,4)) ; K ^VV S B="^VV",^VV(1,2,3,4)=11,^VV("A")=2,^VV=3,I=4,^VV(9)="A" S:@B@(1,@B@(@B@(9)),@B,I)=11 @B@(1)=@B@(9),@B@(2)=@B@(@B@(9)) ;global S:@B@(1,@B@(@B@(9)),@B,I)=10 @B@(3)=@B@(9),@B@(4)=@B@(@B@(9)) S VCOMP=VCOMP_"*"_$D(^VV(1))_"*"_$D(^VV(2))_"*"_$D(^VV(3))_"*"_$D(^VV(4)) S ^VCOMP=VCOMP,^VCORR="*1*11*0*0*11*1*0*0" D ^VEXAMINE ; 132 W !,"II-132 Value of indirection contains variable name indirection" 1321 S ^ABSN="20146",^ITEM="II-132.1 interpretation of indirection",^NEXT="1322^V2VNIB,V2VNIC^VV2" D ^V2PRESET K S VCOMP="" S B="A(1)",C="@B@(1)" S A(1,1)=1 S VCOMP=VCOMP_@C S @C=2 S VCOMP=VCOMP_A(1,1) S A(1,1,1)=3 S VCOMP=VCOMP_@C@(1) S @C@(1)=4 S VCOMP=VCOMP_A(1,1,1) S B="A(2)",C="@B@(2)",D="@C",@D=5 S VCOMP=VCOMP_A(2,2)_@D S @D@(2)=6 S VCOMP=VCOMP_A(2,2,2)_@D@(2) S B="A(3)",C(3,3)="@B",D="C(3)",E="@@D@(3)",@E=7 S VCOMP=VCOMP_A(3)_@E S @E@(3)=8 S VCOMP=VCOMP_A(3,3)_@E@(3) S:@E@(3)=8 VCOMP=VCOMP_@E@(3) S ^VCOMP=VCOMP,^VCORR="1234556677888" D ^VEXAMINE ; 1322 S ^ABSN="20147",^ITEM="II-132.2 another interpretation of indirection",^NEXT="1323^V2VNIB,V2VNIC^VV2" D ^V2PRESET S VCOMP="" S G="@G1",G1="Z",Z="B",H1="H(1)",H="@@H1@(@G)@(""-"")",H(1,"B")="I(1)",I(1,"-")="C" S A="D(1,2,3,4,5)",B="@A@(""A"")",C="@B",D="@A@(@G)",E="@A@(@H)",F="@E@(1)=@B+@B" S @C=1,@D=@B,@E=@B+1,@F S VCOMP=VCOMP_@C_@D_@E_@E@(1) S VCOMP=VCOMP_D(1,2,3,4,5,"A")_D(1,2,3,4,5,"B")_D(1,2,3,4,5,"C")_D(1,2,3,4,5,"C",1) S ^VCOMP=VCOMP,^VCORR="11221122" D ^VEXAMINE ; 1323 S ^ABSN="20148",^ITEM="II-132.3 value of name indirection contains variable name indirection",^NEXT="V2VNIC^VV2" D ^V2PRESET S B="A(1)",A="@B@(1)",A(1,1)="@B@(2)",A(1,2)="@B@(3)",A(1,3)="@B@(4)",A(1,4)="#" S ^VCOMP=A_@A_@@A_@@@A_@@@@A,@@@@A="$",^VCOMP=^VCOMP_A_@A_@@A_@@@A_@@@@A S ^VCORR="@B@(1)@B@(2)@B@(3)@B@(4)#@B@(1)@B@(2)@B@(3)@B@(4)$" D ^VEXAMINE ; END W !!,"End of 15---V2VNIB",! K K ^VV Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q EA S VCOMP=VCOMP_"A" Q EB S VCOMP=VCOMP_"B" Q EC S VCOMP=VCOMP_"C" Q V2VNIC V2VNIC ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;VARIABLE NAME INIDIRECTION -3- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"16---V2VNIC: Variable name indirection -3-",! 133 W !,"II-133 Variable name indirection in expr" S ^ABSN="20149",^ITEM="II-133 Variable name indirection in expr",^NEXT="134^V2VNIC,V2NR^VV2" D ^V2PRESET S VCOMP="" K VV S A="VV",B="VV(1)",@A@(1)=0,@A@(1,2)=0 K @B@(2) S VCOMP=VCOMP_$D(@A@(1))_" " K ^VV,^V S ^V="^VV",@^V@(1)=0,^(1,2)=0 K ^(2) S VCOMP=VCOMP_$D(@^V@(1))_" " S A="ABC(1,2,3)",ABC(1,2,3,4,5)="ABCDEFGHIJKL",ABC(1,2,3,4)=0.1234,ABC(1,2,3,5)=3 S @A@("@")=3,ABC(1,2,3,"-")=-0.11834 S VCOMP=VCOMP_(@A@(5)+@A@(5))_" " S VCOMP=VCOMP_$E(@A@(4,5),1,@A@("@"))_" "_$E(@A@(4,5),4,@A@(5)+@A@(5))_" " S VCOMP=VCOMP_$F(@A@(4,5),$E(@A@(4,5),4,@A@(5)+@A@(5)),-1)_" " S VCOMP=VCOMP_$J(@A@(4),5,2)_$j(@A@("-"),6,2)_" " S ABC(1,2,3,"A")="1BC1B" S VCOMP=VCOMP_$L(@A@("A"))_$L(@A@("A"),"B")_$l(@A@("A"),"1B")_$L(@A@("A"),"1BC")_" " S VCOMP=VCOMP_$P(@A@(4,5),"E")_" " S VCOMP=VCOMP_$T(+@^V@(1))_" " ; S VCOMP=VCOMP_@A@("@")_@A@("A")_" "_(+@A@("@")+-+-+@A@("A"))_" " S @A@(1)="ABC^DEF^GHIJ^KLMN^OPQRS^",$P(@A@(1),"^",2,@A@("@"))="123^4567" S VCOMP=VCOMP_@A@(1) ; S ^VCOMP=VCOMP S ^VCORR="1 1 6 ABC DEF 7 0.12 -0.12 5332 ABCD V2VNIC 31BC1B 4 ABC^123^4567^KLMN^OPQRS^" D ^VEXAMINE ; 134 W !,"II-134 Multi-assignment of variable name indirection" S ^ABSN="20150",^ITEM="II-134 Multi-assignment of variable name indirection",^NEXT="135^V2VNIC,V2NR^VV2" D ^V2PRESET S VCOMP="" K A,B S A="B(1,1)",(@A@(1),@A@(2),@A@(3),@A@(4))=0 S VCOMP=VCOMP_B(1,1,1)_B(1,1,2)_B(1,1,3)_B(1,1,4) K ^VV S A="^VV(1,1)",(@A@(1),@A@(2),@A@(3),@A@(4))=1 S VCOMP=VCOMP_^VV(1,1,1)_^VV(1,1,2)_^VV(1,1,3)_^VV(1,1,4) S ^VCOMP=VCOMP,^VCORR="00001111" D ^VEXAMINE ; 135 W !,"II-135 Value of XECUTE argument contains variable name indirection" S ^ABSN="20151",^ITEM="II-135 Value of XECUTE argument contains variable name indirection",^NEXT="V2NR^VV2" D ^V2PRESET S V="" K A,B S B="A(1)" S A(1,1)="S V=V_2 X @B@(2) S V=V_8",A(1,2)="S V=V_3 X @B@(3),@B@(3) S V=V_7" S A(1,3)="S V=V_4 X @B@(4) S V=V_6",A(1,4)="S V=V_@B@(5)",A(1,5)=5 S V=V_1 X @B@(1) S V=V_9 S ^VCOMP=V,^VCORR="123456456789" D ^VEXAMINE ; END W !!,"End of 16---V2VNIC",! K K ^VV,^V Q Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2NR V2NR ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;NAKED REFERENCE ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"17---V2NR: Naked references",! 136 W !,"II-136 Effect of naked reference on KILL command" S ^ABSN="20152",^ITEM="II-136 Effect of naked reference on KILL command",^NEXT="137^V2NR,V2READ^VV2" D ^V2PRESET S VCOMP="" K ^VV,^VV(1) S ^(1)=1 S VCOMP=^VV(1) S ^VCOMP=VCOMP,^VCORR="1" D ^VEXAMINE ; 137 W !,"II-137 Effect of naked reference on $DATA function" S ^ABSN="20153",^ITEM="II-137 Effect of naked reference on $DATA function",^NEXT="138^V2NR,V2READ^VV2" D ^V2PRESET S VCOMP="" K ^VV S VCOMP=$D(^VV(1))_" " S ^(2)=2 S VCOMP=VCOMP_^VV(2) S ^VCOMP=VCOMP,^VCORR="0 2" D ^VEXAMINE ; 138 W !,"II-138 Effect of global reference in $DATA on naked indicator" S ^ABSN="20154",^ITEM="II-138 Effect of global reference in $DATA on naked indicator",^NEXT="139^V2NR,V2READ^VV2" D ^V2PRESET S VCOMP="" K ^VV,^VV(1,1) S ^(2)="X" S VCOMP=$D(^(2,3))_" " S ^(4)=3 S VCOMP=VCOMP_^VV(1,2,4) S ^VCOMP=VCOMP,^VCORR="0 3" D ^VEXAMINE ; 139 W !,"II-139 Interpretation sequence of SET command" S ^ABSN="20155",^ITEM="II-139 Interpretation sequence of SET command",^NEXT="V2READ^VV2" D ^V2PRESET S VCOMP="" K ^VV S ^($D(^VV(0)))=$D(^(0)) S VCOMP=^VV(0) S ^VCOMP=VCOMP,^VCORR="0" D ^VEXAMINE ; END W !!,"End of 17---V2NR",! K K ^VV Q Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2READ V2READ ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;READ COUNT ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"18---V2READ: Read count" 140 W !!,"II-140 Terminated by readcount characters" S ^ABSN="20156",^ITEM="II-140 Terminated by readcount characters",^NEXT="141^V2READ,V2PAT1^VV2" D ^V2PRESET I $D(^VENVIRON("INPUT USE"))=1 U ^VENVIRON("INPUT USE") read !," read X#3 : Type 3 characters 'ABC' and NEVER touch : ",X#3 I $D(^VENVIRON("OUTPUT USE"))=1 U ^VENVIRON("OUTPUT USE") S ^VCOMP=X S ^VCORR="ABC" D AGAIN^VEXAMINE I RES="YES" G 140 D ^VEXAMINE ; 141 W !!,"II-141 Terminated by " S ^ABSN="20157",^ITEM="II-141 Terminated by ",^NEXT="142^V2READ,V2PAT1^VV2" D ^V2PRESET I $D(^VENVIRON("INPUT USE"))=1 U ^VENVIRON("INPUT USE") r !," r X#10 : Type 3 characters 'ABC' and a : ",X#10 I $D(^VENVIRON("OUTPUT USE"))=1 U ^VENVIRON("OUTPUT USE") S ^VCOMP=X S ^VCORR="ABC" D AGAIN^VEXAMINE I RES="YES" G 141 D ^VEXAMINE ; 142 W !!,"II-142 Indirection argument" S ^ABSN="20158",^ITEM="II-142 Indirection argument",^NEXT="143^V2READ,V2PAT1^VV2" D ^V2PRESET S A="@B#COUNT",B="X",COUNT=10 I $D(^VENVIRON("INPUT USE"))=1 U ^VENVIRON("INPUT USE") R !," @A (R X#10) : Type 3 characters 'ABC' and a : ",@A I $D(^VENVIRON("OUTPUT USE"))=1 U ^VENVIRON("OUTPUT USE") S ^VCOMP=X S ^VCORR="ABC" D AGAIN^VEXAMINE I RES="YES" G 142 D ^VEXAMINE ; 143 W !!,"II-143 Terminated by readcount characters" S ^ABSN="20159",^ITEM="II-143 Terminated by readcount characters",^NEXT="144^V2READ,V2PAT1^VV2" D ^V2PRESET I $D(^VENVIRON("INPUT USE"))=1 U ^VENVIRON("INPUT USE") r !," r X#3:60 : Type 3 chars 'ABC' within 60 Seconds and NEVER touch : ",X#3:60 S ^VCOMP=$T_" "_X S ^VCORR="1 ABC" I $D(^VENVIRON("OUTPUT USE"))=1 U ^VENVIRON("OUTPUT USE") D AGAIN^VEXAMINE I RES="YES" G 143 D ^VEXAMINE ; 144 W !!,"II-144 Terminated by " S ^ABSN="20160",^ITEM="II-144 Terminated by ",^NEXT="145^V2READ,V2PAT1^VV2" D ^V2PRESET I $D(^VENVIRON("INPUT USE"))=1 U ^VENVIRON("INPUT USE") rEAD !," rEAD X#10:60 : Type 3 characters 'ABC' and a : ",X#10:60 S ^VCOMP=$T_" "_X S ^VCORR="1 ABC" I $D(^VENVIRON("OUTPUT USE"))=1 U ^VENVIRON("OUTPUT USE") D AGAIN^VEXAMINE I RES="YES" G 144 D ^VEXAMINE ; 145 W !!,"II-145 Terminated by timeout" S ^ABSN="20161",^ITEM="II-145 Terminated by timeout",^NEXT="146^V2READ,V2PAT1^VV2" D ^V2PRESET I $D(^VENVIRON("INPUT USE"))=1 U ^VENVIRON("INPUT USE") R !," R X#10:15 : Type 3 chars 'ABC' within 15 seconds and NEVER touch : ",X#10:15 S ^VCOMP=$T_" "_X S ^VCORR="0 ABC" I $D(^VENVIRON("OUTPUT USE"))=1 U ^VENVIRON("OUTPUT USE") D AGAIN^VEXAMINE I RES="YES" G 145 D ^VEXAMINE ; 146 W !!,"II-146 Test of $TEST when timeout time is 0" S ^ABSN="20162",^ITEM="II-146 Test of $TEST when timeout time is 0",^NEXT="147^V2READ,V2PAT1^VV2" D ^V2PRESET I $D(^VENVIRON("INPUT USE"))=1 U ^VENVIRON("INPUT USE") R !," R X#10:0 : Never touch any key : ",X#10:0 S ^VCOMP=$T_X S ^VCORR="0" I $D(^VENVIRON("OUTPUT USE"))=1 U ^VENVIRON("OUTPUT USE") D AGAIN^VEXAMINE I RES="YES" G 146 D ^VEXAMINE ; 147 W !!,"II-147 Indirection argument" S ^ABSN="20163",^ITEM="II-147 Indirection argument",^NEXT="V2PAT1^VV2" D ^V2PRESET S A="@B#@C:TIME",B="X",C="COUNT",COUNT=10,TIME=60.4 I $D(^VENVIRON("INPUT USE"))=1 U ^VENVIRON("INPUT USE") R !," @A (R X#10:60.4) : Type 3 characters 'ABC' and a : ",@A S ^VCOMP=$T_" "_X S ^VCORR="1 ABC" I $D(^VENVIRON("OUTPUT USE"))=1 U ^VENVIRON("OUTPUT USE") D AGAIN^VEXAMINE I RES="YES" G 147 D ^VEXAMINE ; END W !!,"End of 18---V2READ",! K Q ; SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2PAT1 V2PAT1 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;PATTERN MATCH OPERATOR -1- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"19---V2PAT1: Pattern match operator -1-",! 148 W !,"II-148 expr ? .intlit2 patcode" S ^ABSN="20164",^ITEM="II-148 expr ? .intlit2 patcode",^NEXT="149^V2PAT1,V2PAT2^VV2" D ^V2PRESET S ^VCOMP="",X="ABC" S ^VCOMP=X?.0A_(X?.00001U)_(X?.2A)_(X?.03A)_(X?.4U)_(X?.99999999AE) S ^VCORR="000111" D ^VEXAMINE ; 149 W !,"II-149 expr ? intlit1.patcode" S ^ABSN="20165",^ITEM="II-149 expr ? intlit1.patcode",^NEXT="150^V2PAT1,V2PAT2^VV2" D ^V2PRESET S ^VCOMP="",X="ABC" S ^VCOMP=(X?0.A)_(X?1.U)_(X?00002.A)_(X?03.A)_(X?4.U)_(X?0099900.U) S ^VCORR="111100" D ^VEXAMINE ; 150 W !,"II-150 expr ? intlit1.intlit2 patcode" S ^ABSN="20166",^ITEM="II-150 expr ? intlit1.intlit2 patcode",^NEXT="151^V2PAT1,V2PAT2^VV2" D ^V2PRESET S VCOMP="",X="ABC" S VCOMP=VCOMP_(X?000.00000000AA)_(X?0.0001U)_(X?0.2A)_(X?000000.00003U)_(X?0.4A)_(X?00.0000999A)_" " S VCOMP=VCOMP_(X?1.1A)_(X?1.2U)_(X?1.3UA)_(X?1.4PU)_(X?1.999CPA)_" " S VCOMP=VCOMP_(X?2.2AU)_(X?2.3UP)_(X?2.4UUU)_(X?2.999AP)_" " S VCOMP=VCOMP_(X?3.3AUL)_(X?3.4AAA)_(X?3.999AU)_" " S VCOMP=VCOMP_(X?4.4A)_(X?4.999A)_(X?999.9999A) S ^VCOMP=VCOMP,^VCORR="000111 00111 0111 111 000" D ^VEXAMINE ; 151 W !,"II-151 '?" 1511 S ^ABSN="20167",^ITEM="II-151.1 X'?patcode",^NEXT="15111^V2PAT1,V2PAT2^VV2" D ^V2PRESET S X="ABC" ;Number changed in V7.4;16/9/89 S ^VCOMP=X'?1.2A_(X'?0.999A)_(X'?4.5A),^VCORR="101" D ^VEXAMINE ; 15111 S ^ABSN="20168",^ITEM="II-151.1.1 '(X?patcode)",^NEXT="152^V2PAT1,V2PAT2^VV2" D ^V2PRESET S X="ABC" ;Test added in V7.4;16/9/89 S ^VCOMP='(X?1.2A)_'(X?0.999A)_'(X?4.5A),^VCORR="101" D ^VEXAMINE ; 152 W !,"II-152 Multi patatom" S ^ABSN="20169",^ITEM="II-152 Multi patatom",^NEXT="153^V2PAT1,V2PAT2^VV2" D ^V2PRESET S VCOMP="",X="ABC" S VCOMP=(X?1.CAULPN.1CAULPN)_(X?1.3AN2.4APC)_(X?3.4A1.U)_(X'?0.AAAAAAAA.5ANNN) ; S X="12AB12AB" S VCOMP=VCOMP_(X?1."12"3.4A."2"2.U)_(X?.2"12AB".E)_(X?.2N1."AB"4.CNPALUECNPALUE)_(X?.2E.2E.2E8.8AN) S VCOMP=VCOMP_("ABCDEFGHIJKLMNOPQRSTUVWXYZ"?1.E3.5A.3CC2.5NU0.5P4.5UUU1"Z") S VCOMP=VCOMP_("0123456789..000..123456789"?3.15N2N.2N1.10".".N."."4.N) S ^VCOMP=VCOMP,^VCORR="1100011111" D ^VEXAMINE ; 153 W !,"II-153 expr ? repcount patcode when expr is an empty string" S ^ABSN="20170",^ITEM="II-153 expr ? repcount patcode when expr is an empty string",^NEXT="154^V2PAT1,V2PAT2^VV2" D ^V2PRESET S VCOMP="",X=""_"" S VCOMP=VCOMP_(""?.0A)_(""?.1A)_(X?.2P)_(" ")_(X?0.A)_(""?1.A)_(""?00002.A)_" " S VCOMP=VCOMP_(""?0.0E)_(""?0.1E)_(""?0.2E)_(X?000000.0009999A)_" " S VCOMP=VCOMP_(""?1.1EA)_(""?1.2CPA)_(""?2.2E) S ^VCOMP=VCOMP,^VCORR="111 100 1111 000" D ^VEXAMINE ; 154 W !,"II-154 expr contains control characters" S ^ABSN="20171",^ITEM="II-154 expr contains control characters",^NEXT="V2PAT2^VV2" D ^V2PRESET S VCOMP="" F I=1:1:10 S VCOMP=VCOMP_($C(I,I*2,I+100,I*I)?1.5CAULPN1.4CAULPN1.3CAULPNCAULPN1.CAULPN) S ^VCOMP=VCOMP,^VCORR="1111111111" D ^VEXAMINE ; END W !!,"End of 19---V2PAT1",! K Q ; SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2PAT2 V2PAT2 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;PATTERN MATCH OPERATOR -2- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"20---V2PAT2: Pattern match operator -2-",! 155 W !,"II-155 Indirection pattern" S ^ABSN="20172",^ITEM="II-155 Indirection pattern",^NEXT="156^V2PAT2,V2PAT3^VV2" D ^V2PRESET S ^VCOMP="ABC123#$!"?@(".4AN2.N1.99999999PN")_("12.34"?2.N.P.2N) S ^VCORR="11" D ^VEXAMINE ; 156 W !,"II-156 Nesting of pattern" S ^ABSN="20173",^ITEM="II-156 Nesting of pattern",^NEXT="157^V2PAT2,V2PAT3^VV2" D ^V2PRESET S ^VCOMP="MUMPS"?@("VALIDATION"?@("TEST"?4A_"""VALIDATION""")_"A"_($P("ABC/DDD","/")?.N+3_"U"_"1""S""")) S ^VCORR="1" D ^VEXAMINE ; 157 W !,"II-157 expr is 255 characters" S ^ABSN="20174",^ITEM="II-157 expr is 255 characters",^NEXT="158^V2PAT2,V2PAT3^VV2" D ^V2PRESET S X="" F I=0:1:127 S X=X_$C(I) F I=0:1:126 S X=X_$C(I) S ^VCOMP=(X?1.255CNPA)_(X?.999CNP)_(X?255.999CNPAULCNPAUL)_(X'?255.999CNNPAUL) S ^VCORR="1010" D ^VEXAMINE ; 158 W !,"II-158 expr ? repcount strlit when strlit is an empty string" S ^ABSN="20175",^ITEM="II-158 expr ? repcount strlit when strlit is an empty string",^NEXT="159^V2PAT2,V2PAT3^VV2" D ^V2PRESET S VCOMP="",X="" S VCOMP=VCOMP_(X?."")_(X?.000"")_(X?00."")_(""?0.0"")_(""?0000"")_" " S VCOMP=VCOMP_(""?.11"")_(X?21."")_(X?1.100"")_(X?5"")_" " S VCOMP=VCOMP_("@"?."")_("A"?.11"")_("B"?1."")_("C"?1.100"")_("D"?999"") S ^VCOMP=VCOMP,^VCORR="11111 1111 00000" D ^VEXAMINE ; 159 W !,"II-159 expr ? repcount strlit when expr is an empty string" S ^ABSN="20176",^ITEM="II-159 expr ? repcount strlit when expr is an empty string",^NEXT="160^V2PAT2,V2PAT3^VV2" D ^V2PRESET S X="" S ^VCOMP=X?."@"_(""?.100"A")_(""?1."C")_(""?0."C")_(X?2.9"D")_(X?0.99"D")_(X?1"E")_(X?0"E") S ^VCORR="11010101" D ^VEXAMINE ; 160 W !,"II-160 Lower case pattern code ""c""" 1601 S ^ABSN="20177",^ITEM="II-160.1 repcount",^NEXT="1602^V2PAT2,V2PAT3^VV2" D ^V2PRESET S ^VCOMP="" s C="" s C=C_$C(127) F I=0:1:31 s C=C_$c(I) S ^VCOMP=^VCOMP_(C?.c)_(C?33c)_(C?33e)_(C?.33c)_(C?33.c)_(C?1.33c)_(C?32c) S ^VCORR="1111110" D ^VEXAMINE ; 1602 S ^ABSN="20178",^ITEM="II-160.2 its mapping",^NEXT="1603^V2PAT2,V2PAT3^VV2" D ^V2PRESET S ^VCOMP="" F I=0:1:127 S A=$C(I)?1c,^VCOMP=^VCOMP_A S ^VCORR="11111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001" D ^VEXAMINE ; 1603 S ^ABSN="20179",^ITEM="II-160.3 lvn?5c",^NEXT="161^V2PAT2,V2PAT3^VV2" D ^V2PRESET S ^VCOMP="" F I=0:1:127 S A=$C(I,I,I,I,I),A=A?5c,^VCOMP=^VCOMP_A S ^VCORR="11111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001" D ^VEXAMINE ; 161 W !,"II-161 Lower case pattern code ""p""" 1611 S ^ABSN="20180",^ITEM="II-161.1 repcount",^NEXT="1612^V2PAT2,V2PAT3^VV2" D ^V2PRESET S VCOMP="" s P="" f I=32:1:126 s I=$s(I=48:58,I=65:91,I=97:123,1:I),P=P_$c(I) S VCOMP=VCOMP_(P?.p)_(P?33p)_(P?33e)_(P?.33p)_(P?33.p)_(P?1.33p)_(P?30p) S ^VCOMP=VCOMP,^VCORR="1111110" D ^VEXAMINE ; 1612 S ^ABSN="20181",^ITEM="II-161.2 its mapping",^NEXT="1613^V2PAT2,V2PAT3^VV2" D ^V2PRESET S VCOMP="" F I=0:1:127 S A=$C(I)?1p,VCOMP=VCOMP_A S ^VCOMP=VCOMP,^VCORR="00000000000000000000000000000000111111111111111100000000001111111000000000000000000000000001111110000000000000000000000000011110" D ^VEXAMINE ; 1613 S ^ABSN="20182",^ITEM="II-161.3 lvn?5p",^NEXT="V2PAT3^VV2" D ^V2PRESET S VCOMP="" F I=0:1:127 S A=$C(I,I,I,I,I),A=A?5p,VCOMP=VCOMP_A S ^VCOMP=VCOMP,^VCORR="00000000000000000000000000000000111111111111111100000000001111111000000000000000000000000001111110000000000000000000000000011110" D ^VEXAMINE ; END W !!,"End of 20---V2PAT2",! K Q ; SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2PAT3 V2PAT3 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;PATTERN MATCH OPERATOR -3- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"21---V2PAT3: Pattern match operator -3-",! 162 W !,"II-162 Lower case pattern code ""n""" 1621 S ^ABSN="20183",^ITEM="II-162.1 repcount",^NEXT="1622^V2PAT3,V2PAT4^VV2" D ^V2PRESET S VCOMP="" s N="0123456789" S VCOMP=VCOMP_(N?.n)_(N?10n)_(N?10e)_(N?.10n)_(N?10.n)_(N?1.10n)_(N?1.9n) S ^VCOMP=VCOMP,^VCORR="1111110" D ^VEXAMINE ; 1622 S ^ABSN="20184",^ITEM="II-162.2 its mapping",^NEXT="1623^V2PAT3,V2PAT4^VV2" D ^V2PRESET S VCOMP="" F I=0:1:127 S A=$C(I)?1n,VCOMP=VCOMP_A S ^VCOMP=VCOMP,^VCORR="00000000000000000000000000000000000000000000000011111111110000000000000000000000000000000000000000000000000000000000000000000000" D ^VEXAMINE ; 1623 S ^ABSN="20185",^ITEM="II-162.3 lvn?5n",^NEXT="163^V2PAT3,V2PAT4^VV2" D ^V2PRESET S VCOMP="" F I=0:1:127 S A=$C(I,I,I,I,I),A=A?5n,VCOMP=VCOMP_A S ^VCOMP=VCOMP,^VCORR="00000000000000000000000000000000000000000000000011111111110000000000000000000000000000000000000000000000000000000000000000000000" D ^VEXAMINE ; 163 W !,"II-163 Lower case pattern code ""u""" 1631 S ^ABSN="20186",^ITEM="II-163.1 repcount",^NEXT="1632^V2PAT3,V2PAT4^VV2" D ^V2PRESET S VCOMP="" s U="" f I=65:1:90 s U=U_$c(I) S VCOMP=VCOMP_(U?.u)_(U?26u)_(U?26e)_(U?.26u)_(U?26.u)_(U?1.26u)_(U?.20u) S ^VCOMP=VCOMP,^VCORR="1111110" D ^VEXAMINE ; 1632 S ^ABSN="20187",^ITEM="II-163.2 its mapping",^NEXT="1633^V2PAT3,V2PAT4^VV2" D ^V2PRESET S VCOMP="" F I=0:1:127 S A=$C(I)?1u,VCOMP=VCOMP_A S ^VCOMP=VCOMP,^VCORR="00000000000000000000000000000000000000000000000000000000000000000111111111111111111111111110000000000000000000000000000000000000" D ^VEXAMINE ; 1633 S ^ABSN="20188",^ITEM="II-163.3 lvn?5u",^NEXT="164^V2PAT3,V2PAT4^VV2" D ^V2PRESET S VCOMP="" F I=0:1:127 S A=$C(I,I,I,I,I),A=A?5u,VCOMP=VCOMP_A S ^VCOMP=VCOMP,^VCORR="00000000000000000000000000000000000000000000000000000000000000000111111111111111111111111110000000000000000000000000000000000000" D ^VEXAMINE ; 164 W !,"II-164 Lower case pattern code ""l""" 1641 S ^ABSN="20189",^ITEM="II-164.1 repcount",^NEXT="1642^V2PAT3,V2PAT4^VV2" D ^V2PRESET S VCOMP="" s L="" f I=97:1:122 s L=L_$c(I) S VCOMP=VCOMP_(L?.l)_(L?26l)_(L?26e)_(L?.26l)_(L?26.l)_(L?1.26l)_(L?100.2222l) S ^VCOMP=VCOMP,^VCORR="1111110" D ^VEXAMINE ; 1642 S ^ABSN="20190",^ITEM="II-164.2 its mapping",^NEXT="1643^V2PAT3,V2PAT4^VV2" D ^V2PRESET S VCOMP="" F I=0:1:127 S A=$C(I)?1l,VCOMP=VCOMP_A S ^VCOMP=VCOMP,^VCORR="00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111100000" D ^VEXAMINE ; 1643 S ^ABSN="20191",^ITEM="II-164.3 lvn?5l",^NEXT="V2PAT4^VV2" D ^V2PRESET S VCOMP="" F I=0:1:127 S A=$C(I,I,I,I,I),A=A?5l,VCOMP=VCOMP_A S ^VCOMP=VCOMP,^VCORR="00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111100000" D ^VEXAMINE ; END W !!,"End of 21---V2PAT3",! K Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2PAT4 V2PAT4 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;PATTERN MATCH OPERATOR -4- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"22---V2PAT4: Pattern match operator -4-",! ; 165 W !,"II-165 Lower case pattern code ""a""" 1651 S ^ABSN="20192",^ITEM="II-165.1 repcount",^NEXT="1652^V2PAT4,V2NO1^VV2" D ^V2PRESET S VCOMP="" S U="" f I=65:1:90 s U=U_$c(I) S L="" f I=97:1:122 s L=L_$c(I) S A=U_L S VCOMP=VCOMP_(A?.a)_(A?52a)_(A?52e)_(A?.52a)_(A?52.a)_(A?1.52a)_(A?53.a) S ^VCOMP=VCOMP,^VCORR="1111110" D ^VEXAMINE ; 1652 S ^ABSN="20193",^ITEM="II-165.2 its mapping",^NEXT="1653^V2PAT4,V2NO1^VV2" D ^V2PRESET S VCOMP="" F I=0:1:127 S A=$C(I)?1a,VCOMP=VCOMP_A S ^VCOMP=VCOMP,^VCORR="00000000000000000000000000000000000000000000000000000000000000000111111111111111111111111110000001111111111111111111111111100000" D ^VEXAMINE ; 1653 S ^ABSN="20194",^ITEM="II-165.3 lvn?5a",^NEXT="166^V2PAT4,V2NO1^VV2" D ^V2PRESET S VCOMP="" F I=0:1:127 S A=$C(I,I,I,I,I),A=A?5a,VCOMP=VCOMP_A S ^VCOMP=VCOMP,^VCORR="00000000000000000000000000000000000000000000000000000000000000000111111111111111111111111110000001111111111111111111111111100000" D ^VEXAMINE ; 166 W !,"II-166 Lower case pattern code ""e""" 1661 S ^ABSN="20195",^ITEM="II-166.1 repcount",^NEXT="1662^V2PAT4,V2NO1^VV2" D ^V2PRESET S VCOMP="" s E="" f I=0:1:127 s E=E_$c(I) f I=0:1:126 s E=E_$c(I) S VCOMP=VCOMP_(E?.e)_(E?255e)_(E?.255e)_(E?255.e)_(E?1.255e)_(E?000100.0999999unlpc)_(E?256e) S ^VCOMP=VCOMP,^VCORR="1111110" D ^VEXAMINE ; 1662 S ^ABSN="20196",^ITEM="II-166.2 its mapping",^NEXT="1663^V2PAT4,V2NO1^VV2" D ^V2PRESET S ^VCOMP="" F I=0:1:127 S A=$C(I)?1e,^VCOMP=^VCOMP_A S ^VCORR="11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" D ^VEXAMINE ; 1663 S ^ABSN="20197",^ITEM="II-166.3 lvn?5e",^NEXT="V2NO1^VV2" D ^V2PRESET S ^VCOMP="" F I=0:1:127 S A=$C(I,I,I,I,I),A=A?5e,^VCOMP=^VCOMP_A S ^VCORR="11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" D ^VEXAMINE ; END W !!,"End of 22---V2PAT4",! K Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2NO1 V2NO1 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;$NEXT AND $ORDER ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"23---V2NO1: $NEXT and $ORDER -1-",! ;W !," Although the usage of negative numeric subscripts is restricted in Part III " ;W !,"MUMPS Portability Requirements 2.2.3, they are not restricted in the Part I " ;W !,"MUMPS Language Specifications. Therefore, behaviors of $NEXT are tested on " ;W !,"negative numeric subscripts as regards ""If sn is -1, let A be the set of all " ;W !,"subscripts (I-20, line 20-21). Then $N(Name(s1,s2,...,sn)) returns the value t " ;W !,"in A such that CO(t,s) = s for all s not equal to t."" Note that Part I MUMPS " ;W !,"Language Specifications states that $N will return AMBIGUOUS results for lvn " ;W !,"and gvn arrays which have negative numeric values." W !!,"$NEXT(glvn)",! 167 W !,"II-167 Sequence from -1 when glvn is lvn" 16711 S ^ABSN="20198",^ITEM="II-167.1.1 Numeric interpretation of a subscript",^NEXT="16712^V2NO1,V2NO2^VV2" D ^V2PRESET W !," (This test II-167.1.1 was withdrawn in 20/8/1992 on X11.1-1984, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 16712 S ^ABSN="20199",^ITEM="II-167.1.2 What is the set A (local)?",^NEXT="16713^V2NO1,V2NO2^VV2" D ^V2PRESET ;Test isolated in V7.4;16/9/89 W !," (This test II-167.1.2 was withdrawn in 20/8/1992 on X11.1-1984, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 16713 S ^ABSN="20200",^ITEM="II-167.1.3 The last returned value",^NEXT="1672^V2NO1,V2NO2^VV2" D ^V2PRESET W !," (This test II-167.1.3 was withdrawn in 20/8/1992 on X11.1-1984, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 1672 S ^ABSN="20201",^ITEM="II-167.2 Subscript is one character (95 graphics including space)",^NEXT="168^V2NO1,V2NO2^VV2" D ^V2PRESET W !," (This test II-167.1.2 was withdrawn in 20/8/1992 on X11.1-1984, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 168 W !,"II-168 Sequence from -1 when glvn is gvn" 16811 S ^ABSN="20202",^ITEM="II-168.1.1 Numeric interpretation of a subscript",^NEXT="16812^V2NO1,V2NO2^VV2" D ^V2PRESET W !," (This test II-168.1.1 was withdrawn in 20/8/1992 on X11.1-1984, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 16812 S ^ABSN="20203",^ITEM="II-168.1.2 What is the set A (global)?",^NEXT="16813^V2NO1,V2NO2^VV2" D ^V2PRESET W !," (This test II-168.1.2 was withdrawn in 20/8/1992 on X11.1-1984, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 16813 S ^ABSN="20204",^ITEM="II-168.1.3 The last returned value",^NEXT="1682^V2NO1,V2NO2^VV2" D ^V2PRESET ;Test isolated in V7.4;16/9/89 W !," (This test II-168.1.3 was withdrawn in 20/8/1992 on X11.1-1984, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 1682 S ^ABSN="20205",^ITEM="II-168.2 Subscript is one character (95 graphics including space)",^NEXT="V2NO2^VV2" D ^V2PRESET W !," (This test II-168.2 was withdrawn in 20/8/1992 on X11.1-1984, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; END W !!,"End of 23---V2NO1",! K K ^VV,^V1 Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2NO2 V2NO2 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;$NEXT AND $ORDER ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"24---V2NO2: $NEXT and $ORDER -2-",! ; 169 W !!,"$ORDER(glvn)",! W !,"II-169 Sequence from an empty string when glvn is lvn" 16911 S ^ABSN="20206",^ITEM="II-169.1.1 Numeric interpretation of a subscript",^NEXT="16912^V2NO2,V2SSUB1^VV2" D ^V2PRESET ;Test ID tagged in V7.4;16/9/89 D SETX^V2NOE,SETL^V2NOE S VCOMP="",X=-1E11 FOR I=1:1:35 S X=$O(A(X)) S VCOMP=VCOMP_X_" " S ^VCOMP=VCOMP,^VCORR=X(1)_X(2)_X(3) D ^VEXAMINE ; 16912 S ^ABSN="20207",^ITEM="II-169.1.2 What is the set A (local)?",^NEXT="16913^V2NO2,V2SSUB1^VV2" D ^V2PRESET ;Test isolated in V7.4;16/9/89 D SETL2^V2NOE S VCOMP="",X="" FOR I=1:1:12 S X=$O(A(X)) S VCOMP=VCOMP_X_" " S ^VCOMP=VCOMP,^VCORR=X(3) D ^VEXAMINE ; 16913 S ^ABSN="20208",^ITEM="II-169.1.3 The last returned value",^NEXT="1692^V2NO2,V2SSUB1^VV2" D ^V2PRESET ;Test isolated in V7.4;16/9/89 D SETL2^V2NOE S VCOMP="",X=-1E11 FOR I=1:1 S X=$O(A(X)) S VCOMP=VCOMP_X_" " Q:X="" S ^VCOMP=VCOMP,^VCORR=X(4) D ^VEXAMINE ; 1692 S ^ABSN="20209",^ITEM="II-169.2 Subscript is one character (95 graphics including space)",^NEXT="170^V2NO2,V2SSUB1^VV2" D ^V2PRESET D SETX^V2NOE S VCOMP="",X="" K V1 F I=126:-1:32 S V1($C(I))="" S X="" F I=0:0 S X=$O(V1(X)) Q:X="" S VCOMP=VCOMP_X S ^VCOMP=VCOMP,^VCORR=X(4) D ^VEXAMINE ; 170 W !,"II-170 Sequence from an empty string when glvn is gvn" 17011 S ^ABSN="20210",^ITEM="II-170.1.1 Numeric interpretation of a subscript",^NEXT="17012^V2NO2,V2SSUB1^VV2" D ^V2PRESET ;Test ID tagged in V7.4;16/9/89 D SETX^V2NOE,SETG^V2NOE S VCOMP="",X="" F I=1:1:35 S X=$O(^VV(X)) S VCOMP=VCOMP_X_" " S ^VCOMP=VCOMP,^VCORR=X(1)_X(2)_X(3) D ^VEXAMINE ; 17012 S ^ABSN="20211",^ITEM="II-170.1.2 What is the set A (global)?",^NEXT="17013^V2NO2,V2SSUB1^VV2" D ^V2PRESET ;Test isolated in V7.4;16/9/89 D SETG2^V2NOE S VCOMP="",X="" F I=1:1:12 S X=$O(^VV(X)) S VCOMP=VCOMP_X_" " S ^VCOMP=VCOMP,^VCORR=X(3) D ^VEXAMINE ; 17013 S ^ABSN="20212",^ITEM="II-170.1.3 The last returned value",^NEXT="1702^V2NO2,V2SSUB1^VV2" D ^V2PRESET ;Test isolated in V7.4;16/9/89 D SETG2^V2NOE S VCOMP="",X=-1E11 F I=1:1 S X=$O(^VV(X)) S VCOMP=VCOMP_X_" " Q:X="" S ^VCOMP=VCOMP,^VCORR=X(4) D ^VEXAMINE ; 1702 S ^ABSN="20213",^ITEM="II-170.2 Subscript is one character (95 graphics including space)",^NEXT="V2SSUB1^VV2" D ^V2PRESET S VCOMP="",X="" D SETX^V2NOE K ^V1 F I=32:1:126 S ^V1(1,2,3,"ABC","A","B",$C(I))="" S X="" F I=0:0 S X=$O(^(X)) q:X="" S VCOMP=VCOMP_X S ^VCOMP=VCOMP,^VCORR=X(4) D ^VEXAMINE ; END W !!,"End of 24---V2NO2",! K K ^VV,^V1 Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2NOE V2NOE ;IW-KO-TS,V2NO1/2,MVTS V9.10;15/6/96;$NEXT AND $ORDER ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 SETX K X S X(1)="-999999999 -10 -1.2 -1.11 -1.1 " S X(2)="-.5 0 .5 1.1 20 999999999 # % +4 - --1 -. -.0 -0 -4. " S X(3)="-4.0 . .0 .00 0.0 0.1 00 01 1. 1.0 1.1.2 123E1 A AA AB " S X(4)="0123456789 !""#$%&'()*+,-./" F I=58:1:126 S X(4)=X(4)_$C(I) Q SETL K A S A("-999999999")="",A("-10")="",A("-1.2")="",A("-1.11")="",A("-1.1")="" S A("-.5")="",A("0")="",A(0.5)="",A("1.1")="",A("999999999")="" S A("#")="",A("%")="",A("+4")="",A("-4.")="",A("-4.0")="",A(".0")="" S A(".00")="",A("0.0")="",A("0.1")="",A("1.")="",A("1.0")="",A("A")="" S A("AA")="",A("AB")="" S A("00")="",A("01")="",A("20")="",A("123E1")="",A("--1")="",A("-0")="" S A("1.1.2")="",A("-")="",A("-.")="",A("-.0")="",A(".")="" Q SETL2 K A,X S A(1.5)="",A(2000)="",A(99999)="",A("AB")="",A("ABCD")="",A("ab")="" S A(-99999)="",A(-10000)="",A(-1.5)="",A(-0.5)="",A(0)="",A(-1)="" S X(1)="-99999 -10000 -1.5 -1 " S X(2)="-.5 0 1.5 2000 99999 AB ABCD ab -1 " S X(3)="-99999 -10000 -1.5 -1 -.5 0 1.5 2000 99999 AB ABCD ab " S X(4)="-99999 -10000 -1.5 -1 -.5 0 1.5 2000 99999 AB ABCD ab " Q SETG K ^VV S ^VV("-999999999")="",^VV("-10")="",^VV("-1.2")="",^VV("-1.11")="" S ^VV("-1.1")="",^VV("-.5")="",^VV("0")="",^VV(0.5)="",^VV("1.1")="" S ^VV("999999999")="",^VV("#")="",^VV("%")="",^VV("+4")="",^VV("-4.")="" S ^VV("-4.0")="",^VV(".0")="",^VV(".00")="",^VV("0.0")="",^VV("0.1")="" S ^VV("1.")="",^VV("1.0")="",^VV("A")="",^VV("AA")="",^VV("AB")="" S ^VV("00")="",^VV("01")="",^VV("20")="",^VV("123E1")="",^VV("--1")="" S ^VV("-0")="" S ^VV("1.1.2")="",^VV("-")="",^VV("-.")="",^VV("-.0")="",^VV(".")="" Q SETG2 K ^VV,X S ^VV(1.5)="",^VV(2000)="",^VV(99999)="",^VV("AB")="",^VV("ABCD")="" S ^VV("ab")="",^VV(-99999)="",^VV(-10000)="",^VV(-1.5)="",^VV(-0.5)="" S ^VV(0)="",^VV(-1)="" S X(1)="-99999 -10000 -1.5 -1 " S X(2)="-.5 0 1.5 2000 99999 AB ABCD ab -1 " S X(3)="-99999 -10000 -1.5 -1 -.5 0 1.5 2000 99999 AB ABCD ab " S X(4)="-99999 -10000 -1.5 -1 -.5 0 1.5 2000 99999 AB ABCD ab " Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2SSUB1 V2SSUB1 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;STRING SUBSCRIPT -1- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"25---V2SSUB1: String subscript -1-",! 171 W !,"II-171 Primitive sequence of subs lvn" ;(title corrected in V7.4;16/9/89) S ^ABSN="20214",^ITEM="II-171 Primitive sequence of subs lvn",^NEXT="172^V2SSUB1,V2SSUB2^VV2" D ^V2PRESET S VCOMP="" FOR I=126:-1:32 S A($C(I))=$C(I) S X="" F I=1:1 S Y=$O(A(X)) Q:Y="" S VCOMP=VCOMP_($A(Y)-$A(X)) S X=Y S ^VCOMP=VCOMP,^VCORR="49111111111-25" F I=1:1:85 S ^VCORR=^VCORR_1 D ^VEXAMINE ; 172 W !,"II-172 Primitive sequence of subs gvn" ;(title corrected in V7.4;16/9/89) S ^ABSN="20215",^ITEM="II-172 Primitive sequence of subs gvn",^NEXT="173^V2SSUB1,V2SSUB2^VV2" D ^V2PRESET S VCOMP="" K ^VV F I=32:1:126 S ^VV($C(I))=$C(I) S X="" F I=1:1 S Y=$O(^VV(X)) Q:Y="" S VCOMP=VCOMP_($A(Y)-$A(X)) S X=Y S ^VCOMP=VCOMP,^VCORR="49111111111-25" F I=1:1:85 S ^VCORR=^VCORR_1 D ^VEXAMINE ; 173 W !,"II-173 Length of one subscript of a local variable is 31 (max)" ;(title corrected in V7.4;16/9/89) S ^ABSN="20216",^ITEM="II-173 Length of one subscript of a local variable is 31 (max)",^NEXT="174^V2SSUB1,V2SSUB2^VV2" D ^V2PRESET W !," (This test II-173 was withdrawn in 1992 on X11.1-1990, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 174 W !,"II-174 Total length of a local variable is 63 (max)" ;(title corrected in V7.4;16/9/89) S ^ABSN="20217",^ITEM="II-174 Total length of a local variable is 63 (max)",^NEXT="175^V2SSUB1,V2SSUB2^VV2" D ^V2PRESET W !," (This test II-174 was withdrawn in 1992 on X11.1-1990, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 175 W !,"II-175 Length of one subscript of a global variable is 31 (max)" ;(title corrected in V7.4;16/9/89) S ^ABSN="20218",^ITEM="II-175 Length of one subscript of a global variable is 31 (max)",^NEXT="176^V2SSUB1,V2SSUB2^VV2" D ^V2PRESET W !," (This test II-175 was withdrawn in 1992 on X11.1-1990, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 176 W !,"II-176 Total length of a global variable is 63 (max)" ;(title corrected in V7.4;16/9/89) S ^ABSN="20219",^ITEM="II-176 Total length of a global variable is 63 (max)",^NEXT="V2SSUB2^VV2" D ^V2PRESET W !," (This test II-176 was withdrawn in 1992 on X11.1-1990, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; END W !!,"End of 25---V2SSUB1",! K K ^VV Q Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2SSUB2 V2SSUB2 ;IW-KO-TS,VV2,MVTS V9.10;15/6/96;STRING SUBSCRIPT -2- ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 W !!,"26---V2SSUB2: String subscript -2-",! 177 W !,"II-177 Naked reference when the total length of global variable is 63 characters (max)" ;(title corrected in V7.4;16/9/89) S ^ABSN="20220",^ITEM="II-177 Naked reference when the total length of global variable is 63 characters (max)",^NEXT="178^V2SSUB2,END^VV2" D ^V2PRESET W !," (This test II-177 was withdrawn in 1992 on X11.1-1990, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 178 W !,"II-178 Minimum (-.999999999E25) to maximum (.999999999E25) number of one subscript of local variable" ;(title corrected in V7.4;16/9/89) S ^ABSN="20221",^ITEM="II-178 Minimum (-.999999999E25) to maximum (.999999999E25) number of one subscript of local variable",^NEXT="179^V2SSUB2,END^VV2" D ^V2PRESET W !," (This test II-178 was withdrawn in 1992 on X11.1-1990, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 179 W !,"II-179 Minimum (-.999999999E25) to maximum (.999999999E25) number of one subscript of global variable" ;(title corrected in V7.4;16/9/89) S ^ABSN="20222",^ITEM="II-179 Minimum (-.999999999E25) to maximum (.999999999E25) number of one subscript of global variable",^NEXT="180^V2SSUB2,END^VV2" D ^V2PRESET W !," (This test II-179 was withdrawn in 1992 on X11.1-1990, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 180 W !,"II-180 Total number of local variable subscripts is 31 (max)" ;(title corrected in V7.4;16/9/89) S ^ABSN="20223",^ITEM="II-180 Total number of local variable subscripts is 31 (max)",^NEXT="181^V2SSUB2,END^VV2" D ^V2PRESET W !," (This test II-180 was withdrawn in 1992 on X11.1-1990, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; 181 W !,"II-181 Total number of global variable subscripts is 31 (max)" ;(title corrected in V7.4;16/9/89) S ^ABSN="20224",^ITEM="II-181 Total number of global variable subscripts is 31 (max)",^NEXT="END^VV2" D ^V2PRESET W !," (This test II-181 was withdrawn in 1992 on X11.1-1990, MSL)" S ^VREPORT("Part-84",^ABSN)="*WITHDR*" ; END W !!,"End of 26---V2SSUB2",! K K ^VV,^V Q Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2PRESET V2PRESET ;IW-TS,VV2,MVTS V9.10;15/6/96;UTILITY ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 S ^VREPORT("Part-84",^ABSN)="*ABORT*" S ^VREPORT("Part-84",^ABSN,"ITEM")=^ITEM S ^VREPORT("Part-84",^ABSN,"NEXT")=^NEXT Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q V2 V2 ;IW-TS,VV2,MVTS V9.10;15/6/96;UTILITY ; ;COPYRIGHT MUMPS SYSTEMS LABORATORY 1984-1996 ; I $D(^VENVIRON("OUTPUT OPEN"))=1 O ^VENVIRON("OUTPUT OPEN") I $D(^VENVIRON("INPUT OPEN"))=1 O ^VENVIRON("INPUT OPEN") I $D(^NEXT)=1 G NEXTNEXT I $D(^VREPORT("Part-84"))=0 G ^VV2 F ABSN=20224:-1:20001 I $D(^VREPORT("Part-84",ABSN,"NEXT"))=1 G NEXT K G ^VV2 NEXT I $D(^VENVIRON("OUTPUT USE"))=1 U ^VENVIRON("OUTPUT USE") D @^VREPORT("Part-84",ABSN,"NEXT") Q NEXTNEXT I $D(^VENVIRON("OUTPUT USE"))=1 U ^VENVIRON("OUTPUT USE") D @^NEXT Q SUM S SUM=0 F I=1:1 S L=$T(+I) Q:L="" F K=1:1:$L(L) S SUM=SUM+$A(L,K) Q