File:  [Coherent Logic Development] / freem_fileman / USER / DICL1.m
Revision 1.1: download - view: text, annotated - select for diffs
Mon Apr 28 14:13:19 2025 UTC (3 months ago) by snw
Branches: MAIN
CVS tags: HEAD
Restructure repository

    1: DICL1	;SEA/TOAD-VA FileMan: Lookup: Lister, Part 2 ;11/28/94  08:34 ;
    2: 	;;21.0;VA FileMan;;Dec 28, 1994
    3: 	;Per VHA Directive 10-93-142, this routine should not be modified.
    4: 	
    5: PREP	
    6: 	N DIEN,DIENTRY,DIOUT1,DIOUT2,DISUB1
    7: 	S DIOUT1=0
    8: 	S DIENTRY=DIFROM
    9: 	D DA^DILF(DIFIEN,.DIEN)
   10: 	I DINDEX("WAY")=1 S DILIST("ORDER")=0
   11: 	E  S DILIST("ORDER")=DINUMBER+1
   12: 	
   13: REVERSE	
   14: 	N DIREVERS,DITO,DITOIN
   15: 	I DINUMBER="*",DINDEX("WAY")=-1 D
   16: 	. S DIREVERS=1
   17: 	. S DITO=DIFROM
   18: 	. S DITOIN=DIFROM("IEN")
   19: 	. S DINDEX("WAY")=1
   20: 	. S DIFROM=DIPART
   21: 	. I DIFROM'="" S DIUSEFRM=1
   22: 	. S DIFROM("IEN")=""
   23: R1	. S DIENTRY=DIPART
   24: 	. S DILIST("ORDER")=0
   25: 	. Q
   26: 	E  D
   27: 	. S DIREVERS=0
   28: 	. S DITO=""
   29: 	. S DITOIN=""
   30: 	. Q
   31: 	
   32: PREP2	; prepare to list entries
   33: 	N DICODE,DID,DIDT,DIDVAL
   34: 	N DIMSG,DIOUT3,DISKIP,DIVAL,X,Y
   35: 	N DICOUNT D
   36: 	. S DICOUNT=0
   37: 	. S DICOUNT("MAX")=DINUMBER
   38: 	. S DICOUNT("JUST LOOKING")=0
   39: 	. S DICOUNT("LAST ENTRY")=""
   40: 	. S DICOUNT("LAST IEN")=""
   41: 	S DIENTRY("PREVIOUS")="",DIENTRY("PREVIOUS EXTERNAL")=""
   42: P1	I +DIPART'=DIPART S DICOUNT("MORE?")=0
   43: 	E  D
   44: 	. I DINDEX("WAY")=1,+DIFROM=DIFROM S DICOUNT("MORE?")=1 Q
   45: 	. I DINDEX("WAY")=-1,+DIFROM'=DIFROM S DICOUNT("MORE?")=1 Q
   46: 	. S DICOUNT("MORE?")=0 Q
   47: 	I DINDEX("TYPE")="P",DIFLAGS'["I" D
   48: 	. S DIFLAGS=DIFLAGS_"p"
   49: 	. D POINT(.DIFILE,.DIROOT,.DINDEX,.DIFROM)
   50: 	
   51: LONG	
   52: 	D
   53: 	. N DILENGTH S DILENGTH=+$P(DINDEX("NODE"),">",2)
   54: 	. I 'DILENGTH S DILENGTH=99999
   55: 	. S DIFROM=$E(DIFROM,1,DILENGTH)
   56: 	. S DIPART=$E(DIPART,1,DILENGTH)
   57: 	. S DITO=$E(DITO,1,DILENGTH)
   58: 	
   59: GETLIST	
   60: 	; I $G(ZRT) S ZRT(ZRT)="BRANCH^"_$ZH,ZRT=ZRT+1
   61: 	D LIST^DICL2
   62: 	
   63: FINAL	
   64: 	I $G(DIERR) K @DILIST D OUT^DICL Q
   65: 	I DICOUNT=0,$O(@DIROOT@(DINDEX,""))="",$O(@DIROOT@(0)) D  Q
   66: 	. S DIERN=420,DIPE(1)=DINDEX,DIPE("FILE")=DIFILE D ERROUT^DICL
   67: 	S @DILIST@(0)=DICOUNT_U_DICOUNT("MAX")_U_DICOUNT("MORE?")
   68: 	K DIFROM("LOOKING FOR START")
   69: 	I DICOUNT("MORE?") D
   70: 	. S DIFROM=DIENTRY
   71: 	. S DIFROM("IEN")=$S(DIFLAGS'["p":DIEN,1:$G(DICOUNT("LAST IEN")))
   72: 	E  S DIFROM="",DIFROM("IEN")=""
   73: 	Q
   74: 	
   75: POINT(DIFILE,DIROOT,DINDEX,DIFROM)	;
   76: 	; prepare to list a pointer index
   77: 	S DIFILE("MAIN")=DIFILE
   78: 	S DIROOT("MAIN")=DIROOT
   79: 	S DIROOT("MAIN O")=DIROOT("O")
   80: 	D FOLLOW^DICL3(.DIFILE,.DIROOT,DINDEX("PTR"),DINDEX("NODE"))
   81: 	N TEMP M TEMP=DINDEX K DINDEX M DINDEX("MAIN")=TEMP
   82: 	S DINDEX="B",DINDEX("WAY")=DINDEX("MAIN","WAY")
   83: 	D INDEX^DICU1(.DIFILE,.DINDEX,DIROOT)
   84: 	S DIFROM("LOOKING FOR START")=DIFROM'=""&(DIFROM("IEN")'="")
   85: 	Q
   86: 	
   87: 	

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>