Annotation of freem_fileman/DDWT1.m, revision 1.1
1.1 ! snw 1: DDWT1 ;SFISC/PD KELTZ,MKO-READ AND PROCESS ;08:14 AM 30 Aug 1994
! 2: ;;21.0;VA FileMan;;Dec 28, 1994
! 3: ;Per VHA Directive 10-93-142, this routine should not be modified.
! 4: D LOAD^DDW1
! 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:DDWQ="TO" DDWQ=""
! 14: .. S $E(DDWN,DDWC,DDWC+$L(DDWANS)-1)=DDWANS,DDWL(DDWRW)=DDWN
! 15: .. S DDWC=DDWC+$L(DDWANS)
! 16: E D
! 17: . D READ(DDWTO,.DDWQ)
! 18: . D:$L(DDWQ)=1 DISPL
! 19: ;
! 20: I DDWQ'="TO" K DDWTC
! 21: E D
! 22: . S DDWTC=$G(DDWTC)+1
! 23: . S:DDWTC<(DTIME\DDWTO) DDWQ=""
! 24: . I DDWSTAT,DDWTC=1,$L(DDWQ)'>1 D STATUS
! 25: ;
! 26: I $L(DDWQ)>1 D @DDWQ I DDWSTAT D STATUS S DDWTC=1
! 27: Q
! 28: ;
! 29: DISPL ;Display char
! 30: I DDWC>245 W $C(7) Q
! 31: ;
! 32: I $D(DDWMARK),DDWRW+DDWA'>$P(DDWMARK,U,3) D UNMARK^DDW7
! 33: S:DDWC-1>$L(DDWN) DDWN=DDWN_$J("",DDWC-$L(DDWN)-1)
! 34: S (DDWN,DDWL(DDWRW))=$E(DDWN,1,DDWC-1)_DDWQ_$E(DDWN,DDWC+DDWREP,999)
! 35: S DDWC=DDWC+1
! 36: ;
! 37: I DDWREP W DDWQ
! 38: E D
! 39: . I $P(DDGLED,DDGLDEL,5)]"" W $P(DDGLED,DDGLDEL,5)_DDWQ
! 40: . E W DDWQ_$E(DDWN,DDWC,IOM+DDWOFS)
! 41: D POS(DDWRW,DDWC,"R")
! 42: D:$L(DDWN)>DDWRMAR WRAP^DDW5
! 43: Q
! 44: ;
! 45: RUB N DDWX
! 46: I $D(DDWMARK) D CHKDEL^DDW9(.DDWX) Q:DDWX
! 47: ;
! 48: I DDWC=1 D
! 49: . I DDWRW=1 D
! 50: .. I 'DDWA W $C(7)
! 51: .. E D MVBCK^DDW3(1),POS(1,"E","R")
! 52: . E D POS(DDWRW-1,"E","RN")
! 53: E D
! 54: . S DDWC=DDWC-1,$E(DDWN,DDWC)="",DDWL(DDWRW)=DDWN
! 55: . I DDWC-DDWOFS>0 D
! 56: .. D CUP(DDWRW,DDWC-DDWOFS)
! 57: .. I $P(DDGLED,DDGLDEL,6)]"" W $P(DDGLED,DDGLDEL,6)
! 58: .. E W $E(DDWN_" ",DDWC,IOM+DDWOFS) D CUP(DDWRW,DDWC-DDWOFS)
! 59: . E D POS(DDWRW,DDWC)
! 60: Q
! 61: ;
! 62: DEL N DDWX
! 63: I $D(DDWMARK) D CHKDEL^DDW9(.DDWX) Q:DDWX
! 64: ;
! 65: I DDWC>$L(DDWN) D Q
! 66: . I DDWN?." " D
! 67: .. D XLINE^DDW5()
! 68: . E D
! 69: .. N DDWY,DDWX
! 70: .. S DDWY=DDWRW+DDWA,DDWX=DDWC
! 71: .. D JOIN^DDW6
! 72: .. D POS(DDWY-DDWA,DDWX,"RN")
! 73: ;
! 74: S $E(DDWN,DDWC)="",DDWL(DDWRW)=DDWN,DDWX=$E(DDWN,IOM+DDWOFS)
! 75: I $P(DDGLED,DDGLDEL,6)]"" D
! 76: . W $P(DDGLED,DDGLDEL,6)
! 77: . I DDWX]" " D CUP(DDWRW,IOM) W DDWX D CUP(DDWRW,DDWC-DDWOFS)
! 78: E D
! 79: . W $E(DDWN_" ",DDWC,IOM+DDWOFS)
! 80: . D CUP(DDWRW,DDWC-DDWOFS)
! 81: Q
! 82: ;
! 83: STATUS N DDWX,DDWS
! 84: S DDWS="Scr "_(DDWA+DDWRW-1\DDWMR+1)_" of "_(DDWCNT-1\DDWMR+1)
! 85: S DDWX="Ln "_(DDWA+DDWRW)_" of "_DDWCNT
! 86: S $E(DDWS,IOM\2+1-($L(DDWX)\2),999)=DDWX
! 87: S DDWX="Col "_DDWC
! 88: S $E(DDWS,IOM-$L(DDWX),999)=DDWX
! 89: D CUP(DDWMR+2,1) W $P(DDGLCLR,DDGLDEL)_DDWS
! 90: D POS(DDWRW,DDWC)
! 91: Q
! 92: ;
! 93: UP I DDWRW>1 D
! 94: . D POS(DDWRW-1,DDWC,"RN")
! 95: E I DDWA D
! 96: . D MVBCK^DDW3(1)
! 97: E W $C(7)
! 98: I DDWC>246,$L(DDWN)<246 D POS(DDWRW,246,"R")
! 99: Q
! 100: DN I DDWA+DDWRW'<DDWCNT W $C(7) Q
! 101: I DDWRW<DDWMR D
! 102: . D POS(DDWRW+1,DDWC,"RN")
! 103: E I DDWSTB D
! 104: . D MVFWD^DDW3(1)
! 105: E W $C(7) Q
! 106: I DDWC>246,$L(DDWN)<246 D POS(DDWRW,246,"R")
! 107: Q
! 108: RT I DDWC>245,DDWC>$L(DDWN) W $C(7)
! 109: E D POS(DDWRW,DDWC+1,"R")
! 110: Q
! 111: LT I DDWC=1 D
! 112: . D UP,POS(DDWRW,"E","R")
! 113: E D POS(DDWRW,DDWC-1,"R")
! 114: Q
! 115: ;
! 116: SV G SV^DDW1
! 117: SW D SAVE^DDW1 S DDWFIN="",DIWESW=1 Q
! 118: EX D SAVE^DDW1 S DDWFIN="" Q
! 119: QT S DDWFIN="" Q
! 120: TO D SAVE^DDW1 S DTOUT=1,DDWFIN="" W $C(7) Q
! 121: HLP D HLP^DDWH,POS(DDWRW,DDWC) Q
! 122: ;
! 123: TST G TSET^DDW2
! 124: LST G LSET^DDW2
! 125: RST G RSET^DDW2
! 126: WRM G WRAPM^DDW2
! 127: RPM G REPLM^DDW2
! 128: ST G STAT^DDW2
! 129: ;
! 130: TOP G TOP^DDW3
! 131: BOT G BOT^DDW3
! 132: ;
! 133: PDN G PGDN^DDW4
! 134: PUP G PGUP^DDW4
! 135: TAB G TAB^DDW4
! 136: JLT G JLEFT^DDW4
! 137: JRT G JRIGHT^DDW4
! 138: LB G LBEG^DDW4
! 139: LE G LEND^DDW4
! 140: WRT G WORDR^DDW4
! 141: WLT G WORDL^DDW4
! 142: DLW G DELW^DDW4
! 143: DEOL G DEOL^DDW4
! 144: ;
! 145: BRK D BREAK^DDW5() Q
! 146: XLN D XLINE^DDW5() D:DDWC'=1 POS(DDWRW,1,"R") Q
! 147: ;
! 148: JN G JOIN^DDW6
! 149: RFT G REFMT^DDW6
! 150: ;
! 151: MRK G MARK^DDW7
! 152: UMK G UNMARK^DDW7
! 153: ;
! 154: CPY D COPY^DDW8() Q
! 155: CUT D CUT^DDW8() Q
! 156: PST D PASTE^DDW8() Q
! 157: ;
! 158: FND G FIND^DDWF
! 159: ;
! 160: NXT G NEXT^DDWF
! 161: GTO G GOTO^DDWG
! 162: CHG G CHG^DDWC
! 163: ;
! 164: READ(DDWTO,Y) ;Out: Y = Char or mnemonic
! 165: F D Q:Y'=-1
! 166: . R *Y:DDWTO
! 167: . I Y>31,Y<127 S Y=$C(Y) Q
! 168: . I Y<0 S Y="TO" Q
! 169: . D MNE(.Y)
! 170: Q
! 171: ;
! 172: PREAD(DDWLEN,DDWTO,DDWST,Y) ;
! 173: ;In: DDWLEN = # chars to read
! 174: ;Out: DDWST = String
! 175: ; Y = Mnemonic, Null if DDWLEN chars read or invalid
! 176: X DDGLZOSF("EON")
! 177: R DDWST#DDWLEN:DDWTO E S Y="TO" Q
! 178: X DDGLZOSF("EOFF"),DDGLZOSF("TRMRD")
! 179: I $C(Y)?1C,Y D
! 180: . D MNE(.Y) S:Y=-1 Y=""
! 181: E S Y=""
! 182: Q
! 183: ;
! 184: MNE(Y) ;Out: Y = Mnemonic, or -1 if invalid
! 185: N S,F
! 186: S S="",F=0
! 187: F D MNELOOP Q:F
! 188: Q
! 189: ;
! 190: MNELOOP ;Read more
! 191: S S=S_$C(Y)
! 192: I DDW("IN")'[(U_S) D I Y=-1 D FLUSH Q
! 193: . I $C(Y)'?1L S Y=-1 Q
! 194: . S S=$E(S,1,$L(S)-1)_$C(Y-32)
! 195: . S:DDW("IN")'[(U_S_U) Y=-1
! 196: ;
! 197: I DDW("IN")[(U_S_U),S'=$C(27) D Q
! 198: . S Y=$P(DDW("OUT"),U,$L($P(DDW("IN"),U_S_U),U)),F=1
! 199: ;
! 200: R *Y:5 D:Y=-1 FLUSH
! 201: Q
! 202: ;
! 203: FLUSH ;
! 204: N DDWX
! 205: S F=1 W $C(7) F R *DDWX:0 E Q
! 206: Q
! 207: ;
! 208: CUP(Y,X) ;
! 209: S DY=IOTM+Y-2,DX=X-1 X IOXY
! 210: Q
! 211: ;
! 212: POS(R,C,F) ;Pos cursor based on char pos C
! 213: N DDWX
! 214: S:$G(C)="E" C=$L($G(DDWL(R)))+1
! 215: S:$G(F)["N" DDWN=$G(DDWL(R))
! 216: S:$G(F)["R" DDWRW=R,DDWC=C
! 217: ;
! 218: S DDWX=C-DDWOFS
! 219: I DDWX>IOM!(DDWX<1) D SHIFT^DDW3(C,.DDWOFS)
! 220: S DY=IOTM+R-2,DX=C-DDWOFS-1 X IOXY
! 221: Q
! 222: ;
! 223: MIN(X,Y) ;
! 224: Q $S(X<Y:X,1:Y)
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>