Planning to link-edit and run

There are certain considerations that you must be aware of before link-editing and running applications under Language Environment.

Language Environment resident routines for non-XPLINK applications, including those for callable services, initialization, and termination, are located in the SCEELKED and SCEELKEX libraries. Language Environment resident routines for XPLINK applications are located in the SCEEBIND and SCEEBND2 libraries. Language Environment dynamic routines are located in the SCEERUN and SCEERUN2 libraries. The Language Environment libraries are located in data sets identified with a high-level qualifier specific to the installation.

The following is a summary of the Language Environment libraries and their contents:
SCEERUN
A PDS which contains the runtime library routines needed during execution of applications written in C/C++, PL/I, COBOL and FORTRAN.
SCEERUN2
A PDSE which contains the runtime library routines needed during execution of applications written in C/C++ and COBOL.
SCEELKED
Contains Language Environment resident routines for non-XPLINK applications, including those for callable services, initialization, and termination. This includes language-specific callable services, such as those for the C/C++ runtime library. Only case-insensitive names of eight or less characters in length are contained in this library. This library must be used only when link-editing a non-XPLINK program.
SCEELKEX
Like SCEELKED, contains Language Environment resident routines for non-XPLINK applications. However, case-sensitive names which can be greater than eight characters in length are contained in this library. This allows symbols such as the C/C++ printf and pthread_create functions to be resolved without requiring the names to be uppercased, truncated, or mapped to another symbol. This library must be used only when link-editing a non-XPLINK program.
SCEEOBJ
Contains Language Environment resident definitions for non-XPLINK applications which may be required for z/OS UNIX System Services (z/OS UNIX) programs, such as the definition of the external variable symbol environ. SCEEOBJ must be used whenever link-editing a z/OS UNIX non-XPLINK program.
SCEECPP
Contains Language Environment resident definitions for non-XPLINK applications which may be required for C++ programs, such as the definition of the new operator. SCEECPP must be used whenever link-editing a program which includes any NOXPLINK-compiled C++ object modules.
SCEEBIND
Contains Language Environment resident routines for XPLINK applications, but is deprecated and may not be supported in a future release. Use SCEEBND2 instead.
SCEEBND2
Contains all Language Environment resident routines for XPLINK applications. This one library replaces the four libraries of resident routines for non-XPLINK applications. For XPLINK, this one library is used wherever the four libraries of resident routines (SCEELKED, SCEELKEX, SCEEOBJ, SCEECPP) had been used. It provides only a small number of resident routines, since most of the functions formerly provided in those static libraries are instead provided using dynamic linkage. SCEEBND2 must be used only when link-editing an XPLINK program.
SCEELIB
Contains side-decks for DLLs provided by Language Environment.

Many of the language-specific callable services available to XPLINK-compiled applications appear externally as DLL functions. See Building and using dynamic link libraries (DLLs) for information about DLLs. To resolve these references from XPLINK applications, a definition side-deck must be included when link-editing the application. The SCEELIB library contains the following side-decks in support of XPLINK :

  • CELHS001 — Side-deck to resolve references to Language Environment services when link-editing an XPLINK application. This includes both Application Writer Interfaces (AWIs, see z/OS Language Environment Programming Reference) and Compiler Writer Interfaces (CWIs, see z/OS Language Environment Vendor Interfaces). The entries in this side-deck replace the corresponding non-XPLINK resident routines in SCEELKED.

    The AWI stubs also exist as executables in SCEERUN, which can be loaded and run from non-XPLINK applications. This technique cannot be used with XPLINK applications.

  • CELHS003 — Side-deck to resolve references to callable services in the C/C++ runtime library when link-editing an XPLINK application. The entries in this side-deck replace the corresponding non-XPLINK resident routines in SCEELKEX, SCEELKED and SCEEOBJ.
  • CELHSCPP — Side-deck to resolve references to C++ runtime library (RTL) definitions that may be required when link-editing an XPLINK application. The entries in this side-deck replace the non-XPLINK resident routines in SCEECPP.

The functions in these side-decks can be called from an XPLINK application. However, they cannot be used as the target of an explicit dllqueryfn() against the DLL.