Annotation of freem_fileman/DICF.m, revision 1.1
1.1 ! snw 1: DICF ;SEA/TOAD-VA FileMan: Finder, Part 1 (Main) ;11/17/94 11:23 ;
! 2: ;;21.0;VA FileMan;;Dec 28, 1994
! 3: ;Per VHA Directive 10-93-142, this routine should not be modified.
! 4:
! 5: FIND(DIFILE,DIEN,DIFLDS,DIFLAGS,DIVALUE,DIMAX,DIFORCE,DISCREEN,DID,DILIST,DIMSGA)
! 6: ; ENTRY POINT--silent selecter
! 7: ; subroutine, DIFORCE passed by reference
! 8:
! 9: FINDX ; branch in from FIND^DIC
! 10: I '$D(DIQUIET) N DIQUIET S DIQUIET=1
! 11: I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
! 12: N DA,DICOUNT,DIFAIL,DIROOT
! 13: I $G(DIFLAGS)'["p"!($G(DIFLAGS)["l") N DILVA
! 14: S (DICOUNT,DICOUNT(0))=+$G(DILIST("C"))
! 15: S DICOUNT("LOOK")=0
! 16: S DICOUNT("MORE")=0
! 17: S DICOUNT("MAX")=$G(DIMAX) I DICOUNT("MAX")="" S DICOUNT("MAX")="*"
! 18: S DILIST(0)=$G(DILIST(0)) I DILIST(0)<1 S DILIST(0)=1
! 19:
! 20: INPUT
! 21: S DIFAIL=0 D I DIFAIL D CLOSE Q
! 22: I0 . ; flags
! 23: . S DIFLAGS=$G(DIFLAGS)
! 24: . I DIFLAGS["O",DIFLAGS["X" S DIFLAGS=$TR(DIFLAGS,"O")
! 25: . I DIFLAGS'["p" S DIFLAGS=DIFLAGS_"t"
! 26: . I DIFLAGS["p" S DIFLAGS=DIFLAGS_"f"
! 27: I1 . ; value
! 28: . S DIVALUE=$G(DIVALUE)
! 29: I2 . ; target_root
! 30: . I $G(DIMSGA)'="" D
! 31: . . K @DIMSGA@("DIMSG"),@DIMSGA@("DIERR"),@DIMSGA@("DIHELP")
! 32: . S DILIST=$G(DILIST)
! 33: . I DILIST'="" I DIFLAGS'["v" K @DILIST
! 34: . I DILIST'="",DIFLAGS'["f" S DILIST=$NA(@DILIST@("DILIST"))
! 35: . I DILIST="" S DILIST="^TMP(""DILIST"",$J)" I DIFLAGS'["v" K @DILIST
! 36: . S DILIST("LVA")=$G(DILIST("LVA"))
! 37: . I DILIST("LVA")="" S DILIST("LVA")="DILVA"
! 38: . I DIFLAGS["p",DIVALUE'="",$G(@DILIST("LVA")@("V"))="" D
! 39: . . S DIFLAGS=DIFLAGS_"t"
! 40: I3 . ; file
! 41: . S DIFILE=$G(DIFILE) I 'DIFILE S DIFAIL=1 D Q
! 42: . . D ERR^DICF6(202,"","","","FILE")
! 43: . N DINODE S DINODE=$G(^DD(DIFILE,.01,0))
! 44: . I DINODE="" S DIFAIL=1 D Q
! 45: . . D ERR^DICF6($S('$D(^DD(DIFILE)):401,1:406),DIFILE)
! 46: . I $P(DINODE,U,2)["W" S DIFAIL=1 D ERR^DICF6(407,DIFILE) Q
! 47: . S DISCREEN("F")=$G(^DD(DIFILE,0,"SCR"))
! 48: I4 . ; IENS
! 49: . S DIEN=$G(DIEN) I DIEN="" S DIEN=","
! 50: . I '$$IEN^DIDU1(DIEN) S DIFAIL=1 D Q
! 51: . . I '$$IEN^DIDU1(DIEN_",") D ERR^DICF6(202,"","","","IENS") Q
! 52: . . E D ERR^DICF6(304,"",DIEN) Q
! 53: . I $P(DIEN,",")'="" S DIFAIL=1 D ERR^DICF6(306,"",DIEN) Q
! 54: . I DIEN["," D DA^DILF(DIEN,.DA) S DA=DIEN M DIEN=DA
! 55: I5 . ; file root
! 56: . S DIROOT=$$ROOT^DIQGU(DIFILE,DIEN,1,1) I $G(DIERR) S DIFAIL=1 Q
! 57: . I DIROOT="" S DIFAIL=1 D Q
! 58: . . D ERR^DICF6(402,DIFILE,DIEN)
! 59: . I $O(@DIROOT@(0))'>0 S DIFAIL=1 Q
! 60: . S DIROOT("O")=$$OREF^DIQGU(DIROOT)
! 61: . I DIFLAGS["v" S DIROOT("V")=DIROOT("O"),$E(DIROOT("V"))=";"
! 62: . I DIVALUE=" " S DIROOT("Q")=$$ROOT^DIQGU(DIFILE,DIEN,"Q")
! 63: I6 . ; fields
! 64: . S DIFLDS=$G(DIFLDS)
! 65: I7 . ; flags again
! 66: . I $TR(DIFLAGS,"AMOQXfglpqtuv")'="" S DIFAIL=1 D Q
! 67: . . D ERR^DICF6(301,"","","",$TR(DIFLAGS,"fglpqtuv"))
! 68: . I $O(@DIROOT@("A["))="" S DIFLAGS=DIFLAGS_"u"
! 69: I8 . ; forced indexes
! 70: . S DIFORCE=$G(DIFORCE)
! 71: . I "*"[DIFORCE S DIFORCE=0,DIFORCE(0)="*"
! 72: . E I DIFORCE="#" S DIFORCE=0,DIFORCE(0)="#",DIFLAGS=DIFLAGS_"u"
! 73: . E D I DIFAIL D ERR^DICF6(202,"","","","Indexes") Q
! 74: . . S DIFORCE(0)=$G(DIFORCE)
! 75: . . I $P(DIFORCE(0),U)="" S DIFAIL=1 Q
! 76: . . S DIFLAGS=DIFLAGS_"M"
! 77: . . S DIFORCE=1
! 78: I9 . ; rest
! 79: . I DICOUNT("MAX")'="*" D Q:DIFAIL
! 80: . . I DICOUNT("MAX")\1=DICOUNT("MAX"),DICOUNT("MAX")>0 Q
! 81: . . S DIFAIL=1 D ERR^DICF6(202,"","","","Number")
! 82: . S DISCREEN=$G(DISCREEN)
! 83: . S DID=$G(DID)
! 84:
! 85: HOOK75
! 86: N DIHOOK75,DIOUT
! 87: S DIHOOK75=$G(^DD(DIFILE,.01,7.5))
! 88: S DIOUT=0
! 89: I DIHOOK75'="",U'[DIVALUE,DIVALUE'?."?" D I DIOUT D CLOSE Q
! 90: . N %,D,DIC,X,Y,Y1
! 91: . S D=DIFORCE(0)
! 92: . S DIC=DIFILE
! 93: . S DIC(0)=$TR(DIFLAGS,"fglpqtuv")
! 94: . S X=DIVALUE
! 95: . M Y=DIEN S Y=""
! 96: . S Y1=DIEN
! 97: . X DIHOOK75 I '$D(X)!$G(DIERR) S DIOUT=1 D:$G(DIERR) Q
! 98: . . D ERR^DICF6(120,DIFILE,"",.01,"Pre-lookup Transform (7.5 node)")
! 99: . S DIVALUE=X
! 100: . I $G(DIC("S"))'="" S DISCREEN=DIC("S")
! 101: . I $G(DIC("V"))'="" S DISCREEN("V")=DIC("V")
! 102:
! 103: LOOKUP
! 104: N DIDENT
! 105: I DIFLAGS'["f" D I $G(DIERR) D CLOSE Q
! 106: . D IDENTS^DICU1(DIFILE,.01,.DIROOT,DIFLDS,DID,.DIDENT)
! 107: I DIFLAGS'["p" D SPECIAL^DICF1(DIFILE,.DIEN,DIFLAGS,.DIROOT,DIVALUE,DIFORCE(0),.DICOUNT,.DIFAIL,.DISCREEN,.DIDENT,.DIOUT,.DILIST)
! 108: I DIOUT D CLOSE Q
! 109: I DIFLAGS["t" D
! 110: . D XFORM^DICF1(.DIFLAGS,.DIVALUE,.DISCREEN,.DILVA,.DILIST)
! 111: I DIFLAGS["u" ;D UPRIGHT^DICF4(DIFILE,.DIEN,.DIFLAGS,.DIROOT,.DIVALUE,.DICOUNT,.DISCREEN,.DIDENT,.DILIST) I 1
! 112: E D CHKALL^DICF2(DIFILE,.DIEN,DIFLAGS,.DIROOT,.DIVALUE,.DICOUNT,.DISCREEN,.DIFORCE,.DIDENT,.DILIST)
! 113: D CLOSE
! 114: Q
! 115:
! 116: CLOSE
! 117: ; cleanup
! 118: I $G(DIMSGA)'="" D CALLOUT^DIEFU(DIMSGA)
! 119: I '$G(DIERR),DIFLAGS'["p" S @DILIST@(0)=DICOUNT_U_DICOUNT("MAX")_U_DICOUNT("MORE")
! 120: I DILIST'="" K @DILIST@("B")
! 121: K ^TMP("DILVA",$J,DILIST(0))
! 122: I DILIST(0)=1 K ^TMP("DILVA",$J)
! 123: S DILIST("C")=DICOUNT
! 124: Q
! 125:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>