utility_window_init(_c)

	status.i4.v = utility_window_init(row.i4.r, column.i4.r,
					  [,num_user.i4.r] [,user_text.i1a.r]
					  [,user_funcs.fa.r]
					  [,func_data.ga.r] [,help_info.sa.r]
					  [,relabel_funcs.fa.r]
					  [,enable_funcs.fa.r])

	status.i4.v = utility_window_init_c(row.i4.v, column.i4.v,
					    [,num_user.i4.v] [,user_text.i1a.r]
					    [,user_funcs.fa.r]
					    [,func_data.ga.r] [,help_info.sa.r]
					    [,relabel_funcs.fa.r]
					    [,enable_funcs.fa.r])

	This routine initializes a pop-up menu for accessing a set of common
	application facilities.  An eleven character field is created on the
	TV screen which when interrupted upon will create the pop-up menu.
	This menu allows the user to control data acquisition (DIO),
	file access (FM), error logging, display error logs, and run a
	parameter window.  It also allows for caller defined items to be
	placed in the menu.

	row, column	location on TV of "*Pgm_Tools*" field.  The constant
			LEN_UTIL_FIELD is set to the length of the string
			"*Pgm_Tools*".  Therefore, LEN_UTIL_FIELD should be
			used to determine the column value relative to the
			last column in the window.
	[num_user]	optional number of additional user entries
	[user_text]	text for user-supplied entries
			(UTIL_ENTRYLEN characters per entry)
	[user_funcs]	user-supplied functions which will be called when
			the corresponding menu entry is clicked upon
			and are called as follows:
			user_func(func_data.g.v)
			"func_data" is an optional pointer to the
			caller's memory space.
	[func_data]	pointers to data to be passed to "user_func"
	[help_info]	entry by entry help callback information
			(array of HELP_CALLBACK_DATA structures)
	[relabel_funcs]	user-supplied functions which (if provided) will
			be called to update the caller-supplied menu text
			each time the menu is opened and are called
			as follows:
			new_label.i4.v = relabel_func(string.i1a.r,entry.i4)
			This function receives a string of UTIL_ENTRYLEN
			characters containing the present menu text for the
			corresponding menu entry as well as the index of
			the menu entry relative to the start of the caller
			supplied entries (starting at 0).  This function
			should return a value of TRUE if a new label has
			been insert in "string" and a value of FALSE
			otherwise.)
	[enable_funcs]	user-supplied functions which (if provided) will
			be called to update the whether or not caller-supplied
			menu entries are enabled each time the menu is opened
			and are called as follows:
			enable.i4.v = enable_func(entry.i4)
			This function receives the index of the menu entry
			relative to the start of the caller supplied entries
			(starting at 0).
			valid returned values are:
			(MENU_ENABLED_ENTRY -> enabled entry (default),
			 MENU_DISABLED_ENTRY -> disabled entry,
			 MENU_SEPARATOR -> separator entry)

	This function returns ACNET status values as follows:

	OK			success
	CBS_MEMFAIL		error in allocating dynamic memory

	This function requires the following include files:

	cbslib_h, cns_data_structs_h, acnet_errors_h

	Related functions:

	utility_window_c, scroll_menu(_c)

	C/C++ usage:

	char	user_text[] = "user 1      user 2      ";
	int	status;
	int	row = 1;
	int const SCREEN_COLUMNS = 68;
	int	column = SCREEN_COLUMNS - (LEN_UTIL_FIELD-1); // right-justify "*Pgm_Tools*"
	int	num_user = 2;
	void	user_func_1(void *dummy);
	void	user_func_2(void *dummy);
	pgm_tools_user_function	user_funcs[2];
	void	**func_data = (void **) NULL;
	pgm_tools_relabel_function	*relabel_funcs = (pgm_tools_relabel_function *) NULL;
	pgm_tools_enable_function	*enable_funcs = (pgm_tools_enable_function *) NULL;
	HELP_CALLBACK_DATA	*help_info = (HELP_CALLBACK_DATA *) NULL;

	user_funcs[0] = user_func_1;
	user_funcs[1] = user_func_2;

	status = utility_window_init_c(row,column,num_user,user_text,
				       user_funcs,func_data,help_info,
				       relabel_funcs,enable_funcs);