IMSPASS Utility

Contents
dmsims18
Contents
The IMSPASS utility executes the following:
  • Reads and edits the RDL statements describing the segment type.
  • Validates the RDL specifications by a prepass of a user-specified sample of segments.
  • Performs trial compression (optional) and calculate compression statistics for a user-specified sample of segments. Compression is performed, but the database is not altered.
  • Generates the File Descriptor Table (FDT) for the segment type.
A separate IMSPASS step must be executed for each segment type to be compressed. The utility executes as a batch IMS application program. IMSPASS execution is controlled by an input file with keyword parameters, most likely an input stream data set:
  • imsnames
    I/O:
    both
    Specifies standard IMS JCL requirements for batch program execution, defining the database to DFSLI000.
  • PARMFL
    I/O:
    I
    Specifies the IMSPASS Parameter File specifying execution options.
  • RECDEF
    I/O:
    I
    Specifies the RDL statements describing the segment type.
  • TABL00
    I/O:
    O
    Specifies the FDT for the segment type prepassed. A sequential data set.
  • OUTDB
    I/O:
    O
    Specifies the sequential output data set (optional) of prepassed segments. This file can be input to the File Prepass Utility with different RDL specifications to determine the optimal compression method.
    IMSPASS forces the following DCB specifications for this data set:
    • RECFM=U is used for both fixed-length and variable-length segments. The RDL input to the File Prepass Utility specifies the actual record (segment type) format.
    • BLKSIZE reflects the largest segment length of the data set. The IMSPASS output indicates the actual maximum length.
  • OUTFILE
    I/O:
    O
    (Optional) Specifies a dummy data set required only if trial compression statistics are accepted (you specify the C= parameter). The DD statement is as follows:
    //OUTFILE DD DUMMY, DCB=(LRECL=x,BLKSIZE=y)
    • x
      Specifies the maximum segment size + 8.
    • y
      x + 4
  • PRINT
    I/O:
    O
    Specifies a print data set (SYSOUT) to record RDL input, prepass and compression statistics, and error messages.
    DCB=(LRECL=121,RECFM=FB, ... )
  • SYSUDUMP
    I/O:
    O
    Specifies a print data set (SYSOUT).
IMSPASS Parameters
The IMSPASS Parameter File (PARMFL) is an 80-character input record that contains the following:
  • Keyword parameters separated by commas appearing in columns 1-71.
  • More than one record may be input. Continuation is indicated by a comma following the last parameter on the record.
  • The last record is recognized by the presence of data in column 71 (except for a comma), or the lack of a comma following the last parameter of the card. The BEGIN parameter is an exception.
  • SEG=
    segname
    (Required) Specifies the name of the segment. The name of the segment must correspond to the SEGM macro
    segname
    specification.
  • P=
    nn
    |ALL
    (Required) Specifies the number of records (in thousands) to be prepassed. The following values are available:
    • ALL
      Prepasses the entire database.
    • nn
      Prepasses the specified number (in thousands).
      Example:
      P=003 prepasses 3000 records or the entire database, whichever occurs first.
  • C=
    nn
    |ALL
    (Optional) Specifies the number of records (in thousands) to be subjected to trial compression. We recommend that you use this parameter to obtain compression statistics and verify RDL specifications beyond syntax check. The following values are available:
    • ALL
      Specifies the entire database.
    • nn
      Specifies the number of records (in thousands).
      Example:
      C=002 prepasses 2000 records or the entire database, whichever occurs first.
  • PCBNAME=
    dbdname
    | PCB=
    n
    (mutually exclusive)
    (Optional) Specifies the name of the DBD from the PCB.
    Specify the relative number of the PCB in the PSB. If omitted, PCB=1 is assumed.
    If the PSB was generated with CMPAT=YES, a dummy PCB is the first PCB in the PSB and must be accounted for when using PCB=
    n
    .
  • OUT=P | C
    (Optional) Specifies the number of records to write to the OUTDB data set. If omitted, no records are written.
    • P
      Writes the number of records corresponding to the number of records prepassed (OUT=P).
    • C
      Writes the number of records corresponding to the number of records "trial" compressed (OUT=C).
  • SKIP=
    nnnn
    (Optional) Specifies the number of input records to skip during IMSPASS execution to obtain a better cross-section of the segment type.
    Limits:
    decimal value from 1 to 9999.
    Example:
    SKIP=1 specifies the processing of records 2, 4, 6, and so on. SKIP=2 specifies processing of records 3, 6, 9, and so on.
  • SKIPTO=
    nnnn |
    BEGIN=
    key
    (mutually exclusive)
    (Optional) Specifies where to start prepass.
    • SKIPTO=
      nnnn
      Specifies the number of input records to skip before beginning prepass.
      Limits:
      decimal value from 1 to 99999
      Example:
      SKIPTO=1000 indicates start prepass at record 1001.
    • BEGIN=
      key
      Specifies the key at which prepass is to begin. Verify that the following rules apply:
      • This parameter follows the PCB or PCBNAME parameter.
      • The key specified has the same length as the segment key.
      • Code the key in character format (use multipunch for packed decimal representations). IMSPASS obtains the key length from IMS control blocks.
        If coding of the key requires use of column 71 of the input record, continuation is automatic. Do not code a comma to indicate continuation.
Example IMSPASS Execution JCL
The following example shows the IMSPASS execution JCL:
//*IMSPASS JOB //* //******************************************************************** //* * //* THE FOLLOWING JCL IS PROVIDED FOR IMS USERS TO * //* BUILD THE FILE DESCRIPTOR TABLE (FDT) //* //******************************************************************** //IMSPASS EXEC PGM=DFSRRC00,PARM=’DLI,IMSPASS, ...’  //STEPLIB DD DISP=SHR,DSN=ims-reslib //        DD DISP=SHR,DSN=ca-loadlib  (1)    other private libraries DD statements //DFSRESLB DD DISP=SHR,DSN=ims-reslib //PRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //TABL00 DD DISP=(,CATLG,DELETE),DSN=user.FDT.FILE, //UNIT=unit,VOL=SER=volser,SPACE=(TRK,(2,1)) //RECDEF DD * record definitions   (2) //* //OUTDB DD DISP=(,CATLG,DELETE),DSN=user.OUTDB.FILE, //                      UNIT=unit,VOL=SER=volser,SPACE=(TRK,(n,n)) //OUTFILE DD DUMMY,DCB=(LRECL=nn,BLKSIZE=nn) // ddname DD DISP=SHR,DSN=user.DBD   (3) //PARMFL DD *  SEG=segname,P=xxx, ... , ...   (4) //*
(1) The DSN assigned to the
CA Compress™ Data Compression for IMS
load library.
(2) RDL specification.
(3) The DDNAME and DSN of the DBD library for the specified segment.
(4) The IMSPASS parameter statement.
How to Share an FDT
Sharing the File Description Table (FDT) between segment types helps you save CSA storage (5 KB to 24 KB per segment type):
  • For RDL statements associated with an FDT that apply to several segment types and their data characteristics are similar, specify the following parameter in their SEGCC macros:
    FN=fdtname
    • fdtname
      Specifies the name of the common FDT.
    This technique is often employed when a large database has been partitioned into smaller, more manageable databases, each with essentially the same segment types. For example, if there were seven compressed segment types in each of 20 similar databases, we require only seven FDTs instead of 140.
  • For RDL statements associated with an FDT that applies to segments with different structure (for example, fixed and variable, different lengths, key lengths), specify the following parameter in the SEGCC macro:
    FN=(fdtname,SHR)
    The FDT must contain a type C1 field in its associated RDL. Only the type C1 data characteristics are extracted from the FDT, and these characteristics approximately matches the nonkey portion of the sharing segment.
    For example, if the FDT describes fields containing a mix of packed-decimal and character data, the current segment should have more or less the same mix. If the segment contained binary data, expansion rather than compression might result.
A shared FDT need not correspond to any single segment type, but may be a merge of several segment types. To construct such an FDT, follow these steps:
  1. Collect a representative data sampling from the various segments by running the IMSPASS utility for each, with the following specification:
    OUT=P specified in PARMFL DISP=(MOD,KEEP) on the OUTDB DD statement
  2. Run the File Prepass Utility using the OUTDB data set from step 1 as the input data set INFILE. Specify the RDL statement, Nx,ClVER, for the RECDEF, where x is the approximate average sequence field length. The average rather than the maximum sequence field length can be used, because for shared FDTs the RDL is not used to determine where compression starts.
  3. Run the FDTLOADR Utility.
  4. Unload the databases with the old DBD and old FDTs if any.
  5. For each segment type, code the SEGCC parameter
    FN=(fdtname,SHR).
  6. Reload the databases with the new DBD and FDT.
Review RDL with the OUTDB Data Set (Optional)
You can review and tailor your RDL specifications as needed using the OUTDB option in the IMSPASS utility. The revision of RDL with the OUTDB data set helps save the overhead of repeated accesses of the database.
The OUTDB sequential data set becomes the input data set (INFILE) to the File Prepass Utility. Descriptions for the P and C values of the PARM field are the same as described for the PARMFL DD statement of the IMSPASS Utility. After determining the proper RDL to use, execute IMSPASS again to create an FDT. Do not use the TABL00 file from the File Prepass Utility. For this reason, TABL00 is defined as a temporary data set.
To review RDL with the OUTDB data set, specify the following in the IMSPREPASS utility:
  • the OUTDB DD statement
  • the OUT parameter of the IMSPASS PARMFL.
Example File Prepass Utility JCL for RDL Revision
The following example shows the File Prepass Utility JCL for RDL revision: 
//*IMSPAS2 JOB //* //******************************************************************** //* * //* THE FOLLOWING JCL IS PROVIDED FOR  FOR IMS USERS TO * //* REVISE THEIR RDL SPECIFICATION * //* * //******************************************************************** //PREPASS EXEC PGM=SHRINK,PARM=’P=ALL,C=ALL //STEPLIB DD DISP=SHR,DSN=hlq.loadlib   (1) //PRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //INFILE DD DISP=OLD,DSN=user.outdb.file //OUTFILE DD DUMMY //TABL00 DD DISP=(,PASS),DSN=&&FDTFILE, //                      UNIT=unit,SPACE=(2048,(3,1)) //RECDEF DD * // revised RDL specification //*
(1) The DSN assigned to the
CA Compress™ Data Compression for IMS
load library.