
  PROCEDURE [INLINE] clp$evaluate_unqual_union_expr
    (VAR work_area {input} : ^clt$work_area;
     VAR parse {input, output} : clt$parse_state;
     VAR result_type_description: ^clt$type_description;
     VAR result: ^clt$data_value;
     VAR status: ost$status);

?? PUSH (LISTEXT := ON) ??

    VAR
      type_description: clt$type_description,
      union_info: clt$union_type_information;


    status.normal := TRUE;
    result := NIL;

    type_description.specification := NIL;
    type_description.name := NIL;
    type_description.derived_from_value_kind_spec := FALSE;
    type_description.advanced_keywords_present := FALSE;
*IF NOT $true(osv$unix)
    type_description.kinds := -$clt$type_kinds [];
*ELSE
    type_description.kinds := -$clt$type_kinds_v2 [];
*IFEND
    type_description.kind := clc$union_type;
    type_description.member_descriptions := NIL;
    type_description.union_information := ^union_info;

    union_info.only_standard_types_in_union := TRUE;
    union_info.min_integer_value := clc$min_integer;
    union_info.max_integer_value := clc$max_integer;
    union_info.default_radix := 10;
*IF NOT $true(osv$unix)
    #UNCHECKED_CONVERSION (clv$negative_infinity^,
          union_info.min_real_value.long_real);
    #UNCHECKED_CONVERSION (clv$positive_infinity^,
          union_info.max_real_value.long_real);
*ELSE
    union_info.min_real_value.long_real := clv$negative_infinity^;
    union_info.max_real_value.long_real := clv$positive_infinity^;
*IFEND

    clp$internal_evaluate_expr (parse, ^type_description, work_area,
          result_type_description, result, status);

    IF status.normal AND (result^.kind = clc$unspecified) THEN
      osp$set_status_abnormal ('CL', cle$unspecified_value_for_req,
            'clp$evaluate_expression', status);
    IFEND;

  PROCEND clp$evaluate_unqual_union_expr;

*copyc cle$ecc_parsing
*copyc clt$data_value
*copyc clt$parse_state
*copyc clt$type_description
*copyc clt$work_area
*copyc ost$status
?? POP ??
*copyc clp$internal_evaluate_expr
*copyc clv$negative_infinity
*copyc clv$positive_infinity
*copyc osp$set_status_abnormal
