dio_parse_long_device_name_c

	status.i4.v = dio_parse_long_device_name_c(long_dev_names.i1a.r,
						   device_names.i1a.r,
						   device_indices.i4a.r,
						   array_indices.i4a.r,
						   properties.i2a.r,
						   errors.i2a.r,
						   num_devices.i4.v,
						   parse_attribute.u4.v
						   [end_indices.i4a.r])

	This routine parses long device names (ones including an array
	index specifier), reformats them, and returns their component
	information.  Any of the returned parameters except the status
	values can be defaulted by passing a value of NULL.

	The second character of the device name to property mapping
	is as follows:
		":" or "?" - > reading property
		"_" -> setting property
		"|" -> basic status property
		"&" -> basic control property
		"@" -> analog alarm property
		"$" -> digital alarm property

	If the option DIO_PARSE_ALLOW_FIELD_PARSING is selected, properties
	can also be specified by a ".{property}" notation.

	long_dev_names	device names to be reformatted and parsed
			(LONG_DEVICE_NAME_LEN characters per entry or
			 DIO_LONG_DEVICE_INDEX_NAME_LEN characters per
			 entry if device names are requested)
			(If C style formatting is requested, allow
			 C_STYLE_DEVICE_NAME_LEN characters per entry or
			 C_STYLE_DEVICE_FULL_NAME_LEN characters per entry if
			 full names are requested or
			 DIO_C_STYLE_DEVICE_INDEX_NAME_LEN characters per
			 entry if device index names are requested.)
			(Note: If the DIO_PARSE_ALLOW_FIELD_PARSING option
			 is selected, the caller will need to add
			 DEVICE_FIELD_NAME_LEN + 1 characters to the
			 above totals.)
	device_names	returned device name or an array of device names
			(dio_get_terse_name_length characters per entry or
			 DEVICE_FULL_NAME_LEN characters per entry if
			 full names are requested)
	device_indices	returned device index or array of device indices
	array_indices	returned array index or array of array indices
			(error return values:
			 DIO_SYNTAX -> array index syntax error,
			 DIO_INVALID_DATA -> ending array index value is
					     present and invalid,
			 DIO_OUT_OF_BOUNDS -> array index was out of bounds for
					      the corresponding property)
	properties	returned property or array of properties
			(Note: A value of DIO_INVALID_DATA is returned if
			 the second character of the name does not match one
			 of the supported property indicator characters.)
	errors		returned ACNET status value or array of status values
			(The following status values are added specifically
			 by this routine.
			 (DIO_BADARG -> extraneous characters after device name,
			  DIO_NOATT -> device does not have the requested
				       property,
			  DIO_INVDATA -> invalid property, array index, or
					 ending array index,
			  DIO_SYNTAX -> invalid array index syntax,
			  DIO_OUT_OF_BOUNDS -> array index was out of bounds for
					       the corresponding property))
	num_devices	number of devices
	parse_attribute	parsing attributes
			(DIO_PARSE_DEFAULT -> no special parsing attributes,
			 DIO_PARSE_VALIDATE_PROPERTY -> check if the indicated
							property exists,
			 DIO_PARSE_VALIDATE_ARRAY_INDEX -> check if the
							   indicated array
							   index exists,
			 DIO_PARSE_ALLOW_WHOLE_ARRAY -> allow entire array
							notation,
			 DIO_PARSE_ALLOW_DEVICE_INDEX -> convert ASCII
							 device indices,
			 DIO_PARSE_FORCE_DEFAULT_PREFIX -> force the returned
							   device prefix to
							   have the default
							   separator,
			 DIO_PARSE_ENFORCE_DEFAULT_PREFIX -> require that the
							     input device prefix to
							     to have the default
							     separator,
			 DIO_PARSE_INSERT_DEVICE_PREFIX -> insert missing
							   device prefix,
			 DIO_PARSE_C_STYLE_ARRAY_INDEX -> parse for C style
							  array indices,
			 DIO_PARSE_C_STYLE_END_INDEX -> parse for C style
							end array indices
							([start:end]),
			 DIO_PARSE_ALLOW_OBSOLETE -> allow obsolete devices,
			 DIO_PARSE_ALLOW_PREVIOUS -> allow previous device names
						     (before device renaming),
			 DIO_PARSE_FULL_NAME -> treat as full names,
			 DIO_PARSE_DEVICE_INDEX_NAME -> treat as device index
							names,
			 DIO_PARSE_PRESERVE_ORIGINAL_NAME -> preserve the
							     original device
							     names,
			 DIO_PARSE_PRESERVE_NAME_CASE -> preserve the case of
							 the original device
							 names,
			 DIO_PARSE_ALLOW_FIELD_PARSING -> allow parsing for
							  field/property names,
			 DIO_PARSE_FORCE_CANONICAL_NAME -> force returned device
							   names to be in their
							   canonical form
							   (only useful for
							    full names))
			(Note: These values may be bitwise 'OR'ed together.)
			(Note: If DIO_PARSE_INSERT_DEVICE_PREFIX is enabled, the
			 ASCII system character should be placed in the upper
			 byte of this argument.)
	[end_indices]	returned ending array index or array of ending
			array indices (only returned if the
			DIO_PARSE_C_STYLE_END_INDEX option is selected)
			device[n]   will return array_index = n end_index = 0
			device[n:m] will return array_index = n end_index = m
			(error return values:
			 DIO_SYNTAX -> array index syntax error,
			 DIO_INVALID_DATA -> ending array index value is
					     present and invalid,
			 DIO_OUT_OF_BOUNDS -> array index was out of bounds for
					      the corresponding property,
			 DIO_NOT_SUPPLIED -> no end index was found)
			(default is NULL)

	This function returns status values as follows:

	OK			success
	DIO_MEMFAIL		memory allocation failure
	negative value		ACNET format error indicating overall failure
	positive value		number of devices in error indicating partial
				success

	This function requires the following include files:

	cnsparam_h, diolib_h, dbprops_h, acnet_errors_h

	Related functions:

	dio_parse_generic_long_device_name_c, dio_device_index(_c),
	dio_name_to_index, dio_dev_name(_c), dio_find_name_c,
	dio_fermi_name_c, dio_name_to_fermi_name_c, dio_fermi_name_to_key_c,
	dio_is_possible_device_name_c, dio_is_valid_device_name_first_char_c,
	dio_prefix_char_to_property_c, dio_full_name_to_terse_name_c,
	dio_terse_name_to_full_name_c, error_in_list(_c)

	C/C++ usage:

	static char	long_device_names[NUM_DEVICES][C_STYLE_DEVICE_NAME_LEN] =
			{"I:H100[1]", "I:H100[2]"};
	char		device_names[NUM_DEVICES][DEVICE_TERSE_NAME_LEN];
	short		properties[NUM_DEVICES];
	short		errors[NUM_DEVICES];
	int		status;
	int		device_indices[NUM_DEVICES];
	int		array_indices[NUM_DEVICES];
	int		num_devices = NUM_DEVICES;
	int		*end_indices = (int *) NULL;
	unsigned int	parse_attribute = DIO_PARSE_C_STYLE_ARRAY_INDEX;

	status = dio_parse_long_device_name_c(long_dev_names,device_names,
					      device_indices,array_indices,
					      properties,errors,
					      num_devices,parse_attribute,
					      end_indices);