
  PROCEDURE [INLINE] clp$search_keyword_specs
    (    keyword: clt$keyword;
         keyword_specifications: ^clt$keyword_specifications;
     VAR index: clt$keyword_index;
     VAR found: boolean);

?? PUSH (LISTEXT := ON) ??

    VAR
      current_index: 0 .. clc$max_keywords,
      high_index: 0 .. clc$max_keywords,
      temp: integer,
      low_index: 1 .. clc$max_keywords + 1;


    IF keyword_specifications <> NIL THEN
      low_index := 1;
      high_index := UPPERBOUND (keyword_specifications^);
      REPEAT
        temp := low_index + high_index;
        current_index := temp DIV 2;
        IF keyword_specifications^ [current_index].keyword = keyword THEN
          index := current_index;
          found := TRUE;
          RETURN;
        ELSEIF keyword_specifications^ [current_index].keyword > keyword THEN
          high_index := current_index - 1;
        ELSE
          low_index := current_index + 1;
        IFEND;
      UNTIL low_index > high_index;
    IFEND;

    found := FALSE;

  PROCEND clp$search_keyword_specs;

*copyc clc$max_keywords
*copyc clt$keyword
*copyc clt$keyword_index
*copyc clt$keyword_specifications
?? POP ??
