IBM Support

GIM23901E and IEW2736S - SMP/E APPLY or ACCEPT fails with RC=08

Question & Answer


Question

Why is my SMP/E APPLY or ACCEPT of maintenance to a product failing with GIM23901E and IEW2736S indicating I'm out of directory blocks when the SMP process was not adding new members?

When I look at the SMP CAUSER report, I find messages like this:

 CAUSER  FMID    MESSAGE ID PAGE ERROR DESCRIPTION AND POSSIBLE CAUSES  
 xxxxxxx yyyyyyy GIM23901E    33 LINK-EDIT PROCESSING FAILED FOR MODULE 
                                 modulename IN LMOD lmodname IN THE       
                                 zzzzzzzz LIBRARY. THE RETURN CODE WAS  
                                 12. THE SEQUENCE NUMBER WAS 000133. 

When I go down to page 33 (or whichever page is mentioned in the CAUSER report) I find the reason is that the target dataset has run out of directory blocks:

   IEW2736S DA10 THERE IS NO SPACE LEFT IN THE DIRECTORY FOR DDNAME xxxxxxxx.  STOW OF THE DIRECTORY 
   ENTRY MEMBER NAME modulename FAILED.  

Note: I've received message IEW2736S when applying CICS and CPSM PTFs. But, PTFs for any IBM product could cause this failure if the datasets are allocated with just the minimum directory blocks needed.

Answer

The problem may be that you were using all of the existing directory blocks, and the maintenance process updated some of them and the LINKEDIT process had a SETSSI xxxxxxxx parameter. The use of SETSSI introduces 'user data' to the directory entry. That user data for the SETSSI is 4 bytes long. If your directory entries didn't have user data before, but maintenance is adding it, you may need additional directory blocks if you were using all of the existing directory block space.

There is no single PTF that causes this. It may happen at any time, for any PTF you are APPLYing or ACCEPTing. The solution is to either reallocate the dataset with more directory blocks, or change the dataset to be a PDS/E, which is more dynamic in its space use.

To view the data in the directory entries, you can run IEHLIST with the LISTPDS command, as in the following JCL

 //STEP1    EXEC PGM=IEHLIST                       
 //SYSPRINT DD  SYSOUT=*                           
 //DD1      DD  UNIT=SYSDA,VOL=SER=AAAAAA,DISP=OLD 
 //SYSIN    DD  *                                  
  LISTPDS VOL=SYSDA=AAAAAA,DSNAME=my.dataset.name  
 /*                                                
 //                                              

The listing below shows the output from the LISTPDS command

  MEMBERS     TTRC     VARIABLE USER DATA ---(USER DATA AND TTRC ARE IN HEX)       
 TEMPNAM1  0002ED2C  0000000000 00000002C0 0038B00000 0000288C12 00010000          
 TEMPNAM2  0002EF2E  0000000000 00000002C0 0038B00000 0000289C12 0000201511 230100 

TEMPNAM1 was not linked using SETSSI. TEMPNAM2 was linked with 'SETSSI 20151123'

[{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SSGMGV","label":"CICS Transaction Server"},"Platform":[{"code":"PF035","label":"z\/OS"}],"Component":"Maintenance","Version":"","Line of Business":{"code":"LOB17","label":"Mainframe TPS"}}]

Product Synonym

CICS/TS CICSTS CICS TS CICS Transaction Server

Document Information

Modified date:
02 December 2015

UID

dwa1241877