Annotation of freem_fileman/DICL2.m, revision 1.1.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>