*COMDECK DDL3HASH 
          IDENT  DE$HASH
          ENTRY  DE$HSNM
DE$HSNM   DATA   0
          SA5    X1                                                     045780
          SA4    A1+1                                                   045790
          SA3    X4                                                     045800
          LX3    58                                                     045810
*                            THE FIRST 4 BITS CONTAIN THE LENGTH OF THE 045820
*                            NAME IN WORDS                              045830
          PL     X3,ONEWD    IF SIGN BIT POSITIVE GOTO ONEWD            045840
          SA4    A5+1        FOLD THE FIRST TWO WORDS OF THE NAME INTO  045850
*                            THE FIRST WORD                             045860
          IX5    X5+X4                                                  045870
 ONEWD    BX4    X5                                                     045880
          MX6    30                                                     045890
          LX5    30                                                     045900
          IX5    X5+X4                                                  045910
          BX5    -X6*X5      MASK OF L.O. 30 BITS OF X5                 045920
          PX5    X5          PACK X5 FLOATING                           045930
          SA4    CHASH       CHASH = FP CONSTANT .0019569E-48           045940
          DX5    X5*X4                                                  045950
          MX6    51          GET 1ST 10 BITS FOR HRSLT1                 045960
          AX5    39                                                     045970
          BX7    -X6*X5                                                 045980
          SA4    A1+2                                                   045990
          SA7    X4          SET HRSLT                                  046000
          EQ     DE$HSNM
 CHASH    DATA   .0019569E-48                                           046020
          SPACE  4,10 
*         A L T E R N A T E   H A S H   R O U T I N E 
  
*                COMPUTE A TWENTY BIT HASH ID 
  
          ENTRY  HASH20 
 HASH20   DATA   0
          SA5    X1          FETCH THE FIRST WORD OF THE NAME 
          SB1    1
          SA1    A1+B1       POINTER TO THE NAME LENGTH PARAMETER 
          SA3    X1          LENGTH IN WORDS
          LX3    58 
          PL     X3,ONEWORD  THE NAME IS CONTAINED IN ONE WORD
  
*                            FOLD THE FIRST TWO WORDS OF THE NAME INTO
          SA4    A5+1        THE FIRST WORD 
          BX5    X5-X4
          LX3    1
          PL     X3,ONEWORD 
          SA4    A4+B1
          BX5    X5-X4       FOLD IN THE THIRD WORD 
  
 ONEWORD  BX4    X5 
          LX5    30 
          BX5    X5-X4       FOLD THE TWO HALVES TOGETHER 
          MX6    45 
          BX4    -X6*X5      LOW ORDER 15 BITS OF THE 30 BIT FOLD 
          LX5    15 
          BX5    -X6*X5      HIGH ORDER 15 BITS OF THE 30 BIT FOLD
          IX7    X4*X5
          MX6    40 
          AX7    5
          BX6    -X6*X7      CENTER 20 BITS OF THE PRODUCT
          SA4    A1+B1
          SA6    X4          RETURN THE HASH-ID AS THE 3RD PARAMETER
          EQ     HASH20 
          END                                                           046030
