Annotation of freem_fileman/DICF5.m, revision 1.1.1.1

1.1       snw         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>