status.i4.v = logger_log_array_device_c(node.i4.v, device_name.i1a.r,
						num_values.i4.v, values.g.v,
	This routine logs values for an array device.

	node		node to log data in (constants are in 'nodedefs')
	device_name	device name to log
			(examples: "M:OUTTMP", "T-HA11>2", "T_HA11[2]")
	timestamp	timestamp value to log data at
			(seconds since January 1, 1970 UTC)
	milliseconds	milliseconds past the second
	error_status	error status to log the values with (normally OK)
	num_values	number of values to log
	values		device values to log
	options		logging options (not used)
			(LOGGER_OPT_NONE -> no options selected,
			 LOGGER_OPT_SINGLE_PRECISION -> single precision
							values supplied
							(default is double)

	This function returns ACNET status values as follows:

	OK			success
	LJ_INVARG		invalid number of devices or milliseconds
	LJ_MEMFAIL		dynamic memory allocation failure
	ACNET_xxx		error in communicating with Lumberjack

	This function requires the following include files:

	nodedefs_h, clib_h, acnet_errors_h

	Related functions:

	logger_log_device_list_c, logger_log_devices_c,
	logger_log_control_values_c, logger_get_device_by_name_c,
	logger_get_device_c, logger_get_array_device_c,
	logger_get_device_list_c, logger_return_data, logger_read_device_c,
	logger_read_device_by_name_c, logger_setnode, logger_return_names,
	logger_check_alive, logger_restart_lists, logger_shutdown,

	C/C++ usage:

	static const char	device_name[C_STYLE_LONG_DEVICE_NAME_LEN+1] = "Z:ACLTST";
	int	status;
	int	node = DSE01;
	int	error_status = OK;
	int	num_values = NUM_VALUES;
	static double	values[NUM_VALUES] = {1.0, 2.0, 3.0, 4.0};
	unsigned int	timestamp;
	unsigned int	milliseconds = 0;
	unsigned int	options = LOGGER_OPT_NONE;

	timestamp = date_to_clinks("16-SEP-2006 15:00",&status);
	timestamp = convert_seconds_c(timestamp,DATE_CLINKS_TO_UTC_CTIME);

	status = logger_log_array_device_c(node,device_name,timestamp,
					   (void *) values,options);