1 | DDW2 ;SFISC/MKO-SETTINGS, MODES ;11:32 AM 25 Aug 2000
|
---|
2 | ;;22.0;VA FileMan;**18**;Mar 30, 1999
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | TSET N DDWX
|
---|
6 | S DDWX=$E(DDWRUL,DDWC)
|
---|
7 | S DDWX=$S(DDWX="T":"=",DDWX="=":"T",1:DDWX)
|
---|
8 | S $E(DDWRUL,DDWC)=DDWX
|
---|
9 | I DDWC'=DDWLMAR,DDWC'=DDWRMAR D
|
---|
10 | . D CUP(DDWMR+1,DDWC-DDWOFS) W DDWX
|
---|
11 | . D POS(DDWRW,DDWC)
|
---|
12 | Q
|
---|
13 | ;
|
---|
14 | TSALL ;Prompt for tab stops
|
---|
15 | N DDWHLP,DDWANS,DDWCOD
|
---|
16 | S DDWHLP(1)=" Specify in which column(s) you want to set tab stops. To set individual"
|
---|
17 | S DDWHLP(2)=" tab stops, type a series of numbers separated by commas, for example:"
|
---|
18 | S DDWHLP(3)=" 4,7,15,20. To set tab stops at repeated intervals after the last stop,"
|
---|
19 | S DDWHLP(4)=" or column 1, type the interval as +n, for example: 10,20,+5."
|
---|
20 | D ASK^DDWG(5,"Columns in which to set tab stops: ",30,$G(DDWTAB),"D TSALLVAL^DDW2",.DDWHLP,.DDWANS,.DDWCOD)
|
---|
21 | ;
|
---|
22 | Q:DDWCOD="TO"!(DDWANS=U)!(DDWANS=DDWTAB)
|
---|
23 | S DDWTAB=DDWANS
|
---|
24 | S DDWRUL=$$RULER(DDWTAB)
|
---|
25 | D RULER^DDW3,POS(DDWRW,DDWC)
|
---|
26 | Q
|
---|
27 | ;
|
---|
28 | TSALLVAL ;Validate tab stops
|
---|
29 | K DDWERR
|
---|
30 | S:DDWX="@" DDWX=""
|
---|
31 | I DDWX?1."^"!($P($G(DDWCOD),U)="TO") S DDWX=U Q
|
---|
32 | I $TR(DDWX,"+,")?.E1.APC.E D
|
---|
33 | . S DDWERR=" Response can contain only commas (,), plus signs (+), and numbers."
|
---|
34 | Q
|
---|
35 | ;
|
---|
36 | RULER(TAB) ;Return the ruler with tab stops
|
---|
37 | N C,INT,LAST,POS,RUL
|
---|
38 | S RUL=$TR($J("",255)," ","=")
|
---|
39 | ;
|
---|
40 | ;Process each comma piece in tab
|
---|
41 | S LAST=1
|
---|
42 | F C=1:1:$L(TAB,",") D
|
---|
43 | . S POS=$P(TAB,",",C) Q:POS'?.1"+"1.3N
|
---|
44 | . I $E(POS)="+" D
|
---|
45 | .. S INT=+$E(POS,2,999)
|
---|
46 | .. F POS=LAST+INT:INT:255 S $E(RUL,POS)="T"
|
---|
47 | . E S:POS<256 $E(RUL,POS)="T",LAST=POS
|
---|
48 | Q RUL
|
---|
49 | ;
|
---|
50 | LSET I 'DDWRAP D ERR("Margins cannot be set when wrap is off") Q
|
---|
51 | I DDWC>231 D ERR("Left margin cannot be set beyond column 231") Q
|
---|
52 | I DDWC'<DDWRMAR D ERR("Left margin must be left of right margin") Q
|
---|
53 | I DDWLMAR-DDWOFS'<1,DDWLMAR-DDWOFS'>IOM D
|
---|
54 | . D CUP(DDWMR+1,DDWLMAR-DDWOFS) W $E(DDWRUL,DDWLMAR)
|
---|
55 | D CUP(DDWMR+1,DDWC-DDWOFS) W "<" D POS(DDWRW,DDWC)
|
---|
56 | S DDWLMAR=DDWC
|
---|
57 | Q
|
---|
58 | ;
|
---|
59 | RSET I 'DDWRAP D ERR("Margins cannot be set when wrap is off") Q
|
---|
60 | I DDWC>245 D ERR("Right margin cannot be set beyond column 245") Q
|
---|
61 | I DDWC'>DDWLMAR D ERR("Right margin must be right of left margin") Q
|
---|
62 | I DDWRMAR-DDWOFS'<1,DDWRMAR-DDWOFS'>IOM D
|
---|
63 | . D CUP(DDWMR+1,DDWRMAR-DDWOFS) W $E(DDWRUL,DDWRMAR)
|
---|
64 | D CUP(DDWMR+1,DDWC-DDWOFS) W ">" D POS(DDWRW,DDWC)
|
---|
65 | S DDWRMAR=DDWC
|
---|
66 | Q
|
---|
67 | ;
|
---|
68 | WRAPM S DDWRAP=DDWRAP+1#2
|
---|
69 | D CUP(0,3) W $S(DDWRAP:"[ WRAP ]",1:"========")
|
---|
70 | I 'DDWRAP D
|
---|
71 | . S DDWLMAR(1)=DDWLMAR,DDWLMAR=1
|
---|
72 | . S DDWRMAR(1)=DDWRMAR,DDWRMAR=245
|
---|
73 | E D
|
---|
74 | . S DDWLMAR=DDWLMAR(1) K DDWLMAR(1)
|
---|
75 | . S DDWRMAR=DDWRMAR(1) K DDWRMAR(1)
|
---|
76 | D RULER^DDW3,POS(DDWRW,DDWC)
|
---|
77 | Q
|
---|
78 | ;
|
---|
79 | REPLM S DDWREP=DDWREP+1#2
|
---|
80 | D CUP(0,13) W $S(DDWREP:"[ REPLACE ]",1:"[ INSERT ]=")
|
---|
81 | D POS(DDWRW,DDWC)
|
---|
82 | Q
|
---|
83 | ;
|
---|
84 | STAT S DDWSTAT=DDWSTAT+1#2
|
---|
85 | I DDWSTAT S DDWTO=1
|
---|
86 | E D
|
---|
87 | . D CUP(DDWMR+2,1)
|
---|
88 | . W $P(DDGLCLR,DDGLDEL) D POS(DDWRW,DDWC)
|
---|
89 | . S DDWTO=DTIME
|
---|
90 | . K DDWTC
|
---|
91 | Q
|
---|
92 | ;
|
---|
93 | CUP(Y,X) ;Cursor positioning
|
---|
94 | S DY=IOTM+Y-2,DX=X-1 X IOXY
|
---|
95 | Q
|
---|
96 | ;
|
---|
97 | POS(R,C,F) ;Pos cursor based on char pos C
|
---|
98 | N DDWX
|
---|
99 | S:$G(C)="E" C=$L($G(DDWL(R)))+1
|
---|
100 | S:$G(F)["N" DDWN=$G(DDWL(R))
|
---|
101 | S:$G(F)["R" DDWRW=R,DDWC=C
|
---|
102 | ;
|
---|
103 | S DDWX=C-DDWOFS
|
---|
104 | I DDWX>IOM!(DDWX<1) D SHIFT^DDW3(C,.DDWOFS)
|
---|
105 | S DY=IOTM+R-2,DX=C-DDWOFS-1 X IOXY
|
---|
106 | Q
|
---|
107 | ;
|
---|
108 | SCR(C) ;Return screen number
|
---|
109 | Q C-$P(DDWOFS,U,2)-1\$P(DDWOFS,U,3)+1
|
---|
110 | ;
|
---|
111 | ERR(DDWX) ;Error
|
---|
112 | W $C(7)
|
---|
113 | D MSG^DDW(DDWX) H 2 D MSG^DDW()
|
---|
114 | F R *DDWX:0 E Q
|
---|
115 | D POS(DDWRW,DDWC)
|
---|
116 | Q
|
---|