
  PROCEDURE [INLINE] osp$randomize_name (name: ost$name;
    VAR randomized_name: ost$randomized_name);

?? PUSH (LISTEXT := ON) ??
*copyc OST$NAME
*copyc osd$random_name
?? POP ??

    TYPE
      template = record
        case boolean of
        = TRUE =
          name: ost$name,

        = FALSE =
          half_word: array [1 .. 7] of ost$randomized_name,
          remainder: 0 .. 0ffffff(16),
        casend,
      recend;

    VAR
      i: 1 .. 7,
      intermediate_result: integer,
      temp_name: template;

    temp_name.name := name;

    intermediate_result := temp_name.remainder;
    FOR i := 1 TO 7 DO
      intermediate_result := intermediate_result + temp_name.half_word [i];
    FOREND;

    randomized_name := intermediate_result MOD (osc$max_random_name + 1);

  PROCEND osp$randomize_name;
