- DDW6 ;SFISC/MKO-JOIN ;10:41 AM 16 Jun 2000 [ 04/02/2003 8:25 AM ]
- ;;22.0;VA FileMan;**1001**;APR 1, 2003
- ;;22.0;VA FileMan;**18**;Mar 30, 1999
- ;Per VHA Directive 10-93-142, this routine should not be modified.
- ;
- REFMT ;Reformat
- N DDWRFMT
- I $D(DDWMARK),DDWRW+DDWA'>$P(DDWMARK,U,3) D UNMARK^DDW7
- D POS(DDWRW,DDWLMAR,"R")
- S DDWRFMT=0 F D JOIN Q:DDWRFMT
- Q
- ;
- JOIN ;Join
- N DDWI,DDWSCR,DDWNSV,DDWLL,DDWTXT,DDWTXT0
- I $D(DDWMARK),DDWRW+DDWA'>$P(DDWMARK,U,3) D UNMARK^DDW7
- ;
- ;Get current line
- S (DDWTXT(1),DDWNSV)=DDWN
- ;
- ;Get next line
- I DDWRW=DDWMR S:DDWSTB DDWTXT(2)=^TMP("DDW1",$J,DDWSTB)
- E S:DDWA+DDWRW<DDWCNT DDWTXT(2)=DDWL(DDWRW+1)
- ;
- I $G(DDWTXT(2))?." " D Q:$G(DDWRFMT)
- . I $L(DDWN)>DDWRMAR S:$D(DDWTXT(2))#2 DDWLL=DDWTXT(2)
- . E I $D(DDWRFMT) S DDWRFMT=1
- ;
- ;Adjust
- S DDWTXT0=$O(DDWTXT(""),-1)
- D ADJMAR(.DDWTXT,"","I")
- S:$D(DDWLL) DDWTXT=DDWTXT+1,DDWTXT(DDWTXT)=DDWLL
- S (DDWN,DDWL(DDWRW))=DDWTXT(1)
- ;
- ;Delete next line
- I DDWTXT0>1,DDWTXT=1 D
- . I DDWRW=DDWMR S DDWSTB=DDWSTB-1,DDWCNT=DDWCNT-1,$E(DDWBF,1,3)=111
- . E D POS(DDWRW+1,DDWC,"RN"),XLINE^DDW5(1),POS(DDWRW-1,DDWC,"RN")
- ;
- ;DDWSCR: curr scr = final scr
- I DDWTXT=1,'$D(DDWRFMT) S DDWSCR=$L(DDWTXT(1))+1-DDWOFS
- E S DDWSCR=DDWLMAR-DDWOFS
- S DDWSCR=DDWSCR'<1&(DDWSCR'>IOM)
- ;
- I DDWSCR,DDWNSV'=DDWN D
- . I DDWNSV]"",$P(DDWNSV,DDWN)="" D
- .. D CUP(DDWRW,$$MAX($L(DDWN)+1-DDWOFS,1))
- .. W $P(DDGLCLR,DDGLDEL)
- . E I DDWN]"",$P(DDWN,DDWNSV)="" D
- .. D CUP(DDWRW,$$MAX($L(DDWNSV)+1-DDWOFS,1))
- .. W $E(DDWN,$$MAX($L(DDWNSV),DDWOFS)+1,IOM+DDWOFS)
- . E D
- .. D CUP(DDWRW,DDWOFS+1)
- .. W $P(DDGLCLR,DDGLDEL)_$E(DDWN,DDWOFS+1,IOM+DDWOFS)
- ;
- I DDWTXT=1 D
- . I '$D(DDWRFMT) D
- .. D POS(DDWRW,"E","RN")
- . E D POS(DDWRW,DDWLMAR,"RN")
- E D JOIN2
- Q
- ;
- JOIN2 ;Join produced >1 lines
- D POS(DDWRW,DDWLMAR,"R")
- ;
- I DDWTXT0=2 D
- . I DDWRW<DDWMR D
- .. S DDWL(DDWRW+1)=DDWTXT(2)
- .. S DDWRW=DDWRW+1
- .. I DDWSCR D
- ... D CUP(DDWRW,1)
- ... W $P(DDGLCLR,DDGLDEL)_$E(DDWL(DDWRW),1+DDWOFS,IOM+DDWOFS)
- . E D
- .. S ^TMP("DDW1",$J,DDWSTB)=DDWTXT(2)
- .. D MVFWD^DDW3(1)
- ;
- F DDWI=DDWTXT0+1:1:DDWTXT D
- . D ILINE^DDW5
- . S (DDWN,DDWL(DDWRW))=DDWTXT(DDWI)
- . D CUP(DDWRW,1)
- . W $P(DDGLCLR,DDGLDEL)_$E(DDWN,1+DDWOFS,IOM+DDWOFS)
- ;
- D POS(DDWRW-($D(DDWLL)#2),DDWLMAR,"RN")
- Q
- ;
- ADJMAR(DDWT,DDWW,DDWFLG) ;Adjust length of text in DDWT array
- ; DDWT = Text array
- ; DDWW = Width
- ;DDWFLG = I:First line $L=DDWRMAR, subsequent $L=DDWRMAR-DDWLMAR+1
- ;
- N DDWJ
- S DDWJ=1
- I $G(DDWFLG)["I" S DDWW=DDWRMAR
- E I '$D(DDWW) S DDWW=DDWRMAR-DDWLMAR+1
- ;
- F Q:'$D(DDWT(DDWJ)) D AMLOOP
- S DDWT=$O(DDWT(""),-1)
- I DDWLMAR>1 F DDWJ=$G(DDWFLG)["I"+1:1:DDWT D
- . S DDWT(DDWJ)=$J("",DDWLMAR-1)_DDWT(DDWJ)
- Q
- ;
- AMLOOP ;Process DDWT(DDWJ)
- I $E(DDWT(DDWJ),1,DDWW)=$J("",DDWW) S DDWT(DDWJ)=$$LD(DDWT(DDWJ))
- ;
- E I $L(DDWT(DDWJ))>DDWW F D Q:$L(DDWT(DDWJ))'>DDWW
- . N DDWK,DDWFST,DDWLST
- . F DDWK=$O(DDWT(""),-1)+1:-1:DDWJ+2 S DDWT(DDWK)=DDWT(DDWK-1)
- . D SLICE(DDWT(DDWJ),DDWW,.DDWFST,.DDWLST)
- . S DDWT(DDWJ)=DDWFST,DDWT(DDWJ+1)=DDWLST
- . D AMINCJ
- ;
- E I $L(DDWT(DDWJ))=DDWW!'$D(DDWT(DDWJ+1)) D
- . I DDWRAP,$D(DDWT(DDWJ+1)) S DDWT(DDWJ+1)=$$LD(DDWT(DDWJ+1))
- . D AMINCJ
- ;
- E I 'DDWRAP D
- . N DDWK S DDWK=DDWW-$L(DDWT(DDWJ))
- . S DDWT(DDWJ)=DDWT(DDWJ)_$E(DDWT(DDWJ+1),1,DDWK)
- . S DDWT(DDWJ+1)=$E(DDWT(DDWJ+1),DDWK+1,999)
- . D:DDWT(DDWJ+1)="" AMSHIFT(.DDWT,DDWJ+1)
- ;
- E D
- . N DDWD,DDWI,DDWNXT,DDWSP,DDWX1,DDWX2
- . S DDWD=0 F D Q:DDWD
- .. S DDWX1=DDWT(DDWJ),(DDWX2,DDWT(DDWJ+1))=$$LD(DDWT(DDWJ+1))
- .. I DDWX2="" S DDWD=1 Q
- .. S DDWNXT=$P(DDWX2," "),DDWI=$L(DDWNXT)
- .. I $E(DDWX2,DDWI+2)=" ",$E(DDWX2,DDWI+3,999)'?." " D
- ... F DDWI=DDWI+2:1 Q:$E(DDWX2,DDWI+1)'=" "
- .. S DDWSP=DDWX1'?.E1" "
- .. I $L(DDWX1)+DDWSP+$L($E(DDWX2,1,DDWI))>DDWW S DDWD=1 Q
- .. S DDWT(DDWJ)=DDWX1_$E(" ",DDWSP)_$E(DDWX2,1,DDWI)
- .. S DDWT(DDWJ+1)=$$LD($E(DDWX2,DDWI+1,999))
- . ;
- . I DDWT(DDWJ+1)="" D
- .. D AMSHIFT(.DDWT,DDWJ+1)
- . E D AMINCJ
- Q
- ;
- AMSHIFT(DDWT,DDWJ) ;Delete DDWT(DDWJ) and shift up
- N DDWI
- F DDWI=DDWJ:1:$O(DDWT(""),-1)-1 S DDWT(DDWI)=DDWT(DDWI+1)
- K DDWT($O(DDWT(""),-1))
- Q
- ;
- AMINCJ ;Incr DDWJ
- I DDWJ=1,$G(DDWFLG)["I" S DDWW=DDWRMAR-DDWLMAR+1
- S DDWJ=DDWJ+1
- Q
- ;
- SLICE(DDWN,DDWW,DDWFST,DDWRST) ;
- ;Out: DDWFST=first part of text, $L<=DDWRMAR
- ; DDWRST=remaining part (lead blanks removed)
- N DDWI,DDWP,DDWX
- S:'$G(DDWW) DDWW=DDWRMAR
- I 'DDWRAP S DDWFST=$E(DDWN,1,DDWW),DDWLST=$E(DDWN,DDWW+1,999) Q
- ;
- ;Set DDWI to column # at which to break
- S DDWX=$E(DDWN,1,DDWW),DDWI=DDWW
- I DDWX'[" "
- E I DDWX?." "
- E I $E(DDWX,DDWW)=" ",$E(DDWN,DDWW+1)'=" "
- E D
- . F DDWP=$L(DDWX," "):-1:0 Q:$P(DDWX," ",DDWP)]""
- . Q:DDWP=1
- . S DDWI=$L($P(DDWX," ",1,DDWP-1))+1
- . S:DDWI'>$S(DDWW=DDWRMAR:DDWLMAR,1:1) DDWI=DDWW
- ;
- S DDWFST=$E(DDWN,1,DDWI),DDWRST=$$LD($E(DDWN,DDWI+1,999))
- Q
- ;
- TR(X) Q:$G(X)="" X
- N I
- F I=$L(X):-1:0 Q:$E(X,I)'=" "
- Q $E(X,1,I)
- ;
- LD(X) Q:$G(X)="" X
- N I
- F I=1:1:$L(X)+1 Q:$E(X,I)'=" "
- Q $E(X,I,999)
- ;
- CUP(Y,X) ;
- S DY=IOTM+Y-2,DX=X-1 X IOXY
- Q
- ;
- POS(R,C,F) ;Pos cursor
- N DDWX
- S:$G(C)="E" C=$L($G(DDWL(R)))+1
- S:$G(F)["N" DDWN=$G(DDWL(R))
- S:$G(F)["R" DDWRW=R,DDWC=C
- ;
- S DDWX=C-DDWOFS
- I DDWX>IOM!(DDWX<1) D SHIFT^DDW3(C,.DDWOFS)
- S DY=IOTM+R-2,DX=C-DDWOFS-1 X IOXY
- Q
- ;
- SCR(C) ;Screen number
- Q C-$P(DDWOFS,U,2)-1\$P(DDWOFS,U,3)+1
- ;
- MIN(X,Y) ;
- Q $S(X<Y:X,1:Y)
- MAX(X,Y) ;
- Q $S(X>Y:X,1:Y)
- DDW6 ;SFISC/MKO-JOIN ;10:41 AM 16 Jun 2000 [ 04/02/2003 8:25 AM ]
- +1 ;;22.0;VA FileMan;**1001**;APR 1, 2003
- +2 ;;22.0;VA FileMan;**18**;Mar 30, 1999
- +3 ;Per VHA Directive 10-93-142, this routine should not be modified.
- +4 ;
- REFMT ;Reformat
- +1 NEW DDWRFMT
- +2 IF $DATA(DDWMARK)
- IF DDWRW+DDWA'>$PIECE(DDWMARK,U,3)
- DO UNMARK^DDW7
- +3 DO POS(DDWRW,DDWLMAR,"R")
- +4 SET DDWRFMT=0
- FOR
- DO JOIN
- IF DDWRFMT
- QUIT
- +5 QUIT
- +6 ;
- JOIN ;Join
- +1 NEW DDWI,DDWSCR,DDWNSV,DDWLL,DDWTXT,DDWTXT0
- +2 IF $DATA(DDWMARK)
- IF DDWRW+DDWA'>$PIECE(DDWMARK,U,3)
- DO UNMARK^DDW7
- +3 ;
- +4 ;Get current line
- +5 SET (DDWTXT(1),DDWNSV)=DDWN
- +6 ;
- +7 ;Get next line
- +8 IF DDWRW=DDWMR
- IF DDWSTB
- SET DDWTXT(2)=^TMP("DDW1",$JOB,DDWSTB)
- +9 IF '$TEST
- IF DDWA+DDWRW<DDWCNT
- SET DDWTXT(2)=DDWL(DDWRW+1)
- +10 ;
- +11 IF $GET(DDWTXT(2))?." "
- Begin DoDot:1
- +12 IF $LENGTH(DDWN)>DDWRMAR
- IF $DATA(DDWTXT(2))#2
- SET DDWLL=DDWTXT(2)
- +13 IF '$TEST
- IF $DATA(DDWRFMT)
- SET DDWRFMT=1
- End DoDot:1
- IF $GET(DDWRFMT)
- QUIT
- +14 ;
- +15 ;Adjust
- +16 SET DDWTXT0=$ORDER(DDWTXT(""),-1)
- +17 DO ADJMAR(.DDWTXT,"","I")
- +18 IF $DATA(DDWLL)
- SET DDWTXT=DDWTXT+1
- SET DDWTXT(DDWTXT)=DDWLL
- +19 SET (DDWN,DDWL(DDWRW))=DDWTXT(1)
- +20 ;
- +21 ;Delete next line
- +22 IF DDWTXT0>1
- IF DDWTXT=1
- Begin DoDot:1
- +23 IF DDWRW=DDWMR
- SET DDWSTB=DDWSTB-1
- SET DDWCNT=DDWCNT-1
- SET $EXTRACT(DDWBF,1,3)=111
- +24 IF '$TEST
- DO POS(DDWRW+1,DDWC,"RN")
- DO XLINE^DDW5(1)
- DO POS(DDWRW-1,DDWC,"RN")
- End DoDot:1
- +25 ;
- +26 ;DDWSCR: curr scr = final scr
- +27 IF DDWTXT=1
- IF '$DATA(DDWRFMT)
- SET DDWSCR=$LENGTH(DDWTXT(1))+1-DDWOFS
- +28 IF '$TEST
- SET DDWSCR=DDWLMAR-DDWOFS
- +29 SET DDWSCR=DDWSCR'<1&(DDWSCR'>IOM)
- +30 ;
- +31 IF DDWSCR
- IF DDWNSV'=DDWN
- Begin DoDot:1
- +32 IF DDWNSV]""
- IF $PIECE(DDWNSV,DDWN)=""
- Begin DoDot:2
- +33 DO CUP(DDWRW,$$MAX($LENGTH(DDWN)+1-DDWOFS,1))
- +34 WRITE $PIECE(DDGLCLR,DDGLDEL)
- End DoDot:2
- +35 IF '$TEST
- IF DDWN]""
- IF $PIECE(DDWN,DDWNSV)=""
- Begin DoDot:2
- +36 DO CUP(DDWRW,$$MAX($LENGTH(DDWNSV)+1-DDWOFS,1))
- +37 WRITE $EXTRACT(DDWN,$$MAX($LENGTH(DDWNSV),DDWOFS)+1,IOM+DDWOFS)
- End DoDot:2
- +38 IF '$TEST
- Begin DoDot:2
- +39 DO CUP(DDWRW,DDWOFS+1)
- +40 WRITE $PIECE(DDGLCLR,DDGLDEL)_$EXTRACT(DDWN,DDWOFS+1,IOM+DDWOFS)
- End DoDot:2
- End DoDot:1
- +41 ;
- +42 IF DDWTXT=1
- Begin DoDot:1
- +43 IF '$DATA(DDWRFMT)
- Begin DoDot:2
- +44 DO POS(DDWRW,"E","RN")
- End DoDot:2
- +45 IF '$TEST
- DO POS(DDWRW,DDWLMAR,"RN")
- End DoDot:1
- +46 IF '$TEST
- DO JOIN2
- +47 QUIT
- +48 ;
- JOIN2 ;Join produced >1 lines
- +1 DO POS(DDWRW,DDWLMAR,"R")
- +2 ;
- +3 IF DDWTXT0=2
- Begin DoDot:1
- +4 IF DDWRW<DDWMR
- Begin DoDot:2
- +5 SET DDWL(DDWRW+1)=DDWTXT(2)
- +6 SET DDWRW=DDWRW+1
- +7 IF DDWSCR
- Begin DoDot:3
- +8 DO CUP(DDWRW,1)
- +9 WRITE $PIECE(DDGLCLR,DDGLDEL)_$EXTRACT(DDWL(DDWRW),1+DDWOFS,IOM+DDWOFS)
- End DoDot:3
- End DoDot:2
- +10 IF '$TEST
- Begin DoDot:2
- +11 SET ^TMP("DDW1",$JOB,DDWSTB)=DDWTXT(2)
- +12 DO MVFWD^DDW3(1)
- End DoDot:2
- End DoDot:1
- +13 ;
- +14 FOR DDWI=DDWTXT0+1:1:DDWTXT
- Begin DoDot:1
- +15 DO ILINE^DDW5
- +16 SET (DDWN,DDWL(DDWRW))=DDWTXT(DDWI)
- +17 DO CUP(DDWRW,1)
- +18 WRITE $PIECE(DDGLCLR,DDGLDEL)_$EXTRACT(DDWN,1+DDWOFS,IOM+DDWOFS)
- End DoDot:1
- +19 ;
- +20 DO POS(DDWRW-($DATA(DDWLL)#2),DDWLMAR,"RN")
- +21 QUIT
- +22 ;
- ADJMAR(DDWT,DDWW,DDWFLG) ;Adjust length of text in DDWT array
- +1 ; DDWT = Text array
- +2 ; DDWW = Width
- +3 ;DDWFLG = I:First line $L=DDWRMAR, subsequent $L=DDWRMAR-DDWLMAR+1
- +4 ;
- +5 NEW DDWJ
- +6 SET DDWJ=1
- +7 IF $GET(DDWFLG)["I"
- SET DDWW=DDWRMAR
- +8 IF '$TEST
- IF '$DATA(DDWW)
- SET DDWW=DDWRMAR-DDWLMAR+1
- +9 ;
- +10 FOR
- IF '$DATA(DDWT(DDWJ))
- QUIT
- DO AMLOOP
- +11 SET DDWT=$ORDER(DDWT(""),-1)
- +12 IF DDWLMAR>1
- FOR DDWJ=$GET(DDWFLG)["I"+1:1:DDWT
- Begin DoDot:1
- +13 SET DDWT(DDWJ)=$JUSTIFY("",DDWLMAR-1)_DDWT(DDWJ)
- End DoDot:1
- +14 QUIT
- +15 ;
- AMLOOP ;Process DDWT(DDWJ)
- +1 IF $EXTRACT(DDWT(DDWJ),1,DDWW)=$JUSTIFY("",DDWW)
- SET DDWT(DDWJ)=$$LD(DDWT(DDWJ))
- +2 ;
- +3 IF '$TEST
- IF $LENGTH(DDWT(DDWJ))>DDWW
- FOR
- Begin DoDot:1
- +4 NEW DDWK,DDWFST,DDWLST
- +5 FOR DDWK=$ORDER(DDWT(""),-1)+1:-1:DDWJ+2
- SET DDWT(DDWK)=DDWT(DDWK-1)
- +6 DO SLICE(DDWT(DDWJ),DDWW,.DDWFST,.DDWLST)
- +7 SET DDWT(DDWJ)=DDWFST
- SET DDWT(DDWJ+1)=DDWLST
- +8 DO AMINCJ
- End DoDot:1
- IF $LENGTH(DDWT(DDWJ))'>DDWW
- QUIT
- +9 ;
- +10 IF '$TEST
- IF $LENGTH(DDWT(DDWJ))=DDWW!'$DATA(DDWT(DDWJ+1))
- Begin DoDot:1
- +11 IF DDWRAP
- IF $DATA(DDWT(DDWJ+1))
- SET DDWT(DDWJ+1)=$$LD(DDWT(DDWJ+1))
- +12 DO AMINCJ
- End DoDot:1
- +13 ;
- +14 IF '$TEST
- IF 'DDWRAP
- Begin DoDot:1
- +15 NEW DDWK
- SET DDWK=DDWW-$LENGTH(DDWT(DDWJ))
- +16 SET DDWT(DDWJ)=DDWT(DDWJ)_$EXTRACT(DDWT(DDWJ+1),1,DDWK)
- +17 SET DDWT(DDWJ+1)=$EXTRACT(DDWT(DDWJ+1),DDWK+1,999)
- +18 IF DDWT(DDWJ+1)=""
- DO AMSHIFT(.DDWT,DDWJ+1)
- End DoDot:1
- +19 ;
- +20 IF '$TEST
- Begin DoDot:1
- +21 NEW DDWD,DDWI,DDWNXT,DDWSP,DDWX1,DDWX2
- +22 SET DDWD=0
- FOR
- Begin DoDot:2
- +23 SET DDWX1=DDWT(DDWJ)
- SET (DDWX2,DDWT(DDWJ+1))=$$LD(DDWT(DDWJ+1))
- +24 IF DDWX2=""
- SET DDWD=1
- QUIT
- +25 SET DDWNXT=$PIECE(DDWX2," ")
- SET DDWI=$LENGTH(DDWNXT)
- +26 IF $EXTRACT(DDWX2,DDWI+2)=" "
- IF $EXTRACT(DDWX2,DDWI+3,999)'?." "
- Begin DoDot:3
- +27 FOR DDWI=DDWI+2:1
- IF $EXTRACT(DDWX2,DDWI+1)'=" "
- QUIT
- End DoDot:3
- +28 SET DDWSP=DDWX1'?.E1" "
- +29 IF $LENGTH(DDWX1)+DDWSP+$LENGTH($EXTRACT(DDWX2,1,DDWI))>DDWW
- SET DDWD=1
- QUIT
- +30 SET DDWT(DDWJ)=DDWX1_$EXTRACT(" ",DDWSP)_$EXTRACT(DDWX2,1,DDWI)
- +31 SET DDWT(DDWJ+1)=$$LD($EXTRACT(DDWX2,DDWI+1,999))
- End DoDot:2
- IF DDWD
- QUIT
- +32 ;
- +33 IF DDWT(DDWJ+1)=""
- Begin DoDot:2
- +34 DO AMSHIFT(.DDWT,DDWJ+1)
- End DoDot:2
- +35 IF '$TEST
- DO AMINCJ
- End DoDot:1
- +36 QUIT
- +37 ;
- AMSHIFT(DDWT,DDWJ) ;Delete DDWT(DDWJ) and shift up
- +1 NEW DDWI
- +2 FOR DDWI=DDWJ:1:$ORDER(DDWT(""),-1)-1
- SET DDWT(DDWI)=DDWT(DDWI+1)
- +3 KILL DDWT($ORDER(DDWT(""),-1))
- +4 QUIT
- +5 ;
- AMINCJ ;Incr DDWJ
- +1 IF DDWJ=1
- IF $GET(DDWFLG)["I"
- SET DDWW=DDWRMAR-DDWLMAR+1
- +2 SET DDWJ=DDWJ+1
- +3 QUIT
- +4 ;
- SLICE(DDWN,DDWW,DDWFST,DDWRST) ;
- +1 ;Out: DDWFST=first part of text, $L<=DDWRMAR
- +2 ; DDWRST=remaining part (lead blanks removed)
- +3 NEW DDWI,DDWP,DDWX
- +4 IF '$GET(DDWW)
- SET DDWW=DDWRMAR
- +5 IF 'DDWRAP
- SET DDWFST=$EXTRACT(DDWN,1,DDWW)
- SET DDWLST=$EXTRACT(DDWN,DDWW+1,999)
- QUIT
- +6 ;
- +7 ;Set DDWI to column # at which to break
- +8 SET DDWX=$EXTRACT(DDWN,1,DDWW)
- SET DDWI=DDWW
- +9 IF DDWX'[" "
- +10 IF '$TEST
- IF DDWX?." "
- +11 IF '$TEST
- IF $EXTRACT(DDWX,DDWW)=" "
- IF $EXTRACT(DDWN,DDWW+1)'=" "
- +12 IF '$TEST
- Begin DoDot:1
- +13 FOR DDWP=$LENGTH(DDWX," "):-1:0
- IF $PIECE(DDWX," ",DDWP)]""
- QUIT
- +14 IF DDWP=1
- QUIT
- +15 SET DDWI=$LENGTH($PIECE(DDWX," ",1,DDWP-1))+1
- +16 IF DDWI'>$SELECT(DDWW=DDWRMAR
- SET DDWI=DDWW
- End DoDot:1
- +17 ;
- +18 SET DDWFST=$EXTRACT(DDWN,1,DDWI)
- SET DDWRST=$$LD($EXTRACT(DDWN,DDWI+1,999))
- +19 QUIT
- +20 ;
- TR(X) IF $GET(X)=""
- QUIT X
- +1 NEW I
- +2 FOR I=$LENGTH(X):-1:0
- IF $EXTRACT(X,I)'=" "
- QUIT
- +3 QUIT $EXTRACT(X,1,I)
- +4 ;
- LD(X) IF $GET(X)=""
- QUIT X
- +1 NEW I
- +2 FOR I=1:1:$LENGTH(X)+1
- IF $EXTRACT(X,I)'=" "
- QUIT
- +3 QUIT $EXTRACT(X,I,999)
- +4 ;
- CUP(Y,X) ;
- +1 SET DY=IOTM+Y-2
- SET DX=X-1
- XECUTE IOXY
- +2 QUIT
- +3 ;
- POS(R,C,F) ;Pos cursor
- +1 NEW DDWX
- +2 IF $GET(C)="E"
- SET C=$LENGTH($GET(DDWL(R)))+1
- +3 IF $GET(F)["N"
- SET DDWN=$GET(DDWL(R))
- +4 IF $GET(F)["R"
- SET DDWRW=R
- SET DDWC=C
- +5 ;
- +6 SET DDWX=C-DDWOFS
- +7 IF DDWX>IOM!(DDWX<1)
- DO SHIFT^DDW3(C,.DDWOFS)
- +8 SET DY=IOTM+R-2
- SET DX=C-DDWOFS-1
- XECUTE IOXY
- +9 QUIT
- +10 ;
- SCR(C) ;Screen number
- +1 QUIT C-$PIECE(DDWOFS,U,2)-1\$PIECE(DDWOFS,U,3)+1
- +2 ;
- MIN(X,Y) ;
- +1 QUIT $SELECT(X<Y:X,1:Y)
- MAX(X,Y) ;
- +1 QUIT $SELECT(X>Y:X,1:Y)