Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: XBRXREF2

XBRXREF2.m

Go to the documentation of this file.
XBRXREF2 ; IHS/ADC/GTH - INITIALIZATION ROUTINES FOR DRIVER ; [ 02/07/97   3:02 PM ]
 ;;3.0;IHS/VA UTILITIES;;FEB 07, 1997
 ;
 ; Part of XBRXREF
 ;
START ;
 W !!,"Invalid entry point!",!
 S XBRXREF("QFLG")=99
 Q
 ;
INIT ;EP - INITIALIZATION
 S U="^"
 W !!,"RE-INDEX selected cross-references.",!
 S XBRXREF("QFLG")=0
 KILL ^TMP("XBRXREF",$J)
 Q
 ;
GETFILE ;EP - GET FILE TO BE RE-XREFED
 S DIC="^DIC(",DIC(0)="AEMQ"
 D ^DIC
 KILL DIC
 I Y<0 S XBRXREF("QFLG")=1 Q
 S XBRXREF("FILE")=+Y
 S XBRXREF("GBL")=^DIC(XBRXREF("FILE"),0,"GL")
 Q
 ;
BLDXRT ;EP - BUILD XREF TABLE
 F XBRXREF("L")=0:0 D GETFIELD Q:XBRXREF("FIELD")=""
 S:'$O(^TMP("XBRXREF",$J,"")) XBRXREF("QFLG")=1
 Q
 ;
GETFIELD ; GET FIELD TO XREF
 W !
 S XBRXREF("FIELD")=""
 S DIC="^DD("_XBRXREF("FILE")_",",DIC(0)="AEMQ"
 D ^DIC
 KILL DIC
 Q:Y<0
 S XBRXREF("FIELD")=+Y
 S X=$P(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),0),U,4)
 S XBRXREF("NODE")=$P(X,";",1)
 S XBRXREF("PIECE")=$P(X,";",2)
 I XBRXREF("PIECE")=0 D GFRCR Q
 I XBRXREF("NODE")=" " W !!,"Computed fields do not have xrefs." Q
 I $D(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),1)),$O(^(1,0)) D XREFS Q
 W !!,"This field has no xrefs!"
 Q
 ;
GFRCR ; GET FIELD RECURSION
 S XBRXREF("SAVE FILE")=XBRXREF("FILE"),XBRXREF("SAVE FIELD")=XBRXREF("FIELD")
 F Y="XBRXREF" S %RCR(Y)=""
 S XBRXREF("FILE")=+$P(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),0),U,2)
 S %RCR="RECURSE^XBRXREF2"
 D STORLIST^%RCR
 S XBRXREF("FILE")=XBRXREF("SAVE FILE"),XBRXREF("FIELD")=XBRXREF("SAVE FIELD")
 Q
 ;
RECURSE ;
 F XBRXREF("L")=0:0 D GETFIELD Q:XBRXREF("FIELD")=""
 Q
 ;
XREFS ; DISPLAY XREFS FOR FIELD
 W !,"This field has the following xrefs.  Select by number:"
 S XBRXREF("XREF")=0
 F XBRXREF("L")=0:0 S XBRXREF("XREF")=$O(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),1,XBRXREF("XREF"))) Q:XBRXREF("XREF")=""  D XREFS2
 F XBRXREF("L")=0:0 D GETXREF Q:XBRXREF("XREF")=""
 Q
 ;
XREFS2 ; DISPLAY XREFS
 S X=$P(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),1,XBRXREF("XREF"),0),U,2)
 S Y=""
 S:X="" Y="TRIGGER"
 I Y="",'$F(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),1,XBRXREF("XREF"),1),"("""_X_"""") S Y="SUB-FILE LEVEL"
 W !,XBRXREF("XREF"),?10,X,?20,Y
 Q
 ;
GETXREF ; GET XREFS FROM FIELD
 W !
 S XBRXREF("XREF")=""
 S DIC="^DD("_XBRXREF("FILE")_","_XBRXREF("FIELD")_",1,",DIC(0)="AEMQ"
 D ^DIC
 Q:Y<0
 S XBRXREF("XREF")=+Y
 D INFOSAVE
 Q
 ;
INFOSAVE ; GET XREF/NODE/PIECE INFO AND SAVE
 S X=$P(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),1,XBRXREF("XREF"),0),U,2)
 I X="" W !!,*7,"Sorry, I don't do TRIGGERS!" Q
 I '$F(^DD(XBRXREF("FILE"),XBRXREF("FIELD"),1,XBRXREF("XREF"),1),"("""_X_"""") W !!,*7,"Sorry, I only do xrefs at the file level!" Q
 S ^TMP("XBRXREF",$J,XBRXREF("FILE"),XBRXREF("FIELD"),XBRXREF("XREF"))=X
 Q
 ;
CONFIRM ;EP - GET USER CONFIRMATION
 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:",!
 S XBRXREF("FILE")=""
 F XBRXREF("L")=0:0 S XBRXREF("FILE")=$O(^TMP("XBRXREF",$J,XBRXREF("FILE"))) Q:XBRXREF("FILE")=""  D CONFIRM2
 R !!,"Do you want to continue (Y/N) Y//",X:$G(DTIME,999)
 S:"Yy"'[$E(X) XBRXREF("QFLG")=1
 Q
 ;
CONFIRM2 ;
 S XBRXREF("FIELD")=""
 F XBRXREF("L")=0:0 S XBRXREF("FIELD")=$O(^TMP("XBRXREF",$J,XBRXREF("FILE"),XBRXREF("FIELD"))) Q:XBRXREF("FIELD")=""  D CONFIRM3
 Q
 ;
CONFIRM3 ;
 S XBRXREF("XREF")=""
 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"))
 Q
 ;