IDMSFIX8 is a program developed to search non-SQL indexes by sweeping specified areas and examining each SR8 record encountered to see if the 'long key'
flag (x'04') in the SR8FLAGS field has been turned on. If this bit is on IDMSDBMS will incorrectly calculate the length of the key field to be moved which
can result in storage overlays within the VIB.
The bit was used by a very old version of DB-REORG (Pre-Release 12.0?) for an unknown purpose. If an index has not been processed with MAINTAIN INDEX or
some form of an unload/reload operation since that DB-REORG was run the bit may still be present within some SR8 records.
This flag bit should never be on in nonSQL indexes.
Rebuilding affected indexes FROM MEMBERS using the MAINTAIN INDEX utility will remove the invalid flags.
The IDMSFIX8 program can be used to detect and also to fix affected indexes.
Download and execute the attached IDMSFIX8 file as follows:
This is a tersed flat file using AMATERSE (TRSMAIN). You should upload the member to a sequential dataset with the following DCB characteristics:
RECFM=FB LRECL=1024 BLKSIZE=6144
You must run AMATERSE (TRSMAIN) to unpack this dataset. The output dataset created by the UNPACK function of AMATERSE is also a sequential file with the
following DCB characteristics:
RECFM=VS LRECL=28014 BLKSIZE=28018
After unpacking the member the output from your AMATERSE job can be run as input to an IEBCOPY job which will move the IDMSFIX8 load module into your
desired load library.
IDMSFIX8 must be run in local mode. If the OPTION UPDATE line is not included in the SYSIPT file the job will run in retrieval mode and simply report on
each of the areas specified on an AREA parameter. It is possible that you can run IDMSFIX8 against your production areas while they are active for the
purpose of reporting. False broken chain conditions should not be a consideration as the program does not walk any sets. It simply does an area sweep
looking for SR8 records.
If the area reports indicate any SR8s where the problem bit is turned on you would then have to run the utility for each of the affected areas with the
OPTION UPDATE parameter included. For an update run, the areas must not be active to any other IDMS job or CV. IDMSFIX8 will then rewrite each SR8 insuring
that the problem bit is turned off.
The JCL to execute this routine is the same as any other standard 18.5 local batch job. I have included the following as a sample.
//IDMSFIX8 EXEC PGM=IDMSFIX8
//STEPLIB DD DISP=SHR,DSN=MEN.C1300.TECHDC70.DBA185.LOADLIB
// DD DISP=SHR,DSN=MEN.C1300.RJW.R185.LOADLIB
// DD DISP=SHR,DSN=DIST.CAGJI5.PRODTGT.LOADLIB
// DD DISP=SHR,DSN=DIST.QA.CAGJI5.CUSTLOAD
//SYSJRNL DD DUMMY
//SYSIDMS DD *
//SYSIPT DD *