status.i4.v = dio_extract_alarm_info_c(data_type.i4.v, alarm_data.g.v,
					       returned_data.g.v, errors.i2a.r)

	This routine extracts specific pieces of information from alarm
	blocks that have been retrieved by calls to 'dio_get_alarm' or
	dio_get_alrm_lst.  This routine operates on entire alarm
	blocks only.  If using dio_build_alarm_list_c to request a
	list of alarm blocks for use by this routine, a data type of
	DIO_ALARM_BLOCK_DATA should be selected.

	data_type	type of data to extract
			(DIO_ALARM_TYPE -> return alarm type (4 byte integer),
			 DIO_ALARM_STATE -> return alarm state (4 byte integer),
			 DIO_ALARM_ENABLE -> return alarm enable status
					     (4 byte integer),
			 DIO_ALARM_POST_METHOD -> return alarm posting method
						  (4 byte integer),
			 DIO_ALARM_ABORT_CAPABLE -> return alarm abort
						    capability (4 byte integer),
			 DIO_ALARM_ABORT_ENABLE -> return alarm abort enable
						   status (4 byte integer),
			 DIO_ALARM_LIMIT_TYPE -> return alarm limit type
						 (4 byte integer),
			 DIO_ALARM_LIMIT_LENGTH -> return alarm limit length
						   (4 byte integer),
			 DIO_ALARM_LIMIT_DATA_TYPE -> return alarm limit
						      data type
						      (4 byte integer),
			 DIO_ALARM_HI_LOW -> return alarm high/low status
					     (4 byte integer),
			 DIO_ALARM_MINIMUM -> return alarm minimum
					      (single precision float),
			 DIO_ALARM_MAXIMUM -> return alarm maximum
					      (single precision float),
			 DIO_ALARM_MINIMUM_PRIMARY -> return alarm minimum
						      in primary units
						      (single precision float),
			 DIO_ALARM_MAXIMUM_PRIMARY -> return alarm maximum
						      in primary units
						      (single precision float),
			 DIO_ALARM_NOMINAL_PRIMARY -> return alarm nominal
						      in primary units
						      (single precision float),
			 DIO_ALARM_TOLERANCE_PRIMARY -> return alarm tolerance
							in primary units
							(single precision float),
			 DIO_ALARM_MINIMUM_RAW -> return raw alarm minimum
						  (4 byte integer),
			 DIO_ALARM_MAXIMUM_RAW -> return raw alarm maximum
						  (4 byte integer),
			 DIO_ALARM_DOUBLE_MINIMUM -> return alarm minimum
						     (double precision float),
			 DIO_ALARM_DOUBLE_MAXIMUM -> return alarm maximum
						     (double precision float),
			 DIO_ALARM_NOMINAL -> return analog alarm nominal
					      (single precision float),
			 DIO_ALARM_TOLERANCE -> return alarm tolerance
						(single precision float),
			 DIO_ALARM_DOUBLE_NOMINAL -> return analog alarm nominal
						     (double precision float),
			 DIO_ALARM_DOUBLE_TOLERANCE -> return alarm tolerance
						       (double precision float),
			 DIO_ALARM_DIG_NOMINAL -> return digital alarm nominal
						  (4 byte integer),
			 DIO_ALARM_MASK -> return digital alarm mask
					   (4 byte integer),
			 DIO_ALARM_TRIES_NEEDED -> return alarm tries needed
						   (4 byte integer),
			 DIO_ALARM_TRIES_NOW -> return alarm tries now
						(4 byte integer),
			 DIO_ALARM_EVENT -> return alarm event (4 byte integer),
			 DIO_ALARM_SUBFUNCTION -> return alarm subfunction code
						  (4 byte integer),
			 DIO_ALARM_FTD -> return alarm FTD (4 byte integer),
			 DIO_ALARM_DISPLAY_ENABLE -> return alarm display
						     enable status
						     (4 byte integer),
			 DIO_ALARM_LOG_ENABLE -> return alarm log enable
						 status (4 byte integer))
	alarm_data	alarm block or array of alarm blocks
			(structures of type ANALOG_ALARM_BLOCK or
	num_devices	number of devices
	num_blocks	number of alarm blocks per device or array of
			numbers of alarm blocks  (If a value of NULL is
			passed for this argument, a value of one will be
			used for all devices.  If the first value in this
			array is less than zero, the absolute value will
			be used for all devices.)
	device_indices	device index or array of device indices
			(This argument is only necessary if analog alarm
			limit values are being requested.  Otherwise, a
			value of NULL can be passed for this argument.)
	returned_data	returned data which depends on "data_type"
			Valid values for DIO_ALARM_TYPE are:
			(DIO_ANALOG -> analog alarm,
			 DIO_DIGITAL -> digital alarm)
			Valid values for DIO_ALARM_STATE are:
			(DIO_IN_ALARM -> in alarm,
			 DIO_NOT_IN_ALARM -> not in alarm)
			Valid values for DIO_ALARM_ENABLE are:
			(DIO_ALARM_BYPASSED -> alarm is bypassed,
			 DIO_ALARM_ENABLED -> alarm is enabled)
			Valid values for DIO_ALARM_POST_METHOD are:
			(DIO_EXCEPTION_ALARM -> exception type alarm,
			 DIO_EVENT_ALARM -> event type alarm)
			Valid values for DIO_ALARM_ABORT_CAPABLE are:
			(DIO_NONABORT_ALARM -> alarm does not generate
					       an abort,
			 DIO_ABORT_ALARM -> alarm generates an abort)
			Valid values for DIO_ALARM_ABORT_ENABLE are:
			(DIO_ALARM_ABORT_DISABLED -> alarm abort is bypassed,
			 DIO_ALARM_ABORT_ENABLED -> alarm abort is enabled)
			Valid values for DIO_ALARM_LIMIT_TYPE are:
			(DIO_NOMTOL -> nominal/tolerance limits,
			 DIO_NOMPER -> nominal/percent tolerance limits,
			 DIO_MINMAX -> minimum/maximum limits,
			 DIO_INVALID_DATA -> digital alarm block passed)
			Valid values for DIO_ALARM_LIMIT_DATA_TYPE are:
			(ALARM_DATATYPE_UNINITIALIZED -> alarm data type has
							 not been selected,
			 ALARM_DATATYPE_SIGNED_INTEGER -> signed integer data,
							    data type,
			 ALARM_DATATYPE_FLOAT -> float data type,
			 ALARM_DATATYPE_SWAPPED_FLOAT -> float data type
								  data type
								    integer data
			Valid values for DIO_ALARM_HI_LOW are:
			(DIO_ALARM_LOW -> alarming low,
			 DIO_ALARM_HIGH -> alarming high,
			 DIO_INVALID_DATA -> digital alarm block passed)
			Valid values for DIO_ALARM_DISPLAY_ENABLE are:
			(DIO_ALARM_DISPLAY_DISABLED -> alarm display is
			 DIO_ALARM_DISPLAY_ENABLED -> alarm display is enabled)
			Valid values for DIO_ALARM_LOG_ENABLE are:
			(DIO_ALARM_LOG_DISABLED -> alarm logging is disabled,
			 DIO_ALARM_LOG_ENABLED -> alarm logging is enabled)
	errors		array of returned ACNET status values
			(A value of NULL can be passed for this argument
			 if status values are not desired.)
			(OK -> success,
			 DIO_MISMATCH -> wrong type of alarm block supplied
					 for data requested,
			 DIO_SCALEFAIL -> scaling of alarm limit failed)

	This function returns status values as follows:

	OK			success
	DIO_BADARG		invalid data type requested
	positive value		number of devices in error indicating partial

	This function requires the following include files:

	cnsparam_h, cns_data_structs_h, alarm_block_h, diolib_h, acnet_errors_h

	Related functions:

	dio_get_alarm(_c), dio_get_alrm_lst, dio_get_db_alarm(_c),
	dio_build_alarm_list_c, dio_bld_alrm_lst, dio_alarm_flags(_c),
	dio_alarm_limits(_c), dio_alarm_lim_lst, dio_alarm_dnom(_c),
	dio_alarm_dnom_lst, dio_alarm_events(_c), dio_alarm_events_lst,
	dio_alarm_tries(_c), dio_alarm_tries_lst, dio_is_good(_c),
	dio_is_good_lst, dio_is_bypas(_c), dio_is_byp_lst, dio_is_abort(_c),
	dio_is_abt_lst, dio_is_abrt_inh(_c), dio_is_abtinh_lst,

	C/C++ usage:

	short	errors[NUM_DEVICES];
	int	status;
	int	data_type = DIO_ALARM_STATE;
	int	num_devices = NUM_DEVICES;
	static const int	num_blocks[NUM_DEVICES] = {1, 1};
	int	returned_data[NUM_DEVICES];
	int	*device_indices = (int *) NULL;

	status = dio_extract_alarm_info_c(data_type,(void *) alarm_data,
					  (void *) returned_data,errors);