*DECK S$GNRTS 
          IDENT  S$GNRTS
          TITLE  S$GNRTS - GEN-REVERT NUMERIC TRAILING SEPARATE 
          COMMENT  GENERATE - REVERT NUMERIC TRAILING SEPARATE
          SPACE  4
**        S$GNRTS - GEN-REVERT NUMERIC TRAILING SEPARATE
* 
*   CALLING SEQUENCE -
*         S$GNRTS(OFFSET,LENGTH,ASC,KEYORSUM);
* 
*   GIVEN - 
*         OFFSET = NUMBER OF BIT STARTING THE KEY OR SUM FIELD
*           IN THE EXTERNAL RECORD. THE FIRST BIT IS NUMBER 0 
*         LENGTH = NUMBER OF BITS IN THE KEY/SUM FIELD OF THE 
*           EXTERNAL RECORD 
*         ASC = NONZERO IF KEY IS ASCENDING 
*             = ZERO IF KEY IS DESCENDING 
*         KEYORSUM = 1 FOR SUM FIELD, 0 FOR KEY 
* 
*   DOES -
*         SETS THE PARAMETERS INTO THE PROPER REGISTERS - 
*         B2 = OFFSET IN EXTERNAL RECORD
*         B3 = LENGTH IN EXTERNAL RECORD
*         B4 = ASC
*         X4 = KEYORSUM 
* 
*         SETS A0 TO ZERO TO INDICATE NO OVERPUNCHES IN THIS CASE 
* 
* 
*         CALLS S$GNRN, WHICH 
*          - CONVERTS THE BINARY NUMBER TO DISPLAY
*            NUMBERS AND STORES THEM IN THE EXTERNAL RECORD 
*            ACCORDING TO THE VALUES IN B2 AND B3 
*          - RETURNS THE SIGN IT FOUND IN *X0 
  
*         PUTS THE DISPLAY SIGN INTO THE EXTERNAL RECORD
  
* 
          ENTRY  S$GNRTS
S$GNRTS   SUBR
          SB1    1           B1 = CONSTANT 1
          SA2    X1          VALUE OF OFFSET
          SB2    X2          B2 = OFFSET
          SA2    A1+1        ADDRESS OF LENGTH
          SA2    X2          VALUE OF LENGTH
          SB3    X2          B3 = LENGTH
          SA2    A1+2        ADDRESS OF ASC 
          SA2    X2          VALUE OF ASC 
          SB4    X2          B4 = ASC 
          SA2    A1+3        ADDRESS OF KEYORSUM
          SA4    X2          X4 = VALUE OF KEYORSUM 
  
********************************
* 
*  ALTER B3 SO THAT S$GNRN WILL 
*  FUNCTION CORRECTLY 
* 
********************************
  
          SB3    B3-6        DECREASE EXTERNAL RECORD LENGTH BY ONE CHAR
          SA0    0           NO OVERPUNCHES 
  
          CALL S$GNRN 
  
**************************
* 
*  NOW CONVERT THE SIGN IN *X0 TO A + OR -
* 
**************************
  
          GEN    (MX1 58)             *MASK RIGHT 2 BITS (COMP) 
         *USES   B6,B7,X0,AX1-3,AX6 
          GEN    (BX1 -X1*X0)          *GET TWO BITS OF THE SIGN
          GEN    (SX2 45B)             *PUT A + IN *X2
          GEN    (BX7 X2-X1)           *CHANGE IT TO - IF NECESSARY 
  
***************************** 
* 
*  NOW SET UP B-REGISTERS FOR THE CALL TO S$GNRST 
* 
***************************** 
  
          SB3    B3+6        GET ORIGINAL LENGTH BACK 
          SB2    B2+B3       OFFSET + LENGTH
          SB2    B2-6        LAST CHARACTER IN FIELD
          SB5    6           TELL S$GNRST WE HAVE 6 BITS
          SX5    54          OFFSET OF SIGN WITHIN *X7
  
          CALL   S$GNRST               *STORE *X7 IN EXTERNAL RECORD
         *USES   (SAME AS GEN),X4 
  
          EXIT
  
          END 
