[fa.info-vax] An interesting RMS problem

jon@boulder.UUCP (10/17/85)

	I am having a curious problem with RMS that I thought I would share
with you, in the hopes that somebody knows a good workaround.  It goes like
this:
	We have an application that reads a large (often > 30K blocks),
sequential data file.  Usually, only one contiguous section of the file
is of interest, and it is often passed over several times at the whim of
interactive users.  Now, rather than search for the starting point each
time, I thought I would be clever and save the RFA of the spot the first
time I find it, then just do a sys$find to get back there the next time.
I did so, and it worked -- the start point was found almost instantly.
However, the process of positioning and scanning through the data takes
longer than the first time, which started at the beginning of the file!
	I have a theory about what is going on here:  since this is a large
file that is processed sequentially, I set the RAB$M_RAH bit, and cranked the
multibuffer count up high so that RMS would do lots of buffering ahead of
the program.  But, when I do the $find, I do it like this:

		rab->rab$b_rac = RAB$C_RFA;	/* RFA search mode	*/
		sys$find (rab);
		rab->rab$b_rac = RAB$C_SEQ;	/* Back to sequential	*/

I think that when I do the $find operation with RFA mode on, RMS decides to
turn off the buffering, and never turns it back on again.
	So, my question is, does anybody know how to get RMS to start buffering
again?  I thought about doing a $disconnect, then reconnecting the RAB, but
then I lose my place in the file and needn't bother with this whole thing to
begin with.  Any ideas would be much appreciated.

Thanks,
	jon
---
Jonathan Corbet
National Center for Atmospheric Research, Field Observing Facility
{seismo|hplabs}!hao!boulder!jon		(Thanks to CU CS department)

info-vax@cca.UUCP (10/18/85)

From: boulder!jon@UCB-VAX.Berkeley.EDU (Jon Corbet)

	I am having a curious problem with RMS that I thought I would share
with you, in the hopes that somebody knows a good workaround.  It goes like
this:
	We have an application that reads a large (often > 30K blocks),
sequential data file.  Usually, only one contiguous section of the file
is of interest, and it is often passed over several times at the whim of
interactive users.  Now, rather than search for the starting point each
time, I thought I would be clever and save the RFA of the spot the first
time I find it, then just do a sys$find to get back there the next time.
I did so, and it worked -- the start point was found almost instantly.
However, the process of positioning and scanning through the data takes
longer than the first time, which started at the beginning of the file!
	I have a theory about what is going on here:  since this is a large
file that is processed sequentially, I set the RAB$M_RAH bit, and cranked the
multibuffer count up high so that RMS would do lots of buffering ahead of
the program.  But, when I do the $find, I do it like this:

		rab->rab$b_rac = RAB$C_RFA;	/* RFA search mode	*/
		sys$find (rab);
		rab->rab$b_rac = RAB$C_SEQ;	/* Back to sequential	*/

I think that when I do the $find operation with RFA mode on, RMS decides to
turn off the buffering, and never turns it back on again.
	So, my question is, does anybody know how to get RMS to start buffering
again?  I thought about doing a $disconnect, then reconnecting the RAB, but
then I lose my place in the file and needn't bother with this whole thing to
begin with.  Any ideas would be much appreciated.

Thanks,
	jon
---
Jonathan Corbet
National Center for Atmospheric Research, Field Observing Facility
{seismo|hplabs}!hao!boulder!jon		(Thanks to CU CS department)