Copying from a PDS to a PANLIB is easy using PAN0, unless the members already exist.
Using the PAN0 utility to copy members for a PDS to a PANLIB is documented in
Chapter 4 of the Extended Features Guide, but PAN0 does not recognize REPLACE.
When members pre-exist in the PANLIB, this process can be used:
NOTES:
Sample JCL:
//STEP EXEC PGM=PAN#2
//PANDD1 DD DSN=old.panlib,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSPUNCH DD SYSOUT=*
//SYSIN DD *
++ATTRIBUTE
/*
//STEP EXEC PGM=PAN#4
//SYSPRINT DD SYSOUT=*
//PANDD1 DD DSN=NEW.PANLIB,DISP=(,CATLG),
// UNIT=SYSDA,SPACE=(CYL,(5,1)),
// DCB=(DSORG=PS,BLKSIZE=10790),VOL=SER=volser
//SYSIN DD *
++CLEAR DATASETS=nnnnn # of members in the new PANLIB
/*
//STEP EXEC PGM=PAN#1
//PANDD1 DD DSN=NEW.PANLIB,DISP=SHR
//PANDD2 DD DUMMY
//PANDD3 DD DUMMY
//INBPAM DD DSN=YOUR.INPUT.PDS,DISP=SHR
//INBSAM DD DSN=YOUR.INPUT.PDS,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
++USING PAN0
++ADD *
/*
//STEP EXEC PGM=PAN#2
//PANDD1 DD DISP=SHR,DSN=NEW.PANLIB
//PANDD2 DD DISP=(NEW,CATLG),DSN=new.protection.file,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120),
// UNIT=SYSDA,SPACE=(CYL,(?,?))
//PANDD3 DD DUMMY
//SYSPRINT DD SYSOUT=*
//SYSPUNCH DD SYSOUT=*
//SYSIN DD *
++DUMP
/
//STEP EXEC PGM=PAN#2
//SYSPRINT DD SYSOUT=*
//PANDD1 DD DSN=old.panlib,DISP=SHR
//PANDD2 DD DUMMY
//PANDD3 DD DSN=new.protection.file,DISP=SHR
//SYSIN DD *
++REP name1,ZZZZZZZ
/* /*
name1 must be an existing member name. ZZZZZZZZ must be in ascending sequence, but need not be an existing member name.
When this command is processed without any parameters, the latest version of each member on the entire protection file is restored to the PANLIB.