DICF5 ;SEA/TOAD-VA FileMan: Finder, Part 5 (Ptr Indexes) ;11/4/94 10:59 ;
;;21.0;VA FileMan;;Dec 28, 1994
;Per VHA Directive 10-93-142, this routine should not be modified.
PREPP(DIFLAGS,DINDEX,DITYPE,DISKIP,DILIST)
; PREPIX^DICF2--transform value for indexed pointer field
; proc, DINDEX passed by ref
N DIF,DINODE,DIPFILE,DIPLIST,DIPVAL,DISAVE
S DIF=$TR(DIFLAGS,$TR(DIFLAGS,"Xg"))
S DIPVAL=@DILIST("LVA")@("V")
S DILIST("SAVE")=DILIST("LVA")
S DILIST("LVA")="^TMP(""DILVA"",$J,"_DILIST(0)_")"
S DIPLIST=$NA(@DILIST("LVA")@("V"))
90 S DIPLIST(0)=DILIST(0)+1
S DIPLIST("LVA")=DILIST("SAVE")
S DISAVE=@DILIST("SAVE")@("S")
I DISAVE'="" S @DILIST("SAVE")@("S")=""
F DINODE="1","2","0,5","0,6" D
. S @("DISAVE("_DINODE_")=$G(@DILIST(""SAVE"")@(""S"","_DINODE_"))")
. I @("DISAVE("_DINODE_")'=""""") D
. . S @("@DILIST(""SAVE"")@(""S"","_DINODE_")=""""")
91 I DITYPE="P" D
. S DIPFILE=+$P($P(DINDEX(0,"DEF"),U,2),"P",2)
. D FIND^DICF(DIPFILE,"","","Mp"_DIF,"","","","","",.DIPLIST,DIPLIST)
. S DISKIP=DIPLIST("C")=0
I DISKIP Q
92 I DITYPE="VP" D
. N DIFIELD,DIFILE,DIOUT
. S DIPLIST("C")=0
. S DIFILE=DINDEX(0,"FILE")
. S DIFIELD=DINDEX(0,"FIELD")
. S DIPFILE=0,DIOUT=0 F D Q:DIOUT
. . S DIPFILE=$O(^DD(DIFILE,DIFIELD,"V","B",DIPFILE))
. . I DIPFILE="" S DIOUT=1 Q
. . D FIND^DICF(DIPFILE,"","","Mpv"_DIF,"","","","","",.DIPLIST,DIPLIST)
. . S DISKIP=DIPLIST("C")=0&DISKIP
93 . I DIPVAL["." D PIECES(DIFILE,DIFIELD,DIF,DIPVAL,.DISKIP,.DIPLIST)
I 'DISKIP S @DILIST("LVA")@("S")=@DILIST("SAVE")@("S")
I DISAVE'="" S @DILIST("SAVE")@("S")=DISAVE
F DINODE="1","2","0,5","0,6" D
. I @("DISAVE("_DINODE_")'=""""") D
. . S @("@DILIST(""SAVE"")@(""S"","_DINODE_")=DISAVE("_DINODE_")")
Q
PIECES(DIFILE,DIFIELD,DIFLAGS,DIPVAL,DISKIP,DIPLIST)
; proc, add file.value lookups to index's LVA
N DILOWER S DILOWER="abcdefghijklmnopqrstuvwxyz"
N DIUPPER S DIUPPER="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
N DIFILEN S DIFILEN=$TR($P(DIPVAL,"."),DILOWER,DIUPPER)
N DIFILES D VPFILES^DIEV1(DIFILE,DIFIELD,DIFILEN,.DIFILES)
K DIPLIST("LVA")
N DIVALN S DIVALN=$P(DIPVAL,".",2,9999)
S DIFILE="" F S DIFILE=$O(DIFILES(DIFILE)) Q:DIFILE="" D
. D FIND^DICF(DIFILE,"","","Mlpv"_DIFLAGS,DIVALN,"","","","",.DIPLIST,DIPLIST)
S DISKIP=DIPLIST("C")=0&DISKIP
Q
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>