Annotation of freem_fileman/USER/DDBRU2.m, revision 1.1

1.1     ! snw         1: DDBRU2 ;SFISC/DCL-BROWSE LOCAL OR GLOBAL ARRAY DDBROOT DESCENDANTS;12:54 PM  20 Nov 1994;
        !             2:        ;;21.0;VA FileMan;;Dec 28, 1994
        !             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)

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>