1 | DIR01 ;SFISC/MKO-FIELD EDITOR ;12:37 PM 15 Feb 1995
|
---|
2 | ;;22.0;VA FileMan;;Mar 30, 1999
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | I DIR0A]"",DIR0C=1 D F X IOXY Q:DIR0QT
|
---|
5 | F D E X IOXY Q:DIR0QT
|
---|
6 | Q
|
---|
7 | ;
|
---|
8 | F D READ(.DIR0CH)
|
---|
9 | I "?^"'[DIR0CH=$L(DIR0CH) S DIR0A="" D REP,DEOF Q
|
---|
10 | D:DIR0CH]"" E1
|
---|
11 | Q
|
---|
12 | ;
|
---|
13 | E I $G(DIR0("REP"))&DIR0C>1!(DIR0C>$L(DIR0A)),DIR0F>DX,DIR0M>$L(DIR0A),'$D(DIR0KD) D
|
---|
14 | . D PREAD($$MIN(DIR0F-DX,DIR0M-DIR0C+1),.DIR0ST,.DIR0CH)
|
---|
15 | . Q:DIR0ST=""
|
---|
16 | . S DIR0CHG=1
|
---|
17 | . I '$G(DIR0("REP")) S DIR0A=DIR0A_DIR0ST
|
---|
18 | . E S $E(DIR0A,DIR0C,DIR0C+$L(DIR0ST)-1)=DIR0ST
|
---|
19 | . S DX=DX+$L(DIR0ST),DIR0C=DIR0C+$L(DIR0ST)
|
---|
20 | E D READ(.DIR0CH)
|
---|
21 | Q:DIR0CH=""
|
---|
22 | ;
|
---|
23 | E1 I "?^"[DIR0CH,DIR0C=1,'DIR0QU S DIR0A="",DIR0QU=1 D REP,DEOF Q
|
---|
24 | D @$S($L(DIR0CH)>1:DIR0CH,$G(DIR0("REP")):"REP",1:"INS")
|
---|
25 | I DIR0QU,"?^"'[$E(DIR0A)!'$L(DIR0A) S DIR0QU=0,DIR0A="" D CLR
|
---|
26 | Q
|
---|
27 | ;
|
---|
28 | REP I DIR0C>DIR0M W $C(7) Q
|
---|
29 | S DIR0CHG=1
|
---|
30 | S $E(DIR0A,DIR0C)=DIR0CH,DIR0C=DIR0C+1
|
---|
31 | I DIR0F>DX S DX=DX+1 W DIR0CH Q
|
---|
32 | N DIX
|
---|
33 | S DIX=DIR0C-(DIR0L\2)
|
---|
34 | S:$L(DIR0A)-DIX+1<DIR0L DIX=$L(DIR0A)-DIR0L+1
|
---|
35 | S DX=DIR0S X IOXY
|
---|
36 | W $E(DIR0A,DIX,DIX+DIR0L-1) S DX=DIR0S+DIR0C-DIX
|
---|
37 | Q
|
---|
38 | ;
|
---|
39 | INS I $L(DIR0A)'<DIR0M W $C(7) Q
|
---|
40 | S DIR0CHG=1
|
---|
41 | S DIR0A=$E(DIR0A,1,DIR0C-1)_DIR0CH_$E(DIR0A,DIR0C,999),DIR0C=DIR0C+1
|
---|
42 | I DIR0F>DX S DX=DX+1 W $E(DIR0A,DIR0C-1,DIR0C+DIR0F-DX-1) Q
|
---|
43 | S DX=DIR0S X IOXY W $E(DIR0A,DIR0C-DIR0L,DIR0C-1) S DX=DIR0F
|
---|
44 | Q
|
---|
45 | ;
|
---|
46 | RIGHT Q:DIR0C>$L(DIR0A)
|
---|
47 | I DX<DIR0F S DX=DX+1,DIR0C=DIR0C+1 Q
|
---|
48 | S DIR0C=DIR0C+1,DX=DIR0S X IOXY
|
---|
49 | W $E(DIR0A,DIR0C-DIR0L,DIR0C-1)
|
---|
50 | S DX=DIR0F
|
---|
51 | Q
|
---|
52 | ;
|
---|
53 | LEFT Q:DIR0C'>1
|
---|
54 | I DX>DIR0S S DX=DX-1,DIR0C=DIR0C-1 Q
|
---|
55 | S DIR0C=DIR0C-1 W $E(DIR0A,DIR0C,DIR0C+DIR0L-1)
|
---|
56 | Q
|
---|
57 | ;
|
---|
58 | JRT Q:DIR0C>$L(DIR0A)
|
---|
59 | I DIR0F=DX D Q
|
---|
60 | . S DIR0C=DIR0C+DIR0L S:DIR0C+1>$L(DIR0A) DIR0C=$L(DIR0A)+1
|
---|
61 | . S DX=DIR0S X IOXY W $E(DIR0A,DIR0C-DIR0L,DIR0C-1)
|
---|
62 | . S DX=DIR0F
|
---|
63 | N DIX
|
---|
64 | S DIX=$L(DIR0A)-DIR0C+1
|
---|
65 | I DIR0F-DX>DIX S DX=DX+DIX,DIR0C=DIR0C+DIX Q
|
---|
66 | S DIR0C=DIR0C+DIR0F-DX,DX=DIR0F
|
---|
67 | Q
|
---|
68 | ;
|
---|
69 | JLT Q:DIR0C'>1
|
---|
70 | I DX=DIR0S D Q
|
---|
71 | . S DIR0C=DIR0C-DIR0L S:DIR0C<1 DIR0C=1
|
---|
72 | . W $E(DIR0A,DIR0C,DIR0C+DIR0L-1)
|
---|
73 | S DIR0C=DIR0C-DX+DIR0S,DX=DIR0S
|
---|
74 | Q
|
---|
75 | ;
|
---|
76 | FDE Q:DIR0C>$L(DIR0A)
|
---|
77 | I DX+$L(DIR0A)-DIR0C-DIR0L<DIR0S D Q
|
---|
78 | . S DX=DX+$L(DIR0A)-DIR0C+1,DIR0C=$L(DIR0A)+1
|
---|
79 | S DIR0C=$L(DIR0A)+1,DX=DIR0S X IOXY
|
---|
80 | W $E(DIR0A,DIR0C-DIR0L,DIR0C)
|
---|
81 | S DX=DIR0F
|
---|
82 | Q
|
---|
83 | ;
|
---|
84 | FDB Q:DIR0C'>1
|
---|
85 | I DX-DIR0C+1<DIR0S S DX=DIR0S X IOXY W $E(DIR0A,1,DIR0L)
|
---|
86 | S DX=DIR0S,DIR0C=1
|
---|
87 | Q
|
---|
88 | ;
|
---|
89 | BS Q:DIR0C'>1
|
---|
90 | S DIR0CHG=1
|
---|
91 | S DIR0C=DIR0C-1,DIR0A=$E(DIR0A,1,DIR0C-1)_$E(DIR0A,DIR0C+1,999)
|
---|
92 | I DX>DIR0S D Q
|
---|
93 | . S DX=DX-1 X IOXY
|
---|
94 | . W $E(DIR0A_$E(DIR0SP),DIR0C,DIR0C+DIR0F-DX-1)
|
---|
95 | N DIX
|
---|
96 | S DIX=DIR0C-(DIR0L\2)
|
---|
97 | S:$L(DIR0A)-DIX+1<DIR0L DIX=$L(DIR0A)-DIR0L+1
|
---|
98 | S:DIX<1 DIX=1
|
---|
99 | W $E(DIR0A,DIX,DIX+DIR0L-1) S DX=DIR0S+DIR0C-DIX
|
---|
100 | Q
|
---|
101 | ;
|
---|
102 | DEL Q:DIR0C>$L(DIR0A)!(DIR0F'>DX)
|
---|
103 | S DIR0CHG=1
|
---|
104 | S DIR0A=$E(DIR0A,1,DIR0C-1)_$E(DIR0A,DIR0C+1,999)
|
---|
105 | W $E(DIR0A_$E(DIR0SP),DIR0C,DIR0C+DIR0F-DX-1)
|
---|
106 | Q
|
---|
107 | ;
|
---|
108 | CLR S DIR0CHG=1
|
---|
109 | S DIR0C=1,DX=DIR0S X IOXY
|
---|
110 | I DIR0A]"",DIR0A'=DIR0D S DIR0SV=DIR0A
|
---|
111 | S DIR0A=$S(DIR0A=DIR0D:DIR0SV,DIR0A="":DIR0D,1:"")
|
---|
112 | W $E(DIR0A,1,DIR0L)_$E(DIR0SP,$L(DIR0A)+1,999)
|
---|
113 | Q
|
---|
114 | ;
|
---|
115 | DEOF S DIR0CHG=1
|
---|
116 | W $E(DIR0SP,DX-DIR0S+1,999)
|
---|
117 | S DIR0A=$E(DIR0A,1,DIR0C-1)
|
---|
118 | Q
|
---|
119 | ;
|
---|
120 | RPM N DX,DY
|
---|
121 | I $D(DDS) S DX=IOM-8,DY=IOSL-1 X IOXY
|
---|
122 | I $G(DIR0("REP")) W:$D(DDS) "Insert " K DIR0("REP")
|
---|
123 | E W:$D(DDS) "Replace" S DIR0("REP")=1
|
---|
124 | Q
|
---|
125 | ;
|
---|
126 | KPM I $G(DDGLKPNM) K DDGLKPNM W $P(DDGLED,DDGLDEL,9)
|
---|
127 | E S DDGLKPNM=1 W $P(DDGLED,DDGLDEL,10)
|
---|
128 | Q
|
---|
129 | ;
|
---|
130 | WRT G WRT^DIR0W
|
---|
131 | WLT G WLT^DIR0W
|
---|
132 | DLW G DLW^DIR0W
|
---|
133 | HLP G ^DIR0H
|
---|
134 | ZM G SM^DIR02
|
---|
135 | ;
|
---|
136 | TO I $D(DIR0TO)#2 D @DIR0TO Q
|
---|
137 | S DTOUT=1
|
---|
138 | UP ;
|
---|
139 | DOWN ;
|
---|
140 | TAB ;
|
---|
141 | FDL ;
|
---|
142 | CR ;
|
---|
143 | NB ;
|
---|
144 | NP ;
|
---|
145 | PP ;
|
---|
146 | SEL ;
|
---|
147 | EX ;
|
---|
148 | QT ;
|
---|
149 | CL ;
|
---|
150 | SV ;
|
---|
151 | RF ;
|
---|
152 | S DIR0QT=1
|
---|
153 | Q
|
---|
154 | NOP W $C(7)
|
---|
155 | Q
|
---|
156 | ;
|
---|
157 | READ(Y) ;Out: Y=char or mnemonic
|
---|
158 | F D Q:Y'=-1
|
---|
159 | . R *Y:DTIME
|
---|
160 | . I Y>31,Y<127 S Y=$C(Y) Q
|
---|
161 | . I Y<0 S Y="TO" Q
|
---|
162 | . D MNE(.Y)
|
---|
163 | I Y'="TO",$D(DIR0KD) D @DIR0KD
|
---|
164 | Q
|
---|
165 | ;
|
---|
166 | PREAD(DIR0LEN,DIR0ST,Y) ;
|
---|
167 | ; Y = Mnem, Null if DIR0LEN chars read or invalid
|
---|
168 | X DDGLZOSF("EON")
|
---|
169 | R DIR0ST#DIR0LEN:DTIME E S Y="TO" Q
|
---|
170 | X DDGLZOSF("EOFF"),DDGLZOSF("TRMRD")
|
---|
171 | I $C(Y)?1C,Y D
|
---|
172 | . D MNE(.Y) S:Y=-1 Y=""
|
---|
173 | E S Y=""
|
---|
174 | Q
|
---|
175 | ;
|
---|
176 | MNE(Y) ;Out: Y=mnemonic, or -1 if invalid
|
---|
177 | N S,F
|
---|
178 | S S="",F=0
|
---|
179 | F D MNELOOP Q:F
|
---|
180 | Q
|
---|
181 | ;
|
---|
182 | MNELOOP ;
|
---|
183 | S S=S_$C(Y)
|
---|
184 | I DIR0(DIR0P_"IN")'[(U_S) D I Y=-1 D FLUSH Q
|
---|
185 | . I $C(Y)'?1L S Y=-1 Q
|
---|
186 | . S S=$E(S,1,$L(S)-1)_$C(Y-32)
|
---|
187 | . S:DIR0(DIR0P_"IN")'[(U_S_U) Y=-1
|
---|
188 | ;
|
---|
189 | I DIR0(DIR0P_"IN")[(U_S_U),S'=$C(27) D
|
---|
190 | . S Y=$P(DIR0(DIR0P_"OUT"),";",$L($P(DIR0(DIR0P_"IN"),U_S_U),U)),F=1
|
---|
191 | E R *Y:5 D:Y=-1 FLUSH
|
---|
192 | Q
|
---|
193 | ;
|
---|
194 | FLUSH N X
|
---|
195 | S F=1 W $C(7) F R *X:0 E Q
|
---|
196 | Q
|
---|
197 | ;
|
---|
198 | MIN(X,Y) ;
|
---|
199 | Q $S(X<Y:X,1:Y)
|
---|