?? RIGHT := 110 ??
*copyc osd$default_pragmats
MODULE ram$bin_search;
?? PUSH (LISTEXT := ON) ??
*copyc rat$match_decks
?? POP ??

*copyc rah$bin_search

  PROCEDURE [XDCL] rap$bin_search (name: ost$name;
        new_array: ^rat$match_decks;
    VAR j: rat$deck_index;
    VAR found: boolean);

    VAR
      temp: integer,
      hi: rat$deck_index,
      low: rat$deck_index,
      mid: rat$deck_index;

    found := FALSE;
    hi := UPPERBOUND (new_array^);
    low := j;
    WHILE (low <= hi) AND NOT found DO
      temp := low + hi;
      mid := temp DIV 2;
      IF name = new_array^ [mid].name THEN
        found := TRUE;
      ELSEIF name > new_array^ [mid].name THEN
        low := mid + 1;
      ELSE
        hi := mid - 1;
      IFEND;
    WHILEND;
    IF found THEN
      j := mid;
    IFEND;
  PROCEND rap$bin_search;
MODEND ram$bin_search;
