1 | DDWF ;SFISC/MKO-FIND, REPLACE ;8:14 AM 27 Mar 1996
|
---|
2 | ;;22.0;VA FileMan;;Mar 30, 1999
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | NEXT ;Find next occurrence of same text
|
---|
6 | N DDWT
|
---|
7 | G:$G(DDWFIND)="" FIND
|
---|
8 | S DDWT=DDWFIND
|
---|
9 | D FINDT(DDWT,$G(DDWFIND(1)))
|
---|
10 | Q
|
---|
11 | ;
|
---|
12 | FIND ;Prompt and find text
|
---|
13 | N DDWCOD,DDWF,DDWT
|
---|
14 | D ASK^DDWG(3,"Find What: ",30,$G(DDWFIND),"","",.DDWT,.DDWCOD)
|
---|
15 | Q:DDWT=""
|
---|
16 | D FINDT(DDWT,$P($G(DDWCOD),U)="U")
|
---|
17 | Q
|
---|
18 | ;
|
---|
19 | FINDT(DDWT,DDWBACK) ;Find DDWT
|
---|
20 | D:$D(DDWMARK) UNMARK^DDW7
|
---|
21 | S DDWFIND=DDWT,DDWT=$$UC(DDWT)
|
---|
22 | I $G(DDWBACK) D
|
---|
23 | . S DDWFIND(1)=1 D LOOKB
|
---|
24 | E K DDWFIND(1) D LOOK
|
---|
25 | Q
|
---|
26 | ;
|
---|
27 | LOOK ;Look in arrays
|
---|
28 | N DDWF,DDWI,DDWX
|
---|
29 | S DDWF=$F($$UC(DDWL(DDWRW)),DDWT,DDWC)
|
---|
30 | I DDWF D REPOS(DDWRW+DDWA,DDWF,DDWT) Q
|
---|
31 | ;
|
---|
32 | F DDWI=DDWRW+1:1:DDWMR D Q:DDWF
|
---|
33 | . S DDWX=$F($$UC(DDWL(DDWI)),DDWT)
|
---|
34 | . I DDWX D REPOS(DDWI+DDWA,DDWX,DDWT) S DDWF=1
|
---|
35 | Q:DDWF
|
---|
36 | ;
|
---|
37 | D MSG^DDW("Searching ...")
|
---|
38 | F DDWI=DDWSTB:-1:1 D Q:DDWF
|
---|
39 | . S DDWX=$F($$UC(^TMP("DDW1",$J,DDWI)),DDWT)
|
---|
40 | . I DDWX D
|
---|
41 | .. D MSG^DDW()
|
---|
42 | .. D REPOS(DDWA+DDWMR+DDWSTB-DDWI+1,DDWX,DDWT)
|
---|
43 | .. S DDWF=1
|
---|
44 | Q:DDWF
|
---|
45 | ;
|
---|
46 | D MSG^DDW("Text not found.") H 2
|
---|
47 | D MSG^DDW(),CUP(DDWRW,DDWC)
|
---|
48 | F R *DDWX:0 E Q
|
---|
49 | Q
|
---|
50 | ;
|
---|
51 | LOOKB ;Look backward in arrays
|
---|
52 | N DDWF,DDWI,DDWX
|
---|
53 | S DDWF=$$RF($E($$UC(DDWL(DDWRW)),1,DDWC-1),DDWT)
|
---|
54 | I DDWF=DDWC S DDWF=$$RF($E($$UC(DDWL(DDWRW)),1,DDWC-$L(DDWT)-1),DDWT)
|
---|
55 | I DDWF D REPOS(DDWRW+DDWA,DDWF,DDWT) Q
|
---|
56 | ;
|
---|
57 | F DDWI=DDWRW-1:-1:1 D Q:DDWF
|
---|
58 | . S DDWX=$$RF($$UC(DDWL(DDWI)),DDWT)
|
---|
59 | . I DDWX D REPOS(DDWI+DDWA,DDWX,DDWT) S DDWF=1
|
---|
60 | Q:DDWF
|
---|
61 | ;
|
---|
62 | D MSG^DDW("Searching ...")
|
---|
63 | F DDWI=DDWA:-1:1 D Q:DDWF
|
---|
64 | . S DDWX=$$RF($$UC(^TMP("DDW",$J,DDWI)),DDWT)
|
---|
65 | . I DDWX D
|
---|
66 | .. D MSG^DDW()
|
---|
67 | .. D REPOS(DDWI,DDWX,DDWT)
|
---|
68 | .. S DDWF=1
|
---|
69 | Q:DDWF
|
---|
70 | ;
|
---|
71 | D MSG^DDW("Text not found.") H 2
|
---|
72 | D MSG^DDW(),CUP(DDWRW,DDWC)
|
---|
73 | F R *DDWX:0 E Q
|
---|
74 | Q
|
---|
75 | ;
|
---|
76 | REPOS(DDWY,DDWX,DDWT) ;Define DDWMARK, paint if on screen
|
---|
77 | S DDWMARK=DDWY_U_(DDWX-$L(DDWT))_U_DDWY_U_(DDWX-1)
|
---|
78 | I DDWY-DDWA>0,DDWY-DDWA'>DDWMR,DDWX-DDWOFS>0,DDWX-DDWOFS'>IOM D
|
---|
79 | . D PAINT^DDW7(DDWMARK,1)
|
---|
80 | . D POS(DDWY-DDWA,DDWX,"RN")
|
---|
81 | E D LINE^DDWG(DDWY,DDWX)
|
---|
82 | D IND^DDW7(1)
|
---|
83 | Q
|
---|
84 | ;
|
---|
85 | UC(X) ;Return uppercase of X
|
---|
86 | Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
---|
87 | ;
|
---|
88 | RF(X,T) ;Find last occurrence of T in X
|
---|
89 | N Y
|
---|
90 | Q:X'[T 0
|
---|
91 | S Y=1 F S Y=$F(X,T,Y) Q:'$F(X,T,Y)
|
---|
92 | Q Y
|
---|
93 | ;
|
---|
94 | CUP(Y,X) ;Cursor positioning
|
---|
95 | S DY=IOTM+Y-2,DX=X-1 X IOXY
|
---|
96 | Q
|
---|
97 | ;
|
---|
98 | POS(R,C,F) ;Pos cursor based on char pos C
|
---|
99 | N DDWX
|
---|
100 | S:$G(C)="E" C=$L($G(DDWL(R)))+1
|
---|
101 | S:$G(F)["N" DDWN=$G(DDWL(R))
|
---|
102 | S:$G(F)["R" DDWRW=R,DDWC=C
|
---|
103 | ;
|
---|
104 | S DDWX=C-DDWOFS
|
---|
105 | I DDWX>IOM!(DDWX<1) D SHIFT^DDW3(C,.DDWOFS)
|
---|
106 | S DY=IOTM+R-2,DX=C-DDWOFS-1 X IOXY
|
---|
107 | Q
|
---|