Annotation of freem_fileman/DICL1.m, revision 1.1.1.1

1.1       snw         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>