select_field_register_c

	status.i4.v = select_field_register_c(select_id.i4.r, entry_length.i4.v,
					      label.i1a.r, label_length.i4.v,
					      type.i4.v, data_1.g.v,
					      data_2.g.v, data_3.g.v
					      [,char_case.i4.v]
					      [,func_data.g.v]
					      [,verify_value.f.v])

	This routine registers a selection field type for use by
	future calls to select_field_init_c.  Selection fields
	have the format "Label-<Entry>+".

	select_id	returned ID to be used in future calls to
			select_field_init_c
	entry_length	number of characters in a selection entry
	label		ASCII label to be placed to the left of the
			selection field  (A value of NULL may be passed
			for this argumentif no label is desired.)
	label_length	number of characters in label (a value of zero
			will result in "label" being interpreted as a
			null terminated string)
	type		type of call which determines the interpretation
			of the remaining arguments
			(WMNGR_FUNCTION_ARGS -> following arguments
						are function addresses,
			 WMNGR_ENUMERATED_ARGS -> following arguments
						  enumerate the selection
						  entry values,
			 WMNGR_NUMERIC_RANGE_ARGS -> following arguments
						     describe a range of
						     consecutive integer
						     values,
			 WMNGR_DATA_TYPE_ARGS -> following arguments specify
						 an existing enumerated data
						 type)
	data_1		first variable argument which depends on the
			value of "type"
			(WMNGR_FUNCTION_ARGS -> address of verify function
			 is_valid.i4.v = verify(entry.i1a.r, index.i4.r,
						func_data.g.v)
			 (This function should return a value of TRUE if
			  the passed entry text is valid as well as its
			  index in the list of values.),
			 WMNGR_ENUMERATED_ARGS -> number of entries,
			 WMNGR_NUMERIC_RANGE_ARGS -> type of numeric text
						     (WMNGR_DECIMAL or
						      WMNGR_HEX),
			 WMNGR_DATA_TYPE_ARGS -> enumerated data type ID)
	data_2		second variable argument which depends on the
			value of "type"
			(WMNGR_FUNCTION_ARGS -> address of next function
			 status.i4.v = next(entry.i1a.r, next_entry.i1a.r,
					    direction.i4.v, index.i4.r,
					    func_data.g.v)
			 (Given an entry and a direction (WMNGR_NEXT or
			  WMNGR_PREVIOUS), this function should return the
			  text and index for the next entry.  A status of
			  OK should be returned for success.),
			 WMNGR_ENUMERATED_ARGS -> concatenated entry text
						  strings (individual strings
						  can be null terminated),
			 WMNGR_NUMERIC_RANGE_ARGS -> minimum value of range,
			 WMNGR_DATA_TYPE_ARGS -> additional data type
						 information (optional
						 depending on data type))
	data_3		third variable argument which depends on the
			value of "type"
			(WMNGR_FUNCTION_ARGS -> address of menu function
			 status.i4.v = menu(row.i4.v, col.i4.v, entry.i1a.r,
					    index.i4.r, func_data.g.v,
					    multicolumn.i4.v)
			 (Given a row and column for the menu, this routine
			  should return the select entry text and index.
			  A status of OK should be returned for success.),
			 WMNGR_ENUMERATED_ARGS -> array of entry indices
			 (a value of NULL will result in indices being
			  assigned as consecutive integers starting at 0),
			 WMNGR_NUMERIC_RANGE_ARGS -> maximum value of range,
			 WMNGR_DATA_TYPE_ARGS -> this argument is not used)
	[char_case]	character case of entries
			(WMNGR_MIXED_CASE -> allow upper and lower case
					     characters (default),
			 WMNGR_UPPER_CASE -> allow upper case only)
	[func_data]	data to be passed to the "verify", "next", and "menu"
			functions for WMNGR_FUNCTION_ARGS mode
			(default is NULL)
	[verify_value]	verify index function called as follows:
			 is_valid.i4.v = verify_value(value.i4.v, entry.i1a.r,
						      index.i4.r, func_data.g.v)
			 (This function should return a value of TRUE if
			  the passed entry index is valid.)
			(only used for WMNGR_FUNCTION_ARGS and only needed
			 for calls to select_field_set_by_value_c)

	This function returns ACNET status values as follows:

	OK			success
	CBS_MEMFAIL		memory allocation failure
	CBS_INVARG		invalid type value, entry length,
				or number of entries

	This function requires the following include files:

	cbslib_h, acnet_errors_h

	Related functions:

	select_field_init_c, select_field_update_c, select_field_read_c,
	select_field_set_c, select_field_set_by_value_c, select_field_delete_c,
	select_field_enable_c, select_field_disable_c,
	select_field_text_to_id_c, select_field_display_info_c

	C/C++ usage:

	static const char	label[] = "Field label ";
	static const char	data_2[ENTRY_LENGTH*NUM_ENTRIES+1] =
				"Value 1Value 2";
	int	status;
	int	select_id;
	int	entry_length = ENTRY_LENGTH;
	int	label_length = 0;
	int	type = WMNGR_ENUMERATED_ARGS;
	int	data_1 = NUM_ENTRIES;
	int	char_case = WMNGR_MIXED_CASE;
	void	*data_3 = (void *) NULL;
	void	*func_data = (void *) NULL;

	status = select_field_register_c(&select_id,entry_length,label,
					 label_length,type,(void *) &data_1,
					 (void *) data_2,data_3,char_case,
					 func_data);