Annotation of freem_fileman/DDWC.m, revision 1.1.1.1
1.1 snw 1: DDWC ;SFISC/MKO-CHANGE (REPLACE) ;09:24 AM 27 Aug 1994
2: ;;21.0;VA FileMan;;Dec 28, 1994
3: ;Per VHA Directive 10-93-142, this routine should not be modified.
4: CHG ;Change
5: N DDWOPT
6: D SETUP^DDWC1
7: F D PROC Q:DDWOPT=-1
8: D RESTORE^DDWC1
9: K DDWCHG(1)
10: Q
11: ;
12: PROC ;Main procedure
13: N DDWCOD,DDWT
14: ;
15: D:$D(DDWMARK) UNMARK^DDW7
16: D EN^DIR0(IOTM+DDWMR,14,30,"",$G(DDWFIND),100,"","","AKTW",.DDWT,.DDWCOD)
17: I DDWT=""!(DDWCOD="TO") S DDWOPT=-1 Q
18: S DDWFIND=DDWT,DDWT=$$UC(DDWT)
19: ;
20: K DDWCHG(1)
21: D EN^DIR0(IOTM+DDWMR+1,14,30,"",$G(DDWCHG),100,"","","AKTW",.DDWCHG,.DDWCOD)
22: I DDWCOD="TO" S DDWOPT=-1 Q
23: S:DDWCHG?1L.E DDWCHG(1)=$$UC($E(DDWCHG))_$E(DDWCHG,2,999)
24: ;
25: F D OPT Q:DDWOPT]""
26: Q
27: ;
28: OPT ;Prompt for and process option
29: W $P(DDGLVID,DDGLDEL,6)
30: F D Q:DDWOPT]""
31: . D CUP(DDWMR+4,15) W " "_$C(8)
32: . R DDWOPT#1:DTIME E S DDWOPT="Q" Q
33: . I DDWOPT=U S DDWOPT="Q"
34: . I DDWOPT="" S DDWOPT="E" Q
35: . I DDWOPT="?" S DDWOPT="H" Q
36: . S DDWOPT=$$UC(DDWOPT)
37: . I "^F^R^A^Q^"'[(U_DDWOPT_U) W $C(7) S DDWOPT=""
38: D CUP(DDWMR+4,15) W $P(DDGLVID,DDGLDEL,10)_" "
39: D @DDWOPT
40: Q
41: ;
42: F ;Find next
43: D FINDT^DDWF(DDWFIND)
44: S DDWOPT=""
45: Q
46: ;
47: R ;Replace
48: N DDWE
49: I '$D(DDWMARK) D CERR Q
50: D RS(.DDWE) Q:$G(DDWE)
51: D F
52: Q
53: ;
54: RS(DDWE) ;Change selected text
55: N DDWDIF
56: S DDWDIF=$L(DDWCHG)-$P(DDWMARK,U,4)+$P(DDWMARK,U,2)-1
57: I $L(DDWN)+DDWDIF>245 D Q
58: . S DDWE=1,DDWOPT=""
59: . D MSG($C(7)_"Unable to change text. Resultant line is too long.")
60: ;
61: S DDWE=0
62: S $E(DDWN,$P(DDWMARK,U,2),$P(DDWMARK,U,4))=$S($E(DDWN,$P(DDWMARK,U,2))?1U:$G(DDWCHG(1),DDWCHG),1:DDWCHG)
63: S DDWL(DDWRW)=DDWN
64: D CUP(DDWRW,1) W $P(DDGLCLR,DDGLDEL)_$E(DDWN,1+DDWOFS,IOM+DDWOFS)
65: K DDWMARK D IND^DDW7()
66: D POS(DDWRW,DDWC+DDWDIF,"R")
67: Q
68: ;
69: A ;Change all
70: N DDWE,DDWF,DDWI,DDWND,DDWX
71: D MSG^DDW("Changing text ...")
72: I $D(DDWMARK) D RS(.DDWE) G:$G(DDWE) AEND
73: ;
74: S DDWX=$F($$UC(DDWL(DDWRW)),DDWT,DDWC)
75: I DDWX D
76: . S DDWL(DDWRW)=$$REP(DDWL(DDWRW),DDWFIND,.DDWCHG,DDWX,.DDWE),DDWF=1
77: . S:$G(DDWE) DDWE=DDWRW+DDWA_U_DDWE
78: ;
79: I '$G(DDWE) F DDWI=DDWRW+1:1:DDWMR D Q:$G(DDWE)
80: . S DDWX=$F($$UC(DDWL(DDWI)),DDWT)
81: . S:DDWX DDWL(DDWI)=$$REP(DDWL(DDWI),DDWFIND,.DDWCHG,DDWX,.DDWE),DDWF=1
82: . S:$G(DDWE) DDWE=DDWI+DDWA_U_DDWE
83: ;
84: I '$G(DDWE) F DDWI=DDWSTB:-1:1 D Q:$G(DDWE)
85: . S DDWND=^TMP("DDW1",$J,DDWI)
86: . S DDWX=$F($$UC(DDWND),DDWT)
87: . S:DDWX ^TMP("DDW1",$J,DDWI)=$$REP(DDWND,DDWFIND,.DDWCHG,DDWX,.DDWE),DDWF=1
88: . S:$G(DDWE) DDWE=DDWA+DDWMR+DDWSTB-DDWI+1_U_DDWE
89: ;
90: I $G(DDWF) D
91: . D:$G(DDWE) MSG^DDW($C(7)_"Unable to complete replacement. A resultant line is too long.") H 2
92: . F DDWI=1:1:$$MIN(DDWMR,DDWCNT-DDWA) D
93: .. D CUP(DDWI,1)
94: .. W $P(DDGLCLR,DDGLDEL)_$E(DDWL(DDWI),1+DDWOFS,IOM+DDWOFS)
95: . D:$G(DDWE) LINE^DDWG(+DDWE,1),POS(DDWRW,$P(DDWE,U,2),"R")
96: E D MSG^DDW("Text not found.") H 2 D FLUSH
97: ;
98: AEND D MSG^DDW(),CUP(DDWRW,DDWC)
99: S DDWOPT=$S($G(DDWE):-1,1:"")
100: Q
101: ;
102: REP(DDWND,DDWFIND,DDWCHG,DDWX,DDWE) ;String replacement of DDWND
103: N DDWDIF,DDWFST,DDWSV
104: S DDWDIF=$L(DDWCHG)-$L(DDWFIND)
105: F D Q:'DDWX!$G(DDWE)
106: . S DDWSV=DDWND,DDWFST=DDWX-$L(DDWFIND)
107: . I $L(DDWND)+DDWDIF>245 S DDWE=DDWFST Q
108: . S $E(DDWND,DDWFST,DDWX-1)=$S($E(DDWND,DDWFST)?1U:$G(DDWCHG(1),DDWCHG),1:DDWCHG)
109: . S DDWX=DDWX+DDWDIF
110: . S DDWX=$F($$UC(DDWND),DDWFIND,DDWX)
111: Q $S($G(DDWE):DDWSV,1:DDWND)
112: ;
113: E ;Edit Find
114: D FLUSH
115: Q
116: ;
117: Q ;Quit option
118: D FLUSH
119: S DDWOPT=-1
120: Q
121: ;
122: H ;Help
123: D MSG("Press the highlighted letter of one of the Options.")
124: S DDWOPT=""
125: Q
126: ;
127: CERR ;The Change options are disabled
128: D MSG($C(7)_"You must Find the text before you can Change it.")
129: S DDWOPT=""
130: Q
131: ;
132: MSG(DDWX) ;
133: D CUP(DDWMR+5,1) W $P(DDGLCLR,DDGLDEL)_$G(DDWX) H 2
134: D CUP(DDWMR+5,1) W $P(DDGLCLR,DDGLDEL)
135: D FLUSH
136: Q
137: ;
138: FLUSH ;Flush read buffer
139: N DDWX F R *DDWX:0 E Q
140: Q
141: ;
142: UC(X) ;Return uppercase of X
143: Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
144: ;
145: MIN(X,Y) ;
146: Q $S(X<Y:X,1:Y)
147: ;
148: CUP(Y,X) ;Pos cursor
149: S DY=IOTM+Y-2,DX=X-1 X IOXY
150: Q
151: ;
152: POS(R,C,F) ;Pos cursor based on char pos C
153: N DDWX
154: S:$G(C)="E" C=$L($G(DDWL(R)))+1
155: S:$G(F)["N" DDWN=$G(DDWL(R))
156: S:$G(F)["R" DDWRW=R,DDWC=C
157: ;
158: S DDWX=C-DDWOFS
159: I DDWX>IOM!(DDWX<1) D SHIFT^DDW3(C,.DDWOFS)
160: S DY=IOTM+R-2,DX=C-DDWOFS-1 X IOXY
161: Q
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>