*DECK S$GNGOM 
          IDENT  S$GNGOM
          TITLE  S$GNGOM - GENERATE GET RECORD FOR MERGE
          COMMENT  GENERATE GET RECORD FOR MERGE. 
  
*CALL LBLPTR
  
          B1=1
  
  
**        S$GNGOM - GENERATE GET RECORD FOR MERGE 
* 
*     CALLING SEQUENCE- 
*         S$GNGOM(WSAO$OREC); 
* 
*     GIVEN-
*         OFFSET WITHIN WSA FOR EXTERNAL RECORD 
*     DOES- 
*         GENERATE GET RECORD FOR MERGE 
* 
*         GENERATED CODE EXPECTS- 
*         A0= ADDRESS OF FIT OF INPUT FILE
*         X2= INDEX TO TOURNAMENT 
*         X5= RECORD NUMBER (RN)
* 
*         GENERATED CODE DOES-
*         GETS EXTERNAL RECORD ACCORDING TO A0
*         SETS X6 WITH RN IN X5 
*         SETS X6=0 IF END-OF-DATA
*         PRESERVES *X2 AND *B2 
*           (*X2 = INDEX TO TOURNAMENT) 
*           (*B2 = WSA) 
* 
  
  
          ENTRY  S$GNGOM
 S$GNGOM  SUBR               ENTRY/EXIT WORD
          SB1    1           CONSTANT 1 
          SA0    A1          HOLD ON TO PARAMETERS
  
          NEWLBL NEXT 
          GEN    (EQ "NEXT")
  
          NEWLBL SAVEB2 
          GENLBL SAVEB2 
          GENMAC (DATA -0)
          NEWLBL SAVEX2 
          GENLBL SAVEX2 
          GENMAC (DATA -0)
          NEWLBL SAVEX4 
          GENLBL SAVEX4 
          GENMAC (DATA -0)
  
          GENLBL NEXT 
          GEN    (BX6 X2) 
          GEN    (SA6 "SAVEX2") 
          GEN    (BX6 X4) 
          GEN    (SA6 "SAVEX4") 
          GEN    (SX6 B2) 
          GEN    (SA6 "SAVEB2") 
  
          SA1     A0
          SA5     X1          X5 = OFFSET FOR EXTERNAL RECORD 
  
*       TEST FOR EOD
  
          NEWLBL GETREC 
          GENLBL GETREC 
          NEWLBL LABEL4 
          GEN    (SX0 A0) 
          GEN    (ZR X0,"LABEL4")   *FILE IS CLOSED AND DETACHED
          GEN    (SA1 "WSA")       *GET BEGINNING OF WSA
          SB6    X5                 B6 = OFFSET FOR EXTERNAL RECORD 
          GEN    (SX1 X1+0),B6     *X1 := ADDRESS FOR EXTERNAL RECORD 
          NEWLBL NEXT 
          GEN    (SB6 "NEXT") 
 #HAVEB6  SET    1
          GENMAC (GET A0,X1)       *FIT AND WSA IN A0,X1
          GENLBL NEXT 
  
          GENMAC (FETCH A0,RL,X6) 
                 *USES  AX5,X7
          GENMAC (FETCH A0,RT,X1) 
          GEN    (SX2 X1-3)  #ZT# 
          NEWLBL NEXT 
          GEN    (NZ X2,"NEXT") 
          GENMAC (FETCH A0,FL,X6) 
          GENLBL NEXT 
          GEN    (SA6 "ORECLEN")
  
          GEN    (SA2 S$ARRY)  * ADDRESS OF STATISTICS ARRAY
          GEN    (SX6 B1) 
          GEN    (IX6 X2+X6)   *INCREMENT NO. OF RECORDS READ 
          GEN    (SA6 A2)      * PUT BACK IN STATISTICS ARRAY 
  
          GEN    (SA2 "SAVEB2") 
          GEN    (SB2 X2) 
          GEN    (SA2 "SAVEX2") 
  
          NEWLBL INVERT                 *SEE S$GNJSR FOR GENLBL 
          GEN    (RJ "INVERT")
          GEN    (SB0 0)
          GEN    (SB0 0)
          GEN    (SA2 "SAVEB2") 
          GEN    (SB2 X2) 
          GEN    (SA2 "SAVEX4") 
          GEN    (BX4 X2) 
          GEN    (SA2 "SAVEX2") 
  
          NEWLBL NEXT2
          GEN    (EQ "NEXT2") 
  
*           E O F   ****************
  
          GENLBL EOF
          GENMAC (DATA 0) 
          GENMAC (FETCH A0,FP,X0)       *ENSURE EOI, NOT EOS
          GEN    (SX1 10B)              *CODE FOR EOS 
          GEN    (IX1 X1-X0)
          GEN    (ZR X1,"GETREC")       *TRY AGAIN
* 
*         WE ARE REALLY OUT OF DATA 
* 
          GEN    (SA3 "FETS") 
          GEN    (SB7 X3) 
          GEN    (SA3 "SMT")
          GEN    (SA3 X3) 
          GEN    (SA3 A3+B7)
          GEN    (MX0 42) 
          GEN    (BX7 X0*X3)
          GEN    (SA7 A3) 
  
*         ENSURE THAT INPUT FILE IS NOT REWOUND IF USER 
*         SET CF=N
*         IGNORE CF IF SORT 4 CALLING SEQUENCE
  
          SA1    =XS$CALLR   WHO CALLED SORT MERGE
          SB7    3
          SB6    X1 
          IFTHEN   B6"B7      IF NOT SORT 4 CALL
            GENMAC (FETCH A0,CF,X1)      *0,1 MEANS REWIND
            GEN    (AX1 1)               *0,1 --> 0; ELSE NONZERO 
            NEWLBL NEXT 
            GEN    (NZ X1,"NEXT") 
            GENMAC (REWIND A0,RECALL) 
            GENLBL NEXT 
          ELSE-                   IF SORT 4 CALL, REWIND
            GENMAC (REWIND A0,RECALL) 
            ENDIF.
  
          NEWLBL NEXT 
          GEN    (SB6 "NEXT") 
 #HAVEB6  SET    1
          GENMAC (CLOSEM A0,DET)
          GENLBL NEXT 
  
          GEN    (SA2 "SAVEB2") 
          GEN    (SB2 X2) 
          GEN    (SA2 "SAVEX2") 
          GENLBL LABEL4 
          GEN    (MX6 0)              *RETURN EOD 
          GENLBL NEXT2
  
          EXIT
  
 S$ARRY   EXTERNAL           ADDRESS OF STATISTICS ARRAY
  
          END 
