decide_multiple_c

	decision.i4.v = decide_multiple_c(top_row.i4.v, left_column.i4.v,
					  text.i1a.r, text_length.i4.v,
					  line_length.i4.v, switch_text.i1a.r,
					  num_switches.i4.v
					  [,deflt_choice.i4.v]
					  [,text_color.i4.v]
					  [,funcs.fa.r] [,func_data.ga.r]
					  [,switch_height.i4.v]
					  [,switch_width.i4.v]
					  [,switch_colors.i4a.r]
					  [,title.i1a.r] [,word_wrap.i4.v]
					  [,help_info.s.r] [,switch_help.sa.r]
					  [,options.u4.v])

	This routine will display a decision window with "num_switches"
	choices having its upper left hand corner at ("top_row", "left_column").
	It will return a value equal to the number of the switch pressed.
	"text" is an informational text string (prompt) while "text_length"
	is the length of the message string.

	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)
	text		informational text string
			(New line characters (\n), can be used for line breaks.
			 '\\c' can be used to center lines of text.)
	text_length	length of text string  (If this value is zero,
			the length of the text string will be determined
			by this routine.  Don't use this feature if there
			are embedded nulls in the text string.)
	line_length	number of characters per line  (If this value is
			zero, the line length will be set to the length of
			the longest line of text.)
	switch_text	null terminated string containing the switch
			labels separated by back slashes
	num_switches	number of switches
	[deflt_choice]	determines the switch field in which the cursor will
			initially be placed (default is 1)
	[text_color]	message text color (default is GREEN)
	[funcs]		addresses of functions to be called upon the pressing
			of each switch (default is NULL)
			(called as follows for popup window mode:
			 dont_exit.i4.v = funcs(wid.i2.v, func_data.g.v,
						switch_number.i4.v)
			(Note: If "dont_exit" has a value of FALSE,
			 decide_multiple_c will return with the
			 value indicating the switch number pressed.
			 Otherwise, it will continue.)
			(called as follows for persistent window mode:
			 funcs(wid.i2.v, func_data.g.v, switch_data.s.r)
			 ("switch_data" is a structure of type
			  SWITCH_ACTION_DATA))
			(Note: Callback functions must be provided for all
			 switches if a persistent window is requested.)
	[func_data]	addresses of data to be passed to "funcs"
			(default is NULL)
	[switch_height]	height of each switch in rows (default is 3)
	[switch_width]	width of each switch in columns
			(default is longest switch text + 2)
	[switch_colors]	array of switch colors (Note: If the first color is
			negative, all switches will be made the same color
			with a value to its absolute value.) (default is GREEN)
	[title]		a null-terminated text string (ie. a quoted literal)
			to be written to the top line of the window. It may
			be no longer than the width of the window minus
			four characters. (default is NULL)
	[word_wrap]	word wrap flag for multiple line messages
			(TRUE -> wrap lines on word boundaries (default),
			 FALSE -> no word wrapping)
	[help_info]	help callback information
			(structure of type HELP_CALLBACK_DATA)
			(default is NULL)
	[switch_help]	array of help callback information structures
			for each switch
			(array of HELP_CALLBACK_DATA structures)
			(default is NULL)
	[options]	dialog options (values may be OR'ed together)
			(DIALOG_POPUP -> acts as popup window with all
					 interrupts captured until the user
					 exits by pressing a switch (default),
			 DIALOG_PERSISTENT -> window is created and control is
					      returned to user (window
					      intercepts only those interrupts
					      intended for it) (In this mode,
					      this "device" window must be
					      deleted by call to
					      window_delete(_c) using the
					      window ID returned as the
					      status value from this call.))

	This function returns status values as follows:

	CBS_INVARG		invalid number of switches or persistent
				window requested with no callback functions
	CBS_SYNTAX		invalid switch text string passed
	CBS_MEMFAIL		failed in allocating dynamic memory
	CBS_WINDOW_TOO_BIG	window won't fit on screen
	otherwise		number of switch pressed or
				created window ID (persistent windows only)

	This function requires the following include files:

	cnsparam_h, cbslib_h, macro_h, acnet_errors_h

	Related functions:

	decide(_c), file_decide_c, acknowledge(_c), calc_line_length_c,
	dialog_setup_c, window_restore_hint_c, window_delete(_c),
	switch_create_c

	C/C++ usage:

	static const char	text[] = "Message string";
	static const char	switch_text[] = "Switch 1\\Switch 2";
	static const char	title[] = "Title";
	int		decision;
	int		top_row = WMNGR_CENTER;
	int		left_column = WMNGR_CENTER;
	int		text_length = 0;
	int		line_length = 0;
	int		num_switches = NUM_SWITCHES;
	int		default_choice = 1;
	int		text_color = GREEN;
	int		switch_height = 3;
	int		switch_width = 10;
	int		word_wrap = TRUE;
	static const int	switch_colors[NUM_SWITCHES] = {GREEN, YELLOW};
	unsigned int	options = DIALOG_POPUP;
	int		(**funcs)() = (int (**)(short, void *, int)) NULL;
	void		**func_data = (void **) NULL;
	HELP_CALLBACK_DATA	*help_info = (HELP_CALLBACK_DATA *) NULL;
	HELP_CALLBACK_DATA	*switch_help = (HELP_CALLBACK_DATA *) NULL;

	decision = decide_multiple_c(top_row,left_column,text,
				     text_length,line_length,switch_text,
				     num_switches,default_choice,
				     text_color,funcs,func_data,
				     switch_height,switch_width,
				     switch_colors,title,word_wrap,
				     help_info,switch_help,options);