[613] | 1 | DITMGMRG ;SFISC/EDE(OHPRD)-RELINK/MERGE TWO ENTRIES BELOW POINTED TO FILE ;2/24/94 16:10
|
---|
| 2 | ;;22.0;VA FileMan;;Mar 30, 1999
|
---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | ; Merge two entries below pointed to file. See ^DITMDOC.
|
---|
| 6 | ;
|
---|
| 7 | START ;
|
---|
| 8 | D ^DITMGM1
|
---|
| 9 | I 'DITMGMRG("GO") D EOJ K DITMGMRG Q
|
---|
| 10 | D EN
|
---|
| 11 | K DITMGMRG
|
---|
| 12 | Q
|
---|
| 13 | ;
|
---|
| 14 | EN ; EXTERNAL ENTRY POINT
|
---|
| 15 | D INIT^DITMGMRI
|
---|
| 16 | Q:$D(DITMGMQF)
|
---|
| 17 | D STACK
|
---|
| 18 | S:$D(DITMGMRG("NOTALK")) DITMGM2("NOTALK")=1
|
---|
| 19 | D ^DITMGM2 K DITMGM2("NOTALK")
|
---|
| 20 | K ^UTILITY("DITMGMRG",$J)
|
---|
| 21 | W:'$D(DITMGMRG("NOTALK")) !!,"Merge complete",!!
|
---|
| 22 | D EOJ
|
---|
| 23 | Q
|
---|
| 24 | ;
|
---|
| 25 | STACK ;STACK ALL FILES POINTING TO POINTED TO FILE AND IF .01 FIELD
|
---|
| 26 | ;POINTING AND DINUM, FILES POINTING TO POINTING FILE, AND SO ON.
|
---|
| 27 | ;
|
---|
| 28 | W:'$D(DITMGMRG("NOTALK")) !!,"Gathering files and checking 'PT' nodes"
|
---|
| 29 | NEW DITMGFLE,DITMGPFL,DITMGPFD,DITMSKP
|
---|
| 30 | K ^UTILITY("DITMGMRG",$J)
|
---|
| 31 | S DITMGFLE=DITMGMRG("FILE")
|
---|
| 32 | D FILES
|
---|
| 33 | Q
|
---|
| 34 | ;
|
---|
| 35 | FILES ; CALLED RECURSIVELY
|
---|
| 36 | D PTCHK
|
---|
| 37 | F DITMGPFL=0:0 S DITMGPFL=$O(^DD(DITMGFLE,0,"PT",DITMGPFL)) Q:DITMGPFL'=+DITMGPFL D I 'DITMSKP D FIELDS
|
---|
| 38 | . S DITMSKP=0
|
---|
| 39 | . I $D(DITMGMRG("EXCLUDE",DITMGPFL)) S DITMSKP=1 Q
|
---|
| 40 | . ;I DITMGFLE=DITMGPFL S DITMSKP=1 Q
|
---|
| 41 | . Q:'$D(DITMGMRG("PACKAGE"))
|
---|
| 42 | . I DITMGMRG("PACKAGE") S:'$D(DITMGMRG("PACKAGE",DITMGPFL)) DITMSKP=1 Q
|
---|
| 43 | . Q
|
---|
| 44 | Q
|
---|
| 45 | ;
|
---|
| 46 | FIELDS ;
|
---|
| 47 | ;W:'$D(DITMGMRG("NOTALK")) "f"
|
---|
| 48 | F DITMGPFD=0:0 S DITMGPFD=$O(^DD(DITMGFLE,0,"PT",DITMGPFL,DITMGPFD)) Q:DITMGPFD'=+DITMGPFD D
|
---|
| 49 | . S ^UTILITY("DITMGMRG",$J,DITMGPFL,DITMGPFD)=DITMGFLE
|
---|
| 50 | . ;W:'$D(DITMGMRG("NOTALK")) $S($D(^DD(DITMGPFL,0,"UP")):"s",1:".")
|
---|
| 51 | . I DITMGPFD=.01,'$D(^DD(DITMGPFL,0,"UP")),$P(^DD(DITMGPFL,.01,0),U,5,99)["DINUM" D RECURSE
|
---|
| 52 | Q
|
---|
| 53 | ;
|
---|
| 54 | RECURSE ;
|
---|
| 55 | ;W:'$D(DITMGMRG("NOTALK")) "d"
|
---|
| 56 | NEW DITMGFLE
|
---|
| 57 | S DITMGFLE=DITMGPFL
|
---|
| 58 | NEW DITMGPFL,DITMGPFD
|
---|
| 59 | D FILES
|
---|
| 60 | Q
|
---|
| 61 | ;
|
---|
| 62 | PTCHK ; MAKE SURE "PT" CORRECT
|
---|
| 63 | I '$D(DITMGMRG("NOTALK")) ;W $S(DITMGMRG("FILE")=DITMGFLE:"",1:"[")
|
---|
| 64 | E S DITMU4("NOTALK")=1
|
---|
| 65 | S DITMU4FI=DITMGFLE
|
---|
| 66 | F DITMU4PF=0:0 S DITMU4PF=$O(^DD(DITMU4FI,0,"PT",DITMU4PF)) Q:DITMU4PF="" F DITMU4PD=0:0 S DITMU4PD=$O(^DD(DITMU4FI,0,"PT",DITMU4PF,DITMU4PD)) Q:DITMU4PD="" D CHKIT^DITMU4
|
---|
| 67 | K DITMU4FI,DITMU4L,DITMU4PF,DITMU4PD,DITMU4X,DITMU4("NOTALK")
|
---|
| 68 | ;I DITMGMRG("FILE")'=DITMGFLE,'$D(DITMGMRG("NOTALK")) W "]"
|
---|
| 69 | Q
|
---|
| 70 | ;
|
---|
| 71 | EOJ ;
|
---|
| 72 | K X,Y
|
---|
| 73 | K %,DIPGM
|
---|
| 74 | I $D(DITMGMQF) S DITMGMRG("QFLG")=DITMGMQF
|
---|
| 75 | K DITMGMF,DITMGMFG,DITMGMFL,DITMGMQF,DITMGMT
|
---|
| 76 | K AUPNDAYS,AUPNDOB,AUPNDOD,AUPNPAT,AUPNSEX
|
---|
| 77 | I $D(ZTQUEUED) S ZTREQ="@" Q
|
---|
| 78 | I $D(ZTSK) K ^%ZTSK(ZTSK),ZTSK Q ; old Kernel
|
---|
| 79 | I '$D(DITMGMRG("NOTALK")),$D(DITMGMRG("ERROR")) D EOJ2 K DITMGMRG("ERROR")
|
---|
| 80 | Q
|
---|
| 81 | ;
|
---|
| 82 | EOJ2 ; List errors
|
---|
| 83 | W !!,"The following errors occurred during the merge: ",!
|
---|
| 84 | F %=0:0 S %=$O(DITMGMRG("ERROR",%)) Q:%'=+% W !,DITMGMRG("ERROR",%)
|
---|
| 85 | W !
|
---|
| 86 | K %
|
---|
| 87 | Q
|
---|