Tim,

In one of your replies over on the CICS-L list you gave this reasoning for the 
design decision to use static inclusion of this "common" module:

"Just some background on why the static call to BA4C1426 was done in the first 
place.  This COBOL application is proprietary object-oriented programming (or 
as I like to call it obfuscation-oriented programming). So the BA4C1426 is the 
main data structure class that is a doubly linked list.  So almost every class 
uses it, and to improve on performance they statically linked it into almost 
all of the classes."

I would first question the application designers' original decision to 
statically include this module for performance reasons.  Did they actually 
measure the difference between static inclusion and dynamic calls to an 
external version of that data structure subroutine?  My (admittedly limited) 
understanding of the LE dynamic CALL mechanism is that reentrant dynamically 
CALLed modules are loaded only once and thereafter branched to directly (which 
obviously does include some LE overhead, but my unproved suspicion is that this 
LE overhead is quite small).

Considering that an OO COBOL module is almost certainly eligible to be compiled 
RENT and linked RENT,REUS,REFR, that means only one copy of the module resident 
for all callers, no matter how many there are.  The current application design 
ensures that in fact there are 11,000+ copies of this module, one in each other 
program that includes it.  As you have discovered, this is a maintenance 
nightmare when the common module needs to change for any reason.

If someone were to write a "driver" routine for this data structure subroutine 
to test all of its functions in a parameterized loop, then one could run two 
versions of that "driver" module, one statically linked and one using dynamic 
CALL and have the "driver" module exercise all the functions of the common 
module several hundreds of thousands or even millions of times to actually 
measure the performance difference.

Then you would have actual data on which to base a decision.
 
Just my USD$0.02 worth from the applications design and maintenance point of 
view.

HTH

Peter

> -----Original Message-----
> From: IBM Mainframe Discussion List [mailto:[email protected]] On
> Behalf Of Tim Zielke
> Sent: Thursday, March 08, 2012 12:50 PM
> To: [email protected]
> Subject: Re: JCL example to relink a CSECT into an existing load module
> 
> This would require a recompile of pretty much the entire application which
> is around 11,000 load modules.  This COBOL application is written in
> proprietary object oriented COBOL and each load module represents an
> object oriented class (for the most part).  So a recompile of the entire
> application would require a testing/migration effort that is too arduous
> for the application team.
> 
> However, if we can just change the statically compiled BA4C1426 program
> and relink it into the existing 11,000 load modules, it significantly
> reduces the scope of the change to something that is more manageable from
> a testing and migration effort.
> 
> Thanks,
> Tim Zielke
> CICS/MQ Systems Programmer
> Aon Hewitt
--


This message and any attachments are intended only for the use of the addressee 
and may contain information that is privileged and confidential. If the reader 
of the message is not the intended recipient or an authorized representative of 
the intended recipient, you are hereby notified that any dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by e-mail and delete the message and any 
attachments from your system.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to