status.i4.v = logger_log_device_list_c(node.i4.v, num_devices.i4.v,
					       values.r8a.r, errors.i2a.r
	This routine logs values for a list of devices.

	node		node to log data in (constants are in 'nodedefs')
	num_devices	number of devices to log
	timestamp	timestamp value to log data at
			(seconds since January 1, 1970 UTC)
	milliseconds	milliseconds past the second
	device_names	device names to log
			(C_STYLE_LONG_DEVICE_NAME_LEN characters per device)
			(examples: "M:OUTTMP", "T-HA11>2", "T_HA11[2]")
	values		device values to log
	errors		returned array of logging status values for each device
	[options]	logging options
			(LOGGER_OPT_NONE -> no options selected)

	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
	positive number		number of devices in error

	This function requires the following include files:

	nodedefs_h, clib_h, acnet_errors_h

	Related functions:

	logger_log_devices_c, logger_log_array_device_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_names[NUM_DEVICES][C_STYLE_LONG_DEVICE_NAME_LEN] = {"M:OUTTMP", "M:OUTHUM"};
	int	status;
	int	node = DSE01;
	int	num_devices = NUM_DEVICES;
	unsigned int	timestamp;
	unsigned int	milliseconds = 0;
	unsigned int	options = LOGGER_OPT_NONE;
	static const double	values[NUM_DEVICES] = {50.0, 33.0};

	timestamp = date_to_clinks("01-JAN-2003 12:00",&status);
	timestamp = convert_seconds_c(timestamp,DATE_CLINKS_TO_UTC_CTIME);

	status = logger_log_device_list_c(node,num_devices,timestamp,