status.i4.v = expression_info_c(expr_stack.g.v, options.u4.v,
					num_devices.i4.r, num_gen_devices.i4.r,
					device_indices.i4a.r, properties.i2a.r,
					ftds.i2a.r, max_return.i4.v,

	This routine returns information about devices accessed within
	an expression.  This expression must have been parsed by an
	earlier call to expression_parse_c or expression_parse_double_c.
	A value of null can be passed for any of the returned arguments if
	that information is not needed.

	expr_stack	expression stack
			(This should have been returned by an earlier
			 call to expression_parse_c or
	options		options (not presently used)
			(EXPR_OPT_NONE -> no options selected)
	num_devices	returned number of devices accessed
	num_gen_devices	returned number of generic (substitution)
			devices accessed
	device_indices	returned array of accessed device indices
	properties	returned array of accessed properties
	ftds		returned array of Frequency Time Descriptors (FTDs)
	max_return	maximum number of devices to return
			(A value of CLIB_DEFAULT_ARG indicates that all
			 devices should be returned.)
	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
	CLIB_MEMFAIL		failed in allocating dynamic memory
	CLIB_CORRUPT		expression stack contains no device data
	CLIB_NO_SUCH		expression contains no devices
	otherwise		other ACNET format error code

	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_free_c, expression_cancel_requests_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_DEFAULT;
	short	properties[MAX_RETURN];
	short	ftds[MAX_RETURN];
	int	status;
	int	text_length = 0;
	int	num_devices = 0;
	int	num_gen_devices;
	int	device_indices[MAX_RETURN];
	int	max_return = MAX_RETURN;
	unsigned int	options = EXPR_OPT_PARSE_ONLY;
	float	value;
	void	*expr_stack;

	status = expression_parse_c(expression_text,text_length,

	status = expression_evaluate_c(expr_stack,EXPR_OPT_NONE,&value,

	status = expression_info_c(expr_stack,options,&num_devices,

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