Program IDMSFIX8 to detect and fix nonSQL indexes with invalid flag that causes storage overlays and various abends.

Document ID : KB000056447
Last Modified Date : 14/02/2018
Show Technical Document Details

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 *
 DMCL=your DMCL
 /*
 //SYSIPT DD *
 OPTION UPDATE
 AREA segname.areaname
 /*
File Attachments:
TEC619052.zip