File Read Components R←⎕FREAD Y
Access code 1
Y
is a 2 or 3 item vector containing the file tie number, the component number(s), and an optional passnumber. If the passnumber is omitted it is assumed to be zero. All elements of Y
must be integers.
The second item in Y
may be scalar which specifies a single component number or a vector of component numbers. If it is a scalar, the result is the value of the array that is stored in the specified component on the tied file. If it is a vector, the result is a vector of such arrays.
Note that any invocation of ⎕FREAD
is an atomic operation. Thus if compnos
is a vector, the statement:
⎕FREAD tie compnos passno
will return the same result as:
{⎕FREAD tie ⍵ passno}¨compnos
However, the first statement will, in the case of a share-tied file, prevent any potential intervening file access from another user (without the need for a ⎕FHOLD
). It will also perform slightly faster, especially when reading from a share-tied file.
Examples
⍴SALES←⎕FREAD 1 241
3 2 12
GetFile←{⎕io←0 ⍝ Extract contents.
tie←⍵ ⎕fstie 0 ⍝ new tie number.
fm to←2↑⎕fsize tie ⍝ first and next component.
cnos←fm+⍳to-fm ⍝ vector of component nos.
cvec←⎕fread tie cnos ⍝ vector of components.
cvec⊣⎕funtie tie ⍝ ... untie and return.
}