*DECK S$GNIN3 
          IDENT  S$GNIN3
          TITLE  S$GNIN3 GENERATE INIT-CODE (PART 3)
          COMMENT  GENERATE INIT-CODE (PART 3)
  
*CALL LBLPTR
  
  
**        S$GNIN3 - GENERATE INIT-CODE (PART 3) 
* 
*     CALLING SEQUENCE- 
*         S$GNIN3;
*         S$GNIN3(RETAIN);
*    USES-
*         RETAIN " 0 IF SPECIFIED 
*     DOES- 
*         GENERATE THIRD PART OF INIT-CODE. 
* 
*     GENERATED CODE DOES-
*         EXPECTS X7 = LL - CR   (I.E. (X4) - (X6)) 
*                 X6 = CR (CURRENT RECORD)
*                 X4 = LL (LAST LOSER)
*                 A4 = ADDRESS OF LL IN TOURNAMENT
*                 X2 = INDEX TO LL IN TOURNAMENT
*                 B2 = ADDRESS OF TOURNAMENT/WORKING-STORAGE-AREA 
*                 B1 = 1
  
  
          ENTRY  S$GNIN3
 S$GNIN3  SUBR               ENTRY/EXIT WORD
          SB1    1           CONSTANT 1 
          SA4    X1          X4 = VALUE OF RETAIN 
  
          NEWLBL INIT5
          GEN    (PL X7,"INIT5")       *IF LL \ CR, HAVE CORRECT ORDER
          GEN    (SA6 A4)              *  SWAP CR AND LL
          GEN    (BX6 X4) 
          GENLBL INIT5
          GEN    (AX2 1)               *INDEX NEXT LEVEL
          GEN    (NZ X2,"INIT3")       *IF MORE LEVELS, LOOP
          GEN    (SA2 "WSA")
          GEN    (SA6 X2) 
          GEN    (MX6 0)
          GEN    (SA2 "ADRSHORT") 
          GEN    (SA6 X2) 
  
          IFTHEN X4"0    IF RETAIN=YES
            GEN    (SA2 "ORD")
            GEN    (BX7 X2) 
            GEN    (SA2 "ADDRORD")
            GEN    (SA7 X2)              *SET ORD FOR LONG CODE 
            ENDIF.
  
          GEN    (EQ "INIT")           *EXIT FROM INIT-CODE 
* 
          GENLBL INIT6                  *END OF DATA
          GEN    (SA1 "RECDESC")
          GEN    (BX7 X1) 
          GEN    (SA2 "WSA")            *ADDRESS OF TOURNAMENT
          GEN    (SA7 X2) 
          GEN    (SX7 1)               TRUE 
          GEN    (SA2 "ADRSHORT")      *ADDRESS OF *SHORT*
          GEN    (SA7 X2) 
  
          IFTHEN X4"0    IF RETAIN=YES
            GEN    (SA2 "ORD")
            GEN    (BX7 X2) 
            GEN    (SA2 "ADDRORD")
            GEN    (SA7 X2)              *SET ORD FOR LONG CODE 
            ENDIF.
  
          GEN    (EQ "INIT")           *EXIT FROM INIT-CODE 
  
*     GENERATE VARIABLES LOCAL TO INIT-CODE 
  
          GENLBL ADDRORD
          GENMAC (DATA 0) 
          GENLBL ADRSHORT 
          GENMAC (DATA -0)
          GENLBL INT1 
          GENMAC (DATA 5LINPUT) 
          GENLBL RECDESC
          GENMAC (DATA -0)             *TO SAVE RECORD DESCRIPTOR 
          GENLBL WSA
          GENMAC (DATA -0)             *ADDRESS OF WORKING STORAGE AREA 
  
          EXIT
  
  
          END 
