Class ZFileRecordReader
- java.lang.Object
-
- com.ibm.jzos.RecordReader
-
- com.ibm.jzos.ZFileRecordReader
-
- All Implemented Interfaces:
- ZFileConstants
public class ZFileRecordReader extends RecordReader implements ZFileConstants
This ZFile wrapper is no longer the most efficient way to read dataset records. Please seeRecordReader
.In order to provide more efficient dataset record mode read performance, it is often beneficial to read a block, rather than a record, at a time from the underlying dataset. This class wraps an instance of ZFile, re-opens it with RECFM=U, and provides an interface for reading a record at a time. The underlying ZFile must have been opened with the following options:
- type=record
- read mode, either text or binary ("r", "rb" or "rt")
Reading the dataset a block at a time limits the number of calls to the C library fread() function and also reduces the number of JNI calls that need to be made. The z/OS XL C/C++ Programming Guide SC09-4765 (Chapter 34 - I/O Performance considerations) recommends taking this approach to increase performance when possible.
All record formats are supported, however performance gains will only be realized when the average record lengths are significantly less than the average block size.
- Since:
- 2.3.0
- See Also:
RecordReader
-
-
Field Summary
-
Fields inherited from interface com.ibm.jzos.ZFileConstants
DEFAULT_EBCDIC_CODE_PAGE, DEVICE_DISK, DEVICE_DUMMY, DEVICE_HFS, DEVICE_HIPERSPACE, DEVICE_MEMORY, DEVICE_MSGFILE, DEVICE_OTHER, DEVICE_PRINTER, DEVICE_TAPE, DEVICE_TDQ, DEVICE_TERMINAL, DSORG_CONCAT, DSORG_HFS, DSORG_HIPER, DSORG_MEM, DSORG_PDS_DIR, DSORG_PDS_MEM, DSORG_PDSE, DSORG_PO, DSORG_PS, DSORG_TEMP, DSORG_VSAM, ERRNO_E_ABEND, ERRNO_E_DEFINEFILE, ERRNO_E_READERR, ERRNO_E_WRITEERR, ERRNO_EACCES, ERRNO_EILSEQ, ERRNO_EINVAL, ERRNO_EIO, ERRNO_EPERM, FLAG_DISP_MOD, FLAG_DISP_OLD, FLAG_DISP_SHR, FLAG_PDS_ENQ, LAST_OP_BSAM_BLDL, LAST_OP_BSAM_CLOSE, LAST_OP_BSAM_CLOSE_T, LAST_OP_BSAM_NOTE, LAST_OP_BSAM_OPEN, LAST_OP_BSAM_POINT, LAST_OP_BSAM_READ, LAST_OP_BSAM_STOW, LAST_OP_BSAM_WRITE, LAST_OP_C_CANNOT_EXTEND, LAST_OP_C_DBCS_SI_TRUNCATE, LAST_OP_C_DBCS_SO_TRUNCATE, LAST_OP_C_DBCS_TRUNCATE, LAST_OP_C_DBCS_UNEVEN, LAST_OP_C_FCBCHECK, LAST_OP_C_TRUNCATE, LAST_OP_HSP_CREATE, LAST_OP_HSP_DELETE, LAST_OP_HSP_EXTEND, LAST_OP_HSP_READ, LAST_OP_HSP_WRITE, LAST_OP_IO_CATALOG, LAST_OP_IO_DEVTYPE, LAST_OP_IO_LOCATE, LAST_OP_IO_OBTAIN, LAST_OP_IO_RDJFCB, LAST_OP_IO_RENAME, LAST_OP_IO_SCRATCH, LAST_OP_IO_SWAREQ, LAST_OP_IO_TRKCALC, LAST_OP_IO_UNCATALOG, LAST_OP_QSAM_FREEPOOL, LAST_OP_QSAM_GET, LAST_OP_QSAM_PUT, LAST_OP_QSAM_RELSE, LAST_OP_QSAM_TRUNC, LAST_OP_SVC99_ALLOC, LAST_OP_SVC99_ALLOC_NEW, LAST_OP_SVC99_UNALLOC, LAST_OP_TGET_READ, LAST_OP_TGET_WRITE, LAST_OP_VSAM_CLOSE, LAST_OP_VSAM_ENDREQ, LAST_OP_VSAM_ERASE, LAST_OP_VSAM_GENCB, LAST_OP_VSAM_GET, LAST_OP_VSAM_MODCB, LAST_OP_VSAM_OPEN_ESDS, LAST_OP_VSAM_OPEN_ESDS_PATH, LAST_OP_VSAM_OPEN_FAIL, LAST_OP_VSAM_OPEN_KSDS, LAST_OP_VSAM_OPEN_KSDS_PATH, LAST_OP_VSAM_OPEN_RRDS, LAST_OP_VSAM_POINT, LAST_OP_VSAM_PUT, LAST_OP_VSAM_SHOWCB, LAST_OP_VSAM_TESTCB, LOCATE_KEY_EQ, LOCATE_KEY_EQ_BWD, LOCATE_KEY_FIRST, LOCATE_KEY_GE, LOCATE_KEY_LAST, LOCATE_RBA_EQ, LOCATE_RBA_EQ_BWD, MODE_FLAG_APPEND, MODE_FLAG_READ, MODE_FLAG_UPDATE, MODE_FLAG_WRITE, OPEN_MODE_BINARY, OPEN_MODE_RECORD, OPEN_MODE_TEXT, RECFM_A, RECFM_B, RECFM_F, RECFM_M, RECFM_S, RECFM_U, RECFM_V, S_IRGRP, S_IROTH, S_IRUSR, S_IRWXG, S_IRWXO, S_IRWXU, S_ISGID, S_ISUID, S_ISVTX, S_IWGRP, S_IWOTH, S_IWUSR, S_IXGRP, S_IXOTH, S_IXUSR, SEEK_CUR, SEEK_END, SEEK_SET, VSAM_TYPE_ESDS, VSAM_TYPE_ESDS_PATH, VSAM_TYPE_KSDS, VSAM_TYPE_KSDS_PATH, VSAM_TYPE_NOTVSAM, VSAM_TYPE_RRDS
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method and Description void
close()
Close the reader and underlying ZFile.int
getBlksize()
Answer the BLKSIZE, which is the maximum block length supported by the dataset.java.lang.String
getDDName()
Answers the DD name used to open the underlying dataset.java.lang.String
getDsn()
Answers the native dataset's absolute name, or name(member) if the native dataset is a member of a PDS.int
getLrecl()
Answer the LRECL, which is the maximum record length for variable length files.java.lang.String
getRecfm()
Get the native file's record format.int
getRecfmBits()
Answer the RECFM bitsstatic ZFileRecordReader
newReader(ZFile zFile)
Deprecated.This method no longer provides the most efficient way to perform dataset I/O.int
read(byte[] buf)
Read a record from the native file into a buffer.int
read(byte[] buf, int offset, int len)
Read a record from the native file into a buffer.-
Methods inherited from class com.ibm.jzos.RecordReader
getAutoFree, newReader, newReaderForDD, setAutoFree
-
-
-
-
Method Detail
-
newReader
@Deprecated public static ZFileRecordReader newReader(ZFile zFile) throws ZFileException
Deprecated. This method no longer provides the most efficient way to perform dataset I/O.Construct a new ZFileRecordReader on the given ZFile, which must have been opened in read, record mode.- Throws:
ZFileException
- See Also:
RecordReader.newReader(String, int)
,RecordReader.newReaderForDD(String)
-
read
public int read(byte[] buf) throws ZFileException
Read a record from the native file into a buffer.- Specified by:
read
in classRecordReader
- Parameters:
buf
- the byte array into which the bytes will be read- Returns:
- the number of bytes read, -1 if EOF encountered.
- Throws:
ZFileException
- if the native call fails
-
read
public int read(byte[] buf, int offset, int len) throws ZFileException
Read a record from the native file into a buffer.- Specified by:
read
in classRecordReader
- Parameters:
buf
- the byte array into which the bytes will be readoffset
- the offset, inclusive in buf to start reading byteslen
- the number of bytes to read- Returns:
- the number of bytes read, -1 if EOF encountered.
- Throws:
ZFileException
- if the native call fails
-
close
public void close() throws ZFileException
Close the reader and underlying ZFile.- Specified by:
close
in classRecordReader
- Throws:
ZFileException
- if the native call fails
-
getBlksize
public int getBlksize()
Description copied from class:RecordReader
Answer the BLKSIZE, which is the maximum block length supported by the dataset.- Specified by:
getBlksize
in classRecordReader
-
getDDName
public java.lang.String getDDName()
Answers the DD name used to open the underlying dataset. Returns null unless this instance was created byRecordReader.newReaderForDD(String)
- Specified by:
getDDName
in classRecordReader
- Returns:
- String ddname
-
getDsn
public java.lang.String getDsn()
Description copied from class:RecordReader
Answers the native dataset's absolute name, or name(member) if the native dataset is a member of a PDS.- Specified by:
getDsn
in classRecordReader
- Returns:
- String dataset name
-
getLrecl
public int getLrecl()
Description copied from class:RecordReader
Answer the LRECL, which is the maximum record length for variable length files.- Specified by:
getLrecl
in classRecordReader
-
getRecfm
public java.lang.String getRecfm()
Description copied from class:RecordReader
Get the native file's record format.- Specified by:
getRecfm
in classRecordReader
- See Also:
ZFile.getRecfm()
-
getRecfmBits
public int getRecfmBits()
Description copied from class:RecordReader
Answer the RECFM bits- Specified by:
getRecfmBits
in classRecordReader
- See Also:
ZFile.getRecfmBits()
-
-