Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: DDWT1

DDWT1.m

Go to the documentation of this file.
  1. DDWT1 ;SFISC/PD KELTZ,MKO - READ AND PROCESS ;9NOV2016
  1. ;;22.2;VA FileMan;**4,7**;Jan 05, 2016;Build 3
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;;Submitted to OSEHRA 5 January 2015 by the VISTA Expertise Network.
  1. ;;Based on Medsphere Systems Corporation's MSC FileMan 1051.
  1. ;;Licensed under the terms of the Apache License, Version 2.0.
  1. ;;GFT;**18,1000,1004,1005,1045,1049,1053,1056**;Mar 30, 1999
  1. ;
  1. ;Called from DDW ROUTINE
  1. D LOAD^DDW1 K DUOUT
  1. ;I '$G(DDWRWSET) D BOT^DDW3 I $L(DDWN) D BREAK^DDW5() ;GFT -- GO TO BOTTOM OF TEXT ;P7
  1. F D GETIN Q:$D(DDWFIN)
  1. Q
  1. ;
  1. GETIN ;Get input
  1. I DDWC'>DDWRMAR,DDWC-DDWOFS<IOM,DDWC>$L(DDWN)!DDWREP,'$D(DDWMARK) D
  1. . N DDWANS
  1. . D PREAD($$MIN(DDWRMAR,IOM-1+DDWOFS)-DDWC+1,DDWTO,.DDWANS,.DDWQ)
  1. . I DDWANS]"" D
  1. .. S DDWED=1
  1. .. I DDWSTAT,DDWQ="TO",DDWTO<DTIME S DDWQ=""
  1. .. S $E(DDWN,DDWC,DDWC+$L(DDWANS)-1)=DDWANS,DDWL(DDWRW)=DDWN
  1. .. S DDWC=DDWC+$L(DDWANS)
  1. E D
  1. . D READ(DDWTO,.DDWQ)
  1. . D:$L(DDWQ)=1 DISPL
  1. ;
  1. I DDWSTAT D
  1. . I DDWQ="TO" D
  1. .. I $G(DDWTC) S:$$HDIFF(DDWTC,$H)+1<DTIME DDWQ=""
  1. .. E S DDWTC=$H,DDWQ="" D:DDWSTAT STATUS
  1. . E K DDWTC
  1. ;
  1. I $G(DDWAUTO),DDWQ'="TO",$$HDIFF(DDWAUTO("H"),$H)'<DDWAUTO("S") D AUTOSV^DDW1
  1. ;
  1. I $L(DDWQ)>1 D @DDWQ D:DDWSTAT STATUS
  1. Q
  1. ;
  1. DISPL ;Display char
  1. I DDWC>245 W $C(7) Q
  1. ;
  1. S DDWED=1
  1. I $D(DDWMARK),DDWRW+DDWA'>$P(DDWMARK,U,3) D UNMARK^DDW7
  1. S:DDWC-1>$L(DDWN) DDWN=DDWN_$J("",DDWC-$L(DDWN)-1)
  1. S (DDWN,DDWL(DDWRW))=$E(DDWN,1,DDWC-1)_DDWQ_$E(DDWN,DDWC+DDWREP,999)
  1. S DDWC=DDWC+1
  1. ;
  1. I DDWREP W DDWQ
  1. E D
  1. IC . I 0 ;$P(DDGLED,DDGLDEL,5)]"" W $P(DDGLED,DDGLDEL,5)_DDWQ GFT -- DON'T USE "INSERT CHARACTER" IT SEEMS NOT TO WORK
  1. . E W DDWQ_$E(DDWN,DDWC,IOM+DDWOFS)
  1. D POS(DDWRW,DDWC,"R")
  1. D:$L(DDWN)>DDWRMAR WRAP^DDW5
  1. Q
  1. ;
  1. RUB ;COME HERE ON BACKSPACE
  1. N DDWX
  1. I DDWN="" S DDWCNT=DDWCNT-1 ;if current line is null --Bill Eash
  1. S DDWED=1
  1. I $D(DDWMARK) D CHKDEL^DDW9(.DDWX) Q:DDWX
  1. ;
  1. I DDWC=1 D
  1. . I DDWRW=1 D
  1. .. I 'DDWA W $C(7)
  1. .. E D MVBCK^DDW3(1),POS(1,"E","R")
  1. . E D POS(DDWRW-1,"E","RN")
  1. E D
  1. . S DDWC=DDWC-1,$E(DDWN,DDWC)="",DDWL(DDWRW)=DDWN
  1. . S DDWX=$E(DDWN,IOM+DDWOFS)
  1. . I DDWC-DDWOFS>0 D
  1. .. D CUP(DDWRW,DDWC-DDWOFS)
  1. .. I $P(DDGLED,DDGLDEL,6)]"" D
  1. ... W $P(DDGLED,DDGLDEL,6)
  1. ... I DDWX]" " D CUP(DDWRW,IOM) W DDWX D CUP(DDWRW,DDWC-DDWOFS)
  1. .. E W $E(DDWN_" ",DDWC,IOM+DDWOFS) D CUP(DDWRW,DDWC-DDWOFS)
  1. . E D POS(DDWRW,DDWC)
  1. Q
  1. ;
  1. DEL N DDWX
  1. S DDWED=1
  1. I $D(DDWMARK) D CHKDEL^DDW9(.DDWX) Q:DDWX
  1. ;
  1. I DDWC>$L(DDWN) D Q
  1. . I DDWN?." " D
  1. .. N DDWLAST
  1. .. S DDWLAST=DDWRW+DDWA=DDWCNT
  1. .. D XLINE^DDW5()
  1. .. D:DDWLAST POS(DDWRW,"E","R")
  1. . E D
  1. .. N DDWY,DDWX
  1. .. S DDWY=DDWRW+DDWA,DDWX=DDWC
  1. .. D JOIN^DDW6
  1. .. D POS(DDWY-DDWA,DDWX,"RN")
  1. ;
  1. S $E(DDWN,DDWC)="",DDWL(DDWRW)=DDWN,DDWX=$E(DDWN,IOM+DDWOFS)
  1. I $P(DDGLED,DDGLDEL,6)]"" D
  1. . W $P(DDGLED,DDGLDEL,6)
  1. . I DDWX]" " D CUP(DDWRW,IOM) W DDWX D CUP(DDWRW,DDWC-DDWOFS)
  1. E D
  1. . W $E(DDWN_" ",DDWC,IOM+DDWOFS)
  1. . D CUP(DDWRW,DDWC-DDWOFS)
  1. Q
  1. ;
  1. STATUS N DDWX,DDWS
  1. S DDWS="Scr "_(DDWA+DDWRW-1\DDWMR+1)_" of "_(DDWCNT-1\DDWMR+1)
  1. S DDWX="Ln "_(DDWA+DDWRW)_" of "_DDWCNT
  1. S $E(DDWS,IOM\2+1-($L(DDWX)\2),999)=DDWX
  1. S DDWX="Col "_DDWC
  1. S $E(DDWS,IOM-$L(DDWX),999)=DDWX
  1. D CUP(DDWMR+2,1) W $P(DDGLCLR,DDGLDEL)_DDWS
  1. D POS(DDWRW,DDWC)
  1. Q
  1. ;
  1. UP I DDWRW>1 D
  1. . D POS(DDWRW-1,DDWC,"RN")
  1. E I DDWA D
  1. . D MVBCK^DDW3(1)
  1. E W $C(7)
  1. I DDWC>246,$L(DDWN)<246 D POS(DDWRW,246,"R")
  1. Q
  1. DN I DDWN="",DDWA+DDWRW>DDWCNT W $C(7) Q ;**GFT DOWN-ARROW: ALLOW GOING TO ENDING BLANK LINE
  1. I DDWRW<DDWMR D
  1. . D POS(DDWRW+1,DDWC,"RN")
  1. E I DDWSTB D
  1. . D MVFWD^DDW3(1)
  1. E W $C(7) Q
  1. I DDWC>246,$L(DDWN)<246 D POS(DDWRW,246,"R")
  1. Q
  1. RT I DDWC>245,DDWC>$L(DDWN) W $C(7)
  1. E D POS(DDWRW,DDWC+1,"R")
  1. Q
  1. LT I DDWC=1 D
  1. . I DDWRW=1,'DDWA W $C(7)
  1. . E D UP,POS(DDWRW,"E","R")
  1. E D POS(DDWRW,DDWC-1,"R")
  1. Q
  1. ;
  1. SV K DDWED G SV^DDW1
  1. SW D SAVE^DDW1 S DDWFIN="",DIWESW=1 Q
  1. EX D SAVE^DDW1 S DDWFIN="" Q
  1. QT S DUOUT=1 G QUIT^DDW1 ;GFT
  1. TO D SAVE^DDW1 S DTOUT=1,DDWFIN="" W $C(7) Q
  1. HLP D HLP^DDWH,POS(DDWRW,DDWC) Q
  1. AUT G AUTOTM^DDW1
  1. ;
  1. TST G TSET^DDW2
  1. TSALL G TSALL^DDW2
  1. LST G LSET^DDW2
  1. RST G RSET^DDW2
  1. WRM G WRAPM^DDW2
  1. RPM G REPLM^DDW2
  1. ST G STAT^DDW2
  1. ;
  1. TOP G TOP^DDW3
  1. BOT G BOT^DDW3
  1. ;
  1. PDN G PGDN^DDW4
  1. PUP G PGUP^DDW4
  1. TAB G TAB^DDW4
  1. JLT G JLEFT^DDW4
  1. JRT G JRIGHT^DDW4
  1. LB G LBEG^DDW4
  1. LE G LEND^DDW4
  1. WRT G WORDR^DDW4
  1. WLT G WORDL^DDW4
  1. DLW S DDWED=1 G DELW^DDW4
  1. DEOL S DDWED=1 G DEOL^DDW4
  1. ;
  1. BRK ;I 'DDWREP,$G(DDWCNT)>1,$G(DDWN)="",$G(DDWL(DDWRW-1))="",DDWA+DDWRW'<DDWCNT D SAVE^DDW1 S DDWFIN="",DDWCNT=DDWCNT-1 Q ;**GFT GET OUT WITH TWO RETURNS AT BOTTOM
  1. S DDWED=1 D BREAK^DDW5() Q
  1. XLN S DDWED=1 D XLINE^DDW5() D:DDWC'=1 POS(DDWRW,1,"R") Q
  1. ;
  1. JN S DDWED=1 G JOIN^DDW6
  1. RFT S DDWED=1 G REFMT^DDW6
  1. ;
  1. MRK G MARK^DDW7
  1. UMK G UNMARK^DDW7
  1. ;
  1. CPY D COPY^DDW8() Q
  1. CUT D CUT^DDW8() Q
  1. PST D PASTE^DDW8() Q
  1. ;
  1. FND G FIND^DDWF
  1. ;
  1. NXT G NEXT^DDWF
  1. GTO G GOTO^DDWG
  1. CHG G CHG^DDWC
  1. Q
  1. ;
  1. READ(DDWTO,Y) ;Out: Y = Char or mnemonic
  1. F D Q:Y'=-1
  1. . R *Y:DDWTO
  1. . I Y>127 D HS(.Y)
  1. . I Y>31,Y<127 S Y=$C(Y) Q
  1. . I Y<0 S Y="TO" Q
  1. . D MNE(.Y)
  1. Q
  1. ;
  1. PREAD(DDWLEN,DDWTO,DDWST,Y) ;
  1. ;In: DDWLEN = # chars to read
  1. ;Out: DDWST = String
  1. ; Y = Mnemonic, Null if DDWLEN chars read or invalid
  1. X DDGLZOSF("EON")
  1. R DDWST#DDWLEN:DDWTO E S Y="TO" Q
  1. X DDGLZOSF("EOFF"),DDGLZOSF("TRMRD")
  1. ;
  1. D:DDWST?.E1.C.E H(.DDWST)
  1. ;
  1. I $C(Y)?1C,Y D
  1. . D MNE(.Y)
  1. . I Y=-1 S Y=""
  1. . E I $L(Y)=1 W Y S DDWST=DDWST_Y,Y=""
  1. E S Y=""
  1. Q
  1. ;
  1. MNE(Y) ;In: Y = Ascii value of first character
  1. ;Out: Y = Mnemonic, or -1 if invalid
  1. N S,F,T
  1. I Y=13 S DDWHLOG=$P($H,",",2)
  1. E I Y=10,$D(DDWHLOG)#2,$P($H,",",2)-DDWHLOG<1 K DDWHLOG S Y=-1 Q
  1. E K DDWHLOG
  1. S S="",F=0,T="DDW(""IN"")" ;We are looking in DDW("IN") for a string of characters, which we translate to something in DDW("OT")
  1. F D MNELOOP(.S,.Y,.T,.F) Q:F
  1. Q
  1. ;
  1. MNELOOP(S,Y,T,F) ;Read more
  1. ;In/Out:
  1. ; S = string of input chars
  1. ; Y = ascii of current char
  1. ; T = table under consideration
  1. ;Out:
  1. ; Y = mnemonic, or -1
  1. ; F = 1 : done
  1. ;
  1. N E
  1. S S=S_$C(Y)
  1. I @T'[(U_S) D
  1. . I $C(Y)?1L D
  1. .. S $E(S,$L(S))=$$UP^DILIBF($C(Y)) ;GEKY --INTERNATIONALIZATION artf16804
  1. .. S:@T'[(U_S_U) E=1
  1. . E S E=1
  1. I $T,$G(E) D Q
  1. . S T=$Q(@T)
  1. . I T]"" S $E(S,$L(S))=""
  1. . E D FLUSH S F=1,Y=-1
  1. ;
  1. I @T[(U_S_U),S'=$C(27) D Q
  1. . S Y=$P(@$TR(T,"IN","OT"),U,$L($P(@T,U_S_U),U)),F=1 ;We"ve got Y as the place to go to
  1. ;
  1. R *Y:5 I Y=-1 D FLUSH S F=1
  1. Q
  1. ;
  1. H(DDWST) ;
  1. S DDWST=$TR(DDWST,$C(145,146,147,148),"''""""")
  1. I DDWST?.E1.C.E D
  1. . N DDWCON,DDWI
  1. . S DDWCON=""
  1. . F DDWI=128:1:255 S DDWCON=DDWCON_$C(DDWI)
  1. . S DDWST=$TR(DDWST,DDWCON,$J(" ",128))
  1. D POS(DDWRW,DDWC)
  1. W DDWST
  1. Q
  1. ;
  1. HS(Y) ;
  1. I Y>144,Y<149 S Y=$A($E("''""""",Y-144))
  1. E S Y=32
  1. Q
  1. ;
  1. FLUSH ;
  1. N DDWX
  1. W $C(7) F R *DDWX:0 E Q
  1. Q
  1. ;
  1. CUP(Y,X) ;
  1. S DY=IOTM+Y-2,DX=X-1 X IOXY
  1. Q
  1. ;
  1. POS(R,C,F) ;Pos cursor based on char pos C
  1. N DDWX
  1. S:$G(C)="E" C=$L($G(DDWL(R)))+1
  1. S:$G(F)["N" DDWN=$G(DDWL(R))
  1. S:$G(F)["R" DDWRW=R,DDWC=C
  1. ;
  1. S DDWX=C-DDWOFS
  1. I DDWX>IOM!(DDWX<1) D SHIFT^DDW3(C,.DDWOFS)
  1. S DY=IOTM+R-2,DX=C-DDWOFS-1 X IOXY
  1. Q
  1. ;
  1. MIN(X,Y) ;
  1. Q $S(X<Y:X,1:Y)
  1. ;
  1. HDIFF(H1,H2) ;# seconds between two $H's
  1. Q (H2-H1)*86400+$P(H2,",",2)-$P(H1,",",2)