| 1 | TMGDIS1 ;TMG/kst/Custom version of DIS1 ;03/25/06 ; 5/15/10 11:15pm
 | 
|---|
| 2 |         ;;1.0;TMG-LIB;**1**;01/01/06
 | 
|---|
| 3 |         ;----Prior header below ----------
 | 
|---|
| 4 |         ;SFISC/GFT-BUILD DIS-ARRAY ;20MAR2005
 | 
|---|
| 5 |         ;;22.0;VA FileMan;**6,77,97,113,144**;Mar 30, 1999;Build 5
 | 
|---|
| 6 |         ;
 | 
|---|
| 7 | DIS1    ;"Purpose: BUILD DIS-ARRAY
 | 
|---|
| 8 |         KILL DIS0 
 | 
|---|
| 9 |         IF $D(DL)#2 SET DIS0=DL
 | 
|---|
| 10 |         SET DL(0)="" 
 | 
|---|
| 11 |         ;"W ! 
 | 
|---|
| 12 |         IF $D(DE)>1!$D(DJ) GOTO 1 
 | 
|---|
| 13 |         IF DL=1 DO
 | 
|---|
| 14 |         . SET DL(0)=DL(1),DL=0 KILL DL(1)
 | 
|---|
| 15 |         ELSE  DO
 | 
|---|
| 16 |         . FOR P=2:1 SET Y=$P(DL(1),U,P) QUIT:Y=""  DO
 | 
|---|
| 17 |         . . SET Y=U_Y_U
 | 
|---|
| 18 |         . . SET X=2 
 | 
|---|
| 19 |         . . DO 2
 | 
|---|
| 20 |         FOR X=1:1 QUIT:'$D(DL(X))  DO
 | 
|---|
| 21 |         . FOR Y=X+1:1 QUIT:'$D(DL(Y))  DO
 | 
|---|
| 22 |         . . IF DL(X)=DL(Y)!(DL(Y)?.P) DO
 | 
|---|
| 23 |         . . . SET DL=DL-1 
 | 
|---|
| 24 |         . . . KILL DL(Y) 
 | 
|---|
| 25 |         . . . FOR P=Y:1:DL SET DL(P)=DL(P+1) KILL DL(P+1)
 | 
|---|
| 26 | 1       DO ENT 
 | 
|---|
| 27 |         IF '$D(DIAR) DO DIS2^TMGDIS2 GOTO TMGDONE   ;"Sets TMGRESULT
 | 
|---|
| 28 |         DO DIS^TMGDIS2      ;"Sets TMGRESULT
 | 
|---|
| 29 |         GOTO TMGDONE ;"quit from there
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 | ENT     SET DK(0)=DK,Z="D0," 
 | 
|---|
| 32 |         FOR DQ=0:1:DL DO
 | 
|---|
| 33 |         . KILL R,M 
 | 
|---|
| 34 |         . DO  
 | 
|---|
| 35 |         . . N I SET I="" 
 | 
|---|
| 36 |         . . FOR  SET I=$O(DI(I)) QUIT:'I  KILL DI(I)
 | 
|---|
| 37 |         . . QUIT
 | 
|---|
| 38 |         . SET X=0,DQ(0)=DQ,R=-1 
 | 
|---|
| 39 |         . DO MAKE 
 | 
|---|
| 40 |         . SET %=0 
 | 
|---|
| 41 |         . FOR  SET R=$O(R(R)) QUIT:R=""  DO
 | 
|---|
| 42 |         . . IF R(R)<2 SET DIS(R)=DIS(R)_" K D"
 | 
|---|
| 43 |         SET R=-1 
 | 
|---|
| 44 |         QUIT
 | 
|---|
| 45 |         ;
 | 
|---|
| 46 |         ;"----------------------------------------
 | 
|---|
| 47 | 2       IF X'>DL QUIT:DL(X)'[Y  SET X=X+1 GOTO 2
 | 
|---|
| 48 |         SET DL(0)=U_$P(Y,U,2)_DL(0)
 | 
|---|
| 49 |         SET P=P-1
 | 
|---|
| 50 | 22      SET X=X-1
 | 
|---|
| 51 |         SET DQ=$F(DL(X),Y)
 | 
|---|
| 52 |         SET DL(X)=$E(DL(X),1,DQ-$L(Y))_$E(DL(X),DQ,999) 
 | 
|---|
| 53 |         GOTO 22:X>1 
 | 
|---|
| 54 |         QUIT
 | 
|---|
| 55 |         ;
 | 
|---|
| 56 |         ;"----------------------------------------        
 | 
|---|
| 57 | C       SET Y=Y_$S(DV="'":" I 'X",1:" I "_$$XFORM("X")_DV) 
 | 
|---|
| 58 |         DO SD
 | 
|---|
| 59 | MAKE    SET DC=DI
 | 
|---|
| 60 |         SET DQ=+DQ
 | 
|---|
| 61 |         SET X=X+1
 | 
|---|
| 62 |         SET Y=$P(DL(DQ),U,X+1) 
 | 
|---|
| 63 |         QUIT:Y=""
 | 
|---|
| 64 |         SET S=+Y
 | 
|---|
| 65 |         SET DN=$E("'",Y["'")
 | 
|---|
| 66 |         SET Y=DC(S),D=0,DL=0 
 | 
|---|
| 67 |         IF $D(DJ(DQ,S)) DO
 | 
|---|
| 68 |         . SET D=$P(DJ(DQ,S),U,2),DL=+DJ(DQ,S) 
 | 
|---|
| 69 |         . IF $D(DI(DL)) SET DC=DI(DL)
 | 
|---|
| 70 |         SET DQ=DQ(DL)
 | 
|---|
| 71 |         SET Z=$P(Z,",",1,D+D+1)_","
 | 
|---|
| 72 |         SET DU=$P($P(Y,U),",",DL+1,99)
 | 
|---|
| 73 |         SET O=DK(DL)
 | 
|---|
| 74 |         SET DV=DN_$P(Y,U,2) 
 | 
|---|
| 75 |         IF DV?1"''".E SET DV=$E(DV,3,999)
 | 
|---|
| 76 | LEV     SET DL=DL+1
 | 
|---|
| 77 |         SET DN=$S($D(DE(+DQ,X,DL)):DE(+DQ,X,DL),1:1)
 | 
|---|
| 78 |         SET:$G(DI(DL-1))]"" DI(DL)=DI(DL-1)
 | 
|---|
| 79 |         IF DU<0,$D(DY(-DU)) GOTO X
 | 
|---|
| 80 |         IF DU<0 SET Y=DA(-DU) GOTO C
 | 
|---|
| 81 |         SET N=$P(^DD(O,+DU,0),U,4)
 | 
|---|
| 82 |         SET DE=$P(N,";",1)
 | 
|---|
| 83 |         SET Y=$P(N,";",2) 
 | 
|---|
| 84 |         IF Y="" SET Y="D"_D GOTO M
 | 
|---|
| 85 |         IF $P(^(0),U,2)["C" SET Y=$P(^(0),U,5,99) GOTO C
 | 
|---|
| 86 |         SET:+DE'=DE DE=""""_DE_""""
 | 
|---|
| 87 |         SET Z=Z_DE
 | 
|---|
| 88 |         SET E="$G("_DC_Z_"))" 
 | 
|---|
| 89 |         IF Y SET Y="$P("_E_",U,"_Y_")" GOTO M
 | 
|---|
| 90 |         IF Y'=0 SET Y=$E(Y,2,99) SET:$P(Y,",",2)=+Y Y=+Y SET Y="$E("_E_","_Y_")" GOTO M
 | 
|---|
| 91 |         FOR Y=65:1 SET M=DQ_$C(Y) QUIT:'$D(DIS(M))
 | 
|---|
| 92 |         SET D=D+1
 | 
|---|
| 93 |         SET Y="S D"_D_"=+$O("_DC_Z_",0)) X DIS("""_M_""") I $T" 
 | 
|---|
| 94 |         DO SD
 | 
|---|
| 95 |         IF $D(DIAR) SET DIAR(DIARF,DQ)="X DIS("""_M_"A"")"
 | 
|---|
| 96 |         SET DQ=M
 | 
|---|
| 97 |         SET DIS(DQ)="F  X DIS("""_DQ_"A"") X:D"_D_"'>0 ""IF "_(DN=3)_""" Q:"_$E("'",DN>1)_"$T  S D"_D_"=$O("_DC_Z_",D"_D_")) Q:D"_D_"'>0"
 | 
|---|
| 98 | WP      SET DQ=DQ_"A"
 | 
|---|
| 99 |         SET DQ(DL)=DQ 
 | 
|---|
| 100 |         IF DU'["," SET DIS(DQ)="I "_$$XFORM("$G(^(D"_D_",0))")_DV GOTO MAKE
 | 
|---|
| 101 |         SET O=+$P(^(0),U,2),DK(DL)=O,Z=Z_",D"_D_","
 | 
|---|
| 102 | N       SET DU=$P(DU,",",2,99) 
 | 
|---|
| 103 |         GOTO LEV
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 | M        DO  SET Y=Y_DV DO SD GOTO MAKE
 | 
|---|
| 106 | VARPOINT .IF $P(^DD(O,+DU,0),U,2)["V" SET Y="I "_$$XFORM("$$EXTERNAL^DIDU("_O_","_+DU_","""","_Y_")") QUIT
 | 
|---|
| 107 | OUTX     .IF $D(^(2)),$P(^(0),U,2)'["D",DV'["=" SET M=0,Y="S Y="_Y_" "_$$OVFL(^(2))_" I "_$$XFORM("Y") QUIT  ;**GFT 144
 | 
|---|
| 108 | SET      .IF $D(DIS(U,S)) SET Y="S Y="_Y_" I $S(Y="""":"""",$D(DIS(U,"_S_",Y)):DIS(U,"_S_",Y),1:"""")" QUIT
 | 
|---|
| 109 |          .SET M=Y,Y="I "_$$XFORM(Y)
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 | XFORM(Y) IF '$D(DIS("XFORM",S)) QUIT Y
 | 
|---|
| 112 |          QUIT $P(DIS("XFORM",S),";")_Y_$P(DIS("XFORM",S),";",2)
 | 
|---|
| 113 |  ;
 | 
|---|
| 114 | SD      IF $D(R(DQ)),R(DQ)>1 SET Y="K D "_Y_" S:$T D=1"
 | 
|---|
| 115 |         IF '$D(DIS(DQ)) SET DIS(DQ)=Y QUIT
 | 
|---|
| 116 |         IF $L($G(DL(DQ)))*8+$L(DIS(DQ))+$L(Y)>180 DO
 | 
|---|
| 117 |         . SET Y=$$OVFL(Y)_" I $T" 
 | 
|---|
| 118 |         . IF $L(Y)+$L(DIS(DQ))>235 SET DIS(DQ)=$$OVFL(DIS(DQ))_" IF "
 | 
|---|
| 119 |         SET DIS(DQ)=DIS(DQ)_" "_Y 
 | 
|---|
| 120 |         QUIT
 | 
|---|
| 121 |  ;
 | 
|---|
| 122 | OVFL(Y) N I,%
 | 
|---|
| 123 |         FOR I=1:1 SET %=DQ_"@"_IF QUIT:'$D(DIS(%))
 | 
|---|
| 124 |         SET DIS(%)=Y 
 | 
|---|
| 125 |         QUIT "X DIS("""_%_""")"
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 | X       SET D=DY(-DU),O=+D,DC=U_$P(D,U,2) FOR %=66:1 SET M=DQ_$C(%) QUIT:'$D(DIS(M))
 | 
|---|
| 128 |         IF $P(D,U,3) DO
 | 
|---|
| 129 |         . SET M=DQ_U_$P(D,U,3)
 | 
|---|
| 130 |         . SET Y="S DIXX="""_M_""" "_$P("X ""I 0"" ^I 1 ",U,DN=3+1)_$P(D,U,4,99)_" I $T"
 | 
|---|
| 131 |         . SET R(M)=DN
 | 
|---|
| 132 |         ELSE  SET Y=$P(D,U,4,99)_" S D0=D(0) X DIS("""_M_""") S D0=I(0,0) I $T"
 | 
|---|
| 133 |         DO SD 
 | 
|---|
| 134 |         SET DQ=M
 | 
|---|
| 135 |         SET DI(DL)=DC
 | 
|---|
| 136 |         SET DK(DL)=+D
 | 
|---|
| 137 |         SET DQ(DL)=DQ
 | 
|---|
| 138 |         SET D=0
 | 
|---|
| 139 |         SET Z="D0," 
 | 
|---|
| 140 |         GOTO N
 | 
|---|
| 141 |         ;
 | 
|---|
| 142 | TMGDONE QUIT
 | 
|---|