| 1 | XBRXREF2 ; IHS/ADC/GTH - INITIALIZATION ROUTINES FOR DRIVER ; [ 02/07/97 3:02 PM ]
|
---|
| 2 | ;;4.0;XB;;Jul 20, 2009;Build 2
|
---|
| 3 | ;
|
---|
| 4 | ; Part of XBRXREF
|
---|
| 5 | ;
|
---|
| 6 | START ;
|
---|
| 7 | W !!,"Invalid entry point!",!
|
---|
| 8 | S XBRXREF("QFLG")=99
|
---|
| 9 | Q
|
---|
| 10 | ;
|
---|
| 11 | INIT ;EP - INITIALIZATION
|
---|
| 12 | S U="^"
|
---|
| 13 | W !!,"RE-INDEX selected cross-references.",!
|
---|
| 14 | S XBRXREF("QFLG")=0
|
---|
| 15 | KILL ^TMP("XBRXREF",$J)
|
---|
| 16 | Q
|
---|
| 17 | ;
|
---|
| 18 | GETFILE ;EP - GET FILE TO BE RE-XREFED
|
---|
| 19 | S DIC="^DIC(",DIC(0)="AEMQ"
|
---|
| 20 | D ^DIC
|
---|
| 21 | KILL DIC
|
---|
| 22 | I Y<0 S XBRXREF("QFLG")=1 Q
|
---|
| 23 | S XBRXREF("FILE")=+Y
|
---|
| 24 | S XBRXREF("GBL")=^DIC(XBRXREF("FILE"),0,"GL")
|
---|
| 25 | Q
|
---|
| 26 | ;
|
---|
| 27 | BLDXRT ;EP - BUILD XREF TABLE
|
---|
| 28 | F XBRXREF("L")=0:0 D GETFIELD Q:XBRXREF("FIELD")=""
|
---|
| 29 | S:'$O(^TMP("XBRXREF",$J,"")) XBRXREF("QFLG")=1
|
---|
| 30 | Q
|
---|
| 31 | ;
|
---|
| 32 | GETFIELD ; GET FIELD TO XREF
|
---|
| 33 | W !
|
---|
| 34 | S XBRXREF("FIELD")=""
|
---|
| 35 | S DIC="^DD("_XBRXREF("FILE")_",",DIC(0)="AEMQ"
|
---|
| 36 | D ^DIC
|
---|
| 37 | KILL DIC
|
---|
| 38 | Q:Y<0
|
---|
| 39 | S XBRXREF("FIELD")=+Y
|
---|
| 40 | S X=$P(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),0),U,4)
|
---|
| 41 | S XBRXREF("NODE")=$P(X,";",1)
|
---|
| 42 | S XBRXREF("PIECE")=$P(X,";",2)
|
---|
| 43 | I XBRXREF("PIECE")=0 D GFRCR Q
|
---|
| 44 | I XBRXREF("NODE")=" " W !!,"Computed fields do not have xrefs." Q
|
---|
| 45 | I $D(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),1)),$O(^(1,0)) D XREFS Q
|
---|
| 46 | W !!,"This field has no xrefs!"
|
---|
| 47 | Q
|
---|
| 48 | ;
|
---|
| 49 | GFRCR ; GET FIELD RECURSION
|
---|
| 50 | S XBRXREF("SAVE FILE")=XBRXREF("FILE"),XBRXREF("SAVE FIELD")=XBRXREF("FIELD")
|
---|
| 51 | F Y="XBRXREF" S %RCR(Y)=""
|
---|
| 52 | S XBRXREF("FILE")=+$P(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),0),U,2)
|
---|
| 53 | S %RCR="RECURSE^XBRXREF2"
|
---|
| 54 | D STORLIST^%RCR
|
---|
| 55 | S XBRXREF("FILE")=XBRXREF("SAVE FILE"),XBRXREF("FIELD")=XBRXREF("SAVE FIELD")
|
---|
| 56 | Q
|
---|
| 57 | ;
|
---|
| 58 | RECURSE ;
|
---|
| 59 | F XBRXREF("L")=0:0 D GETFIELD Q:XBRXREF("FIELD")=""
|
---|
| 60 | Q
|
---|
| 61 | ;
|
---|
| 62 | XREFS ; DISPLAY XREFS FOR FIELD
|
---|
| 63 | W !,"This field has the following xrefs. Select by number:"
|
---|
| 64 | S XBRXREF("XREF")=0
|
---|
| 65 | F XBRXREF("L")=0:0 S XBRXREF("XREF")=$O(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),1,XBRXREF("XREF"))) Q:XBRXREF("XREF")="" D XREFS2
|
---|
| 66 | F XBRXREF("L")=0:0 D GETXREF Q:XBRXREF("XREF")=""
|
---|
| 67 | Q
|
---|
| 68 | ;
|
---|
| 69 | XREFS2 ; DISPLAY XREFS
|
---|
| 70 | S X=$P(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),1,XBRXREF("XREF"),0),U,2)
|
---|
| 71 | S Y=""
|
---|
| 72 | S:X="" Y="TRIGGER"
|
---|
| 73 | I Y="",'$F(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),1,XBRXREF("XREF"),1),"("""_X_"""") S Y="SUB-FILE LEVEL"
|
---|
| 74 | W !,XBRXREF("XREF"),?10,X,?20,Y
|
---|
| 75 | Q
|
---|
| 76 | ;
|
---|
| 77 | GETXREF ; GET XREFS FROM FIELD
|
---|
| 78 | W !
|
---|
| 79 | S XBRXREF("XREF")=""
|
---|
| 80 | S DIC="^DD("_XBRXREF("FILE")_","_XBRXREF("FIELD")_",1,",DIC(0)="AEMQ"
|
---|
| 81 | D ^DIC
|
---|
| 82 | Q:Y<0
|
---|
| 83 | S XBRXREF("XREF")=+Y
|
---|
| 84 | D INFOSAVE
|
---|
| 85 | Q
|
---|
| 86 | ;
|
---|
| 87 | INFOSAVE ; GET XREF/NODE/PIECE INFO AND SAVE
|
---|
| 88 | S X=$P(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),1,XBRXREF("XREF"),0),U,2)
|
---|
| 89 | I X="" W !!,*7,"Sorry, I don't do TRIGGERS!" Q
|
---|
| 90 | I '$F(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),1,XBRXREF("XREF"),1),"("""_X_"""") W !!,*7,"Sorry, I only do xrefs at the file level!" Q
|
---|
| 91 | S ^TMP("XBRXREF",$J,XBRXREF("FILE"),XBRXREF("FIELD"),XBRXREF("XREF"))=X
|
---|
| 92 | Q
|
---|
| 93 | ;
|
---|
| 94 | CONFIRM ;EP - GET USER CONFIRMATION
|
---|
| 95 | W !!,"The ",$P(^DIC(XBRXREF("FILE"),0),U,1)," file contains ",$P(@(XBRXREF("GBL")_"0)"),U,4)," entries. The following xrefs will be",!,"killed and reset by the specified file or sub-file, and field:",!
|
---|
| 96 | S XBRXREF("FILE")=""
|
---|
| 97 | F XBRXREF("L")=0:0 S XBRXREF("FILE")=$O(^TMP("XBRXREF",$J,XBRXREF("FILE"))) Q:XBRXREF("FILE")="" D CONFIRM2
|
---|
| 98 | R !!,"Do you want to continue (Y/N) Y//",X:$G(DTIME,999)
|
---|
| 99 | S:"Yy"'[$E(X) XBRXREF("QFLG")=1
|
---|
| 100 | Q
|
---|
| 101 | ;
|
---|
| 102 | CONFIRM2 ;
|
---|
| 103 | S XBRXREF("FIELD")=""
|
---|
| 104 | F XBRXREF("L")=0:0 S XBRXREF("FIELD")=$O(^TMP("XBRXREF",$J,XBRXREF("FILE"),XBRXREF("FIELD"))) Q:XBRXREF("FIELD")="" D CONFIRM3
|
---|
| 105 | Q
|
---|
| 106 | ;
|
---|
| 107 | CONFIRM3 ;
|
---|
| 108 | S XBRXREF("XREF")=""
|
---|
| 109 | F XBRXREF("L")=0:0 S XBRXREF("XREF")=$O(^TMP("XBRXREF",$J,XBRXREF("FILE"),XBRXREF("FIELD"),XBRXREF("XREF"))) Q:XBRXREF("XREF")="" W !,XBRXREF("FILE"),?15,XBRXREF("FIELD"),?25,^(XBRXREF("XREF"))
|
---|
| 110 | Q
|
---|
| 111 | ;
|
---|