public class ZFileRecordReader extends RecordReader implements ZFileConstants
RecordReader.
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:
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.
RecordReaderDEFAULT_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| 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 bits
|
static 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.
|
getAutoFree, newReader, newReaderForDD, setAutoFree@Deprecated public static ZFileRecordReader newReader(ZFile zFile) throws ZFileException
ZFileExceptionRecordReader.newReader(String, int),
RecordReader.newReaderForDD(String)public int read(byte[] buf)
throws ZFileException
read in class RecordReaderbuf - the byte array into which the bytes will be readZFileException - if the native call failspublic int read(byte[] buf,
int offset,
int len)
throws ZFileException
read in class RecordReaderbuf - the byte array into which the bytes will be readoffset - the offset, inclusive in buf to start reading byteslen - the number of bytes to readZFileException - if the native call failspublic void close()
throws ZFileException
close in class RecordReaderZFileException - if the native call failspublic int getBlksize()
RecordReadergetBlksize in class RecordReaderpublic java.lang.String getDDName()
RecordReader.newReaderForDD(String)getDDName in class RecordReaderpublic java.lang.String getDsn()
RecordReadergetDsn in class RecordReaderpublic int getLrecl()
RecordReadergetLrecl in class RecordReaderpublic java.lang.String getRecfm()
RecordReadergetRecfm in class RecordReaderZFile.getRecfm()public int getRecfmBits()
RecordReadergetRecfmBits in class RecordReaderZFile.getRecfmBits()