status.i4.v = abort_get_device_c(machines.i4a.r, cards.i1a.r,
					 device_indices.i4a.r, errors.i2a.r

	This routine returns the device index for a given abort module.

	machines	desired machine or array of machines
			(ABORT_BOOSTER -> Booster,
			 ABORT_MAIN_INJECTOR -> Main Injector,
			 ABORT_RECYCLER -> Recycler,
			 ABORT_P1_LINE -> P1 line,
			 ABORT_P2_LINE -> P2 line,
			 ABORT_P3_LINE -> P3 line,
			 ABORT_SWYD -> Switchyard,
			 ABORT_MINIBOONE -> MiniBooNE beam line,
			 ABORT_NUMI -> NuMI beam line,
			 ABORT_MUON -> Muon campus,
			 ABORT_TEST -> test system)
	cards		two character ASCII card name or array of card names
	device_indices	returned device index or array of indices
	errors		device error or array of errors
	[num_devices]	number of devices
	[module_types]	returned abort module type or array of types
			(ABORT_MODULE_TYPE_C200 -> C200 module,
			 ABORT_MODULE_TYPE_IP -> IP module)
			(default is NULL)

	This function returns ACNET status values as follows:

	OK			success
	DIO_NO_SUCH		abort module not found
	DIO_MEMFAIL		dynamic memory allocation failure
	SQL_xxx			error accessing configuration information

	This function requires the following include files:

	ul_cbsaux_h:auxlib_misc_h, acnet_errors_h

	Related functions:

	abort_system_info_c, abort_mask_control_c, abort_mask_group_c,
	abort_curr_source_control_c, abort_system_display_coords_c,
	abort_system_num_modules_c, abort_system_devices_c,
	abort_system_module_data_c, abort_system_reset_c,
	abort_read_single_module_c, abort_read_single_module_by_name_c,

	C/C++ usage:

	static const char	cards[] = "5A8A";
	short	errors[NUM_DEVICES];
	int	status;
	static const int	machines[NUM_DEVICES] = {ABORT_SWYD, ABORT_SWYD};
	int	device_indices[NUM_DEVICES];
	int	num_devices = NUM_DEVICES;
	int	module_types[NUM_DEVICES];

	status = abort_get_device_c(machines,cards,device_indices,errors,