bpm_save_frame_data_c

	status.i4.v = bpm_save_frame_data_c(detector_name.ia.r,
					    data_type.i4.v, new_file.i4.v,
					    save_info.s.r,
					    values.r4a.r, status_values.i1a.r,
					    timestamps.u4a.r,
					    nano_offsets.u4a.r,
					    time_in_cycle.r4a.r,
					    turn_numbers.i4a.r)

	This routine saves BPM frame data for the machine last requested by a
	call to bpm_machine_c.  Note that the timing arguments are ignored
	a new file is not being created.

	detector_name	null terminated detector name
	data_type	data type for the data to be saved
			(BPM_HORZ_POS -> horizontal position,
			 BPM_VERT_POS -> vertical position,
			 BPM_HORZ_INT -> horizontal intensity,
			 BPM_VERT_INT -> vertical intensity,
			 BPM_LOSS_DATA -> loss reading)
	new_file	file creation flag
			(TRUE -> create a new file
				 (possibly deleting an old one),
			 FALSE -> add this data to an existing file)
	save_info	miscellaneous save information
			(BPM_SAVE_INFO structure)
	values		array of values to be saved
	status_values	array of status values to be saved
			(If there is no corresponding status, a value of
			 NULL can be passed for this argument.)
	timestamps	array of frame timestamps in clinks
	nano_offsets	timestamp fractions of a second in nanoseconds
	time_in_cycle	times in the cycle that the data was taken
	turn_numbers	turn numbers at which data was taken

	This function returns ACNET status values as follows:

	OK			success
	CBS_INVARG		invalid save record specified
	CBS_MEMFAIL		error in allocating dynamic memory
	SQL_xxx			database error

	This function requires the following include files:

	ul_cbsaux/bpmuti.h, acnet_errors_h

	Related functions:

	bpm_machine_c, bpm_save_data, bpm_get_save_file,
	bpm_get_default_save_file, bpm_set_save_file,
	bpm_read_file_range_data_c, bpm_data_source_c,
	bpm_rename_file_c, bpm_protect_file_c, bpm_set_reference_file_c,
	bpm_file_menu_c, bpm_directory_info, bpm_plot_data, bpm_get_data_c,
	blm_get_data_c, bpm_get_intensity_c

	C/C++ usage:

	static const char	detector_name[] = "I:LM100";
	char		status_values[NUM_FRAMES];
	int		status;
	int		data_type = BPM_LOSS_DATA;
	int		new_file = TRUE;
	int		turn_numbers[NUM_FRAMES];
	int		frame = 0;
	int		num_frames = NUM_FRAMES;
	int		particle_plane;
	int		bunch_or_batch;
	int		cycle;
	int		num_timing;
	int		timing_params[BPM_MAX_TIMING_PARAMS];
	unsigned int	timestamps[NUM_FRAMES];
	unsigned int	nano_offsets[NUM_FRAMES];
	unsigned int	timestamp;
	unsigned int	data_view = BPM_VIEW_DEFAULT;
	float		values[NUM_FRAMES];
	float		time_in_cycle[NUM_FRAMES];
	BPM_SAVE_INFO	save_info;

	strcpy(save_info.title,"My title");
	save_info.record = FILE_NUMBER;
	save_info.data_type = BPM_SNAPSHOT;
	save_info.particle_type = particle_plane;
	save_info.start_frame = frame;
	save_info.num_frames = num_frames;
	save_info.timestamp = timestamp;
	save_info.lattice = LATTICE;
	save_info.protect = BPM_NO_PROTECT;
	save_info.bunch_batch = bunch_or_batch;
	save_info.beam_event = cycle;
	save_info.scaled_data = TRUE;
	save_info.algorithm = 0;
	save_info.orthogonal_data = FALSE;
	save_info.num_timing_params = num_timing;
	memcpy((void *) save_info.timing_params,(void *) timing_params,
	       num_timing*(sizeof(int)));

	status = bpm_save_frame_data_c(detector_name,data_type,new_file,
				       &save_info,values,status_values,
				       timestamps,nano_offsets,time_in_cycle,
				       turn_numbers);