td_build(_c)

	status.i4.v = td_build(list_id.i4.r, list_length.i4.r,
			       device_indices.i4a.r, table_numbers.i2a.r,
			       table_types.i2a.r, slot_numbers.i2a.r,
			       num_slots.i2a.r, slot_uses.i2a.r,
			       scale_it.i4.r, errors.i2a.r [,ftd.i2.r]
			       [,cancel_list.i4.r])

	status.i4.v = td_build_c(list_id.i4.r, list_length.i4.v,
				 device_indices.i4a.r, table_numbers.i2a.r,
				 table_types.i2a.r, slot_numbers.i2a.r,
				 num_slots.i2a.r, slot_uses.i2a.r,
				 scale_it.i4.v, errors.i2a.r [,ftd.i2.v]
				 [,cancel_list.i4.v])

	This routine builds a list of card, table, and slot specifications
	for subsequent reading and/or setting using td_read and/or
	td_set(_c).  Table and slot enumerations start at 1.  Arguments
	marked by an asterisk can have a value of one negative of the
	"true argument" to indicate that every table in the list has that
	same attribute.

	list_id		returned list id (used by subsequent calls)
	list_length	number of entries (DI's) in the list
	device_indices	device indices of the tables
	table_numbers*	table number to read for each entry
			(table numbers start at 1)
	table_types*	type of table to read for each entry
			(constants are in 'diolib')
	slot_numbers*	number of first slot to read for each entry
			(slot numbers start at 1)
	num_slots*	number of slots to read for each entry
	slot_uses*	indicate which part of the slot is addressed
			(SLOT_WHOLE -> whole slot,
			 SLOT_DEPENDENT -> only dependent part of slot,
			 SLOT_INDEPENDENT -> only independent part of slot)
			(Note: Data is handled in independent-dependent order.)
	scale_it	scaling flag
			(TRUE -> scale data using database information
				 (each half slot is represented by a four
				  byte floating point value),
			 FALSE -> treat as raw data (each half slot is
				  represented by a two byte integer value))
			(Note: Scaling is only valid for the dependent slots,
			 or dependent parts-of-slots.)
	errors		array of returned ACNET status values
			(one per entry in the list)
	[ftd]		frequency/event (of list) for datapool reads
			(FTD_ONESHOT -> one shot (default),
			 FTD_DEFAULT -> use database default FTD,
			 FTD_1HZ -> 1 Hz request,
			 FTD_EVENT_MASK OR'ed with TCLK event value -> read
			 on TCLK event (event constants are in 'tclk_events'))
	[cancel_list]	completion handling flag
			(TRUE -> list is canceled after completion of
				 read or set,
			 FALSE -> list remains active (default))

	This function returns status values as follows:

	OK			success
	DIO_MEMFAIL		memory allocation failure
	DIO_BADARG		invalid number of entries
	negative value		other ACNET format error
	positive value		number of first device in error

	This function requires the following include files:

	cnsparam_h, diolib_h, acnet_errors_h

	Related functions:

	td_cancel, td_read, td_set(_c), td_query, dio_bld_get(_c),
	dio_bld_set(_c), dio_bld_get_raw(_c), dio_bld_set_raw(_c),
	td_extract_list_status_c

	C/C++ usage:

	static const short	table_numbers[NUM_DEVICES] = {1, 1};
	static const short	table_types[NUM_DEVICES] =
				{MDAT_GTABLE, MDAT_GTABLE};
	static const short	slot_numbers[NUM_DEVICES] = {1, 1};
	static const short	num_slots[NUM_DEVICES] = {MAX_SLOTS, MAX_SLOTS};
	static const short	slot_uses[NUM_DEVICES] =
				{SLOT_WHOLE, SLOT_WHOLE};
	short	errors[NUM_DEVICES];
	short	ftd = FTD_ONESHOT;
	int	status;
	int	list_id;
	int	list_length = NUM_DEVICES;
	static const int	device_indices[NUM_DEVICES] = {7085, 7046};
	int	scale_it = TRUE;
	int	cancel_list = FALSE;

	status = td_build_c(&list_id,list_length,(int *) device_indices,
			    (short *) table_numbers,(short *) table_types,
			    (short *) slot_numbers,(short *) num_slots,
			    (short *) slot_uses,scale_it,errors,ftd,
			    cancel_list);