dio_parse_generic_long_device_name_c

	status.i4.v = dio_parse_generic_long_device_name_c(long_dev_name.i1a.r,
							   device_name.i1a.r,
							   device_index.i4.r,
							   array_index.i4.r,
							   property.i2.r,
							   parse_attribute.u4.v
							   [,end_index.i4.r]
							   [,name_type.i4.r])
							   [,ret_name_type.i4.v])

	This routine parses long device names regardless of format
	(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.  This routine differs from
	dio_parse_long_device_name_c in that it will handle any
	supported device name type automatically.

	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_name	null terminated device name to be reformatted
			and parsed
	device_name	returned null terminated device name
			(allow up to DEVICE_FULL_NAME_LEN + 1 characters)
	device_index	returned device index
	array_index	returned array index
			Notes:
			1. A value of DIO_INVALID_DATA is returned if
			   the array index value is invalid.
			2. If the DIO_PARSE_ALLOW_WHOLE_ARRAY option is passed
			   and a whole array syntax is present
			   a. Array_index will be set to DIO_WHOLE_ARRAY
			      if DIO_PARSE_VALIDATE_ARRAY_INDEX option is
			      not passed.
			   b. Array_index will be set to 0
			      if DIO_PARSE_VALIDATE_ARRAY_INDEX option is passed.
	property	returned property
			(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.)
	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_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)
			(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_index]	returned ending array index
			(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
			Notes:
			1. A value of DIO_INVALID_DATA is returned if
			   the ending array index value is present and invalid.
			2. End_index will be set to DIO_NOT_SUPPLIED if no
			   end index is found, e.g., Z:TSTDEV[2].
			3. If the DIO_PARSE_ALLOW_WHOLE_ARRAY option is passed
			   and a whole array syntax is present
			   a. End_index will be set to DIO_WHOLE_ARRAY
			      if DIO_PARSE_VALIDATE_ARRAY_INDEX option
			      is not passed.
			   b. End_index will be set to last valid element of
			      property if DIO_PARSE_VALIDATE_ARRAY_INDEX option
			      is passed.
			(default is NULL)
	[name_type]	returned matching name type
			(DIO_NAME_TYPE_UNKNOWN -> unknown name type
						  (returned if error occurs),
			 DIO_NAME_TYPE_CLASSIC -> classic 8 character name,
			 DIO_NAME_TYPE_FULL -> full name,
			 DIO_NAME_TYPE_INDEX_NAME -> device index name,
			 DIO_NAME_TYPE_DEVICE_INDEX -> device index)
			(default is NULL)
	[ret_name_type]	device name type to return
			(CLIB_DEFAULT_ARG -> return the type found (default),
			 DIO_NAME_TYPE_CLASSIC -> return classic 8 character
						  name,
			 DIO_NAME_TYPE_FULL -> return full name)

	This function returns ACNET status values as follows:

	OK			success
	DIO_MEMFAIL		memory allocation failure
	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
	DIO_NOTENB		disallowed device index string supplied
	otherwise		other ACNET error

	This function requires the following include files:

	cnsparam_h, diolib_h, dbprops_h, acnet_errors_h

	Related functions:

	dio_parse_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_name[C_STYLE_DEVICE_NAME_LEN] = "I:H100[1]";
	char		device_name[DEVICE_FULL_NAME_LEN+1];
	short		property;
	int		status;
	int		device_index;
	int		array_index;
	int		name_type;
	int		ret_name_type = CLIB_DEFAULT_ARG;
	int		*end_index = (int *) NULL;
	unsigned int	parse_attribute = DIO_PARSE_C_STYLE_ARRAY_INDEX;

	status = dio_parse_generic_long_device_name_c(long_dev_name,device_name,
						      device_index,array_index,
						      property,parse_attribute,
						      end_index,&name_type,
						      ret_name_type);