Blocking Input and Output Data Sets on Mainframe Systems
File blocking can significantly impact Enrichment performance on mainframe systems. Enrichment is written in C and requires special file blocking for optimum performance. While COBOL buffers block themselves and therefore control their own performance, C requires you to set the blocking in the JCL (for example, DCB=(BUFNO=30)). Keep the following in mind when you set blocking:
- Always use 1/2 track blocking, even when routing output to SYSOUT.
- Try to buffer 1/2 cylinder (BUFNO=15). If possible, full cylinder buffering is recommended (BUFNO=30).
- Use BUFNO for both inputs and outputs and to TAPE as well as DASD.
- Use IEBGENR to reblock bad inputs to a temporary file before running Enrichment (for example, when LRECL and BLKSIZE are both 133). This can improve I/O performance.
These I/O buffers are obtained from memory below the 16MB line, so if you have many inputs or outputs you can run out of memory for Finalist or other programs that run below the line. If you cannot use BUFNO=15 because of memory problems, only use BUFNO on your largest inputs and outputs or drop the BUFNO to 10 or 5.
The following shows JCL in which blocking is properly set.
//INVOICES DD DSN=PDRC.SW.DATA,
// DISP=(NEW,CATLG,DELETE),
// DCB=(LRECL=133,BLKSIZE=27930,RECFM=FBA,BUFNO=30),
// SPACE=(CYL,(10,10),RLSE),UNIT=SYSDA