| 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)
|
---|