David Stephens wrote:
Hi Art,
I didn't find any noticeable performance degradation using DLLs vs
static binding. However I haven't done any serious testing.
Some other thoughts off the top of my head:
- DLLs have to be re-entrant - no problem with C modules, but your
Assembler modules may need some tweaking.
- XPLINK and non-XPLINK really don't mix. So if one module is called by
both, you'll either need two flavours (XPLINK and non-XPLINK), or write
an Assembler 'glue' routine that somehow gets around the problem. Two
flavours is much easier.
- If you're writing an Assembler module DLL to be called by an XPLINK
module, you'll need to use the EDCXPRLG and EDCXEPLG macros in place of
the normal LE CEEENTRY and CEETERM macros.
- If you have a C module with functions (no mainline code), I found that
you still need a main() statement to create a CEEENTRY entry point for
your module. Without this, LE won't play with your module.
- It took me some time to figure out side files, and that you need to
include them when binding the modules that will call your DLLs.
- It sounds like you've only got C programs calling DLLs, which is fine.
If you have COBOL or PL/1 programs, it's a lot harder.
Why do you say that? We have a couple of courses on creating
and using DLLs in multiple languages (Assembler, COBOL, PL/I,
and C) and it works fine. We have avoided XPLINK issues so I
can't comment on that; but in the non-XPLINK world I have had
no problems with DLLs.
See "Secrets of Inter-Language Communication in z/OS", a 3.5
day course that covers: declaring elementary items, structures,
and arrays; passing and receiving arguments, including return
values; static, dynamic, and DLL linkages, in Assembler, COBOL,
PL/I, and C; plus a lot more. Details:
http://www.trainersfriend.com/Language_Environment_courses/m520descr.htm
We also offer a one day extract of this course, "Creating and
Using DLLs in z/OS". Details:
http://www.trainersfriend.com/Language_Environment_courses/m525descr.htm
If you haven't found it already, the article at
http://www.ibm.com/developerworks/aix/library/au-bordercrossing/?S_TACT=105AGY06&
talks a lot about DLLs and XPLINK, and has other handy links.
David
Art Celestini wrote:
We have a variety of "CSECTs" that are statically bound into several
different load modules. These are mainly IBM C programs with a
smattering of Assembler. We are considering moving these into a set
of DLLs to reduce redundancy and simplify maintenance.
I am interested in any guidance list contributors might be willing to
offer in terms of dos and don’ts, gotchas, etc. regarding DLLs,
especially as it may apply to performance. One consideration is that
many of these modules are used in both batch and CICS, and in both XP-
Link and non-XP-Link environments. We are not opposed to the notion
of creating multiple DLLs for these different environments, if necessary.
Thanks in advance,
Art
==================================================
Art Celestini Celestini Development Services
Phone: 201-670-1674 Wyckoff, NJ
Kind regards,
-Steve Comstock
The Trainer's Friend, Inc.
303-393-8716
http://www.trainersfriend.com
z/OS Application development made easier
* Our classes include
+ How things work
+ Programming examples with realistic applications
+ Starter / skeleton code
+ Complete working programs
+ Useful utilities and subroutines
+ Tips and techniques
==> Check out the Trainer's Friend Store to purchase z/OS <==
==> application developer toolkits. Sample code in four <==
==> programming languages, JCL to Assemble or compile, <==
==> bind and test. <==
==> http://www.trainersfriend.com/TTFStore/index.html <==
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html