ELIBs is a very solid solution to record the components of an element in the Endevor inventory.
But when elements are big or are growing to become so, issues can occurs, especially when their components are fragmented and/or the definition of the ELIB is not adjusted.
This knowledge document will allow you to anticipate and avoid most of the ELIBs sizing issues.
Example;
if an Endevor action fails and issues message C1LB003E, this document will help you resolve this problem.
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 library, i.e. Add, Transfer, etc.
Also, the document will be useful to investigate error C1LB023E.
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.
/*
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"