File:  [Coherent Logic Development] / freem_fileman / USER / DICF5.m
Revision 1.1: download - view: text, annotated - select for diffs
Mon Apr 28 14:13:19 2025 UTC (3 months ago) by snw
Branches: MAIN
CVS tags: HEAD
Restructure repository

    1: DICF5	;SEA/TOAD-VA FileMan: Finder, Part 5 (Ptr Indexes) ;11/4/94  10:59 ;
    2: 	;;21.0;VA FileMan;;Dec 28, 1994
    3: 	;Per VHA Directive 10-93-142, this routine should not be modified.
    4: 	
    5: PREPP(DIFLAGS,DINDEX,DITYPE,DISKIP,DILIST)	
    6: 	; PREPIX^DICF2--transform value for indexed pointer field
    7: 	; proc, DINDEX passed by ref
    8: 	N DIF,DINODE,DIPFILE,DIPLIST,DIPVAL,DISAVE
    9: 	S DIF=$TR(DIFLAGS,$TR(DIFLAGS,"Xg"))
   10: 	S DIPVAL=@DILIST("LVA")@("V")
   11: 	S DILIST("SAVE")=DILIST("LVA")
   12: 	S DILIST("LVA")="^TMP(""DILVA"",$J,"_DILIST(0)_")"
   13: 	S DIPLIST=$NA(@DILIST("LVA")@("V"))
   14: 90	S DIPLIST(0)=DILIST(0)+1
   15: 	S DIPLIST("LVA")=DILIST("SAVE")
   16: 	S DISAVE=@DILIST("SAVE")@("S")
   17: 	I DISAVE'="" S @DILIST("SAVE")@("S")=""
   18: 	F DINODE="1","2","0,5","0,6" D
   19: 	. S @("DISAVE("_DINODE_")=$G(@DILIST(""SAVE"")@(""S"","_DINODE_"))")
   20: 	. I @("DISAVE("_DINODE_")'=""""") D
   21: 	. . S @("@DILIST(""SAVE"")@(""S"","_DINODE_")=""""")
   22: 91	I DITYPE="P" D
   23: 	. S DIPFILE=+$P($P(DINDEX(0,"DEF"),U,2),"P",2)
   24: 	. D FIND^DICF(DIPFILE,"","","Mp"_DIF,"","","","","",.DIPLIST,DIPLIST)
   25: 	. S DISKIP=DIPLIST("C")=0
   26: 	I DISKIP Q
   27: 92	I DITYPE="VP" D
   28: 	. N DIFIELD,DIFILE,DIOUT
   29: 	. S DIPLIST("C")=0
   30: 	. S DIFILE=DINDEX(0,"FILE")
   31: 	. S DIFIELD=DINDEX(0,"FIELD")
   32: 	. S DIPFILE=0,DIOUT=0 F  D  Q:DIOUT
   33: 	. . S DIPFILE=$O(^DD(DIFILE,DIFIELD,"V","B",DIPFILE))
   34: 	. . I DIPFILE="" S DIOUT=1 Q
   35: 	. . D FIND^DICF(DIPFILE,"","","Mpv"_DIF,"","","","","",.DIPLIST,DIPLIST)
   36: 	. . S DISKIP=DIPLIST("C")=0&DISKIP
   37: 93	. I DIPVAL["." D PIECES(DIFILE,DIFIELD,DIF,DIPVAL,.DISKIP,.DIPLIST)
   38: 	I 'DISKIP S @DILIST("LVA")@("S")=@DILIST("SAVE")@("S")
   39: 	I DISAVE'="" S @DILIST("SAVE")@("S")=DISAVE
   40: 	F DINODE="1","2","0,5","0,6" D
   41: 	. I @("DISAVE("_DINODE_")'=""""") D
   42: 	. . S @("@DILIST(""SAVE"")@(""S"","_DINODE_")=DISAVE("_DINODE_")")
   43: 	Q
   44: 	
   45: PIECES(DIFILE,DIFIELD,DIFLAGS,DIPVAL,DISKIP,DIPLIST)	
   46: 	; proc, add file.value lookups to index's LVA
   47: 	N DILOWER S DILOWER="abcdefghijklmnopqrstuvwxyz"
   48: 	N DIUPPER S DIUPPER="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
   49: 	N DIFILEN S DIFILEN=$TR($P(DIPVAL,"."),DILOWER,DIUPPER)
   50: 	N DIFILES D VPFILES^DIEV1(DIFILE,DIFIELD,DIFILEN,.DIFILES)
   51: 	K DIPLIST("LVA")
   52: 	N DIVALN S DIVALN=$P(DIPVAL,".",2,9999)
   53: 	S DIFILE="" F  S DIFILE=$O(DIFILES(DIFILE)) Q:DIFILE=""  D
   54: 	.  D FIND^DICF(DIFILE,"","","Mlpv"_DIFLAGS,DIVALN,"","","","",.DIPLIST,DIPLIST)
   55: 	S DISKIP=DIPLIST("C")=0&DISKIP
   56: 	Q

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>