*COMDECK,CHECKKEY 
        PROC CHECKKEY;
#  THIS PROC CHECKS THE VALUE OF THE KEY RETRIEVED FORM A RECORD IN # 
#  THE FILE AGAINST THE VALUE AT THE ADDRESS IN THE RANGETABLE.  THIS # 
#  IS DONE BY BUILDING A PROGRAMSTACK WITH AN OPCODE OF LE,           # 
#  DEPENDING ON KEY TYPE.  IF THE RETRIEVED KEY VALUE IS GREATER THAN # 
#  OR EQUAL TO THE LOWKEYVALUE OR LESS THAN OR EQUAL TO THE HIGH      # 
#  KEYVALUE, THE RECORD IS ACCEPTABLE.  IF NOT, CONTINUE SEARCHING.   # 
#  THE FUNCTION COMPARECHARS IN EXPEVALUATE RETURNS A VALUE           # 
#  INDICATING THE RELATIONSHIP.                                       # 
          BEGIN 
          IF CHKLOWBOUND AND LOWKEYSORD GQ 0
            THEN
            BEGIN 
            TOWORDADDR[1] = P<LOWKEYVALUE>; 
            RTBLCALL = 1; 
            EXPEVALUATE(RC);       # EVALUATE EXPRESSION               #
            IF RTBLCALL LS 0
              THEN RC = SEARCHCODE; 
              ELSE CHKLOWBOUND = FALSE; 
            END 
          IF RC EQ RECFOUNDCODE AND HIGHKEYSORD LQ 27 
            THEN
            BEGIN 
            RTBLCALL = 1; 
            TOWORDADDR[1] = P<HIGHKEYVALUE>;
            EXPEVALUATE(RC);       # EVALUATE EXPRESSION               #
            IF RTBLCALL GQ 0
              THEN IF RTBLCALL GR 0 OR NOT USEHIBOUND 
                     THEN 
                     BEGIN
                     RC = SEARCHCODE; 
                     POSITIONED = FALSE;
                     P<FIT> = P<AREAFIT>;                                NEXTGET
                     IF FITFO EQ FOSQ THEN  #SEQUENTIAL FILE - NO KEY  # NEXTGET
                       BEGIN
                       KEEPSAMEREC = TRUE;
                       END
                     END
            END 
          RTBLCALL = 0; 
          RETURN; 
          END 
