How to locate a large element in an Endevor Library(ELIB)

Document ID : KB000098069
Last Modified Date : 25/05/2018
Show Technical Document Details
Introduction:
ELIBs is a very solid solution to record the components of an element in the Endevor inventory. But when elements are big or growing to become so, issues can occurs, especially when their components are fragmented and / or the definition of the ELIB is not adjusted.
If an Endevor action fails and issues message C1LB003E, this document will help you resolve this problem.
Also, the document will be useful to investigate error C1LB023E.
Background:
Most of the time the error C1LB003E occurs when moving an element which size that exceeds the "Reserve Threshold" defined for this library.  
Using this technical document, you will be able to anticipate and resolve such issue, in order to do so, you have to identify the large member at the source of the action from the related ELIB dataset.
For example, in case of a Move action of an element from ENV1 stage 1 to ENV1 stage 2, the information about member that causes the error C1LB003E in the Stage 2 ELIB must be researched in the "FROM location" of the move, i.e. the Stage 1 ELIB.
The same situation can occurs for any action updating a libray, i.e. Add, Transfer, etc.
Environment:
z/OS
Instructions:
Follow these steps:

1 - Gather Information:

In case of issue, look at the C1MSGS1 of the failing job and identify the Endevor ELIB and member in the C1LB003E message.
Identify the related ELIB defined at the source of the action from the Type definition.
In case you want to anticipate the move of a large element, identify the related ELIB defined at the source of the action from the Type definition.

Run BC1PNLIB to gather information about the member(s) stored in the ELIB defined in the "FROM location" of the action :

Command is "INQUIRE DDNAME=ELIB OPTION MEMBERS"

The JCL to run the INQUIRE would be:

//ELBINQR EXEC PGM=BC1PNLIB
//STEPLIB  DD DISP=SHR,DSN=xxx.xxxxxx.CSIQAUTU
//         DD DISP=SHR,DSN=xxx.xxxxxx.CSIQUATH
//CONLIB   DD DISP=SHR,DSN=xxx.xxxxxx.CSIQLOAD
//ELIB1    DD DISP=SHR,DSN=YOUR.ENDEVOR.ELIB.FILE.NAME
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//BSTERR   DD SYSOUT=*
//SYSIN    DD *
  INQUIRE DDNAME=ELIB1
  OPTION MEMBER
/*


2 - Analyze the Results:

The listing shows each member and provides the following information:

...+....10...+....20...+....30...+....40...+....50...+....60...+....70...+....80...+....90...+....100..+....110..+....120..+....130
    MEMBER=ELSL0001   START PAGE #      896 END PAGE     1281 STAMP #        7 # RECS   390000 # BYTES  1560917 # PAGES  386  C      
           /   ENV1     SYS0001  SSY0001  EELB0001   TYP0001  2 0001.0001 15/355 04:25 0      
        

The number of pages is located from column 121 to 125,  the range for pages number is 1-99999

example:
Use command "f p'#' 122 122" to research member with more than   999 pages.
Use command "f p'#' 123 123" to research member with more than     99 pages.
Use command "f p'#' 124 124" to research member with more than       9 pages.

The member name is available in the first line at the 13th column
The element name is available in the next line at the 44th column

You can use the FIND command to locate the element and member name.

3 - Review the ELIB definition:                                                          

Now that you have the information from the listing and found the large member, you have to adjust your ELIB with an accurate RESERVE PAGES value.
Using the sample above, notice the largest member is 386 Pages, then a "RESERVE PAGES" size of at less 386 will match the requirement.
Also, in case of error C1LB003E, you need to expand the ELIB by forcing the allocation of more secondary space before to rerun the action.

However the member fills 386 pages, the reserve page must be changed to a minimum of 386.
Regarding the secondary space allocation, a value of 792 is adequate because it includes the number of pages necessary to store element EELB0001 and the "RESERVE PAGES" value, i.e., 386+386=792.    

4 - Fix the ELIB definition

This operation is done in the two following steps:

- Allocate more secondary space:

Run BC1PNLIB utility with "EXPAND" function.

The JCL to run the INQUIRE would be:

//ELBEXPD EXEC PGM=BC1PNLIB
//STEPLIB  DD DISP=SHR,DSN=xxx.xxxxxx.CSIQAUTU
//         DD DISP=SHR,DSN=xxx.xxxxxx.CSIQUATH
//CONLIB   DD DISP=SHR,DSN=xxx.xxxxxx.CSIQLOAD
//ELIB1    DD DISP=SHR,DSN=YOUR.ENDEVOR.ELIB.FILE.NAME
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//BSTERR   DD SYSOUT=*
//SYSIN    DD *
  EXPAND  DDNAME = INITVSAM
  ALLOCATE PAGES = 792
  .
  INQUIRE DDNAME=ELIB1.
/*


- Adjust the ELIB definition:

Run BC1PNLIB utility with "ADJUST" function.

The JCL to run the INQUIRE would be:

//ELBADJT EXEC PGM=BC1PNLIB
//STEPLIB  DD DISP=SHR,DSN=xxx.xxxxxx.CSIQAUTU
//         DD DISP=SHR,DSN=xxx.xxxxxx.CSIQUATH
//CONLIB   DD DISP=SHR,DSN=xxx.xxxxxx.CSIQLOAD
//ELIB1    DD DISP=SHR,DSN=YOUR.ENDEVOR.ELIB.FILE.NAME
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//BSTERR   DD SYSOUT=*
//SYSIN    DD *
  ADJUST   DDNAME = INITVSAM
  ALLOCATE PAGES = 792
  RESERVE PAGES  = 386
  .
  INQUIRE DDNAME=ELIB1.
/*
Additional Information:

For further information about Elibs and their utilities please refer to

- The section "Setting Up ELIB Data Sets"

- Technical document  "Tips and Techniques for Managing Endevor Elibs"