Skip to content

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{⎕io0                ⍝ Extract contents.
    tie ⎕fstie 0            ⍝ new tie number.
    fm to2⎕fsize tie        ⍝ first and next component.
    cnosfm+⍳to-fm            ⍝ vector of component nos.
    cvec⎕fread tie cnos      ⍝ vector of components.
    cvec⎕funtie tie        ⍝ ... untie and return.
}