| 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
 | 
|---|