status.i4.v = fm_io(vun.i2.r, io_buffer.g.v, num_bytes.i4.r
			    [,record_number.i4.r] [,ext_status.i4.r])

	status.i4.v = fm_io_c(vun.i2.v,	io_buffer.g.v, num_bytes.i4.v
			      [,record_number.i4.v] [,ext_status.i4.r])

	This routine will read or write a Filesharing record opened on
	the virtual unit number.  The file may have either sequential or
	relative organization and fixed or variable length records.
	If the file was opened with direct access, the logical record
	number defines the record to be read.  If the file was opened
	with sequential access, the next record in sequence is accessed.

	vun		virtual unit number on which the file was opened
	io_buffer	user's data buffer to be read or written
	num_bytes	number of bytes to be read or written.  If "num_bytes"
			is less than zero, the record will be read.  If it's
			greater than zero, the record will be written.
	[record_number]	specifies the logical record number for files
			opened for direct access (default is 0)
	[ext_status]	returned extended status from VMS/RMS (default is NULL)

	This function returns ACNET status values as follows:

	OK			success
	FSHARE_xxx		error accessing file
	CBS_INVARG		zero byte length

	This function requires the following include files:

	cnsparam_h, cbslib_h, acnet_errors_h

	Related functions:

	fm_read(_c), fm_write(_c), fm_open_io(_c), fm_open_read(_c),
	fm_open_write(_c), fm_file_attributes

	C/C++ usage:

	char	io_buffer[NUM_BYTES];
	int	status;
	int	num_bytes = NUM_BYTES;
	int	record_number = RECORD_NUMBER;
	int	ext_status;

	status = fm_io_c(vun,(void *) io_buffer,num_bytes,record_number,