The File Descriptor Table (FDT), created by Prepass or the Interactive User Interface, contains all the information (code tables, edited record definitions, file characteristics, and so on) needed to compress and expand the data it was built from. Each file processed by CA Compress/2 must have an associated FDT unless Super Express is being used. The FDT associated with a particular file must be present (through JCL specification) in every job step in which records from that file are processed by CA Compress/2.
Note: We strongly encourage you to use FDTs created by the IUI rather than Prepass, especially for users of Physical Sequential Transparency. The IUI and Prepass with SS05300 create FDTs with an Integrity Check Block (ICB), by which the expansion routines recognize uncompressed records and avoid a number of problems, including accidental double expansion.
The Super Express, Standard Tables, and Hardware Compression algorithms do not refer to user-defined FDTs, but the SHRINK, EXPAND, and CLOSE routines do refer to the user-defined FDT associated with each compressed data set. The FDT for each compressed data set that is processed must be defined or made accessible via the JCL used to invoke the application program which uses CA Compress/2 subroutines.
FDTs maintained in sequential data set format require separate definitions on a TABLxx DD statement, where xx, coded as a two-digit number ranging from 00 through 31, corresponds to a file number supplied by the user as a parameter in the CALL to SHRINK, EXPAND, or CLOSE. CA discourages use of this format.
FDTs should preferably be stored as members of a PDS in load module format. Coding the STEPLIB DD statement to define the PDS containing FDTs in load module format makes every FDT contained in the PDS accessible to the application program. In this manner, all FDTs used in an application program can be accessed through a single DD statement.
Within the application program, each FDT in load module format must have an associated 48-byte, fullword-aligned Shrink Control Block (SCB). Subroutine calls pass the SCB as a parameter to identify the FDT, instead of the file number as with FDTs in sequential data set format. Before the first subroutine CALL using a particular FDT, its associated SCB must be initialized as follows:
SCBNAME DS 0F DC CL8'fdt-member-name' DC 10F'0'
01 SCBNAME. 03 FILLER PICTURE X(8) VALUE 'fdt-member-name'. 03 FILLER PICTURE X(40) VALUE LOW-VALUES.
DCL 01 SCBNAME,
03 name CHAR(8) INIT ('fdt-member-name'),
03 N(10) FIXED BIN(31) INIT ((10)0);
After initialization, the SCB must not be modified in any way. Reentrant programs must place the SCB in dynamically allocated main storage.
| Copyright © 2012 CA. All rights reserved. |
|