DICL1 ;SEA/TOAD-VA FileMan: Lookup: Lister, Part 2 ;11/28/94 08:34 ;
;;21.0;VA FileMan;;Dec 28, 1994
;Per VHA Directive 10-93-142, this routine should not be modified.
PREP
N DIEN,DIENTRY,DIOUT1,DIOUT2,DISUB1
S DIOUT1=0
S DIENTRY=DIFROM
D DA^DILF(DIFIEN,.DIEN)
I DINDEX("WAY")=1 S DILIST("ORDER")=0
E S DILIST("ORDER")=DINUMBER+1
REVERSE
N DIREVERS,DITO,DITOIN
I DINUMBER="*",DINDEX("WAY")=-1 D
. S DIREVERS=1
. S DITO=DIFROM
. S DITOIN=DIFROM("IEN")
. S DINDEX("WAY")=1
. S DIFROM=DIPART
. I DIFROM'="" S DIUSEFRM=1
. S DIFROM("IEN")=""
R1 . S DIENTRY=DIPART
. S DILIST("ORDER")=0
. Q
E D
. S DIREVERS=0
. S DITO=""
. S DITOIN=""
. Q
PREP2 ; prepare to list entries
N DICODE,DID,DIDT,DIDVAL
N DIMSG,DIOUT3,DISKIP,DIVAL,X,Y
N DICOUNT D
. S DICOUNT=0
. S DICOUNT("MAX")=DINUMBER
. S DICOUNT("JUST LOOKING")=0
. S DICOUNT("LAST ENTRY")=""
. S DICOUNT("LAST IEN")=""
S DIENTRY("PREVIOUS")="",DIENTRY("PREVIOUS EXTERNAL")=""
P1 I +DIPART'=DIPART S DICOUNT("MORE?")=0
E D
. I DINDEX("WAY")=1,+DIFROM=DIFROM S DICOUNT("MORE?")=1 Q
. I DINDEX("WAY")=-1,+DIFROM'=DIFROM S DICOUNT("MORE?")=1 Q
. S DICOUNT("MORE?")=0 Q
I DINDEX("TYPE")="P",DIFLAGS'["I" D
. S DIFLAGS=DIFLAGS_"p"
. D POINT(.DIFILE,.DIROOT,.DINDEX,.DIFROM)
LONG
D
. N DILENGTH S DILENGTH=+$P(DINDEX("NODE"),">",2)
. I 'DILENGTH S DILENGTH=99999
. S DIFROM=$E(DIFROM,1,DILENGTH)
. S DIPART=$E(DIPART,1,DILENGTH)
. S DITO=$E(DITO,1,DILENGTH)
GETLIST
; I $G(ZRT) S ZRT(ZRT)="BRANCH^"_$ZH,ZRT=ZRT+1
D LIST^DICL2
FINAL
I $G(DIERR) K @DILIST D OUT^DICL Q
I DICOUNT=0,$O(@DIROOT@(DINDEX,""))="",$O(@DIROOT@(0)) D Q
. S DIERN=420,DIPE(1)=DINDEX,DIPE("FILE")=DIFILE D ERROUT^DICL
S @DILIST@(0)=DICOUNT_U_DICOUNT("MAX")_U_DICOUNT("MORE?")
K DIFROM("LOOKING FOR START")
I DICOUNT("MORE?") D
. S DIFROM=DIENTRY
. S DIFROM("IEN")=$S(DIFLAGS'["p":DIEN,1:$G(DICOUNT("LAST IEN")))
E S DIFROM="",DIFROM("IEN")=""
Q
POINT(DIFILE,DIROOT,DINDEX,DIFROM) ;
; prepare to list a pointer index
S DIFILE("MAIN")=DIFILE
S DIROOT("MAIN")=DIROOT
S DIROOT("MAIN O")=DIROOT("O")
D FOLLOW^DICL3(.DIFILE,.DIROOT,DINDEX("PTR"),DINDEX("NODE"))
N TEMP M TEMP=DINDEX K DINDEX M DINDEX("MAIN")=TEMP
S DINDEX="B",DINDEX("WAY")=DINDEX("MAIN","WAY")
D INDEX^DICU1(.DIFILE,.DINDEX,DIROOT)
S DIFROM("LOOKING FOR START")=DIFROM'=""&(DIFROM("IEN")'="")
Q
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>