On the mainframe, programs are compiled and linked into load modules. A compiled program may have one or more entry points (e.g. a COBOL program may have one or more ENTRY statements defining its entry points). When linked into a load module, each of the entry point names is exposed to allow them to be invoked at run time. Before running an application, the load modules required by the application need to be defined to the operating system, typically by allocating them to the JOBLIB or STEPLIB DD name. At run time, the operating system searches through the defined set of load modules, in the order in which they have been defined, for the name of a program requested to be invoked (e.g. the program name specified by the PCT entry associated with a CICS transaction, or the program name specified by an EXEC PGM=pgmname statement in a batch job). Any program subsequently dynamically invoked by the application will be located in exactly the same way
IDENTIFICATION DIVISION. PROGRAM-ID. A. ... PROCEDURE DIVISION. ... ENTRY 'X'. ... ENTRY 'Y'. ... ENTRY 'Z'. ...When compiled and linked on the mainframe, the resulting load module (e.g. MYUID.TEST.LOAD) would have the main entry point A and the alternate entry points X, Y and Z exposed as MYUID.TEST.LOAD(A), MYUID.TEST.LOAD(X), MYUID.TEST.LOAD(Y) and MYUID.TEST.LOAD(Z). The following snippet of JCL shows how entry point Y would be invoked in batch:
... //MYSTEP EXEC PGM=Y //STEPLIB DD DSN=MYUID.TEST.LOAD,DISP=SHR ...
Using Enterprise Server for .NET, the program A in the example above would typically be compiled to an assembly named A.dll and deployed to one of the program locations defined in the region startup file to make it available for run-time invocation. However, by default, only the main entry point A (i.e. the name of the assembly that was created when the source was compiled) would be visible to Enterprise Server for .NET. The entry points X, Y and Z would not be visible until the assembly A.dll had been loaded. This would mean that the example JCL snippet above would result in an S806 abend (program not found) at run-time if A.dll had not been loaded.
To resolve this problem, Enterprise Server for .NET provides the capability for associating entry point names with the assembly in which they reside through use of Entry Point Name Mappings in the Region Startup File Editor.