Multiple Library Member Search

The multiple library search facility provides logical concatenation of libraries for the purpose of member name searches.
capan146
The multiple library search facility provides logical concatenation of
Panvalet
libraries for the purpose of member name searches.
The PANDD1 DD or DLBL statement specifies the primary
Panvalet
library used by PAN#1.
Panvalet
always searches the primary library first for members. Allocate ddnames or DLBL PANDD11 through PANDD19 in your JOB STEP, or when executing PAN#1 under TSO to specify other, secondary
Panvalet
libraries to be searched (in that order) for member names. You can allocate these names using JCL or dynamically. These ddnames should not use the JCL SUBSYS= parameter.
Use the PANALLOC TSO command to allocate PANDD11 through PANDD19 for multiple library member search for ++INCLUDE processing with the
Panvalet
subsystem.
After
Panvalet
searches the primary
Panvalet
library, it then searches the secondary libraries in ddname or DLBL order until the member is found or until it searches all allocated
Panvalet
libraries.
You can specify up to nine secondary libraries using any ddnames or DLBL. If you allocate PANDD11 and PANDD13 but not PANDD12, both PANDD11 and PANDD13 are used to resolve each ++INCLUDE or ++WRITE request.
If you do not allocate secondary libraries, none are searched. All members specified on ++INCLUDE or ++WRITE statements must reside on the primary library to be resolved.
The multiple library search facility permits establishment of libraries of common subroutines or data descriptions that several application groups can share.
Examples
Each of the examples assumes that data set MY.PANLIB contains member MAIN, which contains ++INCLUDE statements for members INC001 and INC002. INC001 exists in data set MY.PANLIB and in data set MY.PANLIB2. INC002 exists in data sets MY.PANLIB1 and MY.PANLIB2. Expansion of ++INCLUDE statements is assumed to be the default.
Example 1
The following JCL causes the statements of INC001 from MY.PANLIB to replace the ++INCLUDE statement for INC001 in the output print file SYSPRINT (z/OS) or SYSLST (VSE). The ++INCLUDE statement for INC002 is not expanded because member INC002 is not found in the primary (only)
Panvalet
library and the statement appears unchanged in the output listing. For z/OS:
//MYJOB    JOB //STEP1    EXEC PGM=PAN#1 //SYSPRINT DD   SYSOUT=A //SYSIN    DD   * ++WRITE PRINT,MAIN //PANDD1   DD   DSN=MY.PANLIB,DISP=SHR     primary panlib For VSE: // JOB   MYJOB // ASSGN SYS006,... // DLBL PANDD1,'MY.PANLIB',99/365,DA       primary panlib // EXTENT SYS006 // EXEC PGM=PAN#1 ++WRITE PRINT,MAIN /*
Example 2
The following JCL causes the statements of INC001 from MY.PANLIB to replace the ++INCLUDE statement for INC001 in the output print file SYSPRINT (z/OS) or SYSLST (VSE). The statements of INC002 from MY.PANLIB1 replace the ++INCLUDE statement for INC002. For z/OS:
//MYJOB    JOB //STEP1    EXEC PGM=PAN#1 //SYSPRINT DD   SYSOUT=A //SYSIN    DD   * ++WRITE PRINT,MAIN //PANDD1   DD   DISP=SHR,DSN=MY.PANLIB     primary panlib //PANDD11  DD   DISP=SHR,DSN=MY.PANLIB1    secondary panlib 1 For VSE: // JOB   MYJOB // ASSGN SYS006,... // ASSGN SYS007,... // DLBL PANDD1,'MY.PANLIB',99/365,DA       primary panlib // DLBL PANDD11,'MY.PANLIB1',99/365,DA     secondary panlib 1 // EXTENT SYS006 // EXTENT SYS007 // EXEC PGM=PAN#1 ++WRITE PRINT,MAIN /*
Example 3
The following JCL causes the statements of INC001 from MY.PANLIB to replace the ++INCLUDE statement for INC001 in the output print file SYSPRINT (z/OS) or SYSLST (VSE). The statements of member INC002 from MY.PANLIB1 replace the ++INCLUDE statement for INC002 because MY.PANLIB1 is allocated to ddname or DLBL PANDD11. This comes first in collating sequence before PANDD12, the ddname or DLBL used to allocate MY.PANLIB2. For z/OS:
//MYJOB    JOB //STEP1    EXEC PGM=PAN#1 //SYSPRINT DD   SYSOUT=A //SYSIN    DD   * ++WRITE PRINT,MAIN //PANDD12  DD   DISP=SHR,DSN=MY.PANLIB2    secondary panlib 2 //PANDD11  DD   DISP=SHR,DSN=MY.PANLIB1    secondary panlib 1 //PANDD1   DD   DISP=SHR,DSN=MY.PANLIB     primary panlib
For VSE:
// JOB   MYJOB // ASSGN SYS006,... // ASSGN SYS007,... // ASSGN SYS008,... // DLBL PANDD1,'MY.PANLIB',99/365,DA       primary panlib // DLBL PANDD12,'MY.PANLIB2',99/365,DA     secondary panlib 2 // DLBL PANDD11,'MY.PANLIB1',99/365,DA     secondary panlib 1 // EXTENT SYS006,... // EXTENT SYS007,... // EXTENT SYS008,... // EXEC PGM=PAN#1 ++WRITE PRINT,MAIN /*
Example 4
The following JCL causes the statements of INC002 from MY.PANLIB1 to be written to the SYSPRINT (z/OS) or SYSLST (VSE) listing. Since INC002 is not found in MY.PANLIB, MY.PANLIB1 (the library associated with the next ddname or DLBL PANDD12) is searched next. Note that PANDD11 is missing. For z/OS:
//MYJOB    JOB //STEP1    EXEC PGM=PAN#1 //SYSPRINT DD   SYSOUT=A //SYSIN    DD   * ++WRITE PRINT,INC002 //PANDD13  DD   DISP=SHR,DSN=MY.PANLIB2    secondary panlib 2 //PANDD12  DD   DISP=SHR,DSN=MY.PANLIB1    secondary panlib 1 //PANDD1   DD   DISP=SHR,DSN=MY.PANLIB     primary panlib
For VSE:
// JOB   MYJOB // ASSGN SYS006,... // ASSGN SYS007,... // ASSGN SYS008,... // DLBL PANDD1,'MY.PANLIB',99/365,DA       primary panlib // DLBL PANDD13,'MY.PANLIB2',99/365,DA     secondary panlib 2 // DLBL PANDD12,'MY.PANLIB1',99/365,DA     secondary panlib 1 // EXTENT SYS006,... // EXTENT SYS007,... // EXTENT SYS008,... // EXEC PGM=PAN#1 ++WRITE PRINT,MAIN /*