Discussion:
Dynamic Proclib?
Zachary Kline
2008-07-26 00:52:10 UTC
Permalink
Hi,
In preparation for installing some compilers on my system, I felt I
should perhaps apply the Dynamic Proclib modification from Brian
Westerman. I don't know much about how it works, but I feel that with
suitable backups I should perhaps give it a shot. That being the case,
I was wondering exactly what it'll enable me to do? (I believe I
understand the theory that it lets one execute procedures from another
dataset besides sys1.proclib.) What I'm missing are the steps if any
I'd need after I installed the modification.
Also, since I'm not running the Turnkey
system, I wonder if I'll have the required
datasets or modules in place to handle it. Any thoughts?
Thanks much,
Zack.
somitcw
2008-07-26 02:10:18 UTC
Permalink
Post by Zachary Kline
Hi,
In preparation for installing some compilers
on my system, I felt I should perhaps apply the
Dynamic Proclib modification from Brian Westerman.
I don't know much about how it works, but I feel
that with suitable backups I should perhaps give
it a shot. That being the case, I was wondering
exactly what it'll enable me to do? (I believe I
understand the theory that it lets one execute
procedures from another dataset besides
sys1.proclib.) What I'm missing are the steps if
any I'd need after I installed the modification.
Also, since I'm not running the Turnkey system,
I wonder if I'll have the required datasets or
modules in place to handle it. Any thoughts?
Thanks much,
Zack.
Dynamic PROCLIB support might be fun but I've
always preferred what JES2 for MVS 3.8j has
built in. If you have a copy of dynamic PROCLIB
support for MVS 3.8j, it should be easy to apply.
You shouldn't need anything for it from any
Tur(n)key system.

MVS 3.8j JES2 allows several PROCxx DD
statements and several PROCLIBs concatinated
on each PROCxx DD statement:

Sample SYS1.PROCLIB(JES2):

//JES2 PROC P0=SYS1,
// P1=SYS2,
// N1=SYS1,
// P=JES2PARM,
// M=JES2PARM
//IEFPROC EXEC PGM=HASJES20,TIME=1439
//PROC00 DD DISP=SHR,DSN=&P0..PROCLIB
// DD DISP=SHR,DSN=&P1..PROCLIB
//PROC01 DD DISP=SHR,DSN=SYS1.PROCLIB.TEST
//HASPPARM DD DISP=SHR,DSN=&N1..&P(&M)
//HASPLIST DD DDNAME=IEFRDER
//* STEPLIB DD DISP=SHR,DSN=SYS1.LINKLIB

To call for any JES2 PROCxx DD statement
other than PROC00 the JCL needs a /*JOBPARM
statement after the JOB statement but before
the first EXEC statement that specifies either
PROCLIB= or P= like:

/*JOBPARM PROCLIB=PROC01
/*JOBPARM P=PROC01

Warning: Warning: Warning:
Any data set in the JES2 PROC must be catalogged
in the master catalog or the JCL must specify
UNIT and VOLume information. I suggest that
you use data set high level qualifier SYS1 since
it is always in the master catalog.

Watch out for mixing different BLKSIZEs in
the same concatination. If you must mix, you
should either put the largest BLKSIZE first or
override the BLKSIZE of the first data set in
the concatination. Current systems don't have
the problem but I don't believe that anyone
has fixed MVS 3.8j. Sample BLKSIZE override:

//PROC00 DD DISP=SHR,DSN=SYS1.PROCLIB,DCB=BLKSIZE=6160
//PROC00 DD DISP=SHR,DSN=SYS2.PROCLIB
If for the JES2 PROC, above assumes that SYS2
data sets are catalogged in the master catalog.
Gerhard Postpischil
2008-07-26 04:15:18 UTC
Permalink
Post by Zachary Kline
should perhaps apply the Dynamic Proclib modification from Brian
Westerman. I don't know much about how it works, but I feel that with
suitable backups I should perhaps give it a shot. That being the case,
I was wondering exactly what it'll enable me to do? (I believe I
understand the theory that it lets one execute procedures from another
dataset besides sys1.proclib.) What I'm missing are the steps if any
I'd need after I installed the modification.
The primary advantage of dynamic PROCLIB support is the
separation of systems support and maintenance from that of your
own procedures. To give you just two examples, I worked for a
service bureau, and we used dynamic proclibs to allow our
customers to define and use their own procedures without having
to worry about name collisions or parameter incompatibilities.
Later on I worked for an ISV, where each developer and each
product had distinct libraries. Since the system libraries were
protected from alteration by non-systems staff, this allowed us
rapid development without having to wait on the systems group to
add or update procedures.

On your own dedicated system, dynamic libraries are fun, but not
particularly useful. As "somitcw" showed, you can just define
your own proclib and add it to JES2, without changing your JCL
(unless you want to).

Once you have DP installed, the facility is invoked by placing a
DD card after the JOB card, prior to your first PROC or EXEC
card. For MVT and MVS systems, the DD has a required name
(either JOBPROC or PROCLIB - see your documentation), a
DISP=SHR, DSN=name.of.your.proclib, and optionally a UNIT= and
VOL=SER= (if not cataloged or to override a cataloged ds). Some
versions permit DD concatenation, but not any I ever worked
with. Also note that you may encounter problems if you submit a
job with such a proclib while a batch job has the library
enqueued (e.g., IEBCOPY compress with DISP=OLD, or a member update).

Gerhard Postpischil
Bradford, VT
brian_westerman
2008-07-28 05:06:21 UTC
Permalink
The actual purpose was just as the last person stated, to provide a
means for allowing a user to use their own procs. You can test out
changes to PROCs without updating the system PROC00 concatenation.
Later versions of JES2 added this same type of support. (JCLLIB)

It comes in handy, especially when you make a mistake.:)

Brian Westerman

Loading...