In TPX user exit TPXUGACB, what is the maximum value to specify for NUMENTRY, the number of table entries in the ACB assignment table?

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

Issue: 

 

The production system is using the TPXUGACB exit with NYMNTRY=3000.  If the system is up for more than about 50 days, the incore table is full and we start having abends:

TPXUGACB - INCORE SAVED ACB TABLE FULL 
DUMP TITLE=TPX990E ABEND S0C1 - MODULE=TPXUGACB, TASK=EXITTASK 

 

Recycling TPX resolves this.  

I tried to increase the table, first to 4000 and then to 3500, using the test system.   When I start TPX in test using these higher values, it will not come up.  It fails with U0031: 

IEA995I SYMPTOM DUMP OUTPUT  184                                  
  USER COMPLETION CODE=0031                                       
 TIME=13.41.49  SEQ=00230  CPU=0000  ASID=0021                    
 PSW AT TIME OF ERROR  070C1000   8003A52C  ILC 2  INTC 0D        
   ACTIVE LOAD MODULE           ADDRESS=0003A3E0  OFFSET=0000014C 
   NAME=TPXGTSTR                                                  
   DATA AT PSW  0003A526 - 00181610  0A0D9104  049F47E0           
   AR/GR 0: 00000000/80000000   1: 00000004/8000001F              
         2: 00000000/00019000   3: 00000000/00000000              
         4: 00000000/00000000   5: 00000000/21764000              
         6: 00000000/008D6FC8   7: 00000000/00000000              
         8: 00000000/80000000   9: 00000000/00000000              
         A: 00000000/80010712   B: 00000000/00022038              
         C: 00000000/0003A420   D: 00000000/006B8F48              
         E: 00000000/80030870   F: 00000000/006B8EB8              
 END OF SYMPTOM DUMP                                              

 

In TPX user exit TPXUGACB, what is the maximum value to specify for NUMENTRY, the number of table entries in the ACB assignment table?

 

Cause: 

From the delivered TPXUGACB SRC:
 
GETSTOR BYTES=AATLEN
...
AATENT   DSECT                                              
AATUID   DS    CL8                                          
AATSID   DS    CL8                                          
AATAPID  DS    CL8                                          
AATACB   DS    CL8                                          
AATENT#  EQU   *-AATENT             LENGTH OF SINGLE ENTRY  
NUMENTRY EQU   500                  NUMBER OF TABLE ENTRIES 
AATLEN   EQU   AATENT#*NUMENTRY     TABLE SIZE              
 
 
So each of the 4 fields in AATENT (ACB assignment table) has a character length of 8 bytes for a total of 32 bytes.
 
AATLEN = 32 * NUMENTRY
 
32 x 4000 = 128000 bytes 
32 x 3500 = 112000 bytes 
 
The problem with these values is that TPXUGACB exit is doing a GETSTOR call for 128000 bytes of storage.
 
The U031 abend occurs because the maximum request allowed by z/OS is for 100,000 bytes.
 
 

Resolution:

The maximum value that should work for NUMENTRY is 100,000/32 = 3125. 

If you find that 3125 is not sufficient then you need to identify why you are using this exit.

 

Additional Information:

TPX 5.4 documentation: ACB Selection Exit