
  PROCEDURE [INLINE] clp$validate_name
    (    potential_name: string ( * <= osc$max_name_size);
     VAR validated_name: ost$name;
     VAR name_is_valid: boolean);

?? PUSH (LISTEXT := ON) ??
{ When a change is made to this routine, a corresponding change should be
{ made to clp$only_validate_name if necessary.

    TYPE
      char_set = set of char;

    VAR
      ignore_scan_found_char: boolean,
      non_name_chars: char_set,
      scan_index: 1 .. osc$max_name_size + 1;

    #TRANSLATE (osv$lower_to_upper, potential_name, validated_name);
    CASE validated_name (1) OF
    = '#', '$', '@', 'A' .. 'Z', '[', '\', ']', '^', '_', '`', '{', '|', '}',
          '~' =
      non_name_chars := -$char_set ['#', '$', '0', '1', '2', '3', '4', '5',
            '6', '7', '8', '9', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
            'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
            'V', 'W', 'X', 'Y', 'Z', '[', '\', ']', '^', '_', '`', '{', '|',
            '}', '~'];
      #SCAN (non_name_chars, validated_name, scan_index,
            ignore_scan_found_char);
      name_is_valid := validated_name (scan_index, * ) = '';
    ELSE
      name_is_valid := FALSE;
    CASEND;

  PROCEND clp$validate_name;

*copy clh$validate_name

*copyc ost$name
?? POP ??
*copyc osv$lower_to_upper
