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>