DDW6 ;SFISC/MKO-JOIN ;08:51 AM 31 Aug 1994 ;;21.0;VA FileMan;;Dec 28, 1994 ;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:DDWN?." " (DDWN,DDWL(DDWRW))=$J("",DDWLMAR-1) S (DDWTXT(1),DDWNSV)=DDWN ; ;Get next line I DDWRW=DDWMR S:DDWSTB DDWTXT(2)=^TMP("DDW1",$J,DDWSTB) E S:DDWA+DDWRWDDWRMAR 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) D . S DDWSCR=$$SCR($L(DDWTXT(1))+1)=$P(DDWOFS,U,4) E D . S DDWSCR=$$SCR(DDWLMAR)=$P(DDWOFS,U,4) ; I DDWSCR,$L(DDWNSV)'=$L(DDWN) D . D CUP(DDWRW,$$MIN($L(DDWNSV),$L(DDWN))+1-DDWOFS) . W $P(DDGLCLR,DDGLDEL)_$E(DDWN,$L(DDWNSV)+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 DDWRW1 F DDWJ=$G(DDWFLG)["I"+1:1:DDWT D . S DDWT(DDWJ)=$J("",DDWLMAR-1)_DDWT(DDWJ) Q ; AMLOOP ;Process DDWT(DDWJ) 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 . S DDWT(DDWJ+1)=$$LD(DDWT(DDWJ+1)) . S:DDWT(DDWJ)'?.E1" " DDWT(DDWJ)=DDWT(DDWJ)_" " . S DDWD=0 F DDWI=1:1:$L(DDWT(DDWJ+1)," ") D Q:DDWD .. I $L(DDWT(DDWJ))+$L($P(DDWT(DDWJ+1)," "))>DDWW S DDWD=1 Q .. ; .. S DDWT(DDWJ)=DDWT(DDWJ)_$P(DDWT(DDWJ+1)," ") .. S:$L(DDWT(DDWJ))DDWW S:$E(DDWN,1,DDWI)?." " DDWI=999 S DDWFST=$$TR($P(DDWN," ",1,DDWI)) S:$L(DDWFST)>DDWW DDWFST=$E(DDWFST,1,DDWW) S DDWRST=$$LD($E(DDWN,$L(DDWFST)+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