expression_free_c

	status.i4.v = expression_free_c(expr_stack.gp.r, options.u4.v,
					error_string.i1a.r)

	This routine frees an algebraic expression which was built by
	an earlier call to expression_parse_c or expression_parse_double_c.

	expr_stack	expression stack to be freed
			(This should have been returned by an earlier
			 call to expression_parse_c or
			 expression_parse_double_c.)
	options		options
			(EXPR_OPT_NONE -> no options selected,
			 EXPR_OPT_CANCEL_REQUESTS -> cancel data requests)
	error_string	returned error string (Allow at least 133 characters.)
			(A value of NULL can be passed for this argument
			 if this information is not needed.)

	This function returns ACNET status values as follows:

	OK			success
	CLIB_BUGCHK		null expression pointer passed
	CLIB_INVTYP		expression stack argument is not an expression

	This function requires the following include files:

	cbslib_h, acnet_errors_h

	Related functions:

	expression_parse_double_c, expression_parse_c,
	expression_evaluate_double_c, expression_evaluate_c,
	expression_cancel_requests_c, expression_info_c

	C/C++ usage:

	static const char	expression_text[] = "2 * M:OUTTMP + 3.5";
	char	units_text[LEN_DEV_UNITS];
	char	*subst_devices = (char *) NULL;
	char	error_string[133];
	short	default_ftd = FTD_ONESHOT;
	int	status;
	int	text_length = 0;
	int	num_devices = 0;
	unsigned int	options = EXPR_OPT_PARSE_ONLY;
	float	value;
	void	*expr_stack;

	status = expression_parse_c(expression_text,text_length,
				    subst_devices,num_devices,default_ftd,
				    options,&expr_stack,&value,units_text,
				    error_string);

	status = expression_evaluate_c(expr_stack,EXPR_OPT_NONE,&value,
				       units_text,error_string);

	status = expression_free_c(&expr_stack,options,error_string);