[Info-vax] C... the only winning move is not to play...

VAXman- at SendSpamHere.ORG VAXman- at SendSpamHere.ORG
Fri Feb 14 09:16:36 EST 2014


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. 

-- 
VAXman- A Bored Certified VMS Kernel Mode Hacker    VAXman(at)TMESIS(dot)ORG

Well I speak to machines with the voice of humanity.



More information about the Info-vax mailing list