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