status.i4.v = sr_file_has_devices_c(file_number.i4.v, data_source.i4.v,
					    usage.i1a.r, case_number.i4.v,
					    properties.i2a.r, num_devices.i4.v,

	This routine will return whether or not a list of devices are
	actually present in a save/restore or SDA file.

	file_number	desired file number
	data_source	source of data
			(SRMNGR_NORMAL -> normal save/restore files,
			 SRMNGR_SDA_DATA -> SDA data)
	usage		null terminated SDA usage string
			(SDA_USAGE_NAME_LEN characters)
	case_number	desired case number (SDA only)
			(If a value of CLIB_DEFAULT_ARG is passed,
			 data will be collected for all cases.)
	subcase_number	desired subcase number (SDA only)
			(If a value of CLIB_DEFAULT_ARG is passed,
			 data will be collected for all subcases.)
	device_indices	list of desired device indices
	properties	desired property (If a value of CLIB_DEFAULT_SHORT_ARG
			is passed for this argument, this routine will
			look for any property.  Otherwise, if the first value
			is less than zero, all devices will be requested with
			a property index which is equal to the absolute value
			of this argument.)
			(constants are in 'dbprops')
	num_devices	number of devices
	device_type	type of device to look for (SDA only)
			(SRMNGR_SDA_SCALAR_DEVICE -> normal device (default),
			 SRMNGR_SDA_SNAP_DEVICE -> snapshot device,
			 SRMNGR_SDA_FTP_DEVICE -> fast time plot device)
	present_status	array of returned device present status
			(TRUE -> requested device was found,
			 FALSE -> requested device wasn't found)

	This function returns status values as follows:

	OK			success
	CLIB_INVARG		invalid data source
	CLIB_NO_SUCH		no such SDA usage, case number, or subcase
				number or no devices found
	CLIB_MEMFAIL		dynamic memory allocation failure
	SQL_xxx			error reading database

	This function requires the following include files:

	cbslib_h, cns_data_structs_h, dbprops_h, acnet_errors_h

	Related functions:

	sr_file_has_device_c, sr_file_devices_c, sr_data_length_c,
	sr_sda_data_lengths_c, sr_file_menu_c, sr_sda_cases_present_c,
	sr_sda_subcases_present_c, sr_sda_num_subcases_c, sr_get_device_c,
	sr_get_device_raw_c, sr_get_array_device_c, sr_get_snapshot_c,
	sr_read_snapshot_c, sr_snapshot_header_c, sr_snapshot_info_c,
	sr_snapshot_info_list_c, sr_is_on_c, sr_is_positive_c, sr_status_c,
	sr_status_text_c, sr_restore_device_c, sr_sda_case_times_c,

	C/C++ usage:

	static const char	usage[] = "ColliderShot";
	short	properties[NUM_DEVICES] = {PRREAD, PRREAD};
	int	status;
	int	file_number = 1;
	int	data_source = SRMNGR_NORMAL;
	int	case_number = CLIB_DEFAULT_ARG;
	int	subcase_number = CLIB_DEFAULT_ARG;
	int	device_indices[NUM_DEVICES] = {27235, 27236};
	int	num_devices = NUM_DEVICES;
	int	device_type = SRMNGR_SDA_SCALAR_DEVICE;
	int	present_status[NUM_DEVICES];

	status = sr_file_has_devices_c(file_number,data_source,usage,