
  PROCEDURE [INLINE] clp$evaluate_list_expression
    (    min_list_size: clt$list_size;
         max_list_size: clt$list_size;
         list_rest: boolean;
         element_type_description: ^clt$type_description;
     VAR work_area {input, output} : ^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;


    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 [clc$list_type];
*ELSE
    type_description.kinds := $clt$type_kinds_v2 [clc$list_type];
*IFEND
    type_description.kind := clc$list_type;
    type_description.list_element_type_description := element_type_description;
    type_description.min_list_size := min_list_size;
    type_description.max_list_size := max_list_size;
    type_description.list_rest := list_rest;

    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_list_expression;

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