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