Annotation of freem_fileman/DDW6.m, revision 1.1

1.1     ! snw         1: DDW6   ;SFISC/MKO-JOIN ;08:51 AM  31 Aug 1994
        !             2:        ;;21.0;VA FileMan;;Dec 28, 1994
        !             3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
        !             4:        ;
        !             5: REFMT  ;Reformat
        !             6:        N DDWRFMT
        !             7:        I $D(DDWMARK),DDWRW+DDWA'>$P(DDWMARK,U,3) D UNMARK^DDW7
        !             8:        D POS(DDWRW,DDWLMAR,"R")
        !             9:        S DDWRFMT=0 F  D JOIN Q:DDWRFMT
        !            10:        Q
        !            11:        ;
        !            12: JOIN   ;Join
        !            13:        N DDWI,DDWSCR,DDWNSV,DDWLL,DDWTXT,DDWTXT0
        !            14:        I $D(DDWMARK),DDWRW+DDWA'>$P(DDWMARK,U,3) D UNMARK^DDW7
        !            15:        ;
        !            16:        ;Get current line
        !            17:        S:DDWN?." " (DDWN,DDWL(DDWRW))=$J("",DDWLMAR-1)
        !            18:        S (DDWTXT(1),DDWNSV)=DDWN
        !            19:        ;
        !            20:        ;Get next line
        !            21:        I DDWRW=DDWMR S:DDWSTB DDWTXT(2)=^TMP("DDW1",$J,DDWSTB)
        !            22:        E  S:DDWA+DDWRW<DDWCNT DDWTXT(2)=DDWL(DDWRW+1)
        !            23:        ;
        !            24:        I $G(DDWTXT(2))?." " D  Q:$G(DDWRFMT)
        !            25:        . I $L(DDWN)>DDWRMAR S:$D(DDWTXT(2))#2 DDWLL=DDWTXT(2)
        !            26:        . E  I $D(DDWRFMT) S DDWRFMT=1
        !            27:        ;
        !            28:        ;Adjust
        !            29:        S DDWTXT0=$O(DDWTXT(""),-1)
        !            30:        D ADJMAR(.DDWTXT,"","I")
        !            31:        S:$D(DDWLL) DDWTXT=DDWTXT+1,DDWTXT(DDWTXT)=DDWLL
        !            32:        S (DDWN,DDWL(DDWRW))=DDWTXT(1)
        !            33:        ;
        !            34:        ;Delete next line
        !            35:        I DDWTXT0>1,DDWTXT=1 D
        !            36:        . I DDWRW=DDWMR S DDWSTB=DDWSTB-1,DDWCNT=DDWCNT-1,$E(DDWBF,1,3)=111
        !            37:        . E  D POS(DDWRW+1,DDWC,"RN"),XLINE^DDW5(1),POS(DDWRW-1,DDWC,"RN")
        !            38:        ;
        !            39:        ;DDWSCR: curr scr = final scr
        !            40:        I DDWTXT=1,'$D(DDWRFMT) D
        !            41:        . S DDWSCR=$$SCR($L(DDWTXT(1))+1)=$P(DDWOFS,U,4)
        !            42:        E  D
        !            43:        . S DDWSCR=$$SCR(DDWLMAR)=$P(DDWOFS,U,4)
        !            44:        ;
        !            45:        I DDWSCR,$L(DDWNSV)'=$L(DDWN) D
        !            46:        . D CUP(DDWRW,$$MIN($L(DDWNSV),$L(DDWN))+1-DDWOFS)
        !            47:        . W $P(DDGLCLR,DDGLDEL)_$E(DDWN,$L(DDWNSV)+1,IOM+DDWOFS)
        !            48:        ;
        !            49:        I DDWTXT=1 D
        !            50:        . I '$D(DDWRFMT) D
        !            51:        .. D POS(DDWRW,"E","RN")
        !            52:        . E  D POS(DDWRW,DDWLMAR,"RN")
        !            53:        E  D JOIN2
        !            54:        Q
        !            55:        ;
        !            56: JOIN2  ;Join produced >1 lines
        !            57:        D POS(DDWRW,DDWLMAR,"R")
        !            58:        ;
        !            59:        I DDWTXT0=2 D
        !            60:        . I DDWRW<DDWMR S DDWL(DDWRW+1)=DDWTXT(2)
        !            61:        . E  S ^TMP("DDW1",$J,DDWSTB)=DDWTXT(2)
        !            62:        . ;
        !            63:        . I DDWRW<DDWMR D
        !            64:        .. S DDWRW=DDWRW+1
        !            65:        .. I DDWSCR D
        !            66:        ... D CUP(DDWRW,1)
        !            67:        ... W $P(DDGLCLR,DDGLDEL)_$E(DDWL(DDWRW),1+DDWOFS,IOM+DDWOFS)
        !            68:        . E  D MVFWD^DDW3(1)
        !            69:        ;
        !            70:        F DDWI=DDWTXT0+1:1:DDWTXT D
        !            71:        . D ILINE^DDW5
        !            72:        . S (DDWN,DDWL(DDWRW))=DDWTXT(DDWI)
        !            73:        . D CUP(DDWRW,1)
        !            74:        . W $P(DDGLCLR,DDGLDEL)_$E(DDWN,1+DDWOFS,IOM+DDWOFS)
        !            75:        ;
        !            76:        D POS(DDWRW-($D(DDWLL)#2),DDWLMAR,"RN")
        !            77:        Q
        !            78:        ;
        !            79: ADJMAR(DDWT,DDWW,DDWFLG)       ;Adjust length of text in DDWT array
        !            80:        ;  DDWT = Text array
        !            81:        ;  DDWW = Width
        !            82:        ;DDWFLG = I:First line $L=DDWRMAR, subsequent $L=DDWRMAR-DDWLMAR+1
        !            83:        ;
        !            84:        N DDWJ
        !            85:        S DDWJ=1
        !            86:        I $G(DDWFLG)["I" S DDWW=DDWRMAR
        !            87:        E  I '$D(DDWW) S DDWW=DDWRMAR-DDWLMAR+1
        !            88:        ;
        !            89:        F  Q:'$D(DDWT(DDWJ))  D AMLOOP
        !            90:        S DDWT=$O(DDWT(""),-1)
        !            91:        I DDWLMAR>1 F DDWJ=$G(DDWFLG)["I"+1:1:DDWT D
        !            92:        . S DDWT(DDWJ)=$J("",DDWLMAR-1)_DDWT(DDWJ)
        !            93:        Q
        !            94:        ;
        !            95: AMLOOP ;Process DDWT(DDWJ)
        !            96:        I $L(DDWT(DDWJ))>DDWW F  D  Q:$L(DDWT(DDWJ))'>DDWW
        !            97:        . N DDWK,DDWFST,DDWLST
        !            98:        . F DDWK=$O(DDWT(""),-1)+1:-1:DDWJ+2 S DDWT(DDWK)=DDWT(DDWK-1)
        !            99:        . D SLICE(DDWT(DDWJ),DDWW,.DDWFST,.DDWLST)
        !           100:        . S DDWT(DDWJ)=DDWFST,DDWT(DDWJ+1)=DDWLST
        !           101:        . D AMINCJ
        !           102:        ;
        !           103:        E  I $L(DDWT(DDWJ))=DDWW!'$D(DDWT(DDWJ+1)) D
        !           104:        . I DDWRAP,$D(DDWT(DDWJ+1)) S DDWT(DDWJ+1)=$$LD(DDWT(DDWJ+1))
        !           105:        . D AMINCJ
        !           106:        ;
        !           107:        E  I 'DDWRAP D
        !           108:        . N DDWK S DDWK=DDWW-$L(DDWT(DDWJ))
        !           109:        . S DDWT(DDWJ)=DDWT(DDWJ)_$E(DDWT(DDWJ+1),1,DDWK)
        !           110:        . S DDWT(DDWJ+1)=$E(DDWT(DDWJ+1),DDWK+1,999)
        !           111:        . D:DDWT(DDWJ+1)="" AMSHIFT(.DDWT,DDWJ+1)
        !           112:        ;
        !           113:        E  D
        !           114:        . N DDWD,DDWI
        !           115:        . S DDWT(DDWJ+1)=$$LD(DDWT(DDWJ+1))
        !           116:        . S:DDWT(DDWJ)'?.E1" " DDWT(DDWJ)=DDWT(DDWJ)_" "
        !           117:        . S DDWD=0 F DDWI=1:1:$L(DDWT(DDWJ+1)," ") D  Q:DDWD
        !           118:        .. I $L(DDWT(DDWJ))+$L($P(DDWT(DDWJ+1)," "))>DDWW S DDWD=1 Q
        !           119:        .. ;
        !           120:        .. S DDWT(DDWJ)=DDWT(DDWJ)_$P(DDWT(DDWJ+1)," ")
        !           121:        .. S:$L(DDWT(DDWJ))<DDWW DDWT(DDWJ)=DDWT(DDWJ)_" "
        !           122:        .. S DDWT(DDWJ+1)=$P(DDWT(DDWJ+1)," ",2,999)
        !           123:        . ;
        !           124:        . S DDWT(DDWJ)=$$TR(DDWT(DDWJ)),DDWT(DDWJ+1)=$$LD(DDWT(DDWJ+1))
        !           125:        . I DDWT(DDWJ+1)="" D
        !           126:        .. D AMSHIFT(.DDWT,DDWJ+1)
        !           127:        . E  D:DDWI=1 AMINCJ
        !           128:        Q
        !           129:        ;
        !           130: AMSHIFT(DDWT,DDWJ)     ;Delete DDWT(DDWJ) and shift up
        !           131:        N DDWI
        !           132:        F DDWI=DDWJ:1:$O(DDWT(""),-1)-1 S DDWT(DDWI)=DDWT(DDWI+1)
        !           133:        K DDWT($O(DDWT(""),-1))
        !           134:        Q
        !           135:        ;
        !           136: AMINCJ ;Incr DDWJ
        !           137:        I DDWJ=1,$G(DDWFLG)["I" S DDWW=DDWRMAR-DDWLMAR+1
        !           138:        S DDWJ=DDWJ+1
        !           139:        Q
        !           140:        ;
        !           141: SLICE(DDWN,DDWW,DDWFST,DDWRST) ;
        !           142:        ;Out: DDWFST=first part of text, $L<=DDWRMAR (trailing bl removed)
        !           143:        ;     DDWRST=remaining part (lead blanks removed)
        !           144:        N DDWI,DDWX
        !           145:        S:'$G(DDWW) DDWW=DDWRMAR
        !           146:        ;
        !           147:        I 'DDWRAP S DDWFST=$E(DDWN,1,DDWW),DDWLST=$E(DDWN,DDWW+1,999) Q
        !           148:        ;
        !           149:        F DDWI=$L(DDWN," "):-1:1 Q:$L($P(DDWN," ",1,DDWI))'>DDWW
        !           150:        S:$E(DDWN,1,DDWI)?." " DDWI=999
        !           151:        S DDWFST=$$TR($P(DDWN," ",1,DDWI))
        !           152:        S:$L(DDWFST)>DDWW DDWFST=$E(DDWFST,1,DDWW)
        !           153:        S DDWRST=$$LD($E(DDWN,$L(DDWFST)+1,999))
        !           154:        Q
        !           155:        ;
        !           156: TR(X)  Q:$G(X)="" X
        !           157:        N I
        !           158:        F I=$L(X):-1:0 Q:$E(X,I)'=" "
        !           159:        Q $E(X,1,I)
        !           160:        ;
        !           161: LD(X)  Q:$G(X)="" X
        !           162:        N I
        !           163:        F I=1:1:$L(X)+1 Q:$E(X,I)'=" "
        !           164:        Q $E(X,I,999)
        !           165:        ;
        !           166: CUP(Y,X)       ;
        !           167:        S DY=IOTM+Y-2,DX=X-1 X IOXY
        !           168:        Q
        !           169:        ;
        !           170: POS(R,C,F)     ;Pos cursor
        !           171:        N DDWX
        !           172:        S:$G(C)="E" C=$L($G(DDWL(R)))+1
        !           173:        S:$G(F)["N" DDWN=$G(DDWL(R))
        !           174:        S:$G(F)["R" DDWRW=R,DDWC=C
        !           175:        ;
        !           176:        S DDWX=C-DDWOFS
        !           177:        I DDWX>IOM!(DDWX<1) D SHIFT^DDW3(C,.DDWOFS)
        !           178:        S DY=IOTM+R-2,DX=C-DDWOFS-1 X IOXY
        !           179:        Q
        !           180:        ;
        !           181: SCR(C) ;Screen number
        !           182:        Q C-$P(DDWOFS,U,2)-1\$P(DDWOFS,U,3)+1
        !           183:        ;
        !           184: MIN(X,Y)       ;
        !           185:        Q $S(X<Y:X,1:Y)

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>