*DECK C$CMMMV 
          IDENT  C$CMMMV
          TITLE  C$CMMMV - MOVE TO AND FROM A CMM BLOCK 
          COMMENT  MOVE TO AND FROM A CMM BLOCK 
          SST 
          LDSET  LIB=SYMLIB 
*         C.CMMMV - MOVE TO AND FROM A CMM BLOCK
* 
*         CALLED VIA ENTER OR CALL AS FOLLOWS 
*                ENTER "C.CMMMV" USING SENDER, RECIEVER, PARAM3 
* 
*                SENDER OR RECEIVER CAN BE COMP-1 ITEMS WITH CMM BLOCK
*                POINTERS OR CAN BE REGULAR DATA ITEMS. 
*                PARAM3 IS EITHER A LENGTH FOR CMM TO CMM OR A SUBSCRIPT
*                FOR OTHER MOVES
* 
          ENTRY  C.CMMMV
 C.CMMMV  DATA   0
          SB7    B0          ASSUME LENGTH 0
          SB2    B0          FLAG FOR NOT CMM TO CMM MOVE 
          RJ     DECODEP     DECODE SENDER
          SB5    X3          FWA SENDER 
          SB6    X4          BCP SENDER 
          SB7    X5          LENGTH SENDER (IF NOT CMM POINTER) 
          ZR     B7,PRRCV    JP IF SENDER IS CMM BLOCK
          SB2    B2+B1       FLAG FOR SENDER DATA ITEM
 PRRCV    BSS    0
          RJ     DECODEP     DECODE RECEIVER
          SB3    X3          FWA RECEIVER 
          SB4    X4          BCP RECEIVER 
          ZR     X5,DOP3     JP IF RECEIVER NOT DATA ITEM 
          SB2    B1+B1       FLAG AS RECEIVER  BEING DATA ITEM
          SB7    X5          LENGTH TO MOVE (OF RECEIVER) 
 DOP3     BSS    0
          ZR     X1,DOMOVE   JP IF NO THIRD PARAMETER 
          SA2    X1          GET THIRD PARAMETER
          ZR     B2,ISLEN    JP IF BOTH PARAMS COMP-1 
*                            HERE IF SUBSCRIPT BEING USED 
          SX6    B7          LENGTH OF SENDER OR RECEIVER 
          SX2    X2-1        SUBSCRIPT - 1
          IX2    X6*X2       SUBSCRIPT TIMES LENGTH GIVES OFFSET
          SX0    B2-B1       B2 HAS 1 IF SENDER DATA ITEM, 2 IF REC 
          SB2    X2          OFFSET 
          ZR     X0,SNDR     JP IF SENDER IS DATA ITEM
          SB6    B2+B6       BUMP SENDER OFFSET 
          EQ     DOMOVE 
 SNDR     BSS    0
          SB4    B2+B4       BUMP RECEIVER OFFSET 
          EQ     DOMOVE 
 ISLEN    BSS    0           HERE IF PARAM3 IS LENGTH (BOTH P1 AND 2 C-1) 
          SB7    X2          USE THIS LENGTH
 DOMOVE   BSS    0
          MX2    0           NO SPACES INSERTED 
          RJ     =XC.MOVE    DO THE MOVE
          EQ     C.CMMMV     EXIT 
  
 DECODEP  DATA   0           DECODE A PARAMATER 
          SX3    X1          ADDRESS
          BX5    X1 
          SA1    A1+B1       FETCH NEXT PARAMETER 
          AX5    18 
          MX7    60-3 
          BX2    -X7*X5      USAGE
          SX2    X2-4 
          MX4    0           ASSUME BCP OF ZERO 
          NZ     X2,DEC1     JP IF NOT COMP-1 PARAMETER 
          SA3    X3          GET ACTUAL ADDRESS OF CMM BLOCK
          MX5    0           ASSUME LENGTH OF ZERO
          EQ     DECODEP     EXIT 
 DEC1     BSS    0
          NZ     X5,NTCMP2   JP IF NOT COMP-2 
          SX5    10          ASSUME LENGTH OF ZERO
          EQ     DECODEP
 NTCMP2   BSS    0
          AX5    3
          BX6    -X7*X5      CLASS
          SX6    X6-2 
          AX5    9
          MX7    60-6 
          BX4    -X7*X5      BCP
          AX5    6
          MX7    60-18
          NZ     X6,NTNUM    JP IF NOT NUMERIC CLASS
          MX7    60-9        LENGTH ONLY 9 FOR NUMERIC
 NTNUM    BSS    0
          BX5    -X7*X5      LENGTH 
          EQ     DECODEP
          END 
