Annotation of freem_fileman/DICL2.m, revision 1.1
1.1 ! snw 1: DICL2 ;SEA/TOAD-VA FileMan: Lookup: Lister, Part 3 ;11/28/94 18:40 ;
! 2: ;;21.0;VA FileMan;;Dec 28, 1994
! 3: ;Per VHA Directive 10-93-142, this routine should not be modified.
! 4:
! 5: LIST
! 6: F D Q:DIOUT1!$G(DIERR)
! 7: . ; I $G(ZRT) S ZRT(ZRT)="LOOP "_(ZRT-2)_"^"_$ZH,ZRT=ZRT+1
! 8: . I 'DIUSEFRM S DIENTRY=$O(@DIROOT@(DINDEX,DIENTRY),DINDEX("WAY"))
! 9: . S DIUSEFRM=0
! 10: . D I DIOUT1 Q:'DICOUNT("MORE?") D MORE D Q:DIOUT1
! 11: . . I DIENTRY="" S DIOUT1=1 Q
! 12: . . I $E(DIENTRY,1,DIPARTL)'=DIPART S DIENTRY="",DIOUT1=1 Q
! 13: . . I DITO'="",DITOIN="",DITO']]DIENTRY S DIENTRY="",DIOUT1=1 Q
! 14: . I DIFLAGS'["p" S DIEN=DIFROM("IEN"),DIFROM("IEN")=""
! 15: . S DIOUT2=0
! 16: RECORDS .
! 17: . F D Q:DIOUT2!$G(DIERR)
! 18: . . S DIEN=$O(@DIROOT@(DINDEX,DIENTRY,DIEN),DINDEX("WAY"))
! 19: . . I DIEN="" S DIOUT2=1 Q
! 20: . . I DIFLAGS'["p",DITOIN'="",DITO=DIENTRY,DIEN'<DITOIN D Q
! 21: . . . S DIEN="",DIENTRY="",DIOUT1=1,DIOUT2=1 Q
! 22: . . I DIFLAGS["p" D
! 23: . . . D BACKTRAK^DICL3(.DIFILE,DIEN,DIFILE("STACK"))
! 24: . . E D CONSIDER
! 25: MAX .
! 26: . Q:$G(DIERR)
! 27: . I DICOUNT=DICOUNT("MAX"),'DICOUNT("JUST LOOKING") S DIOUT1=1
! 28: Q
! 29:
! 30: MORE ; ENTRIES--for numeric partials, continue down into string subscripts
! 31: ; . . .that start with the numeric value
! 32: S DIOUT1=0,DICOUNT("MORE?")=0
! 33: I DINDEX("WAY")=1 S DIENTRY=$O(@DIROOT@(DINDEX,DIPART_" "),-1)
! 34: E S DIENTRY=DIPART+$S($E(DIPART)="-":-1,1:1)
! 35: S DIENTRY=$O(@DIROOT@(DINDEX,DIENTRY),DINDEX("WAY"))
! 36: Q
! 37:
! 38: SCREEN(DIFILE,DIEN,DIFLAGS,DIROOT,DIFIEN,DISCREEN,DICALSCR,DIFILSCR,DINDEX)
! 39: I '$$VMINUS9^DIEFU(DIFILE,","_DIEN_DIFIEN) Q 1
! 40: I $P($G(@DIROOT@(DIEN,0)),U)="" Q 1
! 41:
! 42: S1 N DISKIP S DISKIP=0
! 43: N DISCR
! 44: I DISCREEN F DISCR="DIFILSCR","DICALSCR" I @DISCR'="" D Q:DISKIP
! 45: . N %,D S D=DINDEX
! 46: . N DIC S DIC=DIROOT("O"),DIC(0)=$TR(DIFLAGS,"fpq")
! 47: . N Y M Y=DIEN
! 48: . N Y1 S Y1=DIEN_DIFIEN
! 49: . N X S X=$G(@DIROOT@(DIEN,0)),X=""
! 50: . I 1 X @DISCR S DISKIP='$T
! 51: . I $G(DIERR) D
! 52: . . S DIFLAGS=DIFLAGS_"q",DISKIP=1
! 53: . . N DICONTXT
! 54: . . S DICONTXT=$S(DISCR["F":"Whole File Screen",1:"Screen Parameter")
! 55: . . D ERR^DICF6(120,DIFILE,DIEN,"",DICONTXT)
! 56: Q DISKIP
! 57:
! 58: ACCEPT(DIFILE,DIEN,DIFLAGS,DIROOT,DIFIEN,DIENTRY,DICOUNT,DINDEX,DIDENT,DILIST)
! 59: I DICOUNT("JUST LOOKING") D Q
! 60: . S DIENTRY=DICOUNT("LAST ENTRY")
! 61: . S DIEN=DICOUNT("LAST IEN")
! 62: . S DICOUNT("JUST LOOKING")=0
! 63: . S DICOUNT("MORE?")=1
! 64: . S DIOUT2=1
! 65:
! 66: A1 S DICOUNT=DICOUNT+1
! 67: I DICOUNT=DICOUNT("MAX") D
! 68: . S DICOUNT("LAST ENTRY")=DIENTRY
! 69: . S DICOUNT("LAST IEN")=DIEN
! 70: . S DICOUNT("JUST LOOKING")=1
! 71:
! 72: A2 S DILIST("ORDER")=DILIST("ORDER")+DINDEX("WAY")
! 73:
! 74: A3 I DIFLAGS'["p" D Q:$G(DIERR)
! 75: . I DIFILE("INDEX")'=DIFILE N DIENS D Q:$G(DIERR)
! 76: . . S DIEN("SAVE")=DIEN
! 77: . . S DIEN=$$IENS(DIROOT,DINDEX,DIENTRY,DIEN)
! 78: . . S DIROOT("SAVE")=DIROOT
! 79: . . S DIROOT=$$ROOT^DIQGU(DIFILE("INDEX"),DIEN,1,1) Q:$G(DIERR)
! 80: . S @("DIVAL="_DINDEX("GET"))
! 81: . I DIFLAGS'["I" S DIVAL=$$FORMAT^DICU2(DIFILE("INDEX"),DINDEX("FIELD"),"K",DIVAL,DINDEX("TYPE"),DINDEX("CODE"),.DIENTRY)
! 82: . I DIFILE("INDEX")'=DIFILE S DIROOT=DIROOT("SAVE"),DIEN=DIEN("SAVE")
! 83: E D
! 84: . S DIVAL=DIENTRY
! 85: . I DIFLAGS'["I" S DIVAL=$$FORMAT^DICU2(DIFILE,DINDEX("END","FIELD"),"K",DIVAL,DINDEX("END","TYPE"),DINDEX("END","CODE"),.DIENTRY)
! 86:
! 87: A4 S @DILIST@(1,DILIST("ORDER"))=DIVAL
! 88: I DINDEX'="#" S @DILIST@(2,DILIST("ORDER"))=DIEN
! 89: I DIFLAGS["f" Q
! 90:
! 91: A5 S DIEN=DIEN_DIFIEN
! 92: D IDS^DICU2(DIFILE,.DIEN,DIFLAGS_(DIFLAGS["I"),"",.DIROOT,.DINDEX,DILIST("ORDER"),.DIDENT,DILIST)
! 93: S DIEN=+DIEN
! 94: Q
! 95:
! 96: CONSIDER
! 97: ; consider an entry. if not screened, add to list
! 98: Q:$$SCREEN(DIFILE,.DIEN,DIFLAGS,.DIROOT,DIFIEN,DISCREEN,DICALSCR,DIFILSCR,DINDEX)
! 99: D ACCEPT(.DIFILE,.DIEN,DIFLAGS,.DIROOT,DIFIEN,.DIENTRY,.DICOUNT,.DINDEX,.DIDENT,.DILIST)
! 100: Q
! 101:
! 102: IENS(DIROOT,DINDEX,DIENTRY,DIEN)
! 103: ; return the IENS for a whole file index entry
! 104: N DIENS,DIENSUB
! 105: S DIENS=DIEN_",",DIENSUB=""
! 106: S DIROOT=$NA(@DIROOT@(DINDEX,DIENTRY,DIEN))
! 107: F D Q:DIENSUB=""
! 108: . S DIENSUB=$O(@DIROOT@(DIENSUB)) Q:DIENSUB=""
! 109: . S DIENS=DIENSUB_","_DIENS
! 110: . S DIROOT=$NA(@DIROOT@(DIENSUB))
! 111: Q DIENS
! 112:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>