Annotation of freem_fileman/USER/DIR01.m, revision 1.1
1.1 ! snw 1: DIR01 ;SFISC/MKO-FIELD EDITOR ;02:39 PM 12 Oct 1994
! 2: ;;21.0;VA FileMan;;Dec 28, 1994
! 3: ;Per VHA Directive 10-93-142, this routine should not be modified.
! 4: I DIR0A]"" 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 S DTOUT=1,DIR0A=DIR0D
! 137: UP ;
! 138: DOWN ;
! 139: TAB ;
! 140: FDL ;
! 141: CR ;
! 142: NB ;
! 143: NP ;
! 144: PP ;
! 145: SEL ;
! 146: EX ;
! 147: QT ;
! 148: CL ;
! 149: SV ;
! 150: RF ;
! 151: S DIR0QT=1
! 152: Q
! 153: NOP W $C(7)
! 154: Q
! 155: ;
! 156: READ(Y) ;Out: Y=char or mnemonic
! 157: F D Q:Y'=-1
! 158: . R *Y:DTIME
! 159: . I Y>31,Y<127 S Y=$C(Y) Q
! 160: . I Y<0 S Y="TO" Q
! 161: . D MNE(.Y)
! 162: I Y'="TO",$D(DIR0KD) D @DIR0KD
! 163: Q
! 164: ;
! 165: PREAD(DIR0LEN,DIR0ST,Y) ;
! 166: ; Y = Mnem, Null if DIR0LEN chars read or invalid
! 167: X DDGLZOSF("EON")
! 168: R DIR0ST#DIR0LEN:DTIME E S Y="TO" Q
! 169: X DDGLZOSF("EOFF"),DDGLZOSF("TRMRD")
! 170: I $C(Y)?1C,Y D
! 171: . D MNE(.Y) S:Y=-1 Y=""
! 172: E S Y=""
! 173: Q
! 174: ;
! 175: MNE(Y) ;Out: Y=mnemonic, or -1 if invalid
! 176: N S,F
! 177: S S="",F=0
! 178: F D MNELOOP Q:F
! 179: Q
! 180: ;
! 181: MNELOOP ;
! 182: S S=S_$C(Y)
! 183: I DIR0(DIR0P_"IN")'[(U_S) D I Y=-1 D FLUSH Q
! 184: . I $C(Y)'?1L S Y=-1 Q
! 185: . S S=$E(S,1,$L(S)-1)_$C(Y-32)
! 186: . S:DIR0(DIR0P_"IN")'[(U_S_U) Y=-1
! 187: ;
! 188: I DIR0(DIR0P_"IN")[(U_S_U),S'=$C(27) D
! 189: . S Y=$P(DIR0(DIR0P_"OUT"),";",$L($P(DIR0(DIR0P_"IN"),U_S_U),U)),F=1
! 190: E R *Y:5 D:Y=-1 FLUSH
! 191: Q
! 192: ;
! 193: FLUSH N X
! 194: S F=1 W $C(7) F R *X:0 E Q
! 195: Q
! 196: ;
! 197: MIN(X,Y) ;
! 198: Q $S(X<Y:X,1:Y)
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>