Language environments

IBM® Language Environment® provides the strategic execution environment for running your application programs written in one or more high level languages.

It provides not only language-specific run-time support, but also cross-language run-time services for your applications, such as support for initialization, termination, message handling, condition handling, storage management, and National Language Support. Many of Language Environment's services are accessible explicitly through a set of Language Environment interfaces that are common across programming languages; these services are accessible from any Language Environment-conforming program.

Language Environment-conforming programs can be compiled with the following compilers:

Start of changeBy default, the Language Environment infrastructure uses the 31-bit addressing mode. By specifying JVM=64, the Language Environment is changed to use the 64-bit addressing mode. By specifying JVM=3164, the dependent region will initialize a 31-bit Language Environment and a secondary 64-bit Language Environment to support 31-bit COBOL and 64-bit Java interoperability.End of change

Language Environment supports C, C++, and assembly language interoperability in a 64-bit addressing mode, but does not support COBOL and PL/I interoperability in a 64-bit addressing mode. Do not switch to JVM=64 if your Java application invokes either COBOL or PL/I. If the regions are switched to use JVM=64 inadvertently, and incompatible interoperable applications are running, the application might receive system or user abends.

The CEETDLI interface to IMS

The language-independent CEETDLI interface to IMS is provided by Language Environment. It is the only IMS interface that supports the advanced error handling capabilities provided by Language Environment. The CEETDLI interface supports the same functionality as the other IMS application interfaces, and it has the following characteristics:

  • The parmcount variable is optional.
  • Length fields are 2 bytes long.
  • Direct pointers are used.

Related reading: For more information about Language Environment, see z/OS Language Environment Programming Guide.

LANG= option on PSBGEN for PL/I compatibility

For IMS PL/I applications running in a compatibility mode that uses the PLICALLA entry point, you must specify LANG=PLI on the PSBGEN. Your other option is to change the entry point and add SYSTEM(IMS) to the EXEC PARM of the compile step so that you can specify LANG=blank or LANG=PLI on the PSBGEN. The following table summarizes when you can use LANG=blank and LANG=PLI.

Table 1. Using LANG= option in a Language Environment for PL/I compatibility
Compile exec statement is PARM=(...,SYSTEM(IMS)... Entry point name is PLICALLA Valid LANG= value
Yes Yes LANG=PLI
Yes No LANG=blank or LANG=PLI
No No Note: Not valid for IMS PL/I applications
No Yes LANG=PLI

PLICALLA is only valid for PL/I compatibility with Language Environment. If a PL/I application using PLICALLA entry at bind time is bound using Language Environment with the PLICALLA entry, the bind will work; however, you must specify LANG=PLI in the PSB. If the application is re-compiled using PL/I for z/OS® & VM Version 1 Release 1 or later, and then bound using Language Environment Version 1 Release 2 or later, the bind will fail. You must remove the PLICALLA entry statement from the bind.