MRD_SKIP
Name
MRD_SKIP
Purpose
Skip a number of bytes from the current location in a file or a pipe
Explanation
First tries using POINT_LUN and if this doesn't work, perhaps because
the unit is a pipe or a socket, MRD_SKIP will just read in the
requisite number of bytes.
Calling Sequence
MRD_SKIP, Unit, Nskip
Inputs
Unit - File unit for the file or pipe in question, integer scalar
Nskip - Number of bytes to be skipped, positive integer
Notes
This routine should be used in place of POINT_LUN wherever a pipe
or socket may be the input unit (see the procedure FXPOSIT for an
example). Note that it assumes that it can only work with nskip >= 0
so it doesn't even try for negative values.
For reading a pipe, MRD_SKIP currently uses a maximum buffer size
of 8 MB. This chunk value can be increased for improved efficiency
(or decreased if you really have little memory.)
Revision History
Written, Thomas A. McGlynn July 1995
Don't even try to skip bytes on a pipe with POINT_LUN, since this
might reset the current pointer W. Landsman April 1996
Increase buffer size, check fstat.compress W. Landsman Jan 2001
Only a warning if trying read past EOF W. Landsman Sep 2001
Use 64bit longword for skipping in very large files W. Landsman Sep 2003
Assume since V5.4, fstat.compress available W. Landsman April 2006
POINT_LUN for compressed files is as fast as any W. Landsman Oct 2006
Don't try to use POINT_LUN on compressed files W. Landsman Dec. 2006