*DECK S$GNOM2 
          IDENT  S$GNOM2
          TITLE  S$GNOM2  - GENERATE USER MERGE CODE PART 2 
          COMMENT  GENERATE USER MERGE CODE PART 2. 
  
*CALL LBLPTR
  
          B1=1
  
  
**        S$GNOM2  - GENERATE USER MERGE CODE PART 2
* 
*     CALLING SEQUENCE- 
*         S$GNOM2 (LTRN,ORSA,LR,IRRL);
* 
*     GIVEN-
*         LTRN  = N0 OF TOURNAMENT ENTRIES
*         LR    = N0 OF BITS TO HOLD INDEX TO RECORD STORAGE AREA.
*         ORSA  = OFFSET TO RECORD STORAGE AREA 
*         IRRL  = INTERNAL RECORD LENGTH
* 
*     DOES- 
*         GENERATE USER MERGE CODE PART 2 
* 
*         GENERATED CODE EXPECTS- 
*         X6= DESCRIPTOR OF RECORD SENT TO USER.
* 
*         GENERATED CODE DOES-
*         IF X6=0, GO TO "TRUMRG" (I.E. EXIT) 
*         COMPUTE X5= RECORD NUMBER (RN) FROM X6
*         COMPUTE X2= INDEX TO TRN FROM X5
*         SET A0= ADDRESS OF FET OF INTERNAL FILE 
*         SAVE ADDRESS OF 1ST WORD IN RSA OF LAST WINNER
*             INTO "SAVEAD" 
* 
  
  
          ENTRY  S$GNOM2
 S$GNOM2  SUBR               ENTRY/EXIT WORD
          SB1    1           CONSTANT 1 
  
* GET AND SAVE PARAMETERS 
* 
          SA2    X1          X2=VALUE OF *LTRN* 
          SA0    X2          SAVE IN A0 
          SA4    A1+B1       X4=ADDR OF *ORSA*
          SA4    X4          X4=VALUE OF *ORSA* 
          SA2    A1+2        X2=ADDR OF *LR*
          SA2    X2          X2=VALUE OF *LR* 
          SB2    X2                    SAVE IN B2 
          SA5    A1+3        X5=ADDR OF *IRRL*
          SA5    X5          X5=VALUE OF *IRRL* 
* 
          GEN    (SA5 "SAVEX6") 
          GEN    (BX6 X5) 
  
          GEN    (ZR X6,"PRUEOD") 
  
          GENLBL TRUMRG2
  
          GEN    (SA6 "RECDESC")       *THIS LINE MAKES TROUBLE 
  
          SB3    -B2         -LR
          GEN    (LX6 1+1),B2          * 1+1+LR 
          GEN    (MX0 60),B3           * -LR
          GEN    (BX5 -X0*X6)          *MASK OUT TO GET RN
          GEN    (SB7 X5)              *B7 := RECORD NUMBER 
          GEN    (SA3 "SMT")           *LOOK FOR FIT
          GEN    (SA3 X3)              *X3 := NFILES
          GEN    (SA3 A3+B7)           *CORRECT FIT 
          GEN    (MX0 42) 
          GEN    (BX0 -X0*X3)           *ADDRESS OF FIT 
          GEN    (SA0 X0)              *A0 := ADDRESS OF FIT
          GEN    (SX2 X5+B1)           *RN+1
          GEN    (AX2 1)               * (RN+1)/2 
          GEN    (SX1 0),A0            *LTRN
          GEN    (IX2 X1-X2)           *LTRN-(RN+1)/2 
  
          NEWLBL FETS        GENERATED IN S$GNOM4 
          GEN    (SX7 B7)    PRESERVE B7 IN ANY CASE
          GEN    (SA7 "FETS") 
  
          IFTHEN X5"0        IF IRRL<>0 (MULTIPLE-WORD RECORDS) 
                                         *CALCULATE ADDR OF 1ST 
                                         *  WORD IN RSA OF RECORD 
                                         *  AND SAVE IN SAVEAD
            GEN    (BX7 X5)              * X7=RN OF LW
            GEN    (SX0 0),X5            *IRRL
            GEN    (IX7 X7*X0)           * (RN*IRRL)
            IX4    X4-X5       (ORSA-IRRL)
            IFTHEN X4\0        IF POSITIVE MODIFIER 
              GEN    (SX7 X7+0),X4       * (RN*IRRL)+(ORSA-IRRL)
            ELSE- 
              MX0    -17         MASK ALL EXCEPT LO 17 BITS 
              BX4    -X0*X4      SO THAT A NEGATIVE MODIFIER
                                 DOES NOT PROPAGATE THE SIGN BIT
                                 INTO OP CODE FIELD OF GEN CODE 
              GEN    (SX7 X7+400000B),X4   * (RN*IRRL)+(ORSA-IRRL)
              ENDIF.
            GEN    (SX7 B2+X7)           *X7=ADDR OF 1ST RSA WORD 
            ENDIF.
  
          NEWLBL SAVEAD 
          GEN    (SA7 "SAVEAD") 
  
          EXIT
          END 
