Using the non-XPLINK version of the Standard C++ Library and c89

A non-XPLINK Standard C++ Library DLL is available that provides Standard C++ Library support for CICS® and IMS™. The CICS subsystem does not support XPLINK linkage, rendering the XPLINK Standard C++ Library DLL supplied with the compiler inoperable under this subsystem. The non-XPLINK Standard C++ Library DLL allows support for the Standard C++ Library in the CICS and IMS subsystems, as of z/OS® V1R2. Since CICS does not support XPLINK linkage, a non-XPLINK DLL enables the Standard C++ Library under these subsystems.

Note: XPLINK 31-bit applications are supported under the IMS environment.

To use the non-XPLINK Standard C++ Library DLL, you must first link your object modules with the non-XPLINK system definition side-deck. Use the _CXX_PSYSIX environment variable to pass the non-XPLINK side deck information to c++/cxx. The _CXX_PSYSIX environment variable specifies the system definition side-deck list to be used to resolve symbols during the non-XPLINK link-editing phase. The following concatenation should be used:

export _CXX_PSYSIX=\
"_CXX_PLIB_PREFIX.SCEELIB(C128N)":\
"_CXX_CLIB_PREFIX.SCLBSID(IOSTREAM,COMPLEX)"

where _CXX_PLIB_PREFIX and _CXX_CLIB_PREFIX are set to a default (for example, CEE and CBC, respectively) during custom installation, or using user overrides.

It is only necessary to specify _CXX_PSYSIX in order to use the non-XPLINK side deck with IPA. Corresponding non-XPLINK IPA link step environment variables default to the value of _CXX_PSYSIX. To run a program with the non-XPLINK DLL, ensure that the SCEERUN data set containing the non-XPLINK DLL is in the MVS™ search path; that is, either specified in your STEPLIB or already loaded into LPA.

Performance

Due to peformance differences between XPLINK and non-XPLINK linkages, it is expected that an XPLINK program using the XPLINK Standard C++ Library DLL will outperform a non-XPLINK program using the non-XPLINK Standard C++ Library DLL.

It is possible to use the non-XPLINK DLL with an XPLINK application, although this is not preferred. A call to a function of different linkage than the callee will result in a performance degradation due to the overhead cost required to swap from one stack type to the other.