dio_raw_to_scaled_custom_c

	status.i4.v = dio_raw_to_scaled_custom_c(raw_data.g.v, values.g.v,
						 errors.i2a.r, num_devices.i4.v,
						 convert_type.i4.v,
						 lengths.i4a.r,
						 scaling_lengths.i4a.r,
						 primary_indices.i4a.r,
						 common_indices.i4a.r,
						 constants.r8a.r,
						 num_constants.i4a.r,
						 same_values.u4.v)

	Ths routine converts raw reading or setting data to its corresponding
	scaled value using caller-supplied scaling information.  This
	routine is especially useful when scaling structured devices which
	require different scaling transforms for different fields.

	raw_data	raw reading or setting data returned by a previous
			call to dio_get_raw(_c) or dio_get_lst_raw(_c)
	values		returned scaled floating point value or array of values
	errors		returned ACNET status value or array of returned
			status values
	num_devices	number of devices in list
	convert_type	type of scaling conversion desired
			(DIO_COMMON -> return common engineering units as
				       single precision floats,
			 DIO_COMMON_DOUBLE -> return common engineering units
					      as double precision floats,
			 DIO_PRIMARY -> return primary units as single
					precision floats,
			 DIO_PRIMARY_DOUBLE -> return primary units as double
					       precision floats)
	lengths		device length or array of lengths to be scaled (*)
	scaling_lengths	length or array of lengths indicating atomic size
			of scaling  (The number of values returned per device
			is "lengths"/"scaling_lengths".) (*)
	primary_indices	primary scaling index or array of indices (*)
	common_indices	common (engineering) scaling index or array
			of indices (*)
	constants	constants to be used in the common transform
			scaling (*)
	num_constants	number of constants per device or array of numbers
			(maximum is DIO_PDB_MAX_CONSTANTS per device) (*)
	same_values	argument interpretation flag
			(TRUE -> use the same scaling information for every
				 device (all arguments marked by "(*)"),
			 FALSE -> use individual scaling information for
				  each device)

	This function returns status values as follows:

	OK			success
	DIO_BADARG		invalid conversion type, scaling length,
				or number of constants passed
	DIO_MEMFAIL		memory allocation failure
	DIO_INVLEN		an invalid device length was requested for
				one or more devices
	negative value		other ACNET format error
	positive value		number of devices in error

	This function requires the following include files:

	cns_data_structs_h, diolib_h, acnet_errors_h

	Related functions:

	dio_raw_to_scaled_data(_c), dio_primary_to_scaled_custom_c,
	dio_scaled_to_raw_custom_c, dio_raw_to_value_text_c,
	dio_primary_to_scaled_data_c, dio_scaled_to_raw_data(_c),
	dio_get_dev(_c), dio_bld_get(_c), dio_get_lst, dio_get_raw(_c),
	dio_bld_get_raw(_c), dio_get_lst_raw(_c), dio_get_pdb,
	dio_raw_to_status_c, dio_raw_to_status_extended_c,
	dio_raw_to_status_text, dio_raw_to_status_text_extended_c,
	error_in_list(_c)

	C/C++ usage:

	char	raw_data[TOTAL_LENGTH];
	short	errors[NUM_DEVICES];
	static const short	lengths[NUM_DEVICES] = {2, 2};
	int	status;
	int	num_devices = NUM_DEVICES;
	int	convert_type = DIO_COMMON;
	static const int	scaling_lengths[NUM_DEVICES] = {2, 2};
	static const int	primary_indices[NUM_DEVICES] = {0, 0};
	static const int	common_indices[NUM_DEVICES] = {4, 4};
	static const int	num_constants[NUM_DEVICES] = {2, 2};
	int	same_values = FALSE;
	float	values[NUM_DEVICES];
	static const double	constants[2*NUM_DEVICES] = {{1, 1}, {1, 1}};

	status = dio_raw_to_scaled_custom_c((void *) raw_data, (void *) values,
					    errors,num_devices,convert_type,
					    lengths,scaling_lengths,
					    primary_indices,common_indices,
					    constants,num_constants,
					    same_values);