Annotation of freem_fileman/DDWG.m, revision 1.1

1.1     ! snw         1: DDWG   ;SFISC/MKO-GOTO ;09:03 AM  23 Jun 1994
        !             2:        ;;21.0;VA FileMan;;Dec 28, 1994
        !             3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
        !             4: GOTO   ;Go to a specific location
        !             5:        N DDWANS,DDWI,DDWHLP
        !             6:        S DDWHLP(1)="Examples, to go to a screen:  S21, 21, S+3, +3, -3"
        !             7:        S DDWHLP(2)="          to go to a line:    L53, L+4, L-5"
        !             8:        S DDWHLP(3)="          to go to a column:  C40, C+10, C-20"
        !             9:        D ASK(4,"Go to: ",17,"","D VALGTO",.DDWHLP,.DDWANS)
        !            10:        I U[DDWANS
        !            11:        E  I "Ss"[$E(DDWANS)!(DDWANS'?1A.E) D
        !            12:        . D GOTOS
        !            13:        E  I "Ll"[$E(DDWANS) D
        !            14:        . D GOTOL
        !            15:        E  I "Cc"[$E(DDWANS) D
        !            16:        . D GOTOC
        !            17:        Q
        !            18:        ;
        !            19: GOTOS  ;Go to a page
        !            20:        N DDWS
        !            21:        S DDWS=DDWANS
        !            22:        S:DDWS?1A.E DDWS=$E(DDWS,2,999)
        !            23:        S:DDWS?1P.E DDWS=$E(DDWS,2,999)
        !            24:        I DDWANS["+" S DDWS=$$SCREEN+DDWS
        !            25:        E  I DDWANS["-" S DDWS=$$SCREEN-DDWS
        !            26:        I DDWS<1 S DDWS=1
        !            27:        E  I DDWS>$$LTOSC(DDWCNT) S DDWS=$$LTOSC(DDWCNT)
        !            28:        D LINE(DDWS-1*DDWMR+1)
        !            29:        Q
        !            30:        ;
        !            31: GOTOL  ;Go to a line
        !            32:        N DDWLN
        !            33:        S DDWLN=DDWANS
        !            34:        S:DDWLN?1A.E DDWLN=$E(DDWLN,2,999)
        !            35:        S:DDWLN?1P.E DDWLN=$E(DDWLN,2,999)
        !            36:        I DDWANS["+" S DDWLN=DDWA+DDWRW+DDWLN
        !            37:        E  I DDWANS["-" S DDWLN=DDWA+DDWRW-DDWLN
        !            38:        I DDWLN<1 S DDWLN=1
        !            39:        E  I DDWLN>DDWCNT S DDWLN=DDWCNT
        !            40:        D LINE(DDWLN)
        !            41:        Q
        !            42:        ;
        !            43: GOTOC  ;Go to a column
        !            44:        N DDWCOL
        !            45:        S DDWCOL=DDWANS
        !            46:        S:DDWCOL?1A.E DDWCOL=$E(DDWCOL,2,999)
        !            47:        S:DDWCOL?1P.E DDWCOL=$E(DDWCOL,2,999)
        !            48:        I DDWANS["+" S DDWCOL=DDWC+DDWCOL
        !            49:        E  I DDWANS["-" S DDWCOL=DDWC-DDWCOL
        !            50:        I DDWCOL<1 S DDWCOL=1
        !            51:        E  I DDWCOL>246 S DDWCOL=246
        !            52:        D POS(DDWRW,DDWCOL,"R")
        !            53:        Q
        !            54:        ;
        !            55: LINE(DDWLN,DDWCOL)     ;Adjust arrays and position cursor on line DDWLN
        !            56:        I $G(DDWCOL)'="E",'$G(DDWCOL) S DDWCOL=1
        !            57:        S:DDWLN>DDWCNT DDWLN=DDWCNT
        !            58:        I DDWLN>DDWA,DDWLN'>(DDWA+DDWMR-1) D
        !            59:        . D POS(DDWLN-DDWA,DDWCOL,"RN")
        !            60:        E  I DDWLN>DDWA D
        !            61:        . D SHFTDN^DDW3(DDWLN,DDWCOL),POS(DDWLN-DDWA,DDWCOL,"RN")
        !            62:        E  D
        !            63:        . D SHFTUP^DDW3(DDWLN),POS(1,DDWCOL,"RN")
        !            64:        Q
        !            65:        ;
        !            66: ASK(DDWLC,DDWS,DDWLEN,DDWDEF,DDWVAL,DDWHLP,DDWANS,DDWCOD)      ;Prompt user
        !            67:        N DDWI
        !            68:        D CUP(DDWMR-DDWLC,1)
        !            69:        W $P(DDGLGRA,DDGLDEL)_$TR($J("",IOM)," ",$P(DDGLGRA,DDGLDEL,3))_$P(DDGLGRA,DDGLDEL,2)
        !            70:        F DDWI=DDWMR-DDWLC+1:1:DDWMR D CUP(DDWI,1) W $P(DDGLCLR,DDGLDEL)
        !            71:        K DDWANS F  D PROMPT Q:$D(DDWANS)
        !            72:        ;
        !            73:        F DDWI=DDWMR-DDWLC:1:DDWMR D
        !            74:        . D CUP(DDWI,1)
        !            75:        . W $P(DDGLCLR,DDGLDEL)_$E(DDWL(DDWI),1+DDWOFS,IOM+DDWOFS)
        !            76:        D POS(DDWRW,DDWC,"RN")
        !            77:        Q
        !            78:        ;
        !            79: PROMPT ;Issue read
        !            80:        N DDWERR,DDWX
        !            81:        D CUP(DDWMR-DDWLC+1,1) W DDWS_$P(DDGLCLR,DDGLDEL)
        !            82:        D EN^DIR0(IOTM+DDWMR-DDWLC-1,$L(DDWS),DDWLEN,1,$G(DDWDEF),245,"","","AKTW",.DDWX,.DDWCOD)
        !            83:        ;
        !            84:        I DDWCOD="TO" W $C(7) Q
        !            85:        I U[DDWX S DDWANS=DDWX Q
        !            86:        I $D(DDWHLP)>9!($G(DDWHLP)]""),DDWX?1."?" D HELP(.DDWHLP) Q
        !            87:        I $G(DDWVAL)]"" X DDWVAL I $D(DDWERR) W $C(7) D HELP(.DDWERR) Q
        !            88:        S DDWANS=DDWX
        !            89:        Q
        !            90:        ;
        !            91: VALGTO ;Validate DDWX
        !            92:        N DDWCH
        !            93:        Q:DDWX=U
        !            94:        S DDWERR="Invalid format.  Enter ? for examples."
        !            95:        Q:DDWX'?.1A.1P1.15N
        !            96:        I DDWX?1A.E S DDWCH=$E(DDWX) Q:"SsLlCc"'[DDWCH
        !            97:        I DDWX?.E1P.E I DDWX'["+",DDWX'["-" Q
        !            98:        K DDWERR
        !            99:        Q
        !           100:        ;
        !           101: HELP(DDWMSG)   ;Print message
        !           102:        N DDWI,DDWEC
        !           103:        S:$D(DDWMSG)<9 DDWMSG(1)=DDWMSG
        !           104:        S DDWEC=$O(DDWMSG(""),-1)
        !           105:        F DDWI=2:1:DDWLC D
        !           106:        . D CUP(DDWMR-DDWLC+DDWI,1)
        !           107:        . W $P(DDGLCLR,DDGLDEL)_$G(DDWMSG(DDWI-DDWLC+DDWEC))
        !           108:        Q
        !           109:        ;
        !           110: SCREEN()       ;Return current screen
        !           111:        Q DDWA+DDWRW-1\DDWMR+1
        !           112:        ;
        !           113: LTOSC(L)       ;Convert line number to page number
        !           114:        Q L-1\DDWMR+1
        !           115:        ;
        !           116: CUP(Y,X)       ;Pos cursor
        !           117:        S DY=IOTM+Y-2,DX=X-1 X IOXY
        !           118:        Q
        !           119:        ;
        !           120: POS(R,C,F)     ;Pos cursor based on char pos C
        !           121:        N DDWX
        !           122:        S:$G(C)="E" C=$L($G(DDWL(R)))+1
        !           123:        S:$G(F)["N" DDWN=$G(DDWL(R))
        !           124:        S:$G(F)["R" DDWRW=R,DDWC=C
        !           125:        ;
        !           126:        S DDWX=C-DDWOFS
        !           127:        I DDWX>IOM!(DDWX<1) D SHIFT^DDW3(C,.DDWOFS)
        !           128:        S DY=IOTM+R-2,DX=C-DDWOFS-1 X IOXY
        !           129:        Q

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