| 1 | DDWG ;SFISC/MKO-GOTO ;3:40 PM  5 Jul 1996
 | 
|---|
| 2 |  ;;22.0;VA FileMan;;Mar 30, 1999
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 | GOTO ;Go to a specific location
 | 
|---|
| 5 |  N DDWANS,DDWI,DDWHLP
 | 
|---|
| 6 |  S DDWHLP(1)="Examples, to go to a screen:  S21, 21, S+3, +3, -3"
 | 
|---|
| 7 |  S DDWHLP(2)="          to go to a line:    L53, L+4, L-5"
 | 
|---|
| 8 |  S DDWHLP(3)="          to go to a column:  C40, C+10, C-20"
 | 
|---|
| 9 |  D ASK(4,"Go to: ",17,"","D VALGTO",.DDWHLP,.DDWANS)
 | 
|---|
| 10 |  I U[DDWANS
 | 
|---|
| 11 |  E  I "Ss"[$E(DDWANS)!(DDWANS'?1A.E) D
 | 
|---|
| 12 |  . D GOTOS
 | 
|---|
| 13 |  E  I "Ll"[$E(DDWANS) D
 | 
|---|
| 14 |  . D GOTOL
 | 
|---|
| 15 |  E  I "Cc"[$E(DDWANS) D
 | 
|---|
| 16 |  . D GOTOC
 | 
|---|
| 17 |  Q
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 | GOTOS ;Go to a page
 | 
|---|
| 20 |  N DDWS
 | 
|---|
| 21 |  S DDWS=DDWANS
 | 
|---|
| 22 |  S:DDWS?1A.E DDWS=$E(DDWS,2,999)
 | 
|---|
| 23 |  S:DDWS?1P.E DDWS=$E(DDWS,2,999)
 | 
|---|
| 24 |  I DDWANS["+" S DDWS=$$SCREEN+DDWS
 | 
|---|
| 25 |  E  I DDWANS["-" S DDWS=$$SCREEN-DDWS
 | 
|---|
| 26 |  I DDWS<1 S DDWS=1
 | 
|---|
| 27 |  E  I DDWS>$$LTOSC(DDWCNT) S DDWS=$$LTOSC(DDWCNT)
 | 
|---|
| 28 |  D LINE(DDWS-1*DDWMR+1)
 | 
|---|
| 29 |  Q
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 | GOTOL ;Go to a line
 | 
|---|
| 32 |  N DDWLN
 | 
|---|
| 33 |  S DDWLN=DDWANS
 | 
|---|
| 34 |  S:DDWLN?1A.E DDWLN=$E(DDWLN,2,999)
 | 
|---|
| 35 |  S:DDWLN?1P.E DDWLN=$E(DDWLN,2,999)
 | 
|---|
| 36 |  I DDWANS["+" S DDWLN=DDWA+DDWRW+DDWLN
 | 
|---|
| 37 |  E  I DDWANS["-" S DDWLN=DDWA+DDWRW-DDWLN
 | 
|---|
| 38 |  I DDWLN<1 S DDWLN=1
 | 
|---|
| 39 |  E  I DDWLN>DDWCNT S DDWLN=DDWCNT
 | 
|---|
| 40 |  D LINE(DDWLN)
 | 
|---|
| 41 |  Q
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 | GOTOC ;Go to a column
 | 
|---|
| 44 |  N DDWCOL
 | 
|---|
| 45 |  S DDWCOL=DDWANS
 | 
|---|
| 46 |  S:DDWCOL?1A.E DDWCOL=$E(DDWCOL,2,999)
 | 
|---|
| 47 |  S:DDWCOL?1P.E DDWCOL=$E(DDWCOL,2,999)
 | 
|---|
| 48 |  I DDWANS["+" S DDWCOL=DDWC+DDWCOL
 | 
|---|
| 49 |  E  I DDWANS["-" S DDWCOL=DDWC-DDWCOL
 | 
|---|
| 50 |  I DDWCOL<1 S DDWCOL=1
 | 
|---|
| 51 |  E  I DDWCOL>246 S DDWCOL=246
 | 
|---|
| 52 |  D POS(DDWRW,DDWCOL,"R")
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 | LINE(DDWLN,DDWCOL) ;Adjust arrays and position cursor on line DDWLN
 | 
|---|
| 56 |  I $G(DDWCOL)'="E",'$G(DDWCOL) S DDWCOL=1
 | 
|---|
| 57 |  S:DDWLN>DDWCNT DDWLN=DDWCNT
 | 
|---|
| 58 |  I DDWLN>DDWA,DDWLN'>(DDWA+DDWMR-1) D
 | 
|---|
| 59 |  . D POS(DDWLN-DDWA,DDWCOL,"RN")
 | 
|---|
| 60 |  E  I DDWLN>DDWA D
 | 
|---|
| 61 |  . D SHFTDN^DDW3(DDWLN,DDWCOL),POS(DDWLN-DDWA,DDWCOL,"RN")
 | 
|---|
| 62 |  E  D
 | 
|---|
| 63 |  . D SHFTUP^DDW3(DDWLN),POS(1,DDWCOL,"RN")
 | 
|---|
| 64 |  Q
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 | ASK(DDWLC,DDWS,DDWLEN,DDWDEF,DDWVAL,DDWHLP,DDWANS,DDWCOD) ;Prompt user
 | 
|---|
| 67 |  N DDWI
 | 
|---|
| 68 |  D CUP(DDWMR-DDWLC,1)
 | 
|---|
| 69 |  W $P(DDGLGRA,DDGLDEL)_$TR($J("",IOM)," ",$P(DDGLGRA,DDGLDEL,3))_$P(DDGLGRA,DDGLDEL,2)
 | 
|---|
| 70 |  F DDWI=DDWMR-DDWLC+1:1:DDWMR D CUP(DDWI,1) W $P(DDGLCLR,DDGLDEL)
 | 
|---|
| 71 |  K DDWANS F  D PROMPT Q:$D(DDWANS)
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 |  F DDWI=DDWMR-DDWLC:1:DDWMR D
 | 
|---|
| 74 |  . D CUP(DDWI,1)
 | 
|---|
| 75 |  . W $P(DDGLCLR,DDGLDEL)_$E(DDWL(DDWI),1+DDWOFS,IOM+DDWOFS)
 | 
|---|
| 76 |  D POS(DDWRW,DDWC,"RN")
 | 
|---|
| 77 |  Q
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 | PROMPT ;Issue read
 | 
|---|
| 80 |  N DDWERR,DDWX
 | 
|---|
| 81 |  D CUP(DDWMR-DDWLC+1,1) W DDWS_$P(DDGLCLR,DDGLDEL)
 | 
|---|
| 82 |  D EN^DIR0(IOTM+DDWMR-DDWLC-1,$L(DDWS),DDWLEN,1,$G(DDWDEF),245,"","","AKTW",.DDWX,.DDWCOD)
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 |  I DDWX?1."?",$D(DDWHLP)>9!($G(DDWHLP)]"") D HELP(.DDWHLP) Q
 | 
|---|
| 85 |  I $G(DDWVAL)]"" X DDWVAL I $D(DDWERR) W $C(7) D HELP(.DDWERR) Q
 | 
|---|
| 86 |  S DDWANS=DDWX
 | 
|---|
| 87 |  Q
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 | VALGTO ;Validate DDWX
 | 
|---|
| 90 |  N DDWCH
 | 
|---|
| 91 |  Q:U[DDWX
 | 
|---|
| 92 |  S DDWERR="Invalid format.  Enter ? for examples."
 | 
|---|
| 93 |  Q:DDWX'?.1A.1P1.15N
 | 
|---|
| 94 |  I DDWX?1A.E S DDWCH=$E(DDWX) Q:"SsLlCc"'[DDWCH
 | 
|---|
| 95 |  I DDWX?.E1P.E I DDWX'["+",DDWX'["-" Q
 | 
|---|
| 96 |  K DDWERR
 | 
|---|
| 97 |  Q
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 | HELP(DDWMSG) ;Print message
 | 
|---|
| 100 |  N DDWI,DDWEC
 | 
|---|
| 101 |  S:$D(DDWMSG)<9 DDWMSG(1)=DDWMSG
 | 
|---|
| 102 |  S DDWEC=$O(DDWMSG(""),-1)
 | 
|---|
| 103 |  F DDWI=2:1:DDWLC D
 | 
|---|
| 104 |  . D CUP(DDWMR-DDWLC+DDWI,1)
 | 
|---|
| 105 |  . W $P(DDGLCLR,DDGLDEL)_$G(DDWMSG(DDWI-DDWLC+DDWEC))
 | 
|---|
| 106 |  Q
 | 
|---|
| 107 |  ;
 | 
|---|
| 108 | SCREEN() ;Return current screen
 | 
|---|
| 109 |  Q DDWA+DDWRW-1\DDWMR+1
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 | LTOSC(L) ;Convert line number to page number
 | 
|---|
| 112 |  Q L-1\DDWMR+1
 | 
|---|
| 113 |  ;
 | 
|---|
| 114 | CUP(Y,X) ;Pos cursor
 | 
|---|
| 115 |  S DY=IOTM+Y-2,DX=X-1 X IOXY
 | 
|---|
| 116 |  Q
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 | POS(R,C,F) ;Pos cursor based on char pos C
 | 
|---|
| 119 |  N DDWX
 | 
|---|
| 120 |  S:$G(C)="E" C=$L($G(DDWL(R)))+1
 | 
|---|
| 121 |  S:$G(F)["N" DDWN=$G(DDWL(R))
 | 
|---|
| 122 |  S:$G(F)["R" DDWRW=R,DDWC=C
 | 
|---|
| 123 |  ;
 | 
|---|
| 124 |  S DDWX=C-DDWOFS
 | 
|---|
| 125 |  I DDWX>IOM!(DDWX<1) D SHIFT^DDW3(C,.DDWOFS)
 | 
|---|
| 126 |  S DY=IOTM+R-2,DX=C-DDWOFS-1 X IOXY
 | 
|---|
| 127 |  Q
 | 
|---|