Annotation of freem_fileman/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>