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)