Annotation of freem_fileman/DICF3.m, revision 1.1
1.1 ! snw 1: DICF3 ;SEA/TOAD-VA FileMan: Finder, Part 3 (One Index) ;11/3/94 16:08 ;
! 2: ;;21.0;VA FileMan;;Dec 28, 1994
! 3: ;Per VHA Directive 10-93-142, this routine should not be modified.
! 4:
! 5: CHKONE(DIFILE,DIEN,DIFLAGS,DIROOT,DIVALUE,DINDEX,DICOUNT,DISCREEN,DIDENT,DILIST)
! 6: ; CHKALL--check one index for possible matches
! 7: ; proc, DIFILE, DIFLAGS, & DIROOT by value
! 8: N DIXFORM S DIXFORM=0
! 9: N DIBEFORE S DIBEFORE=DICOUNT
! 10: N DIEXTRNL,DITRY F D Q:DIXFORM=""
! 11: . S DIXFORM=$O(@DILIST("LVA")@("V",DIXFORM)) I DIXFORM="" Q
! 12: . S DIVALUE=@DILIST("LVA")@("V",DIXFORM)
! 13: . S DISCREEN=$G(@DILIST("LVA")@("S",DIXFORM))
! 14: . I DISCREEN="" S DISCREEN=@DILIST("LVA")@("S")
! 15: C1 . S DITRY=1
! 16: . I DITRY D
! 17: . . D EXACT(DIFILE,.DIEN,.DIFLAGS,.DIROOT,.DIVALUE,.DINDEX,.DICOUNT,.DISCREEN,.DIDENT,.DILIST)
! 18: . . I DIFLAGS["q" S DIXFORM="" Q
! 19: . . I DIFLAGS["X" Q
! 20: . . I DINDEX(0,"TYPE")["P" Q
! 21: . . I DINDEX(0,"TYPE")["D",DIVALUE?.NP,+DIVALUE=DIVALUE D Q:'DIEXTRNL
! 22: C2 . . . S DIEXTRNL=$G(@DILIST("LVA")@("V",DIXFORM,1))
! 23: . . D PARTIAL(DIFILE,.DIEN,.DIFLAGS,.DIROOT,.DIVALUE,.DINDEX,.DICOUNT,.DISCREEN,.DIDENT,.DILIST)
! 24: . . I DIFLAGS["q" S DIXFORM=""
! 25: ; S DIVALUE=@DILIST("SAVE")@("V")
! 26: I DICOUNT=DIBEFORE,$O(@DIROOT@(DINDEX,""))="",$O(@DIROOT@(0)) D Q
! 27: . D ERR^DICF6(420,DIFILE,"","",DINDEX)
! 28: Q
! 29:
! 30: PARTIAL(DIFILE,DIEN,DIFLAGS,DIROOT,DIPART,DINDEX,DICOUNT,DISCREEN,DIDENT,DILIST)
! 31: ; CHKONE--return the list of partial matches to DIVALUE in DINDEX
! 32: ; proc, DIVALUE, DICOUNT, DISCREEN, DIDENT by reference
! 33: N DIOUT S DIOUT=0
! 34: N DIVALUE S DIVALUE=DIPART
! 35: N DIMORE S DIMORE=+DIPART=DIPART I DIMORE D MORE I DIOUT Q
! 36: F D Q:DIOUT
! 37: . S DIVALUE=$O(@DIROOT@(DINDEX,DIVALUE))
! 38: . D I DIOUT Q:'DIMORE D MORE D Q:DIOUT
! 39: . . I DIPART'=$E(DIVALUE,1,$L(DIPART)) S DIOUT=1 Q
! 40: . D EXACT(DIFILE,.DIEN,.DIFLAGS,.DIROOT,.DIVALUE,.DINDEX,.DICOUNT,.DISCREEN,.DIDENT,.DILIST)
! 41: . I DIFLAGS["q" S DIOUT=1 Q
! 42: Q
! 43:
! 44: MORE
! 45: ; PARTIAL--continue numeric partial down into string numerics
! 46: S DIMORE=0,DIOUT=0
! 47: S DIVALUE=DIPART_" "
! 48: S DIVALUE=$O(@DIROOT@(DINDEX,DIVALUE),-1)
! 49: S DIOUT=$E($O(@DIROOT@(DINDEX,DIVALUE)),1,$L(DIPART))'=DIPART
! 50: Q
! 51:
! 52: EXACT(DIFILE,DIEN,DIFLAGS,DIROOT,DIVALUE,DINDEX,DICOUNT,DISCREEN,DIDENT,DILIST)
! 53: ; CHKONE/PARTIAL--consider selecting value DIVALUE
! 54: ; proc, DIEN, DIVALUE, DICOUNT, DISCREEN, DIDENT by reference
! 55: N DIENTRY S DIENTRY="" F D I DIENTRY="" Q
! 56: . S DIENTRY=$O(@DIROOT@(DINDEX,DIVALUE,DIENTRY)) Q:DIENTRY=""
! 57: . S DIEN=DIENTRY_DIEN
! 58: . D ENTRY(DIFILE,DIEN,.DIFLAGS,.DIROOT,.DIVALUE,.DINDEX,.DICOUNT,.DISCREEN,.DIDENT,.DILIST)
! 59: . S $P(DIEN,",")=""
! 60: . I DIFLAGS["q" S DIENTRY="" Q
! 61: Q
! 62:
! 63: ENTRY(DIFILE,DIEN,DIFLAGS,DIROOT,DIVALUE,DINDEX,DICOUNT,DISCREEN,DIDENT,DILIST)
! 64: ; SPECIAL/EXACT--consider selecting entry # DIENTRY
! 65: ; proc, DIEN, DIVALUE, DICOUNT, DISCREEN, DIDENT by reference
! 66: N DIENTRY S DIENTRY=$P(DIEN,",")
! 67: N DINODE S DINODE=$G(@DIROOT@(DIENTRY,0))
! 68: I '$$VMINUS9^DIEFU(DIFILE,DIEN) Q
! 69: N DIKEY S DIKEY=$P(DINODE,"^") Q:DIKEY=""
! 70: N DIFIELD,DIOUT S DIOUT=0
! 71: 71 N DISCR F DISCR="DISCREEN","DISCREEN(""F"")" I @DISCR'="" D Q:DIOUT
! 72: . I $D(DINDEX(0,"GET")),'$D(DIFIELD) S @("DIFIELD="_DINDEX(0,"GET"))
! 73: . N %
! 74: . N D S D=DINDEX
! 75: . N DIC S DIC=DIROOT("O")
! 76: . S DIC(0)=$TR(DIFLAGS,"fglpqtuv")
! 77: . N X S X=DIVALUE
! 78: . N Y M Y=DIEN S Y=DIENTRY
! 79: . N Y1 S Y1=$G(@DIROOT@(DIENTRY,0)),Y1=DIEN
! 80: . I 1 X @DISCR ;***** NAKED *****
! 81: . E S DIOUT=1
! 82: . I $G(DIERR) D
! 83: . . S DIOUT=1,DIFLAGS=DIFLAGS_"q"
! 84: . . N DICONTXT
! 85: . . S DICONTXT=$S(DISCR["F":"Whole File Screen",1:"Screen Parameter")
! 86: . . D ERR^DICF6(120,DIFILE,DIEN,"",DICONTXT)
! 87: Q:DIOUT
! 88: 72 I $D(@DILIST@("B",DIKEY,DIENTRY)) Q
! 89: I 'DICOUNT("LOOK") D Q:DIFLAGS["q"
! 90: . S DICOUNT=DICOUNT+1
! 91: . I DIFLAGS'["f" S @DILIST@(1,DICOUNT)=DIKEY,@DILIST@(2,DICOUNT)=DIENTRY
! 92: . E I DIFLAGS'["v" S @DILIST@(DICOUNT)=DIENTRY
! 93: . E S @DILIST@(DICOUNT)=DIENTRY_DIROOT("V")
! 94: . S @DILIST@("B",DIKEY,DIENTRY)=""
! 95: . I DIFLAGS'["f" D IDS^DICU2(DIFILE,.DIEN,.DIFLAGS,DIVALUE,.DIROOT,.DINDEX,.DICOUNT,.DIDENT,.DILIST) I $G(DIERR) S DIOUT=1,DIFLAGS=DIFLAGS_"q"
! 96: E S DICOUNT("MORE")=1
! 97: I DICOUNT("MAX")="" Q
! 98: I DICOUNT=DICOUNT("MAX") S DICOUNT("LOOK")=1
! 99: I DICOUNT("MORE") S DIFLAGS=DIFLAGS_"q",DIOUT=1
! 100: Q
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>