*DECK GCMUMOV 
          IDENT  GCMUMOV
  TITLE  GCMUMOV - ALPHANUMERIC TO ALPHANUMERIC MOVE PROCESSOR VIA CMU
  
          MACHINE  ANY,I
          SST 
          COMMENT  ALPHANUMERIC TO ALPHANUMERIC MOVE PROCESSOR VIA CMU
          SPACE  4
************************************************************************
*                                                                      *
*      NOTICE- THIS IS A CMU ROUTINE                                   *
*                                                                      *
************************************************************************
  
  
 OP.BDP   IFEQ   OP.BDP,OP.YES
          SPACE  4
**       GCMUMOV - ALPHANUMERIC TO ALPHANUMERIC MOVE PROCESSOR VIA CMU
* 
* AN2AN   LINK   CGAN2AN
*         REGB = DNAT POINTER TO SOURCE ITEM
*         REGC = DNAT POINTER TO DESTINATION ITEM 
* 
*         CALLZ  AN2AN
* 
*         GENERATES CMU CODE TO PERFORM THE INDICATED MOVE
  
  
  
*      COMDECKS 
  
  
  
  
  
  
 CONTROL  OPSYN  NIL
  
  
  
  
  
 GCMUMOV  MODULE
  
*      REGTABLE EQUATES 
  
  
 MOVEREGA EQU    REGB 
 MOVEREGB EQU    REGC 
  
*      VIRTUAL REGISTER EQUATES 
  
 VREGA    EQU    VREG1
 VREGB    EQU    VREG2
 VREGC    EQU    VREG3
 VREGD    EQU    VREG9
 VREGE    EQU    VREG5
 VREGF    EQU    VREG6
 VREGG    EQU    VREG7
 VREGH    EQU    VREG8
 VREGI    EQU    VREG9
 VREGJ    EQU    VREG10 
 VREGW    EQU    VREG18 
 VREGX    EQU    VREG4
  
*      FIXED TABLE EQUATES
  
 BCPDIFF  EQU    T18
 ECPDIFF  EQU    T14
 LABLNUM  EQU    T16
 MASK1    EQU    T5 
 MASK2    EQU    T6 
 NRWDS    EQU    T15
 SHIFTCT  EQU    T17
  
  
*      ERROR EQUATES
  
  
*      MISCELLANEOUS EQUATES
  
  
*      LINKAGE FROM CALLING ROUTINES IN OTHER MODULES 
  
 AN2AN    KNIL   CGAN2AN     * FROM MOVE VERB PROCESSOR 
  
*      LINKAGE TO CALLED ROUTINES IN OTHER MODULES
  
 ADDSPCS  LINK   CGADSPC     * TO GMOVSUB 
 GETSPCS  LINK   CGGTSPC     * TO GMOVSUB 
 LOADIT1  LINK   CGLOAD1     * TO GMOVSUB 
 LOADIT2  LINK   CGLOAD2     * TO GMOVSUB 
 MOVCHAR  LINK   CGMOVCH     * TO GMOVSUB 
 MOVWORD  LINK   CGMVWRD     * TO GMOVSUB 
 SETBREG  LINK   CGSETB4     * TO GMOVSUB 
 SETXREG  LINK   CGSETXW     * TO GMOVSUB 
 SPCFILL  LINK   CGSPCFL     * TO GMOVSUB 
 SPCFLRT  LINK   CGAPBLK     * TO GMOVSUB 
 STORIT1  LINK   CGSTOR1     * TO GMOVSUB 
 STORIT2  LINK   CGSTOR2     * TO GMOVSUB 
 STRBLNK  LINK   CGSTBLK     * TO GMOVSUB 
 SUBLOAD  LINK   SUBLOAD     * TO GSUBSC
 SUBREF   LINK   SUBREF 
  
*      SYMBOLIC PARAMETER DEFINITIONS 
  
 BLANKS   SETSY  (EXT$OF,C.BLANK) 
 CMUBLOCK SETSY  (USETB$OF,USECMU)
 CODBLOCK SETSY  (USETB$OF,USECODE) 
 LOCLABL  SETSY  (LOCAL$OF,LABLNUM) 
 RECADDR  SETSY  (FWA$OF,MOVEREGB),RECOFST
 SRCADDR  SETSY  (FWA$OF,MOVEREGA),ADOFSET
          EJECT 
************************************************************************
*                                                                      *
*      ALPHANUMERIC MOVE PROCESSOR, INCLUDES-                          *
*                                                                      *
*         ALL GROUP SENDING ITEMS (EXCEPT VARIABLE GROUP)              *
*         ALL GROUP RECEIVING ITEMS                                    *
*         ALPHANUMERIC RECEIVING ITEMS                                 *
*         ALPHABETIC RECEIVING ITEMS                                   *
*                                                                      *
*      FIXED CELLS USED-                                               *
*                                                                      *
*         ADOFSET-  AN OFFSET APPLIED TO THE WORD ADDRESS OF THE SOURCE*
*                   FIELD.  ADOFSET IS ZERO EXCEPT POSSIBLY IN THE CASE*
*                   THE SIZE OF THE SOURCE FIELD IS LARGER THAN THE    *
*                   SIZE OF THE JUSTIFIED RECEIVING FIELD.  THEN       *
*                   ADOFSET IS SET TO N IF THE EFFECTIVE BCP OF THE    *
*                   SOURCE FIELD LIES IN WORD N                        *
*         BCPDIFF-  DIFFERENCE IN BCPS OF SOURCE AND RECEIVING FIELDS  *
*         ECPDIFF-  RECECP-SENDECP.  SEE NOTE ON SENDECP               *
*         JUSTFLG-  NONZERO IF RECEIVING FIELD IS JUSTIFIED            *
*         LABLNUM-  CONTAINS THE (NUMBER OF THE) NEXT LOCAL LABEL      *
*                   USED IN THOSE EP MOVES WHICH GENERATE LOOPS.       *
*         MASK1-    A TEMPORARY COUNT (EITHER CHAR OR BIT) USED AS A   *
*                   PARAMETER IN SOME CODE GENERATION MACROS TO SPECIFY*
*                   A MASK SIZE                                        *
*         MASK2-    SEE MASK1                                          *
*         NRWDS-    A TEMPORARY COUNT USED IN EP MOVES.  USUALLY A     *
*                   COUNT OF THE INTERIOR WORDS TO BE MOVED            *
*         P1, P2  ETC-                                                 *
*                   PARAMETERS TO CODE GENERATION SUBROUTINES          *
*                   P1 AND P2 ARE USED BY LOADIT1                      *
*                   P3 AND P4 ARE USED BY STORIT1                      *
*                   P5 AND P6 ARE USED BY THE OTHER SUBROUTINES        *
*         RECBCP-   BCP OF RECEIVING FIELD                             *
*         RECECP-   RECBCP+RECSIZE.  SEE NOTE ON SENDECP               *
*         RECOFST-   AN OFFSET APPLIED TO THE WORD ADDRESS OF THE      *
*                    RECEIVING FIELD.                                  *
*         RECSIZE-  SIZE IN CHARS OF THE RECEIVING FIELD               *
*         RECSUBS-  SET NON-ZERO IF RECEIVING FIELD IS SUBSCRIPTED     *
*         SENDBCP-  BCP OF SOURCE FIELD UNLESS SIZE OF SOURCE FIELD IS *
*                   LARGER THAN SIZE OF JUSTIFIED RECEIVING FIELD.     *
*                   IN THIS CASE SENDBCP IS THE EFFECTIVE BCP OF THE   *
*                   SOURCE FIELD (I.E. THE CHAR WHICH WILL BE MOVED TO *
*                   THE BCP OF THE RECEIVING FIELD.                    *
*         SENDECP-  SENDBCP+SENDSIZE.  THIS IS TECHNICALLY A MISNOMER  *
*                   BUT I COULDN"T THINK OF A BETTER NAME (SORRY)      *
*         SENDSIZE- SIZE IN CHARS OF THE SOURCE FIELD UNLESS SIZE OF   *
*                   SOURCE FIELD IS LARGER THAN SIZE OF                *
*                   RECEIVING FIELD.  IN THIS CASE SENDSIZE IS THE     *
*                   EFFECTIVE SIZE OF THE SOURCE FIELD (I.E. THE       *
*                   NUMBER OF CHARS TO BE MOVED).                      *
*         SENDSUBS- SET NON-ZERO IF SOURCE FIELD IS SUBSCRIPTED.       *
*         SHIFTCT-  A TEMPORARY COUNT (EITHER CHAR OR BIT) USED AS A   *
*                   COUNT IN GENERATING SHIFTS.  NOTE-  IN MANY CASES  *
*                   A CALCULATION IS MADE TO GENERATE A SHIFT AND      *
*                   SHIFTCT IS USED TO HOLD THIS VALUE.  LATER THIS    *
*                   CALCULATION MAY BE NEEDED FOR A MASK SIZE.  FOR    *
*                   THE SAKE OF EFFICIENCY SHIFTCT IS USED AGAIN.      *
*                   I HOPE THIS IS NOT TOO CONFUSING                   *
*         SIZEDIFF- DIFFERENCE IN SIZES OF SOURCE AND RECEIVING FIELDS.*
*         T1, T2  ETC-                                                 *
*                   WHEN A CALCULATION WAS NEEDED WHOSE ONLY PURPOSE   *
*                   WAS TO MAKE A BRANCH DECISION I USED THESE CELLS   *
*                                                                      *
*      VIRTUAL REGISTER USAGE-                                         *
*                                                                      *
*         SUBSCRIPTED MOVES                                            *
*                                                                      *
*         VREGA-    VIRTUAL B-REGISTER (B3) CONTAINING THE FWA OF THE  *
*                   RECEIVING FIELD                                    *
*         VREGB-    VIRTUAL B-REGISTER (B4) CONTAINING THE BCP OF THE  *
*                   RECEIVING FIELD                                    *
*         VREGC-    VIRTUAL B-REGISTER (B5) CONTAINING THE FWA OF THE  *
*                   SOURCE FIELD.                                      *
*         VREGD-    VIRTUAL B-REGISTER (B6) CONTAINING THE BCP OF THE  *
*                   RECEIVING FIELD.                                   *
*         VREGX-    VIRTUAL B-REGISTER (B7) CONTAINING THE NUMBER OF   *
*                   CHARS TO MOVE                                      *
*         VREGW-    VIRTUAL X-REGISTER (X2) DESIGNATING THE NUMBER OF  *
*                   BLANKS TO FILL                                     *
*                                                                      *
*      TABLE OF CONTENTS-                                              *
*                                                                      *
*         UNSUBSCRIPTED MOVES (AN2AN)                                  *
*                                                                      *
*         SUBSCRIPTED MOVES                                            *
*                                                                      *
*                   I        SA2AN       SUBSCRIPTED TO NON-SUBSCRIPTED*
*                   II       AN2SA       NON-SUBSCRIPTED TO SUBSCRIPTED*
*                   III      SA2SA       SUBSCRIPTED TO SUBSCRIPTED    *
*                                                                      *
*      NOTES-                                                          *
*                                                                      *
*         CALLS TO SUBROUTINES CONTAIN ON THEM THEIR PARAMETER LIST AS *
*         A COMMENT.  FOR EXAMPLE A CALL TO LOADIT1 MIGHT BE CODED AS- *
*         CALLZ  LOADIT1   KS,BS,SS;VREGA,VREGB                        *
*         INPUT PARAMETERS APPEAR FIRST AND ARE SEPARATED FROM OUTPUT  *
*         PARAMETERS BY A SEMICOLON.                                   *
*         THE ABBREVIATIONS USED AND THEIR FIXED CELL EQUIVALENTS ARE  *
*         AS FOLLOWS-                                                  *
*                BS= SENDBCP                                           *
*                BR= RECBCP                                            *
*                SS= SENDSIZE                                          *
*                SR= RECSIZE                                           *
*                KS= SRCADDR                                           *
*                KR= RECADDR                                           *
*         THESE SAME ABBREVIATIONS ARE USED IN OTHER COMMENTS          *
*         THROUGHOUT THE CODE.                                         *
*                                                                      *
*         THE FOLLOWING TERMINOLOGY IS USED IN THIS PROCESSOR-         *
*                A SINGLE PRECISION (SP) FIELD IS ONE WHICH IS         *
*                CONTAINED ENTIRELY WITHIN 1 WORD.                     *
*                A DOUBLE PRECISION (DP) FIELD IS ONE WHICH IS         *
*                CONTAINED ENTRIELY WITHIN 2 WORDS AND OVERLAPS THE    *
*                INTERIOR WORD BOUNDARY                                *
*                A TRIPLE PRECISION (TP) FIELD IS ONE WHICH IS         *
*                CONTAINED ENTIRELY WITHIN 3 WORDS AND OVERLAPS        *
*                BOTH BOUNDARIES OF THE MIDDLE WORD.                   *
*                AN EXTENDED PRECISION (EP) FIELD IS ONE WHICH OVERLAPS*
*                AT LEAST 3 WORD BOUNDARIES                            *
*                                                                      *
************************************************************************
  
 AN2AN      EGO  2
  
*      INITIALIZE ADDRESS OFFSET
          MOVEZ  K0,ADOFSET 
          MOVEZ  0,RECOFST
  
*      EXTRACT INFORMATION NECESSARY FOR THE DECISION PROCESS AND FOR 
*      CODE GENERATION
  
          MOVEZ  (BCPOF,MOVEREGA),SENDBCP 
          MOVEZ  (BYTLENOF,MOVEREGA),SENDSIZE 
          MOVEZ  (BCPOF,MOVEREGB),RECBCP
          MOVEZ  (BYTLENOF,MOVEREGB),RECSIZE
          ADDZ   SENDBCP,SENDSIZE,SENDECP 
          ADDZ   RECBCP,RECSIZE,RECECP
          SUBZ   SENDSIZE,RECSIZE,SIZEDIFF
          SUBZ   SENDBCP,RECBCP,BCPDIFF 
          SUBZ   RECECP,SENDECP,ECPDIFF 
          MOVEZ  (JUSTOF,MOVEREGB),JUSTFLG
          IFTHEN ((GCODEOF,MOVEREGA),EQ,GLITREF)
            MOVEZ  1,LITFLG 
          ELSEZ 
            MOVEZ  0,LITFLG 
          ENDIFZ
  
*      TAKE CARE OF A POSSIBLE (BUT NOT VERY PROBABLE) PATHOLOGICAL CASE
  
          IFZ    (RECSIZE,EQ,0),RETURN
  
*      IF EITHER SOURCE OR RECEIVING FIELD IS SUBSCRIPTED, PROCESS MOVE 
*      ELSEWHERE
  
          IFZ    (SENDSUBS,NE,0),SA2AN
          IFZ    (RECSUBS,NE,0),AN2SA 
          IFZ    (SIZEDIFF,GT,0),AN2AN600 
          IFZ    (SIZEDIFF,LT,0),AN2AN400 
  
************************************************************************
*      GENERATE CODE TO MOVE SOURCE FIELD TO RECEIVING FIELD HAVING THE*
*      SAME SIZE                                                       *
************************************************************************
  
 AN2AN300 LABEL 
          NOTE   AN2AN300 
          MOVEZ  SENDSIZE,P1
          MOVEZ  SENDBCP,P2 
          MOVEZ  RECBCP,P3
          CALLZ  MOVCHAR   SS,KS,BS,KR,BR 
          RETURN
          SPACE  4
*      BEGIN PROCESSING FIELDS WITH SIZE OF SOURCE FIELD LESS THAN SIZE 
*      OF RECEIVING FIELD.
  
 AN2AN400 LABEL 
          SUBZ   0,SIZEDIFF,SIZEDIFF
  
*      COMMON PARAMETER SETUP FOR SS<SR CASES 
  
          MOVEZ  SENDSIZE,P1
          MOVEZ  SENDBCP,P2 
          MOVEZ  RECBCP,P3
          MOVEZ  SIZEDIFF,P4
          IFZ    (JUSTFLG,NE,0),AN2AN500
  
************************************************************************
*      GENERATE CODE TO MOVE SOURCE FIELD TO NON-JUSTIFIED RECEIVING   *
*      FIELD HAVING A LARGER SIZE                                      *
************************************************************************
  
*      PRIOR PARAMETER SETUP HAS PRODUCED:  
  
*      P1=SS
*      P2=BS
*      P3=BR
*      P4=SR-SS 
          NOTE   AN2AN400 
          CALLZ  MOVCHAR   SS,KS,BS,KR,BR 
          CALLZ  SPCFILL   SR-SS,KR,BR
          RETURN
          SPACE  4
************************************************************************
*      GENERATE CODE TO MOVE SOURCE FIELD TO JUSTIFIED RECEIVING FIELD *
*      HAVING A LARGER SIZE                                            *
************************************************************************
  
 AN2AN500 LABEL 
          NOTE   AN2AN500 
          CALLZ  SPCFILL   SR-SS,KR,BR
          CALLZ  MOVCHAR   SS,KS,BS,KR,BR 
          RETURN
          SPACE  4
*      BEGIN PROCESSING FIELDS WITH SOURCE LARGER THAN RECEIVING FIELD
  
 AN2AN600 LABEL 
          NOTE   AN2AN600 
          MOVEZ  RECSIZE,SENDSIZE 
          IFZ    (JUSTFLG,EQ,0),AN2AN300
  
*      JUSTIFIED RECEIVING FIELD
  
          ADDZ   SENDBCP,SIZEDIFF,T1
          REMZ   T1,10,SENDBCP
          QUOTZ  T1,10,ADOFSET
          BRANCH AN2AN300 
          SPACE  4
 RETURN   LABEL 
          RETURN
          TITLE  SA2AN - SUBSCRIPTED AN TO NON-SUBSCRIPTED AN PROCESSOR 
*      BEGIN PROCESSING SUBSCRIPTED SOURCE FIELD TO EITHER SUBSCRIPTED
*      OR UNSUBSCRIPTED RECEIVING FIELD.
  
 SA2AN    LABEL 
          IFZ    (RECSUBS,NE,0),SA2SA 
          MOVEZ  (GSCODEOF,MOVEREGA),T1 
          IFZ    ((RFLCPTYP,T1),NE,0),SA2AN800
  
************************************************************************
*                                                                      *
*      I  SA2AN  * SUBSCRIPTED SOURCE TO UNSUBSCRIPTED RECEIVING       *
*                                                                      *
************************************************************************
  
          IFZ    (SIZEDIFF,GT,0),SA2AN600 
          IFZ    (SIZEDIFF,LT,0),SA2AN300 
  
************************************************************************
*      GENERATE CODE FOR SUBSCRIPTED SOURCE FIELD TO UNSUBSCRIPTED     *
*      RECEIVING FIELD HAVING THE SAME SIZE.                           *
************************************************************************
  
 SA2AN200 LABEL 
          NOTE   SA2AN200 
          MOVEZ  (LOCLAB,LABLNUM),LABLNUM 
          GEN    USE$,CMUBLOCK
          GEN    PLIST
          GEN    LABEL$,LOCLABL 
          GEN    MD$,SENDSIZE,SRCADDR,SENDBCP,RECADDR,RECBCP
          GEN    ENDPL
          GEN    USE$,CODBLOCK
          GEN    SLRBPK,(VREGOF,VREGA),,LOCLABL 
          MOVEZ  SENDSUBS,P1
          CALLZ  SUBLOAD
          MOVEZ  P1,VREGB 
          GEN    MASK,(VREGOF,VREGC)
          MOVEZ  SIZEDIFF,P1
          CALLZ  SETXREG
          GENOBJ N=C.CMUMV,I=(VREGA,VREGB,VREGC,VREGW)
          RETURN
          SPACE  4
*      BEGIN PROCESSING SUBSCRIPTED SOURCE FIELD TO UNSUBSCRIPTED 
*      RECEIVING FIELD.  SIZE OF SOURCE FIELD IS LESS THAN SIZE OF
*      RECEIVING FIELD. 
  
 SA2AN300 LABEL 
          NOTE   SA2AN300 
          IFZ    (JUSTFLG,EQ,0),SA2AN200
  
*      JUSTIFIED RECEIVING FIELD, MAKE SIZEDIFF POSITIVE FOR C.CMUMV
  
          SUBZ   0,SIZEDIFF,SIZEDIFF
          BRANCH SA2AN200 
          SPACE  4
*      PROCESS SUBSCRIPTED SOURCE FIELD TO UNSUBSCRIPTED RECEIVING
*      FIELD.  SIZE OF SOURCE FIELD IS GREATER THAN SIZE OF RECEIVING 
*      FIELD. 
  
 SA2AN600 LABEL 
          MOVEZ  RECSIZE,SENDSIZE 
          IFZ    (JUSTFLG,NE,0),SA2AN700
  
*      NO JUSTIFICATION 
  
          NOTE   SA2AN600 
          MOVEZ  0,SIZEDIFF 
          BRANCH SA2AN200 
  
*      JUSTIFIED RECEIVING FIELD, 
  
 SA2AN700 LABEL 
          NOTE   SA2AN700 
          ADDZ   SENDBCP,SIZEDIFF,T1
          REMZ   T1,10,SENDBCP
          QUOTZ  T1,10,ADOFSET
          MOVEZ  0,SIZEDIFF 
          BRANCH SA2AN200 
          SPACE  3
*      REFERENCE MODIFICATION 
 SA2AN800 LABEL 
          NOTE   SA2AN800 
          MOVEZ  (LOCLAB,LABLNUM),LABLNUM 
          GEN    USE$,CMUBLOCK
          GEN    PLIST
          GEN    LABEL$,LOCLABL 
          GEN    MD$,0,SRCADDR,0,RECADDR,0
          GEN    ENDPL
          GEN    USE$,CODBLOCK
          GEN    SLRBPK,(VREGOF,VREGA),,LOCLABL 
          MOVEZ  RECSIZE,P1 
          CALLZ  SETXREG
          MOVEZ  VREGW,VREGB
          MOVEZ  RECBCP,P1
          CALLZ  SETXREG
          MOVEZ  VREGW,VREGC
          MOVEZ  MOVEREGA,P2
          CALLZ  SUBREF 
          MOVEZ  JUSTFLG,P1 
          CALLZ  SETXREG
          GENOBJ N=C.CMURF,I=(VREGW,P4,VREGB,VREGA,VREGC,P3)
          RETURN
          TITLE  AN2SA - NON-SUBSCRIPTED AN TO SUBSCRIPTED AN PROCESSOR 
************************************************************************
*                                                                      *
*      II AN2SA * UNSUBSCRIPTED SOURCE TO SUBSCRIPTED RECEIVING        *
*                                                                      *
************************************************************************
  
 AN2SA    LABEL 
          MOVEZ  (GSCODEOF,MOVEREGB),T1 
          IFZ    ((RFLCPTYP,T1),NE,0),AN2SA800
          IFZ    (SIZEDIFF,GT,0),AN2SA600 
          IFZ    (SIZEDIFF,LT,0),AN2SA300 
  
************************************************************************
*      GENERATE CODE FOR UNSCRIPTED SOURCE FIELD TO SUBSCRIPTED        *
*      RECEIVING FIELD HAVING THE SAME SIZE.                           *
************************************************************************
  
 AN2SA200 LABEL 
          NOTE   AN2SA200 
          MOVEZ  (LOCLAB,LABLNUM),LABLNUM 
          GEN    USE$,CMUBLOCK
          GEN    PLIST
          GEN    LABEL$,LOCLABL 
          GEN    MD$,SENDSIZE,SRCADDR,SENDBCP,RECADDR,RECBCP
          GEN    ENDPL
          GEN    USE$,CODBLOCK
          GEN    SLRBPK,(VREGOF,VREGA),,LOCLABL 
          GEN    MASK,(VREGOF,VREGB)
          MOVEZ  RECSUBS,P1 
          CALLZ  SUBLOAD
          MOVEZ  P1,VREGC 
          MOVEZ  SIZEDIFF,P1
          CALLZ  SETXREG
          GENOBJ N=C.CMUMV,I=(VREGA,VREGB,VREGC,VREGW)
          RETURN
          SPACE  4
*      BEGIN PROCESSING UNSUBSCRIPTED SOURCE FIELD TO SUBSCRIPTED 
*      RECEIVING FIELD.  SIZE OF SOURCE FIELD IS LESS THAN SIZE OF
*      RECEIVING FIELD. 
  
 AN2SA300 LABEL 
          NOTE   AN2SA300 
          IFZ    (JUSTFLG,EQ,0),AN2SA200
  
*      JUSTIFIED RECEIVING FIELD, MAKE SIZEDIFF POSITIVE FOR C.CMUMV
  
          SUBZ   0,SIZEDIFF,SIZEDIFF
          BRANCH AN2SA200 
          SPACE  4
*      PROCESS UNSUBSCRIPTED SOURCE FIELD TO SUBSCRIPTED RECEIVING
*      FIELD.  SIZE OF SOURCE FIELD IS GREATER THAN SIZE OF RECEIVING 
*      FIELD. 
  
 AN2SA600 LABEL 
          MOVEZ  RECSIZE,SENDSIZE 
          IFZ    (JUSTFLG,NE,0),AN2SA700
  
*      NO JUSTIFICATION 
  
          NOTE   AN2SA600 
          MOVEZ  0,SIZEDIFF 
          BRANCH AN2SA200 
  
*      JUSTIFIED RECEIVING FIELD
  
  
 AN2SA700 LABEL 
          NOTE   AN2SA700 
          ADDZ   SENDBCP,SIZEDIFF,T1
          REMZ   T1,10,SENDBCP
          QUOTZ  T1,10,ADOFSET
          MOVEZ  0,SIZEDIFF 
          BRANCH AN2SA200 
          SPACE  3
*      REFERENCE MODIFICATION 
 AN2SA800 LABEL 
          NOTE   AN2SA800 
          GEN    MASK,(VREGOF,VREGA),0           NO JUSTIFICATION 
          MOVEZ  SENDSIZE,P1
          CALLZ  SETXREG
          MOVEZ  VREGW,VREGB
          MOVEZ  (LOCLAB,LABLNUM),LABLNUM 
          GEN    USE$,CMUBLOCK
          GEN    PLIST
          GEN    LABEL$,LOCLABL 
          GEN    MD$,0,SRCADDR,0,RECADDR,0
          GEN    ENDPL
          GEN    USE$,CODBLOCK
          GEN    SLRBPK,(VREGOF,VREGC),,LOCLABL 
          MOVEZ  SENDBCP,P1 
          CALLZ  SETXREG
          MOVEZ  VREGW,VREGD
          MOVEZ  MOVEREGB,P2
          CALLZ  SUBREF 
          GENOBJ N=C.CMURF,I=(VREGA,VREGB,P4,VREGC,P3,VREGD)
          RETURN
          TITLE  SA2SA - SUBSCRIPTED AN TO SUBSCRIPTED AN MOVE PROCESSOR
************************************************************************
*                                                                      *
*      III  SA2SA  * SUBSCRIPTED SOURCE TO SUBSCRIPTED RECEIVING       *
*                                                                      *
************************************************************************
  
 SA2SA    LABEL 
          MOVEZ  (GSCODEOF,MOVEREGA),T1 
          IFZ    ((RFLCPTYP,T1),NE,0),SA2SA800
          MOVEZ  (GSCODEOF,MOVEREGB),T1 
          IFZ    ((RFLCPTYP,T1),NE,0),SA2SA800
          IFZ    (SIZEDIFF,GT,0),SA2SA600 
          IFZ    (SIZEDIFF,LT,0),SA2SA300 
  
************************************************************************
*      GENERATE CODE FOR SUBSCRIPTED SOURCE FIELD TO SUBSCRIPTED       *
*      RECEIVING FIELD HAVING THE SAME SIZE.                           *
************************************************************************
  
 SA2SA200 LABEL 
          NOTE   SA2SA200 
          MOVEZ  (LOCLAB,LABLNUM),LABLNUM 
          GEN    USE$,CMUBLOCK
          GEN    PLIST
          GEN    LABEL$,LOCLABL 
          GEN    MD$,SENDSIZE,SRCADDR,SENDBCP,RECADDR,RECBCP
          GEN    ENDPL
          GEN    USE$,CODBLOCK
          GEN    SLRBPK,(VREGOF,VREGA),,LOCLABL 
          MOVEZ  SENDSUBS,P1
          CALLZ  SUBLOAD
          MOVEZ  P1,VREGB 
          MOVEZ  RECSUBS,P1 
          CALLZ  SUBLOAD
          MOVEZ  P1,VREGC 
          MOVEZ  SIZEDIFF,P1
          CALLZ  SETXREG
          GENOBJ N=C.CMUMV,I=(VREGA,VREGB,VREGC,VREGW)
          RETURN
          SPACE  4
*      BEGIN PROCESSING SUBSCRIPTED SOURCE FIELD TO SUBSCRIPTED 
*      RECEIVING FIELD.  SIZE OF SOURCE FIELD IS LESS THAN SIZE OF
*      RECEIVING FIELD. 
  
 SA2SA300 LABEL 
          NOTE   SA2SA300 
          IFZ    (JUSTFLG,EQ,0),SA2SA200
  
*      JUSTIFIED RECEIVING FIELD, MAKE SIZEDIFF POSITIVE FOR C.CMUMV
  
          SUBZ   0,SIZEDIFF,SIZEDIFF
          BRANCH SA2SA200 
          SPACE  4
*      PROCESS SUBSCRIPTED SOURCE FIELD TO SUBSCRIPTED RECEIVING FIELD. 
*      SIZE OF SOURCE FIELD IS GREATER THAN SIZE OF RECEIVING FIELD.
  
 SA2SA600 LABEL 
          MOVEZ  RECSIZE,SENDSIZE 
          IFZ    (JUSTFLG,NE,0),SA2SA700
  
*      NO JUSTIFICATION 
  
          NOTE   SA2SA600 
          MOVEZ  0,SIZEDIFF 
          BRANCH SA2SA200 
  
*      JUSTIFIED RECEIVING FIELD
  
 SA2SA700 LABEL 
          NOTE   SA2SA700 
          ADDZ   SENDBCP,SIZEDIFF,T1
          REMZ   T1,10,SENDBCP
          QUOTZ  T1,10,ADOFSET
          MOVEZ  0,SIZEDIFF 
          BRANCH SA2SA200 
          LIST   *
          SPACE  3
*      REFERENCE MODIFICATION 
 SA2SA800 LABEL 
          NOTE   SA2SA800 
          MOVEZ  JUSTFLG,P1 
          CALLZ  SETXREG     OUTPUT VREGW 
          MOVEZ  (LOCLAB,LABLNUM),LABLNUM 
          GEN    USE$,CMUBLOCK
          GEN    PLIST
          GEN    LABEL$,LOCLABL 
          GEN    MD$,0,SRCADDR,0,RECADDR,0
          GEN    ENDPL
          GEN    USE$,CODBLOCK
          GEN    SLRBPK,(VREGOF,VREGA),,LOCLABL 
          MOVEZ  MOVEREGA,P2
          CALLZ  SUBREF 
          MOVEZ  P3,VREGB 
          MOVEZ  P4,VREGC 
          MOVEZ  MOVEREGB,P2
          CALLZ  SUBREF 
          GENOBJ N=C.CMURF,I=(VREGW,VREGC,P4,VREGA,P3,VREGB)
          RETURN
 OP.BDP   ENDIF 
          END 
