DIKCP3 ;SFISC/MKO-PRINT INDEX(ES) ;9:21 PM 7 Dec 1998
;;22.0;VA FileMan;;Mar 30, 1999
;Per VHA Directive 10-93-142, this routine should not be modified.
;
PRFILE(FIL,FLD,FLAG,PAGE,FHDR) ;Print Traditional cross-references on a file
Q:'$G(FIL)
N HDR,NAM,NO,XR
I $G(FLAG)'["i" N LM,TS,TYP,WID D INIT^DIKCP
;
;If field is not specified, print all xrefs on field
I $G(FLD)="" D
. ;Build list of xrefs sorted by name
. K ^TMP("DIKCP3",$J)
. S FLD=0 F S FLD=$O(^DD(FIL,"IX",FLD)) Q:'FLD D
.. S XR=0 F S XR=$O(^DD(FIL,FLD,1,XR)) Q:'XR D
... Q:$D(^DD(FIL,FLD,1,XR))<9 S NAM=$P($G(^(XR,0)),U,2)
... S:NAM="" NAM="~~"_$G(NO),NO=$G(NO)+1
... S ^TMP("DIKCP3",$J,NAM,FLD,XR)=""
. ;
. ;Loop through sorted list and print
. S NAM="" F S NAM=$O(^TMP("DIKCP3",$J,NAM)) Q:NAM="" D Q:PAGE(U)
.. S FLD=0 F S FLD=$O(^TMP("DIKCP3",$J,NAM,FLD)) Q:'FLD D Q:PAGE(U)
... S XR=0 F S XR=$O(^TMP("DIKCP3",$J,NAM,FLD,XR)) Q:'XR D Q:PAGE(U)
.... I '$G(FHDR) D FHDR^DIKCP(FIL,FLAG,.PAGE,.FHDR) Q:PAGE(U)
.... I '$G(HDR) D HDR(FIL,FLAG,LM,.PAGE,.HDR) Q:PAGE(U)
.... D PRINDEX(FIL,FLD,XR,FLAG,.PAGE) Q:PAGE(U)
.... D WRLN("",0,.PAGE) Q:PAGE(U)
.... I FLAG'["S" D WRLN("",0,.PAGE)
. K ^TMP("DIKCP3",$J)
;
;Else print cross-references on specific field
E S XR=0 F S XR=$O(^DD(FIL,FLD,1,XR)) Q:'XR D Q:PAGE(U)
. I '$G(FHDR) D FHDR^DIKCP(FIL,FLAG,.PAGE,.FHDR) Q:PAGE(U)
. I '$G(HDR) D HDR(FIL,FLAG,LM,.PAGE,.HDR) Q:PAGE(U)
. D PRINDEX(FIL,FLD,XR,FLAG,.PAGE) Q:PAGE(U)
. D WRLN("",0,.PAGE) Q:PAGE(U)
. I FLAG'["S" D WRLN("",0,.PAGE)
Q
;
PRINDEX(FIL,FLD,XR,FLAG,PAGE) ;Print a specific index
Q:'$G(FIL)!'$G(FLD)!'$G(XR)
N ND,WFLAG
I $G(FLAG)'["i" N LM,TYP,TS,WID D INIT^DIKCP
;
;Print first line of information
D FL(FIL,FLD,XR,WID,LM,TS,TYP,.PAGE) Q:PAGE(U)
;
;Print Field
D WLP^DIKCP1("Field: ",$P($G(^DD(FIL,FLD,0)),U)_" ("_FIL_","_FLD_")",WID,LM+TS,0,.PAGE)
Q:PAGE(U)
;
;For Triggers, print triggered field
I $P($G(^DD(FIL,FLD,1,XR,0)),U,3)["TRIG" D Q:PAGE(U)
. N LAB,TFIL,TFLD
. S TFIL=$P(^DD(FIL,FLD,1,XR,0),U,4),TFLD=$P(^(0),U,5)
. S LAB="Triggered Field: "
. D WLP^DIKCP1(LAB,$P($G(^DD(TFIL,TFLD,0)),U)_" ("_TFIL_","_TFLD_")",WID-$L(LAB),LM+TS+$L(LAB),"",.PAGE)
;
;Print Description
I $O(^DD(FIL,FLD,1,XR,"%D",0)) D Q:PAGE(U)
. D WRWP^DIKCP1($NA(^DD(FIL,FLD,1,XR,"%D")),LM,WID,"Description: ",TS,.PAGE)
I FLAG'["S" D WRLN("",0,.PAGE) Q:PAGE(U)
;
;Print xref nodes
K WFLAG
S ND=0 F S ND=$O(^DD(FIL,FLD,1,XR,ND)) Q:ND="" D Q:PAGE(U)
. Q:ND="%D"!(ND="DT")
. N TXT
. S TXT(0)=ND_")= "
. S TXT(1)=^DD(FIL,FLD,1,XR,ND)
. I FLAG'["S",ND,$G(WFLAG) D WRLN("",0,.PAGE) Q:PAGE(U)
. D WLP^DIKCP1("",.TXT,WID,LM+TS,1,.PAGE,.WFLAG)
Q
;
FL(FIL,FLD,XR,WID,LM,TS,TYP,PAGE) ;Print first line
N NAME,SP,TYPE,TXT,WF,XR0
;
S SP=$J("",4)
S XR0=$G(^DD(FIL,FLD,1,XR,0)) Q:XR0?."^"
S NAME=$P(XR0,U,2)
S TYPE=$P(XR0,U,3) S:TYPE="" TYPE="REGULAR"
S TXT=NAME_SP_TYPE
;
I $P(XR0,U),$P(XR0,U)'=FIL D
. S TXT=TXT_SP_"WHOLE"_$C(0)_"FILE"_$C(0)_"(#"_$P(XR0,U)_")"
;
;Print first line
D WRPHI^DIKCP1(TXT,WID,LM,TS,0,.PAGE)
Q
;
HDR(FIL,FLAG,LM,PAGE,HDR) ;Print header
I FLAG'["M",FLAG'["R",FLAG'["F" Q
D WRLN("Traditional Cross-References:",LM,.PAGE,2) Q:PAGE(U)
D WRLN("",0,.PAGE)
S HDR=1
Q
;
;
WRLN(TXT,TAB,PAGE,KWN) ;Write a line of text
;See ^DIKCP for documentation
N X
S PAGE(U)=""
;
;Do paging, if necessary
I $D(PAGE("H"))#2,$G(IOSL,24)-2-$G(PAGE("B"))-$G(KWN)'>$Y D Q:PAGE(U)
. I PAGE("H")?1"W ".E X PAGE("H") Q
. I $E($G(IOST,"C"))="C" D Q:PAGE(U)
.. W $C(7) R X:$G(DTIME,300) I X=U!'$T S PAGE(U)=1
. W @$G(IOF,"#"),PAGE("H")
;
;Write text
W !?$G(TAB),$TR($G(TXT),$C(0)," ")
Q
DIKCP3 ;SFISC/MKO-PRINT INDEX(ES) ;9:21 PM 7 Dec 1998
+1 ;;22.0;VA FileMan;;Mar 30, 1999
+2 ;Per VHA Directive 10-93-142, this routine should not be modified.
+3 ;
PRFILE(FIL,FLD,FLAG,PAGE,FHDR) ;Print Traditional cross-references on a file
+1 IF '$GET(FIL)
QUIT
+2 NEW HDR,NAM,NO,XR
+3 IF $GET(FLAG)'["i"
NEW LM,TS,TYP,WID
DO INIT^DIKCP
+4 ;
+5 ;If field is not specified, print all xrefs on field
+6 IF $GET(FLD)=""
Begin DoDot:1
+7 ;Build list of xrefs sorted by name
+8 KILL ^TMP("DIKCP3",$JOB)
+9 SET FLD=0
FOR
SET FLD=$ORDER(^DD(FIL,"IX",FLD))
IF 'FLD
QUIT
Begin DoDot:2
+10 SET XR=0
FOR
SET XR=$ORDER(^DD(FIL,FLD,1,XR))
IF 'XR
QUIT
Begin DoDot:3
+11 IF $DATA(^DD(FIL,FLD,1,XR))<9
QUIT
SET NAM=$PIECE($GET(^(XR,0)),U,2)
+12 IF NAM=""
SET NAM="~~"_$GET(NO)
SET NO=$GET(NO)+1
+13 SET ^TMP("DIKCP3",$JOB,NAM,FLD,XR)=""
End DoDot:3
End DoDot:2
+14 ;
+15 ;Loop through sorted list and print
+16 SET NAM=""
FOR
SET NAM=$ORDER(^TMP("DIKCP3",$JOB,NAM))
IF NAM=""
QUIT
Begin DoDot:2
+17 SET FLD=0
FOR
SET FLD=$ORDER(^TMP("DIKCP3",$JOB,NAM,FLD))
IF 'FLD
QUIT
Begin DoDot:3
+18 SET XR=0
FOR
SET XR=$ORDER(^TMP("DIKCP3",$JOB,NAM,FLD,XR))
IF 'XR
QUIT
Begin DoDot:4
+19 IF '$GET(FHDR)
DO FHDR^DIKCP(FIL,FLAG,.PAGE,.FHDR)
IF PAGE(U)
QUIT
+20 IF '$GET(HDR)
DO HDR(FIL,FLAG,LM,.PAGE,.HDR)
IF PAGE(U)
QUIT
+21 DO PRINDEX(FIL,FLD,XR,FLAG,.PAGE)
IF PAGE(U)
QUIT
+22 DO WRLN("",0,.PAGE)
IF PAGE(U)
QUIT
+23 IF FLAG'["S"
DO WRLN("",0,.PAGE)
End DoDot:4
IF PAGE(U)
QUIT
End DoDot:3
IF PAGE(U)
QUIT
End DoDot:2
IF PAGE(U)
QUIT
+24 KILL ^TMP("DIKCP3",$JOB)
End DoDot:1
+25 ;
+26 ;Else print cross-references on specific field
+27 IF '$TEST
SET XR=0
FOR
SET XR=$ORDER(^DD(FIL,FLD,1,XR))
IF 'XR
QUIT
Begin DoDot:1
+28 IF '$GET(FHDR)
DO FHDR^DIKCP(FIL,FLAG,.PAGE,.FHDR)
IF PAGE(U)
QUIT
+29 IF '$GET(HDR)
DO HDR(FIL,FLAG,LM,.PAGE,.HDR)
IF PAGE(U)
QUIT
+30 DO PRINDEX(FIL,FLD,XR,FLAG,.PAGE)
IF PAGE(U)
QUIT
+31 DO WRLN("",0,.PAGE)
IF PAGE(U)
QUIT
+32 IF FLAG'["S"
DO WRLN("",0,.PAGE)
End DoDot:1
IF PAGE(U)
QUIT
+33 QUIT
+34 ;
PRINDEX(FIL,FLD,XR,FLAG,PAGE) ;Print a specific index
+1 IF '$GET(FIL)!'$GET(FLD)!'$GET(XR)
QUIT
+2 NEW ND,WFLAG
+3 IF $GET(FLAG)'["i"
NEW LM,TYP,TS,WID
DO INIT^DIKCP
+4 ;
+5 ;Print first line of information
+6 DO FL(FIL,FLD,XR,WID,LM,TS,TYP,.PAGE)
IF PAGE(U)
QUIT
+7 ;
+8 ;Print Field
+9 DO WLP^DIKCP1("Field: ",$PIECE($GET(^DD(FIL,FLD,0)),U)_" ("_FIL_","_FLD_")",WID,LM+TS,0,.PAGE)
+10 IF PAGE(U)
QUIT
+11 ;
+12 ;For Triggers, print triggered field
+13 IF $PIECE($GET(^DD(FIL,FLD,1,XR,0)),U,3)["TRIG"
Begin DoDot:1
+14 NEW LAB,TFIL,TFLD
+15 SET TFIL=$PIECE(^DD(FIL,FLD,1,XR,0),U,4)
SET TFLD=$PIECE(^(0),U,5)
+16 SET LAB="Triggered Field: "
+17 DO WLP^DIKCP1(LAB,$PIECE($GET(^DD(TFIL,TFLD,0)),U)_" ("_TFIL_","_TFLD_")",WID-$LENGTH(LAB),LM+TS+$LENGTH(LAB),"",.PAGE)
End DoDot:1
IF PAGE(U)
QUIT
+18 ;
+19 ;Print Description
+20 IF $ORDER(^DD(FIL,FLD,1,XR,"%D",0))
Begin DoDot:1
+21 DO WRWP^DIKCP1($NAME(^DD(FIL,FLD,1,XR,"%D")),LM,WID,"Description: ",TS,.PAGE)
End DoDot:1
IF PAGE(U)
QUIT
+22 IF FLAG'["S"
DO WRLN("",0,.PAGE)
IF PAGE(U)
QUIT
+23 ;
+24 ;Print xref nodes
+25 KILL WFLAG
+26 SET ND=0
FOR
SET ND=$ORDER(^DD(FIL,FLD,1,XR,ND))
IF ND=""
QUIT
Begin DoDot:1
+27 IF ND="%D"!(ND="DT")
QUIT
+28 NEW TXT
+29 SET TXT(0)=ND_")= "
+30 SET TXT(1)=^DD(FIL,FLD,1,XR,ND)
+31 IF FLAG'["S"
IF ND
IF $GET(WFLAG)
DO WRLN("",0,.PAGE)
IF PAGE(U)
QUIT
+32 DO WLP^DIKCP1("",.TXT,WID,LM+TS,1,.PAGE,.WFLAG)
End DoDot:1
IF PAGE(U)
QUIT
+33 QUIT
+34 ;
FL(FIL,FLD,XR,WID,LM,TS,TYP,PAGE) ;Print first line
+1 NEW NAME,SP,TYPE,TXT,WF,XR0
+2 ;
+3 SET SP=$JUSTIFY("",4)
+4 SET XR0=$GET(^DD(FIL,FLD,1,XR,0))
IF XR0?."^"
QUIT
+5 SET NAME=$PIECE(XR0,U,2)
+6 SET TYPE=$PIECE(XR0,U,3)
IF TYPE=""
SET TYPE="REGULAR"
+7 SET TXT=NAME_SP_TYPE
+8 ;
+9 IF $PIECE(XR0,U)
IF $PIECE(XR0,U)'=FIL
Begin DoDot:1
+10 SET TXT=TXT_SP_"WHOLE"_$CHAR(0)_"FILE"_$CHAR(0)_"(#"_$PIECE(XR0,U)_")"
End DoDot:1
+11 ;
+12 ;Print first line
+13 DO WRPHI^DIKCP1(TXT,WID,LM,TS,0,.PAGE)
+14 QUIT
+15 ;
HDR(FIL,FLAG,LM,PAGE,HDR) ;Print header
+1 IF FLAG'["M"
IF FLAG'["R"
IF FLAG'["F"
QUIT
+2 DO WRLN("Traditional Cross-References:",LM,.PAGE,2)
IF PAGE(U)
QUIT
+3 DO WRLN("",0,.PAGE)
+4 SET HDR=1
+5 QUIT
+6 ;
+7 ;
WRLN(TXT,TAB,PAGE,KWN) ;Write a line of text
+1 ;See ^DIKCP for documentation
+2 NEW X
+3 SET PAGE(U)=""
+4 ;
+5 ;Do paging, if necessary
+6 IF $DATA(PAGE("H"))#2
IF $GET(IOSL,24)-2-$GET(PAGE("B"))-$GET(KWN)'>$Y
Begin DoDot:1
+7 IF PAGE("H")?1"W ".E
XECUTE PAGE("H")
QUIT
+8 IF $EXTRACT($GET(IOST,"C"))="C"
Begin DoDot:2
+9 WRITE $CHAR(7)
READ X:$GET(DTIME,300)
IF X=U!'$TEST
SET PAGE(U)=1
End DoDot:2
IF PAGE(U)
QUIT
+10 WRITE @$GET(IOF,"#"),PAGE("H")
End DoDot:1
IF PAGE(U)
QUIT
+11 ;
+12 ;Write text
+13 WRITE !?$GET(TAB),$TRANSLATE($GET(TXT),$CHAR(0)," ")
+14 QUIT