Previous Topic: Dynamic Link OptionsNext Topic: Installation


Compile and Link-Edit External Action Block

You are responsible for compiling and link-editing the External Action Block. The EAB can either be statically linked (included in another module) or dynamically linked (its own module).

A static EAB can be called from a Compatibility module, a static module or a dynamic DLL. When linking a static EAB, do not link any DL/I, COBOL, DB2, CICS, or ISPF system modules into the load module for the External Action Block. The installation process links these modules into your final executable load module.

  1. When the static EAB is called from a Compatibility module and the statically linked EAB is to be built, you must use the following compile and link options:
  2. When the static EAB is called from either a static module or a dynamic DLL, the statically linked EAB must be built using the following compile and link options:

When the EAB has been packaged with Dynamically Link option of Yes, the EAB must be built as a DLL to be invoked by a generated application. Any module called by an EAB built as a DLL must also be a DLL. DLLs require that modules be bound as objects in Program Management Format 3 (PM3) and must reside in a PDSE library.

Important! Since External libraries are still in SYSLIB concatenation, if using the z/OS Library feature, you must ensure that none of the External System or External Action Block libraries contains an NCAL module named same as the called zLIB action blocks. Otherwise these zLIB action blocks will be statically included to the caller during linkedit through auto-call.

To build the EAB as a DLL, use the following compile and link edit options:

For information about DLLs, see IBM's Language Environment and the Program Management (Binder) documentation.

When the EAB has an associated Dynamically Link Packaging property set to Compatibility, the EAB must be built as a non-DLL. Modules marked for Compatibility must follow standard OS or LE linkage conventions and must operate in the same AMODE as the caller. These modules may not be DLLs and must be fully resolved programs, eligible for being the target of an OS style dynamic program call.

To build the EAB as a non-DLL, use the following compile and link-edit options: