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>