Annotation of freem_fileman/DIR0W.m, revision 1.1.1.1

1.1       snw         1: DIR0W  ;SFISC/MKO-WORD FUNCTIONS FOR FIELD EDITOR ;09:45 AM  12 Dec 1994
                      2:        ;;21.0;VA FileMan;;Dec 28, 1994
                      3:        ;Per VHA Directive 10-93-142, this routine should not be modified.
                      4:        ;
                      5: WRT    N DIR0I
                      6:        Q:DIR0C>$L(DIR0A)
                      7:        S DIR0I=$$WRPOS(DIR0A)
                      8:        ;
                      9:        I DIR0C-DX+DIR0S+DIR0L>DIR0I S DX=DX+DIR0I-DIR0C,DIR0C=DIR0I Q
                     10:        S DIR0C=DIR0I,DX=DIR0S X IOXY
                     11:        I $L(DIR0A)-DIR0L<DIR0C D
                     12:        . W $E(DIR0A,$L(DIR0A)-DIR0L+1,$L(DIR0A))
                     13:        . S DX=DIR0S+DIR0C-$L(DIR0A)+DIR0L-1
                     14:        E  W $E(DIR0A,DIR0C,DIR0C+DIR0L-1)
                     15:        Q
                     16:        ;
                     17: WLT    N DIR0D,DIR0I,DIR0T
                     18:        Q:DIR0C=1
                     19:        S DIR0T=$$PUNC(DIR0A)
                     20:        ;
                     21:        S DIR0I=DIR0C-1
                     22:        I $E(DIR0T,DIR0I)=" " F DIR0I=DIR0I-1:-1:0 Q:$E(DIR0T,DIR0I)'=" "
                     23:        I $E(DIR0T,DIR0I)="!" D
                     24:        . F DIR0I=DIR0I-1:-1:0 Q:$E(DIR0T,DIR0I)'="!"
                     25:        E  I DIR0I D
                     26:        . F DIR0I=DIR0I-1:-1:0 Q:" !"[$E(DIR0T,DIR0I)
                     27:        S DIR0I=DIR0I+1
                     28:        ;
                     29:        I DIR0C-DX+DIR0S'>DIR0I S DX=DX-DIR0C+DIR0I,DIR0C=DIR0I Q
                     30:        S DIR0C=DIR0I,DX=DIR0S X IOXY
                     31:        I DIR0L'<DIR0C W $E(DIR0A,1,DIR0L) S DX=DIR0S+DIR0C-1 Q
                     32:        S DX=DIR0L*2\3+DIR0S W $E(DIR0A,DIR0C-DX+DIR0S,DIR0C+DIR0F-DX-1)
                     33:        Q
                     34:        ;
                     35: DLW    N DIR0I,DIR0X
                     36:        Q:DIR0C>$L(DIR0A)
                     37:        S DIR0CHG=1
                     38:        ;
                     39:        S DIR0I=$$WRPOS(DIR0A)
                     40:        S $E(DIR0A,DIR0C,DIR0I-1)=""
                     41:        ;
                     42:        S DIR0X=DIR0L\3+DIR0S
                     43:        I DX>DIR0X,$L($E(DIR0A,DIR0C,$L(DIR0A)))+DIR0X>DIR0F D
                     44:        . S DX=DIR0S X IOXY
                     45:        . W $E(DIR0A,DIR0C-DIR0X+DIR0S,DIR0C+DIR0F-DIR0X-1)
                     46:        . S DX=DIR0X
                     47:        E  D
                     48:        . S DIR0X=$E(DIR0A,DIR0C,DIR0C+DIR0F-DX-1)
                     49:        . S DIR0X=DIR0X_$J("",DIR0F-DX-$L(DIR0X))
                     50:        . W DIR0X
                     51:        Q
                     52:        ;
                     53: WRT2   Q:DIR0C>$L(DIR0A)
                     54:        S DIR0C=$$WRPOS(DIR0A)
                     55:        ;
                     56:        I DIR0C>$L(DIR0A) S DIR0C=0 D FDE^DIR03 Q
                     57:        S DIR0LN=DIR0C-1\DIR0L+1,DX=DIR0C-1#DIR0L+DIR0S
                     58:        S:DIR0LN>DIR0NL DIR0LN=DIR0NL,DX=DIR0S+DIR0NC
                     59:        S DY=DIR0R+DIR0LN-1
                     60:        Q
                     61:        ;
                     62: WLT2   N DIR0D,DIR0I,DIR0T
                     63:        Q:DIR0C=1
                     64:        S DIR0T=$$PUNC(DIR0A)
                     65:        ;
                     66:        S DIR0I=DIR0C-1
                     67:        I $E(DIR0T,DIR0I)=" " F DIR0I=DIR0I-1:-1:0 Q:$E(DIR0T,DIR0I)'=" "
                     68:        I $E(DIR0T,DIR0I)="!" D
                     69:        . F DIR0I=DIR0I-1:-1:0 Q:$E(DIR0T,DIR0I)'="!"
                     70:        E  I DIR0I D
                     71:        . F DIR0I=DIR0I-1:-1:0 Q:" !"[$E(DIR0T,DIR0I)
                     72:        S DIR0I=DIR0I+1
                     73:        ;
                     74:        I DIR0I=1 D FDB^DIR03 Q
                     75:        S DIR0C=DIR0I,DIR0LN=DIR0C-1\DIR0L+1,DX=DIR0C-1#DIR0L+DIR0S
                     76:        S:DIR0LN>DIR0NL DIR0LN=DIR0NL,DX=DIR0S+DIR0NC
                     77:        S DY=DIR0R+DIR0LN-1
                     78:        Q
                     79:        ;
                     80: DLW2   N DIR0I,DIR0X
                     81:        Q:DIR0C>$L(DIR0A)
                     82:        S DIR0CHG=1
                     83:        ;
                     84:        S DIR0I=$$WRPOS(DIR0A)
                     85:        S $E(DIR0A,DIR0C,DIR0I-1)=""
                     86:        ;
                     87:        S DIR0X=DIR0A_$J("",DIR0I-DIR0C)
                     88:        W $E(DIR0X,DIR0C,DIR0C+DIR0F-DX)
                     89:        D
                     90:        . N DY,DX
                     91:        . S DX=DIR0S
                     92:        . F DIR0I=DIR0C\DIR0L+2:1:$L(DIR0X)\DIR0L+1 D
                     93:        .. S DY=DIR0R+DIR0I-1 X IOXY
                     94:        .. W $E(DIR0X,DIR0I-1*DIR0L+1,DIR0I*DIR0L)
                     95:        Q
                     96:        ;
                     97: WRPOS(DIR0T)   ;
                     98:        N DIR0I,DIR0P,DIR0S
                     99:        S DIR0T=$$PUNC(DIR0T)
                    100:        S DIR0S=$F(DIR0T," ",DIR0C+1),DIR0P=$F(DIR0T,"!",DIR0C+1)
                    101:        S:'DIR0S DIR0S=999 S:'DIR0P DIR0P=999
                    102:        ;
                    103:        I DIR0S=999,DIR0P=999 D
                    104:        . S DIR0I=$L(DIR0T)+1
                    105:        E  I $E(DIR0T,DIR0C)="!" D
                    106:        . F DIR0I=DIR0C+1:1 Q:$E(DIR0T,DIR0I)'="!"
                    107:        . F DIR0I=DIR0I:1 Q:$E(DIR0T,DIR0I)'=" "
                    108:        E  I DIR0S<DIR0P D
                    109:        . F DIR0I=DIR0S:1 Q:$E(DIR0T,DIR0I)'=" "
                    110:        E  S DIR0I=DIR0P-1
                    111:        Q DIR0I
                    112:        ;
                    113: PUNC(X)        ;
                    114:        Q $TR(X,"`~!@#$%^&*()-_=+\|[{]};:'"",<.>/?",$TR($J("",32)," ","!"))

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>