status.i4.v = db_retrieve_rows_c(select_string.i1a.r,
					 bytes_per_row.u4.v, options.u4.v,
					 handle.gp.r, server.i1a.r,

	This routine reads data from relational databases using SQL.
	It simplifies the process by determining the number of rows
	for the request and allocates the memory for them.  This memory
	must be freed by the caller.  This routine also optionally
	opens a database connection or uses one that is passed in as
	an argument.  Help with datatypes and creating tables is in
	intro_database.  Multiple SQL commands are not supported for
	this routine.  (Note:  If this routine opens a database
	connection, it uses the timeout from dio_query_tuner.)

	select_string	null terminated SQL select statement text
			(This must contain a single select statement,
			 and table names should be fully specified.)
	bytes_per_row	EXACT size of each and every returned row
			(sum of the lengths of all columns requested)
	options		use options
			(DB_OPT_NONE -> no options selected,
			 DB_OPT_USE_PASSED_HANDLE -> use handle passed
						     into this routine,
			 DB_OPT_RETURN_HANDLE -> open database connection
						 and return handle,
			 DB_OPT_CLOSE_CONNECTION -> close database
	handle		pointer to a database connection handle (The use
			of this argument depends upon the options argument.
			A value of NULL can be passed for this argument if
			the caller wishes for this routine to open and
			close a database connection.)
	server		null terminated uppercase server string
			(This argument is only used if the routine will be
			 asked to open a database connection.  A value of
			 NULL can be passed for this argument which will
			 result in a default string of "ADBS" being used.)
	returned_rows	returned array of structures  (This memory must
			be freed by the caller.)
	num_rows	returned number of rows

	This function returns ACNET status values as follows:

	OK			success
	CLIB_INVARG		invalid combination of argument values
	CLIB_SYNTAX		select statement does not contain the
				word "select" or the word "from"
	CLIB_MEMFAIL		memory allocation failure
	SQL_SMALLROW		success, but row is smaller than "bytes_per_row"
	SQL_xxx			database access failure

	This function requires the following include files:

	ul_cbsaux_h:auxlib_misc_h, acnet_errors_h

	Related functions:

	db_column_info_c, db_table_name_parse_c, db_ctime_to_db_date_c,
	db_open, db_close, db_select, dio_query_tuner

	C/C++ usage:

	static const char	select_string[] =
				"select col1,col2 from appdb.user.table";
	static const char	server[] = "ADBS";
	int	status;
	unsigned int	bytes_per_row = BYTES_PER_ROW;
	unsigned int	options = DB_OPT_NONE;
	unsigned int	num_rows;
	db_handle_t	**handle = (db_handle_t **) NULL;
	void	*returned_rows;
	status = db_retrieve_rows_c(select_string,bytes_per_row,