
  PROCEDURE [INLINE] clp$search_module_for_code
    (    message_module: ^ost$message_template_module;
         code: ost$status_condition_code;
     VAR language: ost$natural_language;
     VAR name: ost$status_condition_name;
     VAR severity: ost$message_module_severity;
     VAR template: ^ost$message_template;
     VAR entry_found: boolean;
     VAR status: ost$status);

?? PUSH (LISTEXT := ON) ??

    VAR
      lower: 0 .. osc$max_status_condition_code + 1,
      upper: -1 .. osc$max_status_condition_code,
      codes: ^ost$mtm_condition_codes,
      names: ^ost$mtm_condition_names,
      header: ^ost$mtm_header,
      temp: integer,
      code_index: ost$message_template_index,
      name_index: ost$message_template_index;

  /search_module/
    BEGIN

      entry_found := FALSE;
      clp$extract_msg_module_contents (message_module, header, codes, names);
      IF (header = NIL) OR (codes = NIL) THEN
        EXIT /search_module/;
      IFEND;
      language := header^.language;
      lower := 0;
      upper := UPPERBOUND (codes^);

    /binary_search/
      WHILE (lower <= upper) DO
        temp := lower + upper;
        code_index := temp DIV 2;
        IF code = codes^ [code_index].code THEN
          entry_found := TRUE;
          IF (codes^ [code_index].name_index < 0) OR
                (codes^ [code_index].name_index >
                osc$max_status_condition_code) THEN
            EXIT /search_module/;
          IFEND;
          name_index := codes^ [code_index].name_index;
          EXIT /binary_search/;
        ELSEIF code > codes^ [code_index].code THEN
          lower := code_index + 1;
        ELSE
          upper := code_index - 1;
        IFEND;
      WHILEND /binary_search/;

      IF entry_found THEN
        name := names^ [name_index].name;
        severity := names^ [name_index].severity;
*IF NOT $true(osv$unix)
        template := #PTR (names^ [name_index].template, message_module^);
*ELSE
        template^ := names^ [name_index].template;
*IFEND
      IFEND;
      RETURN;
    END /search_module/;
    osp$set_status_abnormal ('CL', cle$bad_help_module, '', status);

  PROCEND clp$search_module_for_code;

*copyc cle$ecc_mt_generator
*copyc ost$message_module_severity
*copyc ost$message_template
*copyc ost$message_template_module
*copyc ost$mtm_condition_codes
*copyc ost$mtm_condition_names
*copyc ost$mtm_header
*copyc ost$natural_language
*copyc ost$status
*copyc ost$status_condition_code
*copyc ost$status_condition_name
?? POP ??
*copyc clp$extract_msg_module_contents
*copyc osp$set_status_abnormal
