Annotation of freem_fileman/DDWG.m, revision 1.1.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>