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