*DECK S$GNSMC 
          IDENT  S$GNSMC
          COMMENT GENERATE SUMMING SETUP FOR RSA
  
*CALL LBLPTR
  
**        S$GNSMC- GENERATE SUMMING SETUP FOR RSA 
* 
*     CALLING SEQUENCE- 
*         S$GNSMC(ORSA,IRRL,LR);
* 
*     GIVEN-
*         ORSA = OFFSET TO RECORD STORAGE AREA (RSA)
*         IRRL = INTERNAL RECORD LENGTH 
*         LR = NUMBER OF BITS TO HOLD INDEX TO RSA
* 
*     DOES- 
*         GENERATE CODE TO SET UP POINTER TO FIRST WORD OF
*         EACH INTERNAL RECORD IN THE RECORD STORAGE AREA.
*         THESE POINTERS ARE IN REGISTERS B4 AND B6, FOR
*         LL AND CR, RESPECTIVELY.  (PLAGIARIZED FROM 
*         GNCMPC IN S$GNCMP.) 
* 
*     GENERATED CODE EXPECTS REGISTERS- 
*         SAME AS S$GNSMA, WITHOUT X2.
* 
  
          ENTRY  S$GNSMC
 S$GNSMC  SUBR
          SB1    1           CONSTANT 1 
  
*         SET UP REGISTERS
  
          SA2    X1          X2 = ORSA
          SB2    X2          B2 = ORSA
  
          SA2    A1+B1
          SA2    X2          X2 = IRRL
          SB3    X2          B3 = IRRL
          SB5    B2-B3       B5 = ORSA-IRRL 
  
          SA4    A1+2 
          SA4    X4          X4 = LR
          BX5    -X4         X5 = -LR 
  
          GEN    (MX0 60),X5           (X0 = MASK 60-LR)
          GEN    (SX2 0),B3            (X2 = IRRL)
  
*         OBTAIN ADDRESS OF FIRST RSA WORD OF CR
  
          GEN    (BX5 X6)              (X5 = DESCRIPTOR)
          GEN    (LX5 1+1),X4 
          GEN    (BX5 -X0*X5)          (X5 = RECORD NUMBER) 
          GEN    (IX5 X2*X5)           (X5 = RN*IRRL) 
          IFTHEN B5\0        IF ORSA >= IRRL
            GEN    (SX5 X5+0),B5         *SX5 X5+(ORSA-IRRL)
          ELSE- 
            GEN    (SX5 X5-0),B5         *SX5 X5-(IRRL-ORSA)
            ENDIF.
          GEN    (SB6 B2+X5)           (B6 = ADDRESS) 
  
*         OBTAIN ADDRESS OF FIRST RSA WORD OF LL
  
          GEN    (BX5 X4)              (X5 = DESCRIPTOR)
          GEN    (LX5 1+1),X4          *LX5 1+1+LR
          GEN    (BX5 -X0*X5)          (X5 = RECORD NUMBER) 
          GEN    (IX5 X2*X5)           (X5 = RN*IRRL) 
          IFTHEN B5\0        IF ORSA >= IRRL
            GEN    (SX5 X5+0),B5         *SX5 X5+(ORSA-IRRL)
          ELSE- 
            GEN    (SX5 X5-0),B5         *SX5 X5-(IRRL-ORSA)
            ENDIF.
          GEN    (SB4 B2+X5)           (B4 = ADDRESS) 
  
          EXIT
          END 
