[Info-vax] C... the only winning move is not to play...
Johnny Billquist
bqt at softjar.se
Tue Feb 18 03:53:46 EST 2014
On 2014-02-14 15:16, VAXman- @SendSpamHere.ORG wrote:
> In article <ldk1qs$s7v$2 at Iltempo.Update.UU.SE>, Johnny Billquist <bqt at softjar.se> writes:
>> On 2014-02-13 23:06, VAXman- @SendSpamHere.ORG wrote:
>>> In article <ldjc2s$f1b$1 at dont-email.me>, David Froble <davef at tsoft-inc.com> writes:
>>>> {...snip...}
>>>>
>>>> What I meant was the data is read into an internal I/O buffer, and the
>>>> desired data record is then moved into a user's pre-defined record
>>>> buffer. In a write of the data record, RMS moves it back into the
>>>> internal I/O buffer, then writes the I/O buffer.
>>>>
>>>> If the data in the I/O buffer is locked, then is should not be stale.
>>>
>>> OK. I reread. You were talking about the locate and move modes of the RMS
>>> buffers. Locate mode is only valid using a $GET and it's unavailable when
>>> the record crosses a block boundary, file access is set UPDATE, compressed
>>> records (in the case of indexed files), global buffers have been specified
>>> or multiple streams access the file.
>>
>> Really? Are locate mode not available for writes in VMS. They are in
>> RSX. When you open the file, you tell what the maximum size you might
>> write is, and RMS will return a pointer to where you should be writing
>> your data. It might be a bounce buffer, but it might also be the actual
>> disk buffer directly.
>> And each $PUT will update the write pointer for the next write to be done.
>
> RTFM: 7.3.1 Record Transfer Modes
>
> For synchronous and asynchronous record operations, RMS
> provides two record transfer modes: move mode and locate
> mode.
>
> In move mode, RMS copies a record from an I/O buffer into a
> buffer that you specify. For input operations, data is first
> read into the I/O buffer from a peripheral device (such as a
> disk), then moved to your application program buffer for
> processing. For output operations, you first build the
> record in your application program buffer; then RMS moves
> the record to the I/O buffer that is used to transfer the
> record to disk.
>
> In locate mode, RMS allows the application program to access
> records in an I/O buffer by providing the address of the
> returned record as the internal buffer location instead of
> an application program buffer location (field RAB$L_RBF).
> Usually, this reduces program overhead because records can
> be processed directly within the I/O buffer. Locate mode is
> only available for input operations. Because it may not
> always be possible to use locate mode, you must supply an
> application program buffer for cases in which move mode must
> be used, even though you specify locate mode (see the
> OpenVMS Record Management Services Reference Manual).
>
> Other RMS facilities allow programs to control I/O buffer
> space allocation or to leave space management to RMS. The
> following sections describe buffering.
Thanks. I wouldn't know where to search through the VMS manuals to find
this, but it does surprise me, since locate mode is possible in RMS on
RSX. And conceptually it's easy to see how to do it. Hmm, are the RMS
internal buffers mapped read-only from the application program perhaps?
That would explain why it would be only for reads in VMS...
Oh well... RSX - still an improvement on VMS... ;-)
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt at softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol
More information about the Info-vax
mailing list