
  PROCEDURE [INLINE] clp$get_parameter_list_parse
    (    parameter_list: ^clt$parameter_list;
     VAR work_area {input, output} : ^clt$work_area;
     VAR parse {input, output} : clt$parse_state;
     VAR status: ost$status);

?? PUSH (LISTEXT := ON) ??

    VAR
      lexical_units: ^clt$lexical_units,
      parameter_list_area: ^clt$parameter_list,
      parameter_list_contents: ^clt$i_parameter_list_contents,
      parameter_list_text: ^clt$parameter_list_text;


    status.normal := TRUE;

    parameter_list_area := parameter_list;
    RESET parameter_list_area;
    NEXT parameter_list_contents IN parameter_list_area;

    IF parameter_list_contents = NIL THEN
      osp$set_status_abnormal ('CL', cle$bad_parameter_list, '', status);
      RETURN;
    IFEND;

    IF parameter_list_contents^.identifying_size_field =
          UPPERVALUE (parameter_list_contents^.identifying_size_field) THEN
      RETURN;
    IFEND;

    NEXT parameter_list_text: [parameter_list_contents^.
          identifying_size_field] IN parameter_list_area;
    IF parameter_list_text = NIL THEN
      osp$set_status_abnormal ('CL', cle$bad_parameter_list, '', status);
      RETURN;
    IFEND;

    clp$identify_lexical_units (parameter_list_text, work_area, lexical_units,
          status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;
    clp$initialize_parse_state (parameter_list_text, lexical_units, parse);
    clp$scan_non_space_lexical_unit (parse);

  PROCEND clp$get_parameter_list_parse;

*copyc cle$bad_parameter_list
*copyc clt$i_parameter_list_contents
*copyc clt$parameter_list
*copyc clt$parameter_list_text
*copyc clt$work_area
*copyc clt$parse_state
*copyc ost$status
?? POP ??
*copyc clp$identify_lexical_units
*copyc clp$initialize_parse_state
*copyc clp$scan_non_space_lexical_unit
*copyc osp$set_status_abnormal
