File:  [Coherent Logic Development] / freem_fileman / Attic / DICF5.m
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Mon Apr 28 14:10:44 2025 UTC (5 weeks, 4 days ago) by snw
Branches: CoherentLogicDevelopment
CVS tags: start
Initial commit

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>