Index: /ccr/trunk/p/GPLACTORS.m
===================================================================
--- /ccr/trunk/p/GPLACTORS.m	(revision 42)
+++ /ccr/trunk/p/GPLACTORS.m	(revision 43)
@@ -15,33 +15,20 @@
            . I ATYP="" Q ; NOT A VALID ACTOR
            . ;
-           . ; MAP ACTOR VARIABLES HERE
+           . I ATYP="PATIENT" D  ; PATIENT ACTOR TYPE
+           . . D QUERY^GPLXPATH(IPXML,"//Actors/ACTOR-PATIENT","ATMP")
+           . . D PATIENT("ATMP",@ALST@(I),"ATMP2")
            . ;
-           . S @AMAP@("ACTOROBJECTID")=AOID ;ACTOR OBJECT ID
-           . S @AMAP@("ACTORGIVENNAME")=""
-           . S @AMAP@("ACTORMIDDLENAME")=""
-           . S @AMAP@("ACTORFAMILYNAME")=""
-           . S @AMAP@("ACTORDATEOFBIRTH")=""
-           . S @AMAP@("ACTORGENDER")=""
-           . S @AMAP@("ACTORSSN")=""
-           . S @AMAP@("ACTORSSNSOURCEID")=""
-           . S @AMAP@("ACTORADDRESSTYPE")=""
-           . S @AMAP@("ACTORADDRESSLINE1")=""
-           . S @AMAP@("ACTORADDRESSLINE2")=""
-           . S @AMAP@("ACTORADDRESSCITY")=""
-           . S @AMAP@("ACTORADDRESSSTATE")=""
-           . S @AMAP@("ACTORADDRESSZIPCODE")=""
-           . S @AMAP@("ACTORTELEPHONE")=""
-           . S @AMAP@("ACTORTELEPHONETYPE")=""
-           . S @AMAP@("ACTOREMAIL")=""
-           . S @AMAP@("ACTORADDRESSSOURCEID")=""
-           . S @AMAP@("ACTORINFOSYSNAME")=""
-           . S @AMAP@("ACTORINFOSYSSOURCEID")=""
-           . S @AMAP@("ACTORDISPLAYNAME")=""
-           . S @AMAP@("ACTORRELATION")=""
-           . S @AMAP@("ACTORRELATIONSOURCEID")=""
-           . S @AMAP@("ACTORSPECIALITY")=""
+           . I ATYP="SYSTEM" D  ; SYSTEM ACTOR TYPE
+           . . D QUERY^GPLXPATH(IPXML,"//Actors/ACTOR-SYSTEM","ATMP")
+           . . D SYSTEM("ATMP",@ALST@(I),"ATMP2")
            . ;
+           . I ATYP="NOK" D  ; NOK ACTOR TYPE
+           . . D QUERY^GPLXPATH(IPXML,"//Actors/ACTOR-NOK","ATMP")
+           . . D NOK("ATMP",@ALST@(I),"ATMP2")
            . ;
-           . D MAP^GPLXPATH(INXML,AMAP,"ATMP") ; MAP THE VARIABLE
+           . I ATYP="PROVIDER" D  ; PROVIDER ACTOR TYPE
+           . . D QUERY^GPLXPATH(IPXML,"//Actors/ACTOR-PROVIDER","ATMP")
+           . . D PROVIDER("ATMP",@ALST@(I),"ATMP2")
+           . ;
            . I FIRST D  ; FIRST TIME , ONLY COPY THE ARRAY
            . . D CP^GPLXPATH("ATMP",OUTXML) ;
@@ -50,5 +37,73 @@
            . . D INSERT^GPLXPATH("ATMP","//",OUTXML) ; INSERT AT ROOT
            ;
+           D MISSING^GPLXPATH(OUTXML,"ACTTMP") ; SEARCH XML FOR MISSING VARS
+           I ACTTMP(0)>0  D  ; IF THERE ARE MISSING VARS -
+           . ; STRINGS MARKED AS @@X@@
+           . W "ACTORS Missing list: ",!
+           . F I=1:1:ACTTMP(0) W ACTTMP(I),!
            Q
            ;
-
+PATIENT(INXML,ACTREC,OUTXML) ; PROCESS A PATIENT ACTOR
+     ;
+     N AMAP
+     S @AMAP@("ACTOROBJECTID")=AOID ;ACTOR OBJECT ID
+     S @AMAP@("ACTORGIVENNAME")=""
+     S @AMAP@("ACTORMIDDLENAME")=""
+     S @AMAP@("ACTORFAMILYNAME")=""
+     S @AMAP@("ACTORDATEOFBIRTH")=""
+     S @AMAP@("ACTORGENDER")=""
+     S @AMAP@("ACTORSSN")=""
+     S @AMAP@("ACTORSSNSOURCEID")=""
+     S @AMAP@("ACTORADDRESSTYPE")=""
+     S @AMAP@("ACTORADDRESSLINE1")=""
+     S @AMAP@("ACTORADDRESSLINE2")=""
+     S @AMAP@("ACTORADDRESSCITY")=""
+     S @AMAP@("ACTORADDRESSSTATE")=""
+     S @AMAP@("ACTORADDRESSZIPCODE")=""
+     S @AMAP@("ACTORTELEPHONE")=""
+     S @AMAP@("ACTORTELEPHONETYPE")=""
+     S @AMAP@("ACTOREMAIL")=""
+     S @AMAP@("ACTORADDRESSSOURCEID")=""
+     D MAP^GPLXPATH(INXML,AMAP,OUTXML) ; MAP THE VARIABLE
+     Q
+     ;
+SYSTEM(INXML,ACTREC,OUTXML) ; PROCESS A SYSTEM ACTOR
+     ;
+     N AMAP
+     S @AMAP@("ACTOROBJECTID")=AOID ;ACTOR OBJECT ID
+     S @AMAP@("ACTORINFOSYSNAME")=""
+     S @AMAP@("ACTORINFOSYSSOURCEID")=""
+     D MAP^GPLXPATH(INXML,AMAP,OUTXML) ; MAP THE VARIABLE
+     Q
+     ;
+NOK(INXML,ACTREC,OUTXML) ; PROCESS A NEXT OF KIN TYPE ACTOR
+     ;
+     N AMAP
+     S @AMAP@("ACTOROBJECTID")=AOID ;ACTOR OBJECT ID
+     S @AMAP@("ACTORDISPLAYNAME")=""
+     S @AMAP@("ACTORRELATION")=""
+     S @AMAP@("ACTORRELATIONSOURCEID")=""
+     D MAP^GPLXPATH(INXML,AMAP,OUTXML) ; MAP THE VARIABLE
+     Q
+     ;
+PROVIDER(INXML,ACTREC,OUTXML) ; PROCESS A PROVIDER TYPE ACTOR
+     ;
+     N AMAP
+     S @AMAP@("ACTOROBJECTID")=AOID ;ACTOR OBJECT ID
+     S @AMAP@("ACTORGIVENNAME")=""
+     S @AMAP@("ACTORMIDDLENAME")=""
+     S @AMAP@("ACTORFAMILYNAME")=""
+     S @AMAP@("ACTORSPECIALITY")=""
+     S @AMAP@("ACTORADDRESSTYPE")=""
+     S @AMAP@("ACTORADDRESSLINE1")=""
+     S @AMAP@("ACTORADDRESSLINE2")=""
+     S @AMAP@("ACTORADDRESSCITY")=""
+     S @AMAP@("ACTORADDRESSSTATE")=""
+     S @AMAP@("ACTORADDRESSZIPCODE")=""
+     S @AMAP@("ACTORTELEPHONE")=""
+     S @AMAP@("ACTORTELEPHONETYPE")=""
+     S @AMAP@("ACTOREMAIL")=""
+     S @AMAP@("ACTORADDRESSSOURCEID")=""
+     D MAP^GPLXPATH(INXML,AMAP,OUTXML) ; MAP THE VARIABLE
+     Q
+     ;
Index: /ccr/trunk/p/GPLCCR.m
===================================================================
--- /ccr/trunk/p/GPLCCR.m	(revision 42)
+++ /ccr/trunk/p/GPLCCR.m	(revision 43)
@@ -1,4 +1,4 @@
 GPLCCR   ; CCDCCR/GPL - CCR MAIN PROCESSING; 6/6/08
-;;0.1;CCDCCR;nopatch;noreleasedate
+ ;;0.1;CCDCCR;nopatch;noreleasedate
      ;
      ; EXPORT A CCR
@@ -118,5 +118,5 @@
     Q
     ;
-TEST    ; RUN ALL THE TEST CASES
+TEST ; RUN ALL THE TEST CASES
   D TESTALL^GPLUNIT("GPLCCR")
   Q
@@ -128,26 +128,30 @@
   Q
   ;
-TLIST     ; LIST THE TESTS
-  N ZTMP
+TLIST  ; LIST THE TESTS
+  N ZTMP,GNEW
   D ZLOAD^GPLUNIT("ZTMP","GPLCCR")
   D TLIST^GPLUNIT(.ZTMP)
   Q
-  ;
-;;><TEST>
-;;><PROBLEMS>
-;;>>>K GPL S GPL=""
-;;>>>D CCRRPC^GPLCCR(.GPL,"2","PROBLEMS","","","")
-;;>>?@GPL@(@GPL@(0))["</Problems>"
-;;><VITALS>
-;;>>>K GPL S GPL=""
-;;>>>D CCRRPC^GPLCCR(.GPL,"2","VITALS","","","")
-;;>>?@GPL@(@GPL@(0))["</VitalSigns>"
-;;><CCR>
-;;>>>K GPL S GPL=""
-;;>>>D CCRRPC^GPLCCR(.GPL,"2","CCR","","","")
-;;>>?@GPL@(@GPL@(0))["</ContinuityOfCareRecord>"
-;;><ACTLST>
-;;>>>K GPL S GPL=""
-;;>>>D CCRRPC^GPLCCR(.GPL,"2","CCR","","","")
-;;>>>D ACTLST^GPLCCR(GPL,"ACTTEST")
-;;></TEST>
+  ; LAST LINE BEFORE TESTS
+NEW ; new debugging routine
+    W "this is new",!
+    Q
+    ; end of NEW
+ ;;><TEST>
+ ;;><PROBLEMS>
+ ;;>>>K GPL S GPL=""
+ ;;>>>D CCRRPC^GPLCCR(.GPL,"2","PROBLEMS","","","")
+ ;;>>?@GPL@(@GPL@(0))["</Problems>"
+ ;;><VITALS>
+ ;;>>>K GPL S GPL=""
+ ;;>>>D CCRRPC^GPLCCR(.GPL,"2","VITALS","","","")
+ ;;>>?@GPL@(@GPL@(0))["</VitalSigns>"
+ ;;><CCR>
+ ;;>>>K GPL S GPL=""
+ ;;>>>D CCRRPC^GPLCCR(.GPL,"2","CCR","","","")
+ ;;>>?@GPL@(@GPL@(0))["</ContinuityOfCareRecord>"
+ ;;><ACTLST>
+ ;;>>>K GPL S GPL=""
+ ;;>>>D CCRRPC^GPLCCR(.GPL,"2","CCR","","","")
+ ;;>>>D ACTLST^GPLCCR(GPL,"ACTTEST")
+ ;;></TEST>
Index: /ccr/trunk/p/GPLPROBS.m
===================================================================
--- /ccr/trunk/p/GPLPROBS.m	(revision 42)
+++ /ccr/trunk/p/GPLPROBS.m	(revision 43)
@@ -58,5 +58,6 @@
           N PROBSTMP,I
           D MISSING^GPLXPATH(ARYTMP,"PROBSTMP") ; SEARCH XML FOR MISSING VARS
-          I PROBSTMP(0)>0  D  ; IF THERE ARE MISSING VARS - STRINGS MARKED AS @@X@@
+          I PROBSTMP(0)>0  D  ; IF THERE ARE MISSING VARS -
+          . ; STRINGS MARKED AS @@X@@
           . W "PROBLEMS Missing list: ",!
           . F I=1:1:PROBSTMP(0) W PROBSTMP(I),!
Index: /ccr/trunk/p/GPLUNIT.m
===================================================================
--- /ccr/trunk/p/GPLUNIT.m	(revision 42)
+++ /ccr/trunk/p/GPLUNIT.m	(revision 43)
@@ -39,4 +39,5 @@
           ;
           N NUM F NUM=1:1 S LINE=$T(+NUM^@ROUTINE) Q:LINE=""  D
+          . W NUM," ",LINE,!
           . I LINE?." "1";;><TEST>".E S INTEST=1 ; entering test section
           . I LINE?." "1";;><TEMPLATE>".E S INTEST=1 ; entering TEMPLATE section
Index: /ccr/trunk/p/GPLXPATH.m
===================================================================
--- /ccr/trunk/p/GPLXPATH.m	(revision 42)
+++ /ccr/trunk/p/GPLXPATH.m	(revision 43)
@@ -1,4 +1,4 @@
 GPLXPATH   ; CCDCCR/GPL - XPATH XML manipulation utilities; 6/1/08
-;;0.2;CCDCCR;nopatch;noreleasedate
+ ;;0.2;CCDCCR;nopatch;noreleasedate
           W "This is an XML XPATH utility library",!
           W !
@@ -24,6 +24,8 @@
           ; VAL AND STK ARE PASSED BY REFERENCE
           ;
-          I @STK@(0)<1 S VAL="",@STK@(0)=0 Q ; IF ARRAY IS EMPTY
-          I @STK@(0)>0  D
+          I @STK@(0)<1 D  ; IF ARRAY IS EMPTY
+          . S VAL=""
+          . S @STK@(0)=0
+          I @STK@(0)>0  D  ;
           . S VAL=@STK@(@STK@(0))
           . K @STK@(@STK@(0))
@@ -243,10 +245,10 @@
          I DEBUG W "DOING INSERT ",INSXML,INSNEW,INSXPATH,!
          I DEBUG F G1=1:1:@INSXML@(0) W @INSXML@(G1),!
-         I '$D(@INSXML@(0)) D  Q ; INSERT INTO AN EMPTY ARRAY
+         I '$D(@INSXML@(0)) D  ; INSERT INTO AN EMPTY ARRAY
          . D CP^GPLXPATH(INSNEW,INSXML) ; JUST COPY INTO THE OUTPUT
          I $D(@INSXML@(0)) D  ; IF ORIGINAL ARRAY IS NOT EMPTY
          . I $D(INSXPATH) D  ; XPATH PROVIDED
          . . D QOPEN("INSBLD",INSXML,INSXPATH) ; COPY THE BEFORE
-         . . I DEBUG ZWR INSBLD
+         . . I DEBUG D PARY^GPLXPATH("INSBLD")
          . I '$D(INSXPATH) D  ; NO XPATH PROVIDED, OPEN AT ROOT
          . . D QOPEN("INSBLD",INSXML,"//") ; OPEN WITH ROOT XPATH
@@ -295,5 +297,5 @@
          D QUEUE("REBLD",REXML,XLAST,@REXML@(0)) ; THE REST
          I DEBUG W "REPALCE PREBUILD",!
-         I DEBUG ZWR REBLD
+         I DEBUG D PARY("REBLD")
          D BUILD("REBLD","RTMP")
          K @REXML ; KILL WHAT WAS THERE
@@ -362,161 +364,161 @@
         Q
         ;
-;;><TEST>
-;;><INIT>
-;;>>>K GPL S GPL=""
-;;>>>D PUSH^GPLXPATH("GPL","FIRST")
-;;>>>D PUSH^GPLXPATH("GPL","SECOND")
-;;>>>D PUSH^GPLXPATH("GPL","THIRD")
-;;>>>D PUSH^GPLXPATH("GPL","FOURTH")
-;;>>?GPL(0)=4
-;;><INITXML>
-;;>>>K GXML S GXML=""
-;;>>>D PUSH^GPLXPATH("GXML","<FIRST>")
-;;>>>D PUSH^GPLXPATH("GXML","<SECOND>")
-;;>>>D PUSH^GPLXPATH("GXML","<THIRD>")
-;;>>>D PUSH^GPLXPATH("GXML","<FOURTH>@@DATA1@@</FOURTH>")
-;;>>>D PUSH^GPLXPATH("GXML","<FIFTH>")
-;;>>>D PUSH^GPLXPATH("GXML","@@DATA2@@")
-;;>>>D PUSH^GPLXPATH("GXML","</FIFTH>")
-;;>>>D PUSH^GPLXPATH("GXML","<SIXTH ID=""SELF"" />")
-;;>>>D PUSH^GPLXPATH("GXML","</THIRD>")
-;;>>>D PUSH^GPLXPATH("GXML","<SECOND>")
-;;>>>D PUSH^GPLXPATH("GXML","</SECOND>")
-;;>>>D PUSH^GPLXPATH("GXML","</SECOND>")
-;;>>>D PUSH^GPLXPATH("GXML","</FIRST>")
-;;><INITXML2>
-;;>>>K GXML S GXML=""
-;;>>>D PUSH^GPLXPATH("GXML","<FIRST>")
-;;>>>D PUSH^GPLXPATH("GXML","<SECOND>")
-;;>>>D PUSH^GPLXPATH("GXML","<THIRD>")
-;;>>>D PUSH^GPLXPATH("GXML","<FOURTH>DATA1</FOURTH>")
-;;>>>D PUSH^GPLXPATH("GXML","<FOURTH>")
-;;>>>D PUSH^GPLXPATH("GXML","DATA2")
-;;>>>D PUSH^GPLXPATH("GXML","</FOURTH>")
-;;>>>D PUSH^GPLXPATH("GXML","</THIRD>")
-;;>>>D PUSH^GPLXPATH("GXML","<_SECOND>")
-;;>>>D PUSH^GPLXPATH("GXML","<FOURTH>DATA3</FOURTH>")
-;;>>>D PUSH^GPLXPATH("GXML","</_SECOND>")
-;;>>>D PUSH^GPLXPATH("GXML","</SECOND>")
-;;>>>D PUSH^GPLXPATH("GXML","</FIRST>")
-;;><PUSHPOP>
-;;>>>D ZLOAD^GPLUNIT("ZTMP","GPLXPATH")
-;;>>>D ZTEST^GPLUNIT(.ZTMP,"INIT")
-;;>>?GPL(GPL(0))="FOURTH"
-;;>>>D POP^GPLXPATH("GPL",.GX)
-;;>>?GX="FOURTH"
-;;>>?GPL(GPL(0))="THIRD"
-;;>>>D POP^GPLXPATH("GPL",.GX)
-;;>>?GX="THIRD"
-;;>>?GPL(GPL(0))="SECOND"
-;;><MKMDX>
-;;>>>D ZLOAD^GPLUNIT("ZTMP","GPLXPATH")
-;;>>>D ZTEST^GPLUNIT(.ZTMP,"INIT")
-;;>>>S GX=""
-;;>>>D MKMDX^GPLXPATH("GPL",.GX)
-;;>>?GX="//FIRST/SECOND/THIRD/FOURTH"
-;;><XNAME>
-;;>>?$$XNAME^GPLXPATH("<FOURTH>DATA1</FOURTH>")="FOURTH"
-;;>>?$$XNAME^GPLXPATH("<SIXTH  ID=""SELF"" />")="SIXTH"
-;;>>?$$XNAME^GPLXPATH("</THIRD>")="THIRD"
-;;><INDEX>
-;;>>>D ZLOAD^GPLUNIT("ZTMP","GPLXPATH")
-;;>>>D ZTEST^GPLUNIT(.ZTMP,"INITXML")
-;;>>>D INDEX^GPLXPATH("GXML")
-;;>>?GXML("//FIRST/SECOND")="2^12"
-;;>>?GXML("//FIRST/SECOND/THIRD")="3^9"
-;;>>?GXML("//FIRST/SECOND/THIRD/FIFTH")="5^7"
-;;>>?GXML("//FIRST/SECOND/THIRD/FOURTH")="4^4"
-;;>>?GXML("//FIRST/SECOND/THIRD/SIXTH")="8^8"
-;;>>?GXML("//FIRST/SECOND")="2^12"
-;;>>?GXML("//FIRST")="1^13"
-;;><INDEX2>
-;;>>>D ZTEST^GPLXPATH("INITXML2")
-;;>>>D INDEX^GPLXPATH("GXML")
-;;>>?GXML("//FIRST/SECOND")="2^12"
-;;>>?GXML("//FIRST/SECOND/_SECOND")="9^11"
-;;>>?GXML("//FIRST/SECOND/_SECOND/FOURTH")="10^10"
-;;>>?GXML("//FIRST/SECOND/THIRD")="3^8"
-;;>>?GXML("//FIRST/SECOND/THIRD/FOURTH")="4^7"
-;;>>?GXML("//FIRST")="1^13"
-;;><MISSING>
-;;>>>D ZTEST^GPLXPATH("INITXML")
-;;>>>S OUTARY="^TMP($J,""MISSINGTEST"")"
-;;>>>D MISSING^GPLXPATH("GXML",OUTARY)
-;;>>?@OUTARY@(1)="DATA1"
-;;>>?@OUTARY@(2)="DATA2"
-;;><MAP>
-;;>>>D ZTEST^GPLXPATH("INITXML")
-;;>>>S MAPARY="^TMP($J,""MAPVALUES"")"
-;;>>>S OUTARY="^TMP($J,""MAPTEST"")"
-;;>>>S @MAPARY@("DATA2")="VALUE2"
-;;>>>D MAP^GPLXPATH("GXML",MAPARY,OUTARY)
-;;>>?@OUTARY@(6)="VALUE2"
-;;><QUEUE>
-;;>>>D QUEUE^GPLXPATH("BTLIST","GXML",2,3)
-;;>>>D QUEUE^GPLXPATH("BTLIST","GXML",4,5)
-;;>>?$P(BTLIST(2),";",2)=4
-;;><BUILD>
-;;>>>D ZTEST^GPLXPATH("INITXML")
-;;>>>D QUERY^GPLXPATH("GXML","//FIRST/SECOND/THIRD/FOURTH","G2")
-;;>>>D ZTEST^GPLXPATH("QUEUE")
-;;>>>D BUILD^GPLXPATH("BTLIST","G3")
-;;><CP>
-;;>>>D ZTEST^GPLXPATH("INITXML")
-;;>>>D CP^GPLXPATH("GXML","G2")
-;;>>?G2(0)=13
-;;><QOPEN>
-;;>>>K G2,GBL
-;;>>>D ZTEST^GPLXPATH("INITXML")
-;;>>>D QOPEN^GPLXPATH("GBL","GXML")
-;;>>?$P(GBL(1),";",3)=12
-;;>>>D BUILD^GPLXPATH("GBL","G2")
-;;>>?G2(G2(0))="</SECOND>"
-;;><QOPEN2>
-;;>>>K G2,GBL
-;;>>>D ZTEST^GPLXPATH("INITXML")
-;;>>>D QOPEN^GPLXPATH("GBL","GXML","//FIRST/SECOND")
-;;>>?$P(GBL(1),";",3)=11
-;;>>>D BUILD^GPLXPATH("GBL","G2")
-;;>>?G2(G2(0))="</SECOND>"
-;;><QCLOSE>
-;;>>>K G2,GBL
-;;>>>D ZTEST^GPLXPATH("INITXML")
-;;>>>D QCLOSE^GPLXPATH("GBL","GXML")
-;;>>?$P(GBL(1),";",3)=13
-;;>>>D BUILD^GPLXPATH("GBL","G2")
-;;>>?G2(G2(0))="</FIRST>"
-;;><QCLOSE2>
-;;>>>K G2,GBL
-;;>>>D ZTEST^GPLXPATH("INITXML")
-;;>>>D QCLOSE^GPLXPATH("GBL","GXML","//FIRST/SECOND/THIRD")
-;;>>?$P(GBL(1),";",3)=13
-;;>>>D BUILD^GPLXPATH("GBL","G2")
-;;>>?G2(G2(0))="</FIRST>"
-;;>>?G2(1)="</THIRD>"
-;;><INSERT>
-;;>>>K G2,GBL,G3,G4
-;;>>>D ZTEST^GPLXPATH("INITXML")
-;;>>>D QUERY^GPLXPATH("GXML","//FIRST/SECOND/THIRD/FIFTH","G2")
-;;>>>D INSERT^GPLXPATH("GXML","G2","//FIRST/SECOND/THIRD")
-;;>>>D INSERT^GPLXPATH("G3","G2","//")
-;;>>?G2(1)=GXML(9)
-;;><REPLACE>
-;;>>>K G2,GBL,G3
-;;>>>D ZTEST^GPLXPATH("INITXML")
-;;>>>D QUERY^GPLXPATH("GXML","//FIRST/SECOND/THIRD/FIFTH","G2")
-;;>>>D REPLACE^GPLXPATH("GXML","G2","//FIRST/SECOND")
-;;>>?GXML(3)="<FIFTH>"
-;;><INSINNER>
-;;>>>K GXML,G2,GBL,G3
-;;>>>D ZTEST^GPLXPATH("INITXML")
-;;>>>D QUERY^GPLXPATH("GXML","//FIRST/SECOND/THIRD","G2")
-;;>>>D INSINNER^GPLXPATH("GXML","G2","//FIRST/SECOND/THIRD")
-;;>>?GXML(10)="<FIFTH>"
-;;><INSINNER2>
-;;>>>K GXML,G2,GBL,G3
-;;>>>D ZTEST^GPLXPATH("INITXML")
-;;>>>D QUERY^GPLXPATH("GXML","//FIRST/SECOND/THIRD","G2")
-;;>>>D INSINNER^GPLXPATH("G2","G2")
-;;>>?G2(8)="<FIFTH>"
-;;></TEST>
+ ;;><TEST>
+ ;;><INIT>
+ ;;>>>K GPL S GPL=""
+ ;;>>>D PUSH^GPLXPATH("GPL","FIRST")
+ ;;>>>D PUSH^GPLXPATH("GPL","SECOND")
+ ;;>>>D PUSH^GPLXPATH("GPL","THIRD")
+ ;;>>>D PUSH^GPLXPATH("GPL","FOURTH")
+ ;;>>?GPL(0)=4
+ ;;><INITXML>
+ ;;>>>K GXML S GXML=""
+ ;;>>>D PUSH^GPLXPATH("GXML","<FIRST>")
+ ;;>>>D PUSH^GPLXPATH("GXML","<SECOND>")
+ ;;>>>D PUSH^GPLXPATH("GXML","<THIRD>")
+ ;;>>>D PUSH^GPLXPATH("GXML","<FOURTH>@@DATA1@@</FOURTH>")
+ ;;>>>D PUSH^GPLXPATH("GXML","<FIFTH>")
+ ;;>>>D PUSH^GPLXPATH("GXML","@@DATA2@@")
+ ;;>>>D PUSH^GPLXPATH("GXML","</FIFTH>")
+ ;;>>>D PUSH^GPLXPATH("GXML","<SIXTH ID=""SELF"" />")
+ ;;>>>D PUSH^GPLXPATH("GXML","</THIRD>")
+ ;;>>>D PUSH^GPLXPATH("GXML","<SECOND>")
+ ;;>>>D PUSH^GPLXPATH("GXML","</SECOND>")
+ ;;>>>D PUSH^GPLXPATH("GXML","</SECOND>")
+ ;;>>>D PUSH^GPLXPATH("GXML","</FIRST>")
+ ;;><INITXML2>
+ ;;>>>K GXML S GXML=""
+ ;;>>>D PUSH^GPLXPATH("GXML","<FIRST>")
+ ;;>>>D PUSH^GPLXPATH("GXML","<SECOND>")
+ ;;>>>D PUSH^GPLXPATH("GXML","<THIRD>")
+ ;;>>>D PUSH^GPLXPATH("GXML","<FOURTH>DATA1</FOURTH>")
+ ;;>>>D PUSH^GPLXPATH("GXML","<FOURTH>")
+ ;;>>>D PUSH^GPLXPATH("GXML","DATA2")
+ ;;>>>D PUSH^GPLXPATH("GXML","</FOURTH>")
+ ;;>>>D PUSH^GPLXPATH("GXML","</THIRD>")
+ ;;>>>D PUSH^GPLXPATH("GXML","<_SECOND>")
+ ;;>>>D PUSH^GPLXPATH("GXML","<FOURTH>DATA3</FOURTH>")
+ ;;>>>D PUSH^GPLXPATH("GXML","</_SECOND>")
+ ;;>>>D PUSH^GPLXPATH("GXML","</SECOND>")
+ ;;>>>D PUSH^GPLXPATH("GXML","</FIRST>")
+ ;;><PUSHPOP>
+ ;;>>>D ZLOAD^GPLUNIT("ZTMP","GPLXPATH")
+ ;;>>>D ZTEST^GPLUNIT(.ZTMP,"INIT")
+ ;;>>?GPL(GPL(0))="FOURTH"
+ ;;>>>D POP^GPLXPATH("GPL",.GX)
+ ;;>>?GX="FOURTH"
+ ;;>>?GPL(GPL(0))="THIRD"
+ ;;>>>D POP^GPLXPATH("GPL",.GX)
+ ;;>>?GX="THIRD"
+ ;;>>?GPL(GPL(0))="SECOND"
+ ;;><MKMDX>
+ ;;>>>D ZLOAD^GPLUNIT("ZTMP","GPLXPATH")
+ ;;>>>D ZTEST^GPLUNIT(.ZTMP,"INIT")
+ ;;>>>S GX=""
+ ;;>>>D MKMDX^GPLXPATH("GPL",.GX)
+ ;;>>?GX="//FIRST/SECOND/THIRD/FOURTH"
+ ;;><XNAME>
+ ;;>>?$$XNAME^GPLXPATH("<FOURTH>DATA1</FOURTH>")="FOURTH"
+ ;;>>?$$XNAME^GPLXPATH("<SIXTH  ID=""SELF"" />")="SIXTH"
+ ;;>>?$$XNAME^GPLXPATH("</THIRD>")="THIRD"
+ ;;><INDEX>
+ ;;>>>D ZLOAD^GPLUNIT("ZTMP","GPLXPATH")
+ ;;>>>D ZTEST^GPLUNIT(.ZTMP,"INITXML")
+ ;;>>>D INDEX^GPLXPATH("GXML")
+ ;;>>?GXML("//FIRST/SECOND")="2^12"
+ ;;>>?GXML("//FIRST/SECOND/THIRD")="3^9"
+ ;;>>?GXML("//FIRST/SECOND/THIRD/FIFTH")="5^7"
+ ;;>>?GXML("//FIRST/SECOND/THIRD/FOURTH")="4^4"
+ ;;>>?GXML("//FIRST/SECOND/THIRD/SIXTH")="8^8"
+ ;;>>?GXML("//FIRST/SECOND")="2^12"
+ ;;>>?GXML("//FIRST")="1^13"
+ ;;><INDEX2>
+ ;;>>>D ZTEST^GPLXPATH("INITXML2")
+ ;;>>>D INDEX^GPLXPATH("GXML")
+ ;;>>?GXML("//FIRST/SECOND")="2^12"
+ ;;>>?GXML("//FIRST/SECOND/_SECOND")="9^11"
+ ;;>>?GXML("//FIRST/SECOND/_SECOND/FOURTH")="10^10"
+ ;;>>?GXML("//FIRST/SECOND/THIRD")="3^8"
+ ;;>>?GXML("//FIRST/SECOND/THIRD/FOURTH")="4^7"
+ ;;>>?GXML("//FIRST")="1^13"
+ ;;><MISSING>
+ ;;>>>D ZTEST^GPLXPATH("INITXML")
+ ;;>>>S OUTARY="^TMP($J,""MISSINGTEST"")"
+ ;;>>>D MISSING^GPLXPATH("GXML",OUTARY)
+ ;;>>?@OUTARY@(1)="DATA1"
+ ;;>>?@OUTARY@(2)="DATA2"
+ ;;><MAP>
+ ;;>>>D ZTEST^GPLXPATH("INITXML")
+ ;;>>>S MAPARY="^TMP($J,""MAPVALUES"")"
+ ;;>>>S OUTARY="^TMP($J,""MAPTEST"")"
+ ;;>>>S @MAPARY@("DATA2")="VALUE2"
+ ;;>>>D MAP^GPLXPATH("GXML",MAPARY,OUTARY)
+ ;;>>?@OUTARY@(6)="VALUE2"
+ ;;><QUEUE>
+ ;;>>>D QUEUE^GPLXPATH("BTLIST","GXML",2,3)
+ ;;>>>D QUEUE^GPLXPATH("BTLIST","GXML",4,5)
+ ;;>>?$P(BTLIST(2),";",2)=4
+ ;;><BUILD>
+ ;;>>>D ZTEST^GPLXPATH("INITXML")
+ ;;>>>D QUERY^GPLXPATH("GXML","//FIRST/SECOND/THIRD/FOURTH","G2")
+ ;;>>>D ZTEST^GPLXPATH("QUEUE")
+ ;;>>>D BUILD^GPLXPATH("BTLIST","G3")
+ ;;><CP>
+ ;;>>>D ZTEST^GPLXPATH("INITXML")
+ ;;>>>D CP^GPLXPATH("GXML","G2")
+ ;;>>?G2(0)=13
+ ;;><QOPEN>
+ ;;>>>K G2,GBL
+ ;;>>>D ZTEST^GPLXPATH("INITXML")
+ ;;>>>D QOPEN^GPLXPATH("GBL","GXML")
+ ;;>>?$P(GBL(1),";",3)=12
+ ;;>>>D BUILD^GPLXPATH("GBL","G2")
+ ;;>>?G2(G2(0))="</SECOND>"
+ ;;><QOPEN2>
+ ;;>>>K G2,GBL
+ ;;>>>D ZTEST^GPLXPATH("INITXML")
+ ;;>>>D QOPEN^GPLXPATH("GBL","GXML","//FIRST/SECOND")
+ ;;>>?$P(GBL(1),";",3)=11
+ ;;>>>D BUILD^GPLXPATH("GBL","G2")
+ ;;>>?G2(G2(0))="</SECOND>"
+ ;;><QCLOSE>
+ ;;>>>K G2,GBL
+ ;;>>>D ZTEST^GPLXPATH("INITXML")
+ ;;>>>D QCLOSE^GPLXPATH("GBL","GXML")
+ ;;>>?$P(GBL(1),";",3)=13
+ ;;>>>D BUILD^GPLXPATH("GBL","G2")
+ ;;>>?G2(G2(0))="</FIRST>"
+ ;;><QCLOSE2>
+ ;;>>>K G2,GBL
+ ;;>>>D ZTEST^GPLXPATH("INITXML")
+ ;;>>>D QCLOSE^GPLXPATH("GBL","GXML","//FIRST/SECOND/THIRD")
+ ;;>>?$P(GBL(1),";",3)=13
+ ;;>>>D BUILD^GPLXPATH("GBL","G2")
+ ;;>>?G2(G2(0))="</FIRST>"
+ ;;>>?G2(1)="</THIRD>"
+ ;;><INSERT>
+ ;;>>>K G2,GBL,G3,G4
+ ;;>>>D ZTEST^GPLXPATH("INITXML")
+ ;;>>>D QUERY^GPLXPATH("GXML","//FIRST/SECOND/THIRD/FIFTH","G2")
+ ;;>>>D INSERT^GPLXPATH("GXML","G2","//FIRST/SECOND/THIRD")
+ ;;>>>D INSERT^GPLXPATH("G3","G2","//")
+ ;;>>?G2(1)=GXML(9)
+ ;;><REPLACE>
+ ;;>>>K G2,GBL,G3
+ ;;>>>D ZTEST^GPLXPATH("INITXML")
+ ;;>>>D QUERY^GPLXPATH("GXML","//FIRST/SECOND/THIRD/FIFTH","G2")
+ ;;>>>D REPLACE^GPLXPATH("GXML","G2","//FIRST/SECOND")
+ ;;>>?GXML(3)="<FIFTH>"
+ ;;><INSINNER>
+ ;;>>>K GXML,G2,GBL,G3
+ ;;>>>D ZTEST^GPLXPATH("INITXML")
+ ;;>>>D QUERY^GPLXPATH("GXML","//FIRST/SECOND/THIRD","G2")
+ ;;>>>D INSINNER^GPLXPATH("GXML","G2","//FIRST/SECOND/THIRD")
+ ;;>>?GXML(10)="<FIFTH>"
+ ;;><INSINNER2>
+ ;;>>>K GXML,G2,GBL,G3
+ ;;>>>D ZTEST^GPLXPATH("INITXML")
+ ;;>>>D QUERY^GPLXPATH("GXML","//FIRST/SECOND/THIRD","G2")
+ ;;>>>D INSINNER^GPLXPATH("G2","G2")
+ ;;>>?G2(8)="<FIFTH>"
+ ;;></TEST>
