         PCC      0
         TITLE    'MOVE, MOVEIZ, MOVESZ -- STANDARD EVALUATOR'
*        AUTHOR: BURT MCKEON, FEB., 1970
         SPACE
*        THESE ROUTINES MOVE A STRING ON A CHARACTER-BY-CHARACTER BASIS.
*        MOVE: NO CHANGE
*        MOVEIZ: INSERT LEADING ZEROES
*        MOVESZ: SUPPRESS LEADING ZEROES
         SPACE
*        FORTRAN CALLING SEQUENCE:
*           CALL MOVE (A1, K1, A2, K2, L)
*           CALL MOVEIZ(    ''      ''   )
*           CALL MOVESZ(    ''      ''   )
*        META CALLING SEQUENCE: STANDARD
         SPACE
*        A1,A2 ARE ANY MODE.
*        K1,K2,L ARE INTEGER.
*        IF L IS NEGATIVE, THE MOVE IS RIGHT TO LEFT
         SPACE
*        C/R TIME: 9SETUPN(5)
*        PROGRAM TIME:
*           MOVE  : 39.84 + 7GETL + 12.82*L
*           MOVEIZ: 53.02 + 7GETL + 12.82*L + 12.5*(# OF LEADING BLANKS)
*           MOVESZ: 51.82 + 7GETL + 12.82*L + 12.5*(# OF LEADING ZEROES)
*              FOR MOVEIZ, MOVESZ: SUBTRACT 4.16 IF L<0
         SPACE
*        SIZE: 47 WORDS
         SPACE
         SYSTEM SIG5
         SYSTEM FORTLIB
         PAGE
         CSECT    0
MOVE     LI,X7    0
         B       SET
MOVEIZ   LI,AR    ' '
         LI,AI    '0'
         LI,X7    1
         B       SET
MOVESZ   LI,AR    '0'
         LI,AI    ' '
         LI,X7    1
SET      LI,ND    5                 SET UP DUMMIES
         BAL,LR   9SETUPN
         EVRY     A1                .
         INTG     K1                .
         EVRY,P   A2                DUMMIES
         INTG     K2                .
         INTG     L                 .
         LW,10    X7                SAVE X7
         LW,X7    *L
         BEZ      *LC               LENGTH 0
         BAL,LL   7GETL             GET ABS(L),SIGN(L)
         LW,X4    X7                SAVE # CHARS
         LW,X1    *K1               GET OFFSET 1
         AI,X1    -1
         ANLZ,X1  GETAD1            GET BA(ARG1)
         LW,X2    *K2               GET OFFSET 2
         AI,X2    -1
         ANLZ,X2  GETAD2            GET BA(ARG2)
LOOP     LB,X3    0,X1              GET BYTE
         STB,X3   0,X2              STORE BYTE
         AW,X1    X5                BUMP
         AW,X2    X5                 POINTERS
         BDR,X7   LOOP              B IF MORE CHARS
         AI,10    0                 WAS IT 'MOVE'?
         BEZ      *LC               YES
         AI,X5    0                 WAS L NEG?
         BLZ      NADJ              YES DON'T ADJUST ADDRESS
         SW,X2    X4                ADJUST ADDRESS TO LEFT
         B        CONV
NADJ     AI,X2    1
CONV     CB,AR    0,X2              SHOULD BYTE BE CHANGED?
         BNE      NSWCH             NO, EXIT
         STB,AI   0,X2              YES CHANGE
         AI,X2    1                 BUMP POINTER
         BDR,X4   CONV              LOOP IF MORE CHARS
NSWCH    B        *LC               EXIT
         SPACE    2
A1       EQU      8T0               .
K1       EQU      8T0+1             .
A2       EQU      8T0+2             DUMMIES
K2       EQU      8T0+3             .
L        EQU      8T0+4             .
GETAD1   LB,0     *A1,X1            USE ANLZ TO
GETAD2   LB,0     *A2,X2             GET ADDRESSES
         SPACE    2
         REF      9SETUPN,8T0,7GETL
         SPACE
         DEF      MOVE
         DISP     MOVE
         SPACE
         DEF      MOVEIZ
         DISP     MOVEIZ
         SPACE
         DEF      MOVESZ
         DISP     MOVESZ
         SPACE
         END
