| 1 | DITMU4 ;SFISC/EDE(OHPRD)-FIX ALL "PT" NODES ;
 | 
|---|
| 2 |  ;;22.0;VA FileMan;;Mar 30, 1999
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ; This routine fixes all "PT" nodes for files 1 through the
 | 
|---|
| 6 |  ; highest file number in the current UCI.
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 | START ;
 | 
|---|
| 9 |  W:'$D(DITMU4("NOTALK")) !!,"This routine insures the ""PT"" node of each FileMan file is correct.",!
 | 
|---|
| 10 |  W:'$D(DITMU4("NOTALK")) !!,"Now checking false positives.",!
 | 
|---|
| 11 |  S U="^"
 | 
|---|
| 12 |  S DITMU4FI=.99999999 F DITMU4L=0:0 S DITMU4FI=$O(^DD(DITMU4FI)) Q:DITMU4FI'=+DITMU4FI  I $D(^DD(DITMU4FI,0,"PT")) W:'$D(DITMU4("NOTALK")) !,DITMU4FI D FPOS
 | 
|---|
| 13 |  W:'$D(DITMU4("NOTALK")) !!,"Now checking false negatives.",!
 | 
|---|
| 14 |  D FNEG
 | 
|---|
| 15 |  K DITMU4FI,DITMU4L
 | 
|---|
| 16 |  W:'$D(DITMU4("NOTALK")) !!,"DONE",!
 | 
|---|
| 17 |  Q
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 | FPOS ; CHECK FOR FALSE POSITIVES
 | 
|---|
| 20 |  S DITMU4PF="" F DITMU4L=0:0 S DITMU4PF=$O(^DD(DITMU4FI,0,"PT",DITMU4PF)) Q:DITMU4PF=""  S DITMU4PD="" F DITMU4L=0:0 S DITMU4PD=$O(^DD(DITMU4FI,0,"PT",DITMU4PF,DITMU4PD)) Q:DITMU4PD=""  D CHKIT
 | 
|---|
| 21 |  K DITMU4PF,DITMU4PD,DITMU4X
 | 
|---|
| 22 |  Q
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 | CHKIT ;
 | 
|---|
| 25 |  W:'$D(DITMU4("NOTALK")) "."
 | 
|---|
| 26 |  I '$D(^DD(DITMU4PF)) W:'$D(DITMU4("NOTALK")) "|" K ^DD(DITMU4FI,0,"PT",DITMU4PF) Q
 | 
|---|
| 27 |  I '$D(^DD(DITMU4PF,DITMU4PD,0)) W:'$D(DITMU4("NOTALK")) "|" K ^DD(DITMU4FI,0,"PT",DITMU4PF,DITMU4PD) Q
 | 
|---|
| 28 |  S DITMU4X=$P(^DD(DITMU4PF,DITMU4PD,0),U,2)
 | 
|---|
| 29 |  I DITMU4X["P",DITMU4X[DITMU4FI Q
 | 
|---|
| 30 |  I DITMU4X["V",$D(^DD(DITMU4PF,DITMU4PD,"V","B",DITMU4FI)) Q
 | 
|---|
| 31 |  W:'$D(DITMU4("NOTALK")) "|" K ^DD(DITMU4FI,0,"PT",DITMU4PF,DITMU4PD)
 | 
|---|
| 32 |  Q
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 | FNEG ; CHECK FOR FALSE NEGATIVES
 | 
|---|
| 35 |  S DITMU4FI=.99999999 F DITMU4L=0:0 S DITMU4FI=$O(^DD(DITMU4FI)) Q:DITMU4FI'=+DITMU4FI  W:'$D(DITMU4("NOTALK")) !,DITMU4FI S DITMU4FD=0 F DITMU4L=0:0 S DITMU4FD=$O(^DD(DITMU4FI,DITMU4FD)) Q:DITMU4FD'=+DITMU4FD  D:$D(^(DITMU4FD,0))#2 PTRCHK
 | 
|---|
| 36 |  K DITMU4FI,DITMU4FD,DITMU4X,DITMU4I
 | 
|---|
| 37 |  Q
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 | PTRCHK ;
 | 
|---|
| 40 |  S DITMU4X=$P(^(0),U,2)
 | 
|---|
| 41 |  I DITMU4X["V" D PTRCHK2 Q
 | 
|---|
| 42 |  Q:DITMU4X'["P"
 | 
|---|
| 43 |  F DITMU4I=1:1:$L(DITMU4X)+1 Q:$E(DITMU4X,DITMU4I)?1N
 | 
|---|
| 44 |  Q:DITMU4I>$L(DITMU4X)
 | 
|---|
| 45 |  S DITMU4X=$E(DITMU4X,DITMU4I,999),DITMU4X=+DITMU4X
 | 
|---|
| 46 |  Q:'DITMU4X
 | 
|---|
| 47 |  Q:DITMU4X<1  ;*** DOES NOT MESS WITH FILE NUMBERS < 1 ***
 | 
|---|
| 48 |  W:'$D(DITMU4("NOTALK")) "."
 | 
|---|
| 49 |  Q:'$D(^DIC(DITMU4X))
 | 
|---|
| 50 |  Q:'$D(^DD(DITMU4X,0))
 | 
|---|
| 51 |  I '$D(^DD(DITMU4X,0,"PT",DITMU4FI,DITMU4FD)) W "|" S ^(DITMU4FD)=""
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 | PTRCHK2 ; VARIABLE POINTER CHECK
 | 
|---|
| 55 |  S DITMU4X="" F DITMU4L=0:0 S DITMU4X=$O(^DD(DITMU4FI,DITMU4FD,"V","B",DITMU4X)) Q:DITMU4X=""  I '$D(^DD(DITMU4X,0,"PT",DITMU4FI,DITMU4FD)) W:'$D(DITMU4("NOTALK")) "|" S ^(DITMU4FD)=""
 | 
|---|
| 56 |  Q
 | 
|---|