Forward index path (recoup and CRUISE) parameters

The definitions for the forward path are used by recoup, by capture/restore utility, information and statistics environment (CRUISE), and by some z/TPFDF macros.

Included with the forward index path parameters are descriptions of how the parameters work and some brief examples. For more complete examples of basic indexing, see Basic indexing.

Read syntax diagramSkip visual syntax diagram,ID1=( NORECOUPRCPOPTIDX),#IT=-1,((ITK=X'80',ITK= indexpky,ID2=ID3=(,1CHKFCHK0NORECOUPORDRCISUB),INDEX=( dsndet, slot)RID= dsndet,ADR= addressloc,RCP= rccloc,FNR=0,FNR= version,FAL=4,FAL=12388M,DIT= dataid ),BASE= globalbase,FIELD= globalfield,GREG=REGR,GREG=REGC,GREG=REGS,CORE=NO,CORE=YES,DIS=0,DIS= disloc,ECB=0,ECB= ecbnbr,INB= initnab ,LEV=0,LEV= levval,MPFSTD=NO,MPFSTD=YES,LONGCHAIN=0,LONGCHAIN= chains,MPPRCD=ANY,MPPRCD=PRIMEOTHERcpuid,MPNXTD= nextid,MPNXTD=( nextid, versionnbr),MPPRCD=ANYPRIMEOTHERcpuid,MPRECD= previousid,MPRECD=( previousid, versionnbr),PFC= fwdchain,QUE=NO,QUE=YES,RANGE=0,RANGE= rangenbr,RCIDID= rcitag,RECOUP=YES,RECOUP=NO,RFC=YES,RFC=NO,STP=0,STP= n,TIMEOUT=1800,TIMEOUT= seconds,CBV=5,CBV= n,DBTAG=0,DBTAG= tag,DBTAG=(tag,MULTI)
Notes:
  • 1 If CHKF or CHK0 is not specified, the record code check (RCC) of the indexed file is in the RCP field of the index LREC.
ID1
Specifies additional considerations for recoup processing.
NORECOUP
Inhibits chain chasing during recoup, but CRUISE can use the recoup subtable when RECOUP=YES was specified to generate the subtable. When this parameter is specified in a file DBDEF statement, the ZRECP command does not recoup the file.
RCPOPTIDX
Enables recoup optimized chain chasing when top-level index files reference detail files that have the IMI and #BIT4 parameters specified in the DBDEF macro. For more information. see Requirements to use recoup optimized chain chasing.
#IT=-1
Specifies that all primary keys (for example, LREC IDs X'80', X'90', and X'A0') forward index the same file with the same recoup and CRUISE processing attributes (specified by the ID2 parameter).
ITK=indexpky
Specifies the primary key (LREC ID) of this index file, where indexpky is one of the following:
  • An equate that represents the primary key (for example, ITK=#GR00K80)
  • An explicit term that represents the primary key (for example, X'80').
You must specify only one ITK parameter for each primary key. All records that follow with the same primary key (for example, all LREC IDs of X'80') forward index the same file with the same recoup and CRUISE processing attributes (specified by the ID2 parameter).
Notes:
  1. The attributes specified with the ITK parameter remain in effect for a specified primary key until a new ITK parameter with a different primary key is specified.
  2. The ITK parameter can forward index more than one file by entering address slot arguments with the INDEX parameter.
  3. The ITK parameter must be the first parameter in the description of the index reference.
ID2
Specifies options that affect recoup and CRUISE processing. The ID2 parameter is used to describe references held in items. The position of the references is defined only once because the same description applies to each item. ID2 references are defined using CBV=1, CBV=2, CBV=4, or CBV=5. If a block contains a mixture of ID2 and ID3 references, recoup processes:
  1. All the ID2 references (specified in items)
  2. All the ID3 references (fixed position).
Notes:
  1. If the ID2 parameter is specified without the ORD parameter value, the reference is assumed to be a file address. For example, in the following definition, the index references to GR3NSR contain file addresses:
    ITK=X'80',ID2=,INDEX=(GR3NSR,0)
  2. For CBV=5:
    1. The first ID2 description for each primary key must be preceded by the ITK parameter.
    2. The ID2 parameter must be the first parameter in the description for any additional ID2 descriptions for the same primary key.
  3. For CBV=1, CBV=2, and CBV=4: The ID2 parameter must be the first parameter in the description of each reference.
ID3
Specifies options that affect recoup and CRUISE processing. The ID3 parameter is used to describe references held in fixed locations. Each reference is described separately because the reference is not held as a part of an item. If the block contains only ID3 references, CBV=3 is used to identify the structure. If a block contains a mixture of ID2 and ID3 references, they are defined using CBV=1, CBV=2, CBV=4, or CBV=5. In this case, recoup processes:
  1. All the ID2 references (specified in items)
  2. All the ID3 references (fixed position).
Notes:
  • The ID3 parameter must be the first parameter in the description of the reference.
  • If the ID3 parameter is specified without the ORD parameter value, the reference is assumed to be a file address.
CHKF
Specifies that the record code check (RCC) of the indexed file is the same as the record code check of this index file.
Note: The RCP parameter must be set to -1, or omitted.
CHK0
Specifies that recoup should use a record code check (RCC) of X'00'.
Note: The RCP parameter must be set to -1, or omitted.
NORECOUP
Allows the definition of the reference to be used by CRUISE, but the reference is not chain chased by recoup.
ORD
Specifies that the reference is an ordinal number and not a file address.
RCI
Specifies that this file contains a reference to a common detail file that is also referenced by another file and will use recoup chain chasing indicator (RCI) processing to avoid unnecessary (duplicate) chain chasing.
RCI processing for a database structure is specified as follows:
  • For each top-level index file in the structure, do the following:
    • Specify RCIDID=rcitag.
    • Specify both the MPNXTD and MPRECD parameters so that all top-level indexes for the same RCI are chain chased sequentially.
      Note: The first top-level index file definition only requires the MPNXTD parameter, and the last top-level index file definition only requires the MPRECD parameter.
    • Specify the MPPRCD parameter with a value of PRIME or a specific processor ID such that all IDs with the same RCIDID value will be processed on the same processor.
  • For each file that contains a reference to a detail file that is an RCI candidate, specify (ID2=(RCI),RID=....) or (ID2=(RCI),INDEX=....).
SUB
Indicates that there are subitems in items.
Note:
  • Subitems can be defined only in customer-format files. For more information, see Recoup and CRUISE parameters for processing customer-format files.
  • SUB is not allowed with the ID3 parameter.
  • SUB is not allowed if CBV=5 is specified or used as a default.
  • Subitems must have a fixed size and start at a fixed location in the item.
  • Each subitem contains a reference.
  • Specify the number of subitems using the CNT parameter or specify the location of a count field using the CPT parameter.
  • Specify the size of the subitem count field using the SSZ parameter.
INDEX=(dsndet,slot)
Start of changeIdentifies the file you are forward indexing, where dsndet and slot are the following values:
dsndet
A 6-character file (and DSECT) name of the detail or intermediate-index file that this index file is chained to.
slot
The 1- or 2-digit number of an index slot in an index LREC that contains a reference to the detail or intermediate-index file that this index file is chained to. This number must be the same as the index slot that is coded with the IFR parameter in the detail or intermediate-index file. For more information, see the IFR parameter in Backward index path parameters.
You can use the INDEX parameter as a shorter way to specify the forward index parameters when you use z/TPFDF basic indexing if all LRECs in the index file use the same size ADR fields. For example, specifying:
INDEX=(SAM5SR,0)
has the same effect as specifying:
RID=SAM5SR,ADR=SAM4FAD-SAM4REC,RCP=SAM4RCC-SAM4REC

Do not use the INDEX parameter to refer to a mixture of 4-byte and 8-byte ADR references in the same index file. The INDEX uses the address format of only the first index LREC that is described in the DSECT.

End of change
RID=dsndet
Identifies the file you are forward indexing, where dsndet is one of the following:
  • A 2-character decimal record ID of the detail or intermediate-index file (for example, RID=10).
  • A 4-character hexadecimal record ID of the detail or intermediate-index file (for example, RID=FDFD).
  • A 5 or 6-character DSECT name of the detail or intermediate-index file (for example, RID=SAM5SR).
  • The relative location of a field in the index file that contains the record ID of the detail or intermediate-index file (for example, RID=SAM4LAB-SAM4REC).
ADR=addressloc
Specifies the relative position of the address field, where addressloc is expressed as the location of the field that contains the file address (FAD) minus the location of the start of the first record (REC). For example,
  ADR=SAM4FAD-SAM4REC
RCP=rccloc
Specifies the relative position of the record code check, where rccloc is expressed as the location of the field that contains the record code check (RCC) minus the location of the start of the first record (REC). For example,
  RCP=SAM4RCC-SAM4REC
Note: When ID2=CHK0, ID2=CHKF, ID3=CHK0, or ID3=CHKF is specified, the RCP parameter must be set to -1, or omitted.
FNR=version
Identifies the version of a file that this file refers to, where version is a number from 0–254. The FNR value equals the FVN value of the referenced file. For example,
FNR=3

Refers to version 3 (FVN=3) of the referenced file.

FAL
Specifies the number of bytes that are used to hold the ordinal number when ID2=(ORD) or ID3=(ORD) is specified. A value of 8 must be used to specify an 8-byte file address reference to another file. The 8-byte file address may be a FARF6 file address or a FARF 3/4/5 file address in 4x4 mode. Specify FAL=8M for index files that are migrated to use FARF6. For more information about FARF6 migration, see FARF6 support for z/TPFDF.
DIT=dataid
Specifies the 2-byte data identifier (secondary key) of this index file for extended LRECs, where dataid is one of the following:
  • An equate that represents the 2-byte data identifier (for example, DIT=#GR00D1000)
  • An explicit term that represents the 2-byte data identifier (for example, X'1000').
Notes:
  • The dataid value must resolve to a value from X'0000'–X'FFFF'.
  • The DID=dataid value in the detail or intermediate-index file must be the same as the DIT=dataid value in this index file. For more information, see the DID parameter in Backward index path parameters.
BASE=globalbase
Specifies the global base for recoup chain chasing, where globalbase is the name of a format-1 global area. BASE, FIELD, and STP=1 are required together to specify that a subfile is referenced from a global field, for example:
STP=1,         * Special monitor
BASE=GLOBZ,    * Global area
FIELD=@KRPCA0  * Global field
Notes:
  • BASE and BASECOD are not allowed together.
  • The BASE parameter is supported only by recoup and is not supported by CRUISE.
FIELD=globalfield
Specifies the global field for recoup chain chasing, where globalfield is the name of a format-1 global field that contains a left-adjusted 4-byte file address to be chain chased. The BASE, FIELD, and STP=1 parameters are required together to specify that a subfile is referenced from a global field, for example:
STP=1,         * Special monitor
BASE=GLOBZ,    * Global area
FIELD=@KRPCA0  * Global field
Notes:
  • You cannot use 8-byte file addresses with this parameter.
  • The FIELD parameter is supported only by recoup and is not supported by CRUISE.
GREG
Specifies the register call for global base.
REGR
Specifies that R14 is the base register for global area 1.
REGC
Specifies that R14 is the base register for global area 3.
REGS
Specifies that R14 is the base register for global area 3.
Note: The GREG parameter is supported only by recoup and is not supported by CRUISE.
CORE
Specifies whether the file is located in main storage or on DASD.
YES
Specifies that recoup will retrieve a core block and copy the contents of the main storage file into the core block and pass it to the monitor.

The reference defined by the BASE parameter and the FIELD parameter (or defined by the BASECOD parameter) is a reference to a block in main storage, and not a file address.

NO
Specifies that the file is located on DASD and uses normal recoup processing.
Note: The CORE parameter is supported only by recoup and is not supported by CRUISE.
DIS=disloc
Specifies the location of a displacement field, which contains a displacement to be added to the ADR value in any ID3 reference, where disloc is the label of an area, a register, or an immediate value. If this is a CNT-type file, the displacement is also added to the value specified by the PIT parameter.
ECB=ecbnbr
Specifies the maximum number of entry control blocks (ECBs) that will be active to chain chase the primary (or anchor) records for this DBDEF, where ecbnbr is a decimal number.

The actual number of ECBs that can be active for this DBDEF might be greater depending on how the DBDEF macros are coded.

Note: If you do not specify this parameter or if you specify a value of 0, the number of ECBs that can be active to chain chase the primary records for this DBDEF is not restricted.
INB=initnab
Specifies the initial next available byte (NAB), where initnab is a numeric value.
Notes:
  • INB can only be specified for P-type files.
  • Although it cannot be specified for standard-format files (R-type and W-type, including W-type files containing T-type LRECs (T-type DSECTs)), the initial NAB value for standard-format files is X'1A' (the standard-format header is 26 bytes with 4-byte file addresses or 48 bytes with 8-byte file addresses).
LEV=levval
Specifies the ECB level control, where levval is a number in the range 0–7, which specifies the number of levels over which CRUISE will distribute available ECBs.

CRUISE does not recalculate the ECB distribution when the actual level count is less than the last recalculated level value. This may lead to less-effective ECB usage during chain chasing for some data structures. The use of the LEV parameter can help to prevent this.

When the LEV parameter value equals 0 (by default or if specified), the z/TPFDF product uses the following formula to distribute available ECBs over the levels (where actuallevels equals the actual number of levels at run time and maxecbs is the maximum number of ECBs you allow the z/TPFDF product to use):
for n = 0 to (actuallevels - 1)

   Level (actuallevels - n) = .8 * maxecbs * .5n
For example, if LEV=0 was specified and actuallevels equals 4 and maxecbs equals 200, the z/TPFDF product distributes ECBs as follows:
   Level 4  =  160    ***  Data level               ****
   Level 3  =   80    ***  Intermediate-index level ****
   Level 2  =   40    ***  Intermediate-index level ****
   Level 1  =   20    ***  Top-index level          ****

This distribution assumes that each level gets progressively larger. If your data structure progresses differently, use the LEV parameter to change the distribution.

When levval is less than the actual levels in the structure (for example, if levval equals 3 and the actual levels in the structure at run time equal 5 and maxecbs equals 200), the z/TPFDF product uses the following formula to distribute available ECBs over the levels.
for n = 0 to (levval - 1)

   Level (levval- n) = .8 * maxecbs * .5n
   Level 3  =  160    ***  Intermediate-index level ****
   Level 2  =   80    ***  Intermediate-index level ****
   Level 1  =   40    ***  Top-index level          ****
for n = 1 to (actuallevels - levval)

   Level (levval+ n) = 1.1n * Level levval ECBs
   Level 4  =  1.1 * 160
   Level 5  =  1.1 * 1.1 * 160

   Level 4  =  176    ***  Intermediate-index level ****
   Level 5  =  194    ***  Data level               ****
LONGCHAIN=chains
Specifies the number of overflow blocks that represents a long chain. If recoup detects a long chain, an informational message is sent to the prime console and an entry is added to the long chain log. The maximum value is 99 999 999. If the LONGCHAIN parameter is set to 0, long chain detection is inhibited.
Notes:
  • Only one informational message for each data structure (that is, for each top level index) is sent to the prime console.
  • The LONGCHAIN parameter only applies to z/TPFDF-type files and customer format (non-z/TPFDF) files that are defined in the DBDEF with a PFC position of the forward field. For chain chasing that does not process the forward chains of data files, such as for multiple ECB processing of B+Tree files, the LONGCHAIN parameter does not apply and long chains are not detected.
  • The LONGCHAIN parameter does not apply when z/TPFDF files are referenced from traditional files. For more information about traditional files, see z/TPFDF Programming Concepts and Reference.
MPFSTD
Specifies the priority for chain chasing a file.
YES
Specifies that this file and any other files with MPFSTD=YES specified must be chain chased before other files are chased.
NO
Specifies that this file will be chain chased after all files with MPFSTD=YES specified.
MPNXTD
Specifies the next z/TPF record structure or z/TPFDF file that chain chasing will start for when chain chasing is completed for this file.
nextid
The ID of the next record or file. Specify a 2-character alphanumeric value (for example, MPNXTD=AB), or a 4-character hexadecimal value (for example, MPNXTD=B075).
versionnbr
A version number that is used to identify file structures that have different layouts. Specify a number from 0 to 254.
MPPRCD
Specifies the ID of the processor where chain chase processing will be performed. If the specified processor is not active, the primary processor performs the chain chase at the end of recoup phase 1 processing. Specify one of the following values:
ANY
Specifies that this file can be chain chased on any processor that is used in the recoup run.
PRIME
Specifies that this file will be chain chased on the primary recoup processor.
OTHER
Specifies that this file will be chain chased on any processor other than the primary recoup processor.
cpuid
A 1-character identifier for the specific processor where this file will be chain chased.
MPRECD
Specifies the previous z/TPF record structure or z/TPFDF file that chain chasing must be completed for before chain chasing can begin for this file.
previousid
The ID of the previous record structure or file. Specify a 2-character alphanumeric value (for example, MPRECD=AB), or a 4-character hexadecimal value (for example, MPRECD=B075).
versionnbr
A version number that is used to identify file structures that have different layouts. Specify a number in the range 0 - 254.
PFC=fwdchain
Specifies the position of forward chain, where fwdchain equals the address of the forward chain minus the address of the beginning of the file, for example:
PFC=dsniFCH-dsniBID
Notes:
  • PFC or CPF is necessary if FCH is present.
  • PFC is not allowed with CPF.
  • PFC=-1 is used for a no forward chain file.
  • The value can also be specified as an absolute displacement.
  • For files with 4-byte file address header, the default value is 8 (STDFCH-STDHDR). For files with an 8-byte file address header, the default value is 16 (ISTD8_FCH-ISTD8_HDR).
QUE
Specifies whether the data structure is processed in recoup QUE-inhibited mode.
NO
Specifies that the file is not recoup QUE-inhibited; that is, the file address can pass references between subfiles during recoup.
If a file is accessed by passing its file address from one subfile to another, the file can be missed during recoup processing. Figure 1 shows how access to the "PR" file is controlled by passing its file address from one subfile to another (and setting the unused reference to X'0000'). If QUE=NO is specified, recoup is not QUE-inhibited and the "PR" file is not chain chased as explained in the following:
  • 1 The subfile addressed by "AAC" is chain chased.
  • 2 The subfile ("ZRH") has the file address of "PR".
  • 3 The file address of "PR" is passed from "ZRH" to "AAC".
  • 4 The subfile addressed by "ZRH" is then chain chased.
    Note: The "PR" file is not chain chased because the file address "ZRH" no longer has the reference to "PR".
Figure 1. QUE=NO parameter
Alternative text description not available.
YES
Specifies that the file is recoup QUE-inhibited; that is, the file address cannot pass references between subfiles during recoup. Recoup QUE-inhibited mode is specific to the airline QUEUING function and assumes the application environment is using the @BRCPQ global as the queue control indicator. While recoup is performing the queuing phase, BIT0 of the @BRCPQ global is set on. Applications should not pass references while this bit is set. The bit is turned off at the end of the queuing function.
Note: Whenever you specify QUE=YES on a DBDEF macro, you must specify the MPPRCD parameter with the same CPU ID (cpuid) so that all QUE-type DBDEFs are restricted to one CPU. You also must specify the MPNXTD parameter to ensure serial processing and correct lockout.
RANGE=rangenbr
Specifies the number of file address compute (FACE) program ordinals that a CRUISE or recoup root ECB chain chases for this DBDEF macro, where rangenbr is a decimal number in the range 0 - 65535. For databases that have a low ratio of pools to fixed files, you can allow more ordinals to be chain chased by one ECB to reduce contention.
Notes:
  • If you do not specify this parameter or specify a value of 0 or 1 for this parameter, each ECB chain chases one ordinal.
  • If this file has ID2 or ID3 embedded references (that is, the database is multiple levels), each ECB chain chases one ordinal during CRUISE processing.
  • You can use this parameter only when you specify a value in the range 1 - 5 for the CBV parameter.
RCIDID=rcitag
Specifies that this top-level index file will use recoup chain chasing indicator (RCI) (RCI) processing to avoid unnecessary (duplicate) chain chasing, where rcitag is a 2-character EBCDIC or 4-character hexadecimal value (for example, RCIDID=AB12). The rcitag identifies top-level index files that are in the same structure.
RCI processing for a file is specified as follows:
  • For each top-level file in the structure, do the following:
    • Specify RCIDID=rcitag.
    • Specify both the MPNXTD and MPRECD parameters so that all top-level indexes for the same RCI are chain chased sequentially.
      Note: The first top-level index file definition only requires the MPNXTD parameter, and the last top-level index file definition only requires the MPRECD parameter.
    • Specify the MPPRCD parameter with a value of PRIME or a specific processor ID such that all IDs with the same RCIDID value will be processed on the same processor.
  • For each file that contains a reference to a detail file that is an RCI candidate, specify (ID2=(RCI),RID=....) or (ID2=(RCI),INDEX=....).
RECOUP
Specifies whether the table used by the recoup utility and CRUISE is built for this data structure
YES
Specifies that a recoup table is built for the data structure; therefore, the ZRECP commands and CRUISE process this file.
NO
Specifies that a recoup table is not built for the data structure; therefore the ZRECP commands and CRUISE do not process this file. RECOUP=NO can be specified for non-z/TPFDF files that do not contain embedded references or forward chaining.
RFC
Specifies whether recoup verifies that the record code check (RCC) in an overflow block is the same as the RCC in the prime block.
YES
Specifies that recoup checks the RCC of the prime block and overflow blocks.
NO
Specifies that recoup does not check the RCC of the prime block and that overflow blocks are retrieved with an RCC of zero.
STP=n
Specifies the type of chain chasing monitor, where n is one of the following values:
0
Causes recoup and CRUISE to chain chase all the ordinals defined in the FACE file type for this file, starting with the lowest ordinal number (BOR) and ending with the highest ordinal number (EO#).
1
Specifies that references to this subfile are in a global location or core field.
Notes:
  • BASE and BASECOD require STP=1.
  • The STP=1 parameter is supported only by recoup and is not supported by CRUISE.
2–50
Reserved for IBM use.
51–255
Reserved for customer-specific chain chasing monitors.
TIMEOUT=seconds
Specifies the time-out value for chain chasing a file structure, where seconds is a number of seconds.

Timeouts can be related to timing problems caused by a faulty structure that causes loops in forward chain processing or by too many embedded references at the lower levels of a file structure. If there are too many embedded references, not enough ECBs are allocated to the lower levels and a timeout can occur. The LEV parameter can be used to adjust the number or ECBs that are allocated for each level during CRUISE processing.

CBV=n
Specifies the type of chain chasing monitor, where n is one of the following values:
1
Fixed-length type items in NAB or ADD/DEL files.
2
CNT type file.
3
Fixed-position-only references.
4
Variable-length type items in NAB or ADD/DEL files.
5
Specifies that the file is a standard-format file with LRECs with embedded pointers and a logical record ID.
6–50
Reserved for IBM use.
>50
Reserved for customer-specific recoup chain chasing monitors.
Note: If CBV does not equal 5 (for example, CBV=4), see Recoup and CRUISE parameters for processing customer-format files to include parameters that specify the location of fields.
DBTAG
Specifies an equate that is used to identify z/TPFDF files that are part of the same database structure. This value is used in conjunction with the DBDEF PACKINHI parameter during recoup to determine whether or not packing of this file should be inhibited. A file that has PACKINHI=YES (or PACKINHI=COND, if the file contains forward references) will be inhibited from packing during the entire duration of recoup chain chasing unless the DBTAG parameter is specified with a non-zero value on that file and is also specified with the same value on all corresponding top level index files. In that case, packing will only be inhibited while the database structure that the file is part of is being chain chased. That is, packing will only be inhibited while any file with the same DBTAG value is being chain chased.

To minimize the time where packing is inhibited during recoup, you must set the DBTAG parameter with a non-zero value.

Two examples follow that demonstrate how the DBTAG and PACKINHI parameters are used to control pack inhibiting during recoup chain chase processing.

Example 1: In this example, three different index files have a reference to the same data file. RCI is used for the reference to the data file. The user wants all indexes to be inhibited from being packed during recoup chain chase processing. The following shows a simple graphical representation of the database hierarchy and the corresponding DBDEFs.
         DBDEF FILE=XXXXXX,PACKINHI=YES,DBTAG=#UTAG256,                X
               RCIDID=AA,MPNXTD=YY,MPPRCD=PRIME,                       X
               (ITK=X'80',ID2=(RCI),INDEX=(AAAAAA,0))
         DBDEF FILE=YYYYYY,PACKINHI=YES,DBTAG=#UTAG257,                X
               RCIDID=AA,MPNXTD=ZZ,MPPRCD=PRIME,MPRECD=XX,             X
               (ITK=X'80',ID2=(RCI),INDEX=(AAAAAA,0))
         DBDEF FILE=ZZZZZZ,PACKINHI=YES,DBTAG=#UTAG258,                X
               RCIDID=AA,MPPRCD=PRIME,MPRECD=YY,                       X
               (ITK=X'80',ID2=(RCI),INDEX=(AAAAAA,0))              
         DBDEF FILE=AAAAAA,                                            X
               (IID=XXXXXX,IKY=80,PTH=0,IPA=0,ILA=0,IPK=0),            X
               (IID=YYYYYY,IKY=80,PTH=1,IPA=0,ILA=0,IPK=0),            X
               (IID=ZZZZZZ,IKY=80,PTH=2,IPA=0,ILA=0,IPK=0)    

Although all three indexes are part of the same database, three different database tags can be used as the pack inhibit setting can be set independently of each other. Packing of each index will be inhibited during the time it takes recoup to chain chase that index (including its references). Each index can be inhibited at a different time.

Example 2: In this example, three different index files have a reference to the same data file that has a forward reference to another data file RCI is used for the reference to data file 1. The user wants all indexes and data file 1 to be inhibited from being packed during recoup chain chase processing. The following shows a simple graphical representation of the database hierarchy and the corresponding DBDEFs.
Alternate text
			
         DBDEF FILE=XXXXXX,PACKINHI=YES,DBTAG=(#UTAG257,MULTI),        X
               RCIDID=AA,MPNXTD=YY,MPPRCD=PRIME,                       X
               (ITK=X'80',ID2=(RCI),INDEX=(AAAAAA,0))
         DBDEF FILE=YYYYYY,PACKINHI=YES,DBTAG=(#UTAG257,MULTI),        X
               RCIDID=AA,MPNXTD=ZZ,MPPRCD=PRIME,MPRECD=XX,             X
               (ITK=X'80',ID2=(RCI),INDEX=(AAAAAA,0))
         DBDEF FILE=ZZZZZZ,PACKINHI=YES,DBTAG=#UTAG257,                X
               RCIDID=AA,MPPRCD=PRIME,MPRECD=YY,                       X
               (ITK=X'80',ID2=(RCI),INDEX=(AAAAAA,0))              
         DBDEF FILE=AAAAAA,PACKINHI=YES,DBTAG=#UTAG257,                X
               (IID=XXXXXX,IKY=80,PTH=0,IPA=0,ILA=0,IPK=0),            X
               (IID=YYYYYY,IKY=80,PTH=1,IPA=0,ILA=0,IPK=0),            X
               (IID=ZZZZZZ,IKY=80,PTH=2,IPA=0,ILA=0,IPK=0),            X    
               (ITK=X'80',ID2=,RID=BBBBBB,ADR=4,RCP=8)  
         DBDEF FILE=BBBBBB

Because pack inhibiting is also set for data file 1, the top level indexes 1, 2, and 3 have to be grouped together using the same database tag and forced into sequential processing. The packing of Index 1, Index 2, Index 3, and Data File 1 will be inhibited during the time it takes recoup to chain chase all indexes (and their references).

tag
An equate defined in macro idbtag.mac that must represent a number from 256 to 1983 (1 to 255 are reserved for IBM use). All files that specify the DBTAG parameter in the same database structure must use the same tag value. That is, the same DBTAG value must be used for the file that is potentially inhibited from packing as is used with its corresponding top level indexes. A tag value that is not valid or a tag value of 0 is ignored.
MULTI
Used for top level index files to indicate during recoup processing that this database structure contains more top level IDs to process. All top level index files in a structure that have the DBTAG parameter specified must be processed sequentially by using the MPNXTD and MPRECD parameters. MULTI must be specified on all of these top level IDs except for the last ID in the sequence. The last top level ID in the sequence must not specify MULTI.

For more information about traditional files, see z/TPFDF Programming Concepts and Reference.