input_array_values_c

	changed.i4.v = input_array_values_c(top_row.i4.v, left_column.i4.v,
					    prompt_text.i1a.r, num_chars.i4.v,
					    minima.g.v, maxima.g.v,
					    values.g.v, num_values.i4.v,
					    data_type.i4.v, title.i1a.r,
					    num_lines.i4.v, field_status.i4a.r,
					    key_case.i4.v, help_info.sa.r
					    [,post_prompt.i1a.r])

	This routine will prompt the user to input an array of values
	of a given type.  If either the minima or maxima argument has a
	value of NULL, limits checking will be disabled for all entries
	in the window.  If both the minimum and maximum values for a given
	entry have a value of zero, limits checking will be disabled for that
	entry only.  (Note: For the data types INP_CHAR and INP_CHAR_OVERSTRIKE,
	the string length should be passed in a four byte integer by address
	in the argument "maxima".)

	top_row		top row of window (use WMNGR_CENTER for centering
			or WINDOW_xxx_COORD macros in macro for special
			positioning)
	left_column	left column of window (use WMNGR_CENTER for centering
			or WINDOW_xxx_COORD macros in macro for special
			positioning)
	prompt_strings	prompt text string(s) ("num_values" strings)
	num_chars	number of characters in each prompt string
			(If a value of zero is passed for this argument,
			the routine will automatically determine the prompt
			text length.)
	minima		minimum limit(s) (If a value of NULL is passed for
			this argument, limit checking for numeric data types
			will be disabled.)
	maxima		maximum limit(s) (If a value of NULL is passed for
			this argument, limit checking for numeric data types
			will be disabled.) (The string length for data types
			INP_CHAR and INP_CHAR_OVERSTRIKE should be passed
			through this argument.)
	values		returned value(s)
	num_values	number of values to input
	data_type	data type of input value(s)
			(INP_BYTE -> one byte decimal integer,
			 INP_SHORT -> two byte decimal integer,
			 INP_LONG -> four byte decimal integer,
			 INP_UBYTE -> one byte unsigned decimal integer,
			 INP_USHORT -> two byte unsigned decimal integer,
			 INP_ULONG -> four byte unsigned decimal integer,
			 INP_BYTE_HEX -> one byte hexadecimal integer,
			 INP_SHORT_HEX -> two byte hexadecimal integer,
			 INP_LONG_HEX -> four byte hexadecimal integer,
			 INP_FLOAT -> single precision floating point value,
			 INP_FLOAT_EXP -> single precision floating point value
					  in either normal or scientific
					  notation,
			 INP_DOUBLE -> double precision floating point value,
			 INP_DOUBLE_EXP -> double precision floating point
					   value in either normal or
					   scientific notation,
			 INP_CHAR -> simple character string (string will
				     not be null terminated) (The string
				     length should be passed in the
				     argument, "maxima".),
			 INP_CHAR_OVERSTRIKE -> simple character string entered
						in overstrike mode (string will
						not be null terminated)
						(The string length should be
						 passed in the argument,
						 "maxima".),
			 INP_LOGICAL -> four byte logical integer having
					values TRUE or FALSE,
			 INP_BYTE_LOGICAL -> one byte logical integer having
					     values of FORTRAN_TRUE or FALSE,
			 INP_SHORT_LOGICAL -> two byte logical integer having
					      values of FORTRAN_TRUE or FALSE,
			 INP_CHECK_BOX -> four byte logical integer having
					  values of TRUE or FALSE
					  (check box interface),
			 INP_ENUMERATED -> four byte integer containing an
					   enumerated value,
			 >= INP_ENUMERATED_BASE -> four byte integer containing
						   an enumerated value
						   (ID returned by
						    set_enumerated_strings_c),
			 INP_BIT_MASK -> four byte integer containing a
					 bit mask value,
			 >= INP_BIT_MASK_BASE -> four byte integer containing
						 a bit mask value
						 (ID returned by
						  set_bit_mask_strings_c),
			 INP_DEVICE -> four byte integer containing an
				       ACNET device index,
			 INP_DEVICE_WILD -> four byte integer containing an
					    ACNET device index,
			 INP_DEVICE_FULL_NAME -> four byte integer containing an
						 ACNET device index,
			 INP_DEVICE_FULL_NAME_WILD -> four byte integer
						      containing an
						      ACNET device index,
			 INP_LONG_DEVICE -> ARRAY_DEVICE_DATA structure
					    containing an ACNET array device
					    specification,
			 INP_C_STYLE_LONG_DEVICE -> ARRAY_DEVICE_DATA structure
						    containing an array device
						    specification,
			 INP_C_STYLE_DEVICE_EXT -> ARRAY_DEVICE_DATA_EXT
						   structure containing an
						   extended array device
						   specification,
			 INP_DEVICE_NAME -> dio_get_terse_name_length
					    character string containing an
					    ACNET device name,
			 INP_FERMI_NAME -> four byte integer containing an ACNET
					   device index,
			 INP_DEVICE_CLASS -> four byte integer containing a
					     device class value,
			 INP_DEVICE_TYPE -> four byte integer containing a
					    device type value,
			 INP_DEVICE_ADDRESSING_MODE -> four byte integer
						       containing a device
						       addressing mode value,
			 INP_DEVICE_ADDRESSING_MODE_LONG -> four byte integer
							    containing a device
							    addressing mode
							    value (long text),
			 INP_DBPROP -> two byte integer containing a database
				       property value,
			 INP_DBPROP_ENGLISH -> two byte integer containing an
					       ACNET database property (English),
			 INP_READ_SET_DBPROP -> two byte integer containing an
						ACNET reading/setting
						database property,
			 INP_READABLE_DBPROP -> two byte integer containing an
						ACNET readable
						database property,
			 INP_SETTABLE_DBPROP -> two byte integer containing an
						ACNET settable
						database property,
			 INP_FTD -> data request FTD value (two byte integer),
			 INP_READING_FTD -> reading data request FTD value
					    (two byte integer),
			 INP_COLOR -> four byte integer containing color value,
			 INP_GRAPHIC_COLOR -> four byte integer containing
					      a graphic color value,
			 INP_PAGE -> index page string
				     (PAGE_NAME_LEN characters),
			 INP_WINDOW -> four byte console window value,
			 INP_TV_WINDOW -> four byte console TV window value,
			 INP_GRAPHIC_WINDOW -> four byte console graphic
					       window value,
			 INP_PA_GRAPHIC_WINDOW -> four byte PA graphic
						  window value,
			 INP_ERROR -> ACNET_ERR structure containing ACNET
				      error code,
			 INP_NODE -> two byte integer containing an ACNET
				     node value,
			 INP_NODE_MENU -> two byte integer containing an ACNET
					  node value (menu interface),
			 INP_NODE_OPERATIONAL -> two byte integer containing
						 an operationally significant
						 ACNET node value,
			 INP_NODE_CONSOLE -> two byte integer containing a
					     console node value,
			 INP_NODE_CONSOLE_MENU -> two byte integer containing a
						  console node value
						  (menu interface),
			 INP_NODE_FRONTEND_ALL -> two byte integer containing a
						  front end node value,
			 INP_NODE_FRONTEND -> two byte integer containing a
					      CAMAC front end node value,
			 INP_NODE_MOOC -> two byte integer containing
					  a MOOC node value,
			 INP_NODE_IRM -> two byte integer containing
					 an IRM node value,
			 INP_NODE_DAE_FE -> two byte integer containing
					    a DAE front end node value,
			 INP_NODE_LCS -> two byte integer containing
					 an LCS (Local Control System)
					 front end node value,
			 INP_NODE_GPIB -> two byte integer containing a
					  GPIB node value,
			 INP_NODE_BPM -> two byte integer containing a
					 BPM node value,
			 INP_NODE_FRIG -> two byte integer containing a
					  frig node value,
			 INP_NODE_MOTION_CONTROL -> two byte integer
						    containing a motion
						    controller node value,
			 INP_NODE_QPM -> two byte integer containing a
					 QPM node value,
			 INP_NODE_SWIC -> two byte integer containing a
					  SWIC node value,
			 INP_NODE_VACUUM -> two byte integer containing a
					    vacuum node value,
			 INP_NODE_MADC -> two byte integer containing an
					  MADC node value,
			 INP_NODE_MADC_SUPPORT -> two byte integer containing an
						  MADC support node value,
			 INP_NODE_PSEUDO -> two byte integer containing
					    a pseudo node value,
			 INP_NODE_CENTRALVAX -> two byte integer containing a
						central VAX node value,
			 INP_CLINKS -> four byte time in clinks,
			 INP_CLINKS_DATEONLY -> four byte time in clinks,
						(date only),
			 INP_CLINKS_TIMEONLY -> four byte time in clinks,
						(time only),
			 INP_HHMMSS -> four byte time in hh:mm:ss format,
			 INP_CTIME -> four byte time since January 1, 1970,
			 INP_CTIME_FMT_CLINKS -> four byte time since
						 January 1, 1970,
			 INP_GMT_TIME -> four byte GMT time in seconds since
					 January 1, 1970
					 (Www Mmm dd hh:mm:ss yyyy format),
			 INP_GMT_TIME_FMT_CLINKS -> four byte GMT time in
						    seconds since
						    January 1, 1970
						    (dd-mmm-yyyy hh:mm:ss format),
			 INP_RAD50 -> four byte radix 50 value (process name),
			 INP_USERNAME -> USER_NAME_LEN character user
					 name string,
			 INP_USER_EMAIL_ADDRESS -> USER_EMAIL_LEN character
						   user email string,
			 INP_SR_SYSTEM -> four byte integer containing a
					  Save/Restore system value,
			 INP_SR_FILE -> four byte integer containing a
					Save/Restore file number,
			 INP_SAVE_LIST -> four byte integer containing a
					  Save/Restore list value,
			 INP_CONSOLE_NUMBER -> four byte integer containing a
					       console number value,
			 INP_CONSOLE_SLOT -> four byte integer containing a
					     console slot value,
			 INP_CONSOLE_SLOT_WILD -> four byte integer containing a
						  wildcarded console slot value,
			 INP_CONSOLE_PA_SLOT -> four byte integer containing a
						console PA slot value,
			 INP_CONSOLE_SA_SLOT -> four byte integer containing a
						console SA slot value,
			 INP_SHARED_LOG_FILE -> LOG_NAMLEN character string
						containing a shared log file
						name,
			 INP_LEX_DRAW_FILE -> CNV_LEX_DRAW_FILE_LEN character
					      string containing a Lex Draw
					      file name,
			 INP_LEX_PROG_FILE -> CNV_LEX_PROG_FILE_LEN character
					      string containing a Lex Prog
					      file name,
			 INP_LEX_OBJECT -> LEXT_OBJECT_NAMLEN character
					   string containing a Lex Object name,
			 INP_LJ_NODE -> two byte integer containing a
					Lumberjack node value,
			 INP_LJ_NODE_ID -> four byte integer containing a
					   Lumberjack node ID value,
			 INP_SSDN -> LEN_SSDN byte SSDN value,
			 INP_EMC -> LEN_EMC byte EMC (Event Message Code) value,
			 INP_MACHINE -> four byte integer containing an
					accelerator machine value,
			 INP_MACHINE_LONG -> four byte integer containing an
					     accelerator machine value,
			 INP_CNV_TYPE -> four byte integer containing a
					 conversion type value,
			 INP_INP_TYPE -> four byte integer containing an
					 input type value,
			 INP_CLOCK_EVENT_TYPE -> four byte integer containing a
						 clock event type,
			 INP_CLOCK_EVENT_TYPE_LONG -> four byte integer
						      containing a
						      clock event type,
			 INP_SIMPLE_CLOCK_EVENT -> four byte integer containing
						   a clock event value,
			 INP_CLOCK_EVENT -> four byte integer containing a
					    clock event value,
			 INP_CLOCK_EVENT_LONG -> four byte integer containing a
						 clock event value,
			 INP_MIBS_EVENT -> four byte integer containing an
					   MIBS clock event value,
			 INP_MIBS_EVENT_LONG -> four byte integer containing an
						MIBS clock event value,
			 INP_RRBS_EVENT -> four byte integer containing an
					   RRBS clock event value,
			 INP_RRBS_EVENT_LONG -> four byte integer containing an
						RRBS clock event value,
			 INP_TVBS_EVENT -> four byte integer containing a
					   TVBS clock event value,
			 INP_SIMPLE_MDAT_FRAME -> four byte integer containing
						  an MDAT frame value,
			 INP_MDAT_FRAME -> four byte integer containing an
					   MDAT frame value,
			 INP_MDAT_FRAME_LONG -> four byte integer containing an
						MDAT frame value,
			 INP_NOTIFY_CATEGORY -> four byte integer containing
						a notify category value,
			 INP_NOTIFY_PRIORITY -> four byte integer containing
						a notify priority value,
			 INP_NOTIFY_DATA_TYPE -> four byte integer containing
						 a notify data type value,
			 INP_PRIMARY_TRANSFORM -> four byte integer containing
						  a primary transform value,
			 INP_PRIMARY_TRANSFORM_LONG -> four byte integer
						       containing a primary
						       transform value,
			 INP_COMMON_TRANSFORM -> four byte integer containing
						 a common transform value,
			 INP_COMMON_TRANSFORM_LONG -> four byte integer
						      containing a common
						      transform value,
			 INP_STATE_DEVICE -> four byte integer containing a
					     state device index,
			 INP_STATE_VALUE -> STATE_VALUE structure
					    containing a state value
					    specification,
			 INP_DATA_EVENT -> DATA_EVENT_DATA structure
					   containing a data event value
					   specification,
			 INP_STATE_EVENT -> DATA_EVENT_DATA structure containing
					    a state data event specification,
			 INP_TCLK_EVENT -> DATA_EVENT_DATA structure containing
					   a TCLK data event specification,
			 INP_DATA_SOURCE -> DATA_SOURCE_DATA structure
					    containing a data source
					    specification,
			 INP_SDA_DIR -> four byte integer containing an
					SDA directory value (obsolete),
			 INP_SDA_USAGE -> four byte integer containing an
					  SDA usage value,
			 INP_SDA_FILE -> SDA_FILE_VALUE structure
					 containing an SDA file value
					 specification,
			 INP_SDA_CASE -> four byte integer containing an
					 SDA case value (for Collider shot),
			 INP_EXT_SDA_CASE -> SDA_CASE_VALUE structure
					     containing an SDA case value
					     specification,
			 INP_EXT_SDA_SUBCASE -> SDA_CASE_VALUE structure
						containing an SDA subcase value
						specification,
			 INP_ALARM_LIST -> four byte integer containing an
					   alarm list value,
			 INP_ALARM_HANDLER_CODE -> four byte integer containing
						   an alarm handler code value,
			 INP_NODE_SYSTEM -> four byte integer containing a
					    node system type value,
			 INP_NODE_HARDWARE -> four byte integer containing a
					      node hardware type value,
			 INP_NODE_SOFTWARE -> four byte integer containing a
					      node software type value,
			 INP_NODE_STATUS -> four byte integer containing a
					    node status type value,
			 INP_NODE_AREA -> four byte integer containing a
					  node area type value,
			 INP_NODE_OPSYS -> four byte integer containing a
					   node operating system type value,
			 INP_STATE_FTD_INDEX -> four byte integer containing a
						state FTD index value,
			 INP_ERROR_CATEGORY -> four byte integer containing
					       an error category value,
			 INP_LJ_USER_DIRECTORY -> a Lumberjack user
						  directory string,
			 INP_LJ_USER_FILE -> a Lumberjack user file
					     name string,
			 INP_DEVICE_VALUE -> an ACNET device value
					     contained in an ACNET_DEVICE_VALUE
					     structure,
			 INP_SWITCH -> CNV_SWITCH_NAME_LEN character string
				       containing a network switch name,
			 INP_CONTROL_SYSTEM_TYPE -> four byte integer containing
						    a control system type value,
			 INP_FOREIGN_SYSTEM_TYPE -> four byte integer containing
						    a foreign control system
						    type value,
			 INP_FOREIGN_DATA_TYPE -> FOREIGN_DATA_TYPE_INFO
						  structure containing
						  a foreign data type value,
			 INP_EPICS_DATA_TYPE -> four byte integer containing
						an EPICS data type value,
			 INP_OPC_DATA_TYPE -> four byte integer containing
					      an OPC data type value,
			 INP_LABVIEW_DATA_TYPE -> four byte integer containing
						  a LabView data type value,
			 INP_APACS_DATA_TYPE -> four byte integer containing
						an APACS data type value,
			 INP_SNMP_DATA_TYPE -> four byte integer containing
					       an SNMP data type value,
			 INP_SIEMENS_S7_DATA_TYPE -> four byte integer
						     containing Siemens S7
						     data type value,
			 INP_HTTP_DATA_TYPE -> four byte integer containing
					       an HTTP data type value,
			 INP_LAB_DEPARTMENT -> four byte integer containing a
					       lab department value,
			 user data type ID -> user data type defined by an
					      earlier call to
					      create_user_data_type_c)
	title		title of input window  (Note: A null pointer may be
			passed if no title is desired.)
	num_lines	number of lines of input to be displayed at a time
	field_status	field-by-field status array (Note: A null pointer may
			be passed if this status is not desired.)
			(FALSE -> field was not changed,
			 TRUE -> field was successfully changed,
			 CBS_RANGE -> an erroneous value was entered for
				      this field)
	key_case	controls case of typed characters
			(WMNGR_UPPER_CASE -> only upper case displayed,
			 WMNGR_MIXED_CASE -> allows lower case (can also
					     pass a value of CLIB_DEFAULT_ARG))
	help_info	entry by entry help callback information
			(array of HELP_CALLBACK_DATA structures)
			(A value of NULL can be passed for this argument,
			if no context sensitive entry help is desired.)
	[post_prompt]	concatenated, null terminated string of prompt strings
			to display to the right of the input field(s)
			(default is NULL)

	This function returns status values as follows:

	TRUE			value(s) have been changed
	FALSE			no values were changed
	CBS_INVARG		invalid data type or number of values
	CBS_WINDOW_TOO_BIG	window won't fit on screen
	CBS_MEMFAIL		dynamic memory allocation failure
	CBS_ABORT		user aborted input (no values were changed)

	This function requires the following include files:

	cnsparam_h, cns_data_structs_h, cbslib_h, macro_h, acnet_errors_h

	Related functions:

	array_edit_c, winput(_c), wrdspi(_c), wrdspi4(_c), wrdspr(_c),
	wrdspr8(_c), inptxt(_c), input_string_dialog_c,
	set_enumerated_strings_c, modify_enumerated_strings_c,
	get_enumerated_strings, create_user_data_type_c, set_logical_strings,
	get_logical_strings, set_bit_mask_strings_c, get_bit_mask_strings_c,
	dialog_setup_c, numeric_to_ascii(_c), ascii_to_numeric(_c),
	window_restore_hint_c

	C/C++ usage:

	static const char	title[] = "Title";
	static const char	prompt_text[] = "Value 1Value 2Value 3";
	static const char	post_prompt[] = "Units 1Units 2Units 3";
	int		changed;
	int		top_row = WMNGR_CENTER;
	int		left_column = WMNGR_CENTER;
	int		num_chars = 0;
	int		num_values = NUM_INPUT_VALUES;
	int		data_type = INP_FLOAT;
	int		field_status[NUM_INPUT_VALUES];
	int		key_case = WMNGR_MIXED_CASE;
	int		num_lines = NUM_INPUT_VALUES;
	float		values[NUM_INPUT_VALUES];
	static const float	minima[NUM_INPUT_VALUES] = {-5.0, 0.0, 5.0};
	static const float	maxima[NUM_INPUT_VALUES] = {5.0, 10.0, 15.0};
	HELP_CALLBACK_DATA	*help_info = (HELP_CALLBACK_DATA *) NULL;

	changed = input_array_values_c(top_row,left_column,prompt_text,
				       num_chars,(void *) minima,
				       (void *) maxima,(void *) values,
				       num_values,data_type,title,num_lines,
				       field_status,key_case,help_info,
				       post_prompt);