[613] | 1 | DDBRU2 ;SFISC/DCL-BROWSE LOCAL OR GLOBAL ARRAY DDBROOT DESCENDANTS ;12:54 PM 20 Nov 1994
|
---|
| 2 | ;;22.0;VA FileMan;;Mar 30, 1999
|
---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | Q
|
---|
| 5 | EN N DDBNCC G CNTNU
|
---|
| 6 | ROOT(DDBNCC,DDBRTOP,DDBRBOT) ; Browse Array Root Descendants ; DDBNCC node count check (default=1000)
|
---|
| 7 | CNTNU K ^TMP("DDBARD",$J),^TMP("DDBARDL",$J)
|
---|
| 8 | ;W !!,"Enter Root> " R DDBROOT W !!
|
---|
| 9 | ;I DDBROOT="^"!(DDBROOT="") Q
|
---|
| 10 | D ARSEL
|
---|
| 11 | I $O(^TMP("DDBARDL",$J,""))']"" Q
|
---|
| 12 | N DDBARDX,N,X
|
---|
| 13 | S DDBARDX="",DDBNCC=$G(DDBNCC,1000)
|
---|
| 14 | F S DDBARDX=$O(^TMP("DDBARDL",$J,DDBARDX)) Q:DDBARDX="" S X=^(DDBARDX) D
|
---|
| 15 | .S N=$O(^TMP("DDBARD",$J,""),-1)+1
|
---|
| 16 | .S ^TMP("DDBARDL",$J,DDBARDX)=$NA(^TMP("DDBARD",$J,N))
|
---|
| 17 | .W !,"...loading ",DDBARDX
|
---|
| 18 | .D BLD(DDBNCC,X,N)
|
---|
| 19 | .Q
|
---|
| 20 | W !,"...building ""Current List"" tables"
|
---|
| 21 | D DOCLIST^DDBR("^TMP(""DDBARDL"",$J)","",$G(DDBRTOP),$G(DDBRBOT))
|
---|
| 22 | END K ^TMP("DDBARD",$J),^TMP("DDBARDL",$J)
|
---|
| 23 | Q
|
---|
| 24 | ;
|
---|
| 25 | BLD(DDBNCC,DDBROOT,DDBN) ;build structures
|
---|
| 26 | N DDBMAXL,DDBR1X
|
---|
| 27 | S DDBMAXL=$G(DDBMAXL,255)
|
---|
| 28 | S DDBNCC=$G(DDBNCC,1000)
|
---|
| 29 | S DDBR1X=$$OREF^DIQGU(DDBROOT)
|
---|
| 30 | N DDBR1,DDBR1A,DDBR1B,DDBR1I,DDBR1Q,DDBI,DDBII,DDBX,DDBX1,DDBX1L,DDBX2,DDBX2L,DDBX3,DDBX3L,DDBXT
|
---|
| 31 | S DDBR1A=$$R^%RCR(DDBR1X),DDBR1Q=""""""
|
---|
| 32 | I $L(DDBR1A,",")>1,$P(DDBR1A,",",$L(DDBR1A,","))]"" S DDBR1Q=$P(DDBR1A,",",$L(DDBR1A,",")),$P(DDBR1A,",",$L(DDBR1A,","))=""
|
---|
| 33 | S DDBR1=DDBR1A_DDBR1Q_")",DDBR1B=$L(DDBR1A)+1,DDBX2=" = ",DDBX2L=$L(DDBX2),DDBII=0
|
---|
| 34 | F DDBI=1:1 S DDBR1=$Q(@DDBR1) Q:$P(DDBR1,DDBR1A)]""!(DDBR1="") D Q:DDBII
|
---|
| 35 | .I '(DDBI#DDBNCC) D
|
---|
| 36 | ..W $C(7),!,DDBROOT,!,"Node count: ",DDBI,!!,"Do you wish to continue //Yes "
|
---|
| 37 | ..R DDBX:$G(DTIME,300) W !!
|
---|
| 38 | ..I DDBX=""!($TR($E(DDBX),"y","Y")="Y") Q
|
---|
| 39 | ..S DDBII=1
|
---|
| 40 | ..Q
|
---|
| 41 | .S DDBX1=DDBR1
|
---|
| 42 | .S DDBX3=@DDBR1
|
---|
| 43 | .S DDBX1L=$L(DDBX1),DDBX3L=$L(DDBX3)
|
---|
| 44 | .S DDBXT=DDBX1L+DDBX2L+DDBX3L
|
---|
| 45 | .I DDBXT'>DDBMAXL S ^TMP("DDBARD",$J,DDBN,DDBI)=DDBX1_DDBX2_DDBX3 Q
|
---|
| 46 | .I DDBX1L+DDBX2L'>DDBMAXL D Q
|
---|
| 47 | ..S ^TMP("DDBARD",$J,DDBN,DDBI)=DDBX1_DDBX2_$E(DDBX3,1,DDBMAXL-(DDBX1L+DDBX2L))
|
---|
| 48 | ..S DDBI=DDBI+1
|
---|
| 49 | ..S ^TMP("DDBARD",$J,DDBN,DDBI)=$E(DDBX3,(DDBMAXL-(DDBX1L+DDBX2L)+1),DDBMAXL)
|
---|
| 50 | ..Q
|
---|
| 51 | .Q
|
---|
| 52 | Q
|
---|
| 53 | ;
|
---|
| 54 | ARSEL ; Array Root Select
|
---|
| 55 | N DDBERR,DDBRLVD,X,Y
|
---|
| 56 | W !!
|
---|
| 57 | SEL R !,"Select Root> ",X:$G(DTIME,300)
|
---|
| 58 | I X="" Q
|
---|
| 59 | I X="^" K ^TMP("DDBARDL",$J) Q
|
---|
| 60 | I $E(X)="?" D HLP G SEL
|
---|
| 61 | I X="^TMP"!(X="^TMP(")!($E(X,1,14)="^TMP(""DDBARDL""") D HLP G SEL
|
---|
| 62 | S Y=$$OREF^DIQGU(X),DDBERR=0,Y=$$R(Y) I DDBERR W $C(7)," ...INVALID",!!,"'",X,"' CAN NOT BE RESOLVED",! G SEL
|
---|
| 63 | S DDBRLVD=$$CREF^DIQGU(Y)
|
---|
| 64 | S Y=$$CREF^DIQGU(X)
|
---|
| 65 | I $D(@Y)'>9 S Y=$X W $C(7)," ...INVALID",!!,"'",X,"' HAS NO DESCENDANTS",! G SEL
|
---|
| 66 | I DDBRLVD'=Y S X=X_" ["_DDBRLVD_"]"
|
---|
| 67 | S ^TMP("DDBARDL",$J,X_" | DESCENDANTS |")=Y
|
---|
| 68 | G SEL
|
---|
| 69 | ;
|
---|
| 70 | HLP ;
|
---|
| 71 | W !!,"Enter a valid local or global array root"
|
---|
| 72 | W !,"Can not be ^TMP, ^TMP( or ^TMP(""DDBARDL""",!
|
---|
| 73 | Q
|
---|
| 74 | R(%R) ;
|
---|
| 75 | N %C,%F,%G,%I,%R1,%R2
|
---|
| 76 | S %R1=$P(%R,"(")_"("
|
---|
| 77 | I $E(%R1)="^" S %R2=$E($P(%R1,"("),2,99) D Q:$G(DDBERR) %R
|
---|
| 78 | .I $L(%R2)'>0 S DDBERR=1 Q
|
---|
| 79 | .I %R2="%" Q
|
---|
| 80 | .I $E(%R2)="%" D Q
|
---|
| 81 | ..I $E(%R2,2,99)?.E1P.E S DDBERR=1 Q
|
---|
| 82 | ..Q
|
---|
| 83 | .I %R2?1N.E S DDBERR=1 Q
|
---|
| 84 | .I %R2?.E1P.E S DDBERR=1 Q
|
---|
| 85 | .Q
|
---|
| 86 | .;I %R2'="%"&(%R2'?.A) S DDBERR=1 Q %R
|
---|
| 87 | I $E(%R1)'="^" S %R2=$P(%R1,"(") D Q:$G(DDBERR) %R
|
---|
| 88 | .I $L(%R2)'>0 S DDBERR=1 Q
|
---|
| 89 | .I %R2="%" Q
|
---|
| 90 | .I $E(%R2)="%" D Q
|
---|
| 91 | ..I $E(%R2,2,99)?.E1P.E S DDBERR=1 Q
|
---|
| 92 | ..Q
|
---|
| 93 | .I %R2?1N.E S DDBERR=1 Q
|
---|
| 94 | .I %R2?.E1P.E S DDBERR=1 Q
|
---|
| 95 | .Q
|
---|
| 96 | .;,$E(%R1)'="%",$E(%R1)'?.A S DDBERR=1 Q %R
|
---|
| 97 | I $E(%R1)="^" S %R2=$P($Q(@(%R1_""""")")),"(")_"(" S:$P(%R2,"(")]"" %R1=%R2
|
---|
| 98 | S %R2=$P($E(%R,1,($L(%R)-($E(%R,$L(%R))=")"))),"(",2,99)
|
---|
| 99 | S %C=$L(%R2,","),%F=1 F %I=1:1 Q:%I'<%C S %G=$P(%R2,",",%F,%I) Q:%G="" I ($L(%G,"(")=$L(%G,")")&($L(%G,"""")#2))!(($L(%G,"""")#2)&($E(%G)="""")&($E(%G,$L(%G))="""")) D
|
---|
| 100 | .S %G=$$S(%G),$P(%R2,",",%F,%I)=%G,%F=%F+$L(%G,","),%I=%F-1,%C=%C+($L(%G,",")-1)
|
---|
| 101 | .Q
|
---|
| 102 | S DDBERR=%F'=%C
|
---|
| 103 | Q %R1_%R2
|
---|
| 104 | S(%Z) ;
|
---|
| 105 | I $G(%Z)']"" Q ""
|
---|
| 106 | I $E(%Z)'="""",$L(%Z,"E")=2,+$P(%Z,"E")=$P(%Z,"E"),+$P(%Z,"E",2)=$P(%Z,"E",2) Q +%Z
|
---|
| 107 | I +%Z=%Z Q %Z
|
---|
| 108 | I $E(%Z)?1N,+%Z'=%Z S DDBERR=1 Q %Z
|
---|
| 109 | I %Z="""""" Q ""
|
---|
| 110 | I $E(%Z)="""" Q %Z
|
---|
| 111 | I $E(%Z)'?1A,"%$+@"'[$E(%Z) S DDBERR=1 Q %Z
|
---|
| 112 | I "+$"[$E(%Z) X "S %Z="_%Z Q $$Q(%Z)
|
---|
| 113 | I $D(@%Z) Q $$Q(@%Z)
|
---|
| 114 | S DDBERR=1 ;Unable to resolve a variable within a reference
|
---|
| 115 | Q %Z
|
---|
| 116 | Q(%Z) ;
|
---|
| 117 | S %Z(%Z)="",%Z=$Q(%Z("")) Q $E(%Z,4,$L(%Z)-1)
|
---|