| 1 | DDWT1 ;SFISC/PD KELTZ,MKO-READ AND PROCESS ;11:35 AM  25 Aug 2000
 | 
|---|
| 2 |  ;;22.0;VA FileMan;**18**;Mar 30, 1999
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  D LOAD^DDW1 K DUOUT ;GFT
 | 
|---|
| 5 |  F  D GETIN Q:$D(DDWFIN)
 | 
|---|
| 6 |  Q
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 | GETIN ;Get input
 | 
|---|
| 9 |  I DDWC'>DDWRMAR,DDWC-DDWOFS<IOM,DDWC>$L(DDWN)!DDWREP,'$D(DDWMARK) D
 | 
|---|
| 10 |  . N DDWANS
 | 
|---|
| 11 |  . D PREAD($$MIN(DDWRMAR,IOM-1+DDWOFS)-DDWC+1,DDWTO,.DDWANS,.DDWQ)
 | 
|---|
| 12 |  . I DDWANS]"" D
 | 
|---|
| 13 |  .. S DDWED=1
 | 
|---|
| 14 |  .. I DDWSTAT,DDWQ="TO",DDWTO<DTIME S DDWQ=""
 | 
|---|
| 15 |  .. S $E(DDWN,DDWC,DDWC+$L(DDWANS)-1)=DDWANS,DDWL(DDWRW)=DDWN
 | 
|---|
| 16 |  .. S DDWC=DDWC+$L(DDWANS)
 | 
|---|
| 17 |  E  D
 | 
|---|
| 18 |  . D READ(DDWTO,.DDWQ)
 | 
|---|
| 19 |  . D:$L(DDWQ)=1 DISPL
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  I DDWSTAT D
 | 
|---|
| 22 |  . I DDWQ="TO" D
 | 
|---|
| 23 |  .. I $G(DDWTC) S:$$HDIFF(DDWTC,$H)+1<DTIME DDWQ=""
 | 
|---|
| 24 |  .. E  S DDWTC=$H,DDWQ="" D:DDWSTAT STATUS
 | 
|---|
| 25 |  . E  K DDWTC
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 |  I $G(DDWAUTO),DDWQ'="TO",$$HDIFF(DDWAUTO("H"),$H)'<DDWAUTO("S") D AUTOSV^DDW1
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 |  I $L(DDWQ)>1 D @DDWQ D:DDWSTAT STATUS
 | 
|---|
| 30 |  Q
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 | DISPL ;Display char
 | 
|---|
| 33 |  I DDWC>245 W $C(7) Q
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 |  S DDWED=1
 | 
|---|
| 36 |  I $D(DDWMARK),DDWRW+DDWA'>$P(DDWMARK,U,3) D UNMARK^DDW7
 | 
|---|
| 37 |  S:DDWC-1>$L(DDWN) DDWN=DDWN_$J("",DDWC-$L(DDWN)-1)
 | 
|---|
| 38 |  S (DDWN,DDWL(DDWRW))=$E(DDWN,1,DDWC-1)_DDWQ_$E(DDWN,DDWC+DDWREP,999)
 | 
|---|
| 39 |  S DDWC=DDWC+1
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  I DDWREP W DDWQ
 | 
|---|
| 42 |  E  D
 | 
|---|
| 43 |  . I $P(DDGLED,DDGLDEL,5)]"" W $P(DDGLED,DDGLDEL,5)_DDWQ
 | 
|---|
| 44 |  . E  W DDWQ_$E(DDWN,DDWC,IOM+DDWOFS)
 | 
|---|
| 45 |  D POS(DDWRW,DDWC,"R")
 | 
|---|
| 46 |  D:$L(DDWN)>DDWRMAR WRAP^DDW5
 | 
|---|
| 47 |  Q
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 | RUB N DDWX
 | 
|---|
| 50 |  S DDWED=1
 | 
|---|
| 51 |  I $D(DDWMARK) D CHKDEL^DDW9(.DDWX) Q:DDWX
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 |  I DDWC=1 D
 | 
|---|
| 54 |  . I DDWRW=1 D
 | 
|---|
| 55 |  .. I 'DDWA W $C(7)
 | 
|---|
| 56 |  .. E  D MVBCK^DDW3(1),POS(1,"E","R")
 | 
|---|
| 57 |  . E  D POS(DDWRW-1,"E","RN")
 | 
|---|
| 58 |  E  D
 | 
|---|
| 59 |  . S DDWC=DDWC-1,$E(DDWN,DDWC)="",DDWL(DDWRW)=DDWN
 | 
|---|
| 60 |  . S DDWX=$E(DDWN,IOM+DDWOFS)
 | 
|---|
| 61 |  . I DDWC-DDWOFS>0 D
 | 
|---|
| 62 |  .. D CUP(DDWRW,DDWC-DDWOFS)
 | 
|---|
| 63 |  .. I $P(DDGLED,DDGLDEL,6)]"" D
 | 
|---|
| 64 |  ... W $P(DDGLED,DDGLDEL,6)
 | 
|---|
| 65 |  ... I DDWX]" " D CUP(DDWRW,IOM) W DDWX D CUP(DDWRW,DDWC-DDWOFS)
 | 
|---|
| 66 |  .. E  W $E(DDWN_" ",DDWC,IOM+DDWOFS) D CUP(DDWRW,DDWC-DDWOFS)
 | 
|---|
| 67 |  . E  D POS(DDWRW,DDWC)
 | 
|---|
| 68 |  Q
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 | DEL N DDWX
 | 
|---|
| 71 |  S DDWED=1
 | 
|---|
| 72 |  I $D(DDWMARK) D CHKDEL^DDW9(.DDWX) Q:DDWX
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  I DDWC>$L(DDWN) D  Q
 | 
|---|
| 75 |  . I DDWN?." " D
 | 
|---|
| 76 |  .. N DDWLAST
 | 
|---|
| 77 |  .. S DDWLAST=DDWRW+DDWA=DDWCNT
 | 
|---|
| 78 |  .. D XLINE^DDW5()
 | 
|---|
| 79 |  .. D:DDWLAST POS(DDWRW,"E","R")
 | 
|---|
| 80 |  . E  D
 | 
|---|
| 81 |  .. N DDWY,DDWX
 | 
|---|
| 82 |  .. S DDWY=DDWRW+DDWA,DDWX=DDWC
 | 
|---|
| 83 |  .. D JOIN^DDW6
 | 
|---|
| 84 |  .. D POS(DDWY-DDWA,DDWX,"RN")
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 |  S $E(DDWN,DDWC)="",DDWL(DDWRW)=DDWN,DDWX=$E(DDWN,IOM+DDWOFS)
 | 
|---|
| 87 |  I $P(DDGLED,DDGLDEL,6)]"" D
 | 
|---|
| 88 |  . W $P(DDGLED,DDGLDEL,6)
 | 
|---|
| 89 |  . I DDWX]" " D CUP(DDWRW,IOM) W DDWX D CUP(DDWRW,DDWC-DDWOFS)
 | 
|---|
| 90 |  E  D
 | 
|---|
| 91 |  . W $E(DDWN_" ",DDWC,IOM+DDWOFS)
 | 
|---|
| 92 |  . D CUP(DDWRW,DDWC-DDWOFS)
 | 
|---|
| 93 |  Q
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 | STATUS N DDWX,DDWS
 | 
|---|
| 96 |  S DDWS="Scr "_(DDWA+DDWRW-1\DDWMR+1)_" of "_(DDWCNT-1\DDWMR+1)
 | 
|---|
| 97 |  S DDWX="Ln "_(DDWA+DDWRW)_" of "_DDWCNT
 | 
|---|
| 98 |  S $E(DDWS,IOM\2+1-($L(DDWX)\2),999)=DDWX
 | 
|---|
| 99 |  S DDWX="Col "_DDWC
 | 
|---|
| 100 |  S $E(DDWS,IOM-$L(DDWX),999)=DDWX
 | 
|---|
| 101 |  D CUP(DDWMR+2,1) W $P(DDGLCLR,DDGLDEL)_DDWS
 | 
|---|
| 102 |  D POS(DDWRW,DDWC)
 | 
|---|
| 103 |  Q
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 | UP I DDWRW>1 D
 | 
|---|
| 106 |  . D POS(DDWRW-1,DDWC,"RN")
 | 
|---|
| 107 |  E  I DDWA D
 | 
|---|
| 108 |  . D MVBCK^DDW3(1)
 | 
|---|
| 109 |  E  W $C(7)
 | 
|---|
| 110 |  I DDWC>246,$L(DDWN)<246 D POS(DDWRW,246,"R")
 | 
|---|
| 111 |  Q
 | 
|---|
| 112 | DN I DDWA+DDWRW'<DDWCNT W $C(7) Q
 | 
|---|
| 113 |  I DDWRW<DDWMR D
 | 
|---|
| 114 |  . D POS(DDWRW+1,DDWC,"RN")
 | 
|---|
| 115 |  E  I DDWSTB D
 | 
|---|
| 116 |  . D MVFWD^DDW3(1)
 | 
|---|
| 117 |  E  W $C(7) Q
 | 
|---|
| 118 |  I DDWC>246,$L(DDWN)<246 D POS(DDWRW,246,"R")
 | 
|---|
| 119 |  Q
 | 
|---|
| 120 | RT I DDWC>245,DDWC>$L(DDWN) W $C(7)
 | 
|---|
| 121 |  E  D POS(DDWRW,DDWC+1,"R")
 | 
|---|
| 122 |  Q
 | 
|---|
| 123 | LT I DDWC=1 D
 | 
|---|
| 124 |  . I DDWRW=1,'DDWA W $C(7)
 | 
|---|
| 125 |  . E  D UP,POS(DDWRW,"E","R")
 | 
|---|
| 126 |  E  D POS(DDWRW,DDWC-1,"R")
 | 
|---|
| 127 |  Q
 | 
|---|
| 128 |  ;
 | 
|---|
| 129 | SV K DDWED G SV^DDW1
 | 
|---|
| 130 | SW D SAVE^DDW1 S DDWFIN="",DIWESW=1 Q
 | 
|---|
| 131 | EX D SAVE^DDW1 S DDWFIN="" Q
 | 
|---|
| 132 | QT S DUOUT=1 G QUIT^DDW1 ;GFT
 | 
|---|
| 133 | TO D SAVE^DDW1 S DTOUT=1,DDWFIN="" W $C(7) Q
 | 
|---|
| 134 | HLP D HLP^DDWH,POS(DDWRW,DDWC) Q
 | 
|---|
| 135 | AUT G AUTOTM^DDW1
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 | TST G TSET^DDW2
 | 
|---|
| 138 | TSALL G TSALL^DDW2
 | 
|---|
| 139 | LST G LSET^DDW2
 | 
|---|
| 140 | RST G RSET^DDW2
 | 
|---|
| 141 | WRM G WRAPM^DDW2
 | 
|---|
| 142 | RPM G REPLM^DDW2
 | 
|---|
| 143 | ST G STAT^DDW2
 | 
|---|
| 144 |  ;
 | 
|---|
| 145 | TOP G TOP^DDW3
 | 
|---|
| 146 | BOT G BOT^DDW3
 | 
|---|
| 147 |  ;
 | 
|---|
| 148 | PDN G PGDN^DDW4
 | 
|---|
| 149 | PUP G PGUP^DDW4
 | 
|---|
| 150 | TAB G TAB^DDW4
 | 
|---|
| 151 | JLT G JLEFT^DDW4
 | 
|---|
| 152 | JRT G JRIGHT^DDW4
 | 
|---|
| 153 | LB G LBEG^DDW4
 | 
|---|
| 154 | LE G LEND^DDW4
 | 
|---|
| 155 | WRT G WORDR^DDW4
 | 
|---|
| 156 | WLT G WORDL^DDW4
 | 
|---|
| 157 | DLW S DDWED=1 G DELW^DDW4
 | 
|---|
| 158 | DEOL S DDWED=1 G DEOL^DDW4
 | 
|---|
| 159 |  ;
 | 
|---|
| 160 | BRK S DDWED=1 D BREAK^DDW5() Q
 | 
|---|
| 161 | XLN S DDWED=1 D XLINE^DDW5() D:DDWC'=1 POS(DDWRW,1,"R") Q
 | 
|---|
| 162 |  ;
 | 
|---|
| 163 | JN S DDWED=1 G JOIN^DDW6
 | 
|---|
| 164 | RFT S DDWED=1 G REFMT^DDW6
 | 
|---|
| 165 |  ;
 | 
|---|
| 166 | MRK G MARK^DDW7
 | 
|---|
| 167 | UMK G UNMARK^DDW7
 | 
|---|
| 168 |  ;
 | 
|---|
| 169 | CPY D COPY^DDW8() Q
 | 
|---|
| 170 | CUT D CUT^DDW8() Q
 | 
|---|
| 171 | PST D PASTE^DDW8() Q
 | 
|---|
| 172 |  ;
 | 
|---|
| 173 | FND G FIND^DDWF
 | 
|---|
| 174 |  ;
 | 
|---|
| 175 | NXT G NEXT^DDWF
 | 
|---|
| 176 | GTO G GOTO^DDWG
 | 
|---|
| 177 | CHG G CHG^DDWC
 | 
|---|
| 178 |  Q
 | 
|---|
| 179 |  ;
 | 
|---|
| 180 | READ(DDWTO,Y) ;Out: Y = Char or mnemonic
 | 
|---|
| 181 |  F  D  Q:Y'=-1
 | 
|---|
| 182 |  . R *Y:DDWTO
 | 
|---|
| 183 |  . I Y>127 D HS(.Y)
 | 
|---|
| 184 |  . I Y>31,Y<127 S Y=$C(Y) Q
 | 
|---|
| 185 |  . I Y<0 S Y="TO" Q
 | 
|---|
| 186 |  . D MNE(.Y)
 | 
|---|
| 187 |  Q
 | 
|---|
| 188 |  ;
 | 
|---|
| 189 | PREAD(DDWLEN,DDWTO,DDWST,Y) ;
 | 
|---|
| 190 |  ;In:  DDWLEN = # chars to read
 | 
|---|
| 191 |  ;Out:  DDWST = String
 | 
|---|
| 192 |  ;          Y = Mnemonic, Null if DDWLEN chars read or invalid
 | 
|---|
| 193 |  X DDGLZOSF("EON")
 | 
|---|
| 194 |  R DDWST#DDWLEN:DDWTO E  S Y="TO" Q
 | 
|---|
| 195 |  X DDGLZOSF("EOFF"),DDGLZOSF("TRMRD")
 | 
|---|
| 196 |  ;
 | 
|---|
| 197 |  D:DDWST?.E1.C.E H(.DDWST)
 | 
|---|
| 198 |  ;
 | 
|---|
| 199 |  I $C(Y)?1C,Y D
 | 
|---|
| 200 |  . D MNE(.Y)
 | 
|---|
| 201 |  . I Y=-1 S Y=""
 | 
|---|
| 202 |  . E  I $L(Y)=1 W Y S DDWST=DDWST_Y,Y=""
 | 
|---|
| 203 |  E  S Y=""
 | 
|---|
| 204 |  Q
 | 
|---|
| 205 |  ;
 | 
|---|
| 206 | MNE(Y) ;In:  Y = Ascii value of first character
 | 
|---|
| 207 |  ;Out: Y = Mnemonic, or -1 if invalid
 | 
|---|
| 208 |  N S,F,T
 | 
|---|
| 209 |  I Y=13 S DDWHLOG=$P($H,",",2)
 | 
|---|
| 210 |  E  I Y=10,$D(DDWHLOG)#2,$P($H,",",2)-DDWHLOG<1 K DDWHLOG S Y=-1 Q
 | 
|---|
| 211 |  E  K DDWHLOG
 | 
|---|
| 212 |  S S="",F=0,T="DDW(""IN"")"
 | 
|---|
| 213 |  F  D MNELOOP(.S,.Y,.T,.F) Q:F
 | 
|---|
| 214 |  Q
 | 
|---|
| 215 |  ;
 | 
|---|
| 216 | MNELOOP(S,Y,T,F) ;Read more
 | 
|---|
| 217 |  ;In/Out:
 | 
|---|
| 218 |  ;  S = string of input chars
 | 
|---|
| 219 |  ;  Y = ascii of current char
 | 
|---|
| 220 |  ;  T = table under consideration
 | 
|---|
| 221 |  ;Out:
 | 
|---|
| 222 |  ;  Y = mnemonic, or -1
 | 
|---|
| 223 |  ;  F = 1 : done
 | 
|---|
| 224 |  ;
 | 
|---|
| 225 |  N E
 | 
|---|
| 226 |  S S=S_$C(Y)
 | 
|---|
| 227 |  I @T'[(U_S) D
 | 
|---|
| 228 |  . I $C(Y)?1L D
 | 
|---|
| 229 |  .. S $E(S,$L(S))=$C(Y-32)
 | 
|---|
| 230 |  .. S:@T'[(U_S_U) E=1
 | 
|---|
| 231 |  . E  S E=1
 | 
|---|
| 232 |  I $T,$G(E) D  Q
 | 
|---|
| 233 |  . S T=$Q(@T)
 | 
|---|
| 234 |  . I T]"" S $E(S,$L(S))=""
 | 
|---|
| 235 |  . E  D FLUSH S F=1,Y=-1
 | 
|---|
| 236 |  ;
 | 
|---|
| 237 |  I @T[(U_S_U),S'=$C(27) D  Q
 | 
|---|
| 238 |  . S Y=$P(@$TR(T,"IN","OT"),U,$L($P(@T,U_S_U),U)),F=1
 | 
|---|
| 239 |  ;
 | 
|---|
| 240 |  R *Y:5 I Y=-1 D FLUSH S F=1
 | 
|---|
| 241 |  Q
 | 
|---|
| 242 |  ;
 | 
|---|
| 243 | H(DDWST) ;
 | 
|---|
| 244 |  S DDWST=$TR(DDWST,$C(145,146,147,148),"''""""")
 | 
|---|
| 245 |  I DDWST?.E1.C.E D
 | 
|---|
| 246 |  . N DDWCON,DDWI
 | 
|---|
| 247 |  . S DDWCON=""
 | 
|---|
| 248 |  . F DDWI=128:1:255 S DDWCON=DDWCON_$C(DDWI)
 | 
|---|
| 249 |  . S DDWST=$TR(DDWST,DDWCON,$J(" ",128))
 | 
|---|
| 250 |  D POS(DDWRW,DDWC)
 | 
|---|
| 251 |  W DDWST
 | 
|---|
| 252 |  Q
 | 
|---|
| 253 |  ;
 | 
|---|
| 254 | HS(Y) ;
 | 
|---|
| 255 |  I Y>144,Y<149 S Y=$A($E("''""""",Y-144))
 | 
|---|
| 256 |  E  S Y=32
 | 
|---|
| 257 |  Q
 | 
|---|
| 258 |  ;
 | 
|---|
| 259 | FLUSH ;
 | 
|---|
| 260 |  N DDWX
 | 
|---|
| 261 |  W $C(7) F  R *DDWX:0 E  Q
 | 
|---|
| 262 |  Q
 | 
|---|
| 263 |  ;
 | 
|---|
| 264 | CUP(Y,X) ;
 | 
|---|
| 265 |  S DY=IOTM+Y-2,DX=X-1 X IOXY
 | 
|---|
| 266 |  Q
 | 
|---|
| 267 |  ;
 | 
|---|
| 268 | POS(R,C,F) ;Pos cursor based on char pos C
 | 
|---|
| 269 |  N DDWX
 | 
|---|
| 270 |  S:$G(C)="E" C=$L($G(DDWL(R)))+1
 | 
|---|
| 271 |  S:$G(F)["N" DDWN=$G(DDWL(R))
 | 
|---|
| 272 |  S:$G(F)["R" DDWRW=R,DDWC=C
 | 
|---|
| 273 |  ;
 | 
|---|
| 274 |  S DDWX=C-DDWOFS
 | 
|---|
| 275 |  I DDWX>IOM!(DDWX<1) D SHIFT^DDW3(C,.DDWOFS)
 | 
|---|
| 276 |  S DY=IOTM+R-2,DX=C-DDWOFS-1 X IOXY
 | 
|---|
| 277 |  Q
 | 
|---|
| 278 |  ;
 | 
|---|
| 279 | MIN(X,Y) ;
 | 
|---|
| 280 |  Q $S(X<Y:X,1:Y)
 | 
|---|
| 281 |  ;
 | 
|---|
| 282 | HDIFF(H1,H2) ;# seconds between two $H's
 | 
|---|
| 283 |  Q (H2-H1)*86400+$P(H2,",",2)-$P(H1,",",2)
 | 
|---|