*DECK S$GNSH3 
          IDENT  S$GNSH3
          TITLE  S$GNSH3 -  GENERATE SHORT-CODE, PART 3 
          COMMENT  GENERATE SHORT-CODE, PART 3
          SPACE  4
  
*CALL LBLPTR
  
**        S$GNSH3 -  GENERATE SHORT-CODE, PART 3
* 
*     CALLING SEQUENCE- 
*         S$GNSH3(WSAS$LTRN, REC$LR); 
* 
*     DOES- 
*         GENERATES SHORT-CODE, PART 3. 
  
  
          ENTRY  S$GNSH3
 S$GNSH3  SUBR
          SB1    1           CONSTANT 1 
          SA2    X1          VALUE OF WSAS$LTRN 
          SB4    X2          B4 = WSAS$LTRN 
          SA2    A1+B1       ADDRESS OF REC$LR
          SA2    X2          VALUE OF REC$LR
          SB5    X2          B5 = REC$LR
  
          GEN    (SA1 "SAVEX6") 
          GEN    (BX6 X1) 
  
  
                                       *X6 = RECORD DESCRIPTOR
                                       *B2 = ADDRESS OF "WSA" 
                                       *B1 = 1
          GEN    (LX6 1+1),B5          *LX6 1+1+LR
          SB7    -B5         -LR
          GEN    (MX0 60),B7           *MX0 -LR 
          GEN    (BX6 -X0*X6)          *EXTRACT RECORD NUMBER 
          GEN    (SX6 X6+B1)           *RN+1
          GEN    (AX6 1)               *(RN + 1)/2
          GEN    (SX2 0),B4            *SX2 LTRN
          GEN    (IX2 X2-X6)           *LTRN - (RN + 1)/2 
          GEN    (MX6 1)               *CR = EOD
          GEN    (EQ "SHORT2")^ 
          GEN    (EQ "SHORT1")         *GO GET NEXT DATA WINNER, OR EOD 
  
          GENLBL SHORT7                *LL = NULL 
          GEN    (SA6 A4)              *REPLACE NULL REC. WITH DATA REC.
          GEN    (EQ "SHORT1")         *DELETE NULL WINNER
  
          GENLBL ENDSORT
          GEN    (EQ "SHORT")        EXIT SHORT CODE
  
          GENLBL SAVEX6 
          GENMAC (DATA 0) 
          GENLBL WSA
          GENMAC (DATA -0)
  
  
          EXIT
  
  
          END 
