Downward compatibility considerations
As of OS/390® Version 2 Release 10, Language Environment provides downward compatibility support. Assuming that required programming guidelines and restrictions are observed, this support enables programmers to develop applications on higher release levels of the operating system, for deployment on execution platforms that are running lower release levels of the operating system. For example, you may use OS/390 V2R10 or later (and Language Environment) on a development system where applications are coded, link edited, and tested, while using any supported lower release of OS/390 (and Language Environment) on their production systems where the finished application modules are deployed.
Downward compatibility support is not the roll-back of new function to prior releases of the operating system. Applications developed exploiting the downward compatibility support must not use Language Environment function that is unavailable on the lower release of the operating system where the application will be deployed. The downward compatibility support includes toleration PTFs for lower releases of the operating system (specific PTF numbers can be found in the PSP buckets), to assist in diagnosis of applications that violate the programming requirements for this support.
The downward compatibility support provided by OS/390 V2R10 and later, and by the toleration PTFs, does not change Language Environment's upward compatibility. That is, applications coded and link-edited with one release of Language Environment will continue to execute on later releases of Language Environment, without a need to recompile or relink-edit the application, independent of the downward compatibility support.
- The application must only use Language Environment function that is available on the release level of the operating system used on the target deployment system.
- The application must only use Language Environment function that is available on the release level of the operating system used for developing and link-editing the application, by using the appropriate Language Environment object libraries, header files, and macros.
- The release level of the operating system used for application development and link-editing must be at least the level that is the prerequisite of the compiler product(s) (C/C++, COBOL, Fortran, PL/I) that are used to develop the application.
- The release level of the operating system used on the target deployment system must be at least the level that is the prerequisite of the compiler products that are used to develop the application.
- The release level of the operating system used for application development and link-editing must be at least OS/390 V2R10.
- The program object format of the application must be no greater than the highest level supported on the target deployment system.
- Language Environment callable services (see z/OS Language Environment Programming Reference).
- Language Environment runtime options
- C/C++ library functions
- UNIX branding functions
- Other new language functionality that has an explicit operating system release prerequisite that is documented in the user publications. For example, with OS/390 V2R9 Language Environment, new support was added so that COBOL programs could dynamically call a reentrant C routine with constructed reentrancy without using #pragma(xxx,COBOL). This support is available on OS/390 V2R9 Language Environment or later, but is not available on prior releases.
The compiler products that support development of downward compatible applications are listed in the table below, along with their prerequisite minimum release level of the operating system. (Prior releases of the compilers beyond those listed in the table are still supported by Language Environment, but do not provide downward compatibility. They only support upward compatibility.)
Compiler product | OS/390 release level prerequisite |
---|---|
Enterprise COBOL for z/OS | OS/390 V2R10 |
COBOL for MVS™ & VM, V1R2 | OS/390 V2R6 |
COBOL for OS/390 & VM, V2R1 | OS/390 V2R6 |
COBOL for OS/390 & VM, V2R2 | OS/390 V2R6 |
PL/I for MVS & VM | OS/390 V2R6 |
OS PL/I 2.3 | OS/390 V2R6 |
OS/390 C/C++ compiler | OS/390 V2R10 |
VS Fortran 2.6 | OS/390 V2R6 |
- Options Processing: Whenever an application exploits Language Environment runtime options that are unavailable on the release of the operating system the application is executed on, a message will be issued. In order to issue this message, toleration PTFs are available down to OS/390 V2R6, and you must apply them on the target system. The use of environment variables, even specific Language Environment ones, is not covered by this support.
- Detection of unsupported function: In many cases where a programmer disregards the requirements and programming guidelines and exploits a Language Environment function that is unavailable on the release of the operating system the application is executed on, Language Environment will raise a new condition. With an unhandled condition, the application is terminated. In order to raise this new condition, toleration PTFs are available down to OS/390 V2R6, and you must apply them on the target system.
- C/C++ headers: As of OS/390 V2R10, support has been added to the C/C++ headers shipped with Language Environment to allow application developers to "target" a specific release, in order to ensure the application hasn't taken advantage of any new C/C++ library function. See z/OS XL C/C++ User's Guide for details of how the TARGET compiler option can be used to create downward-compatible applications and prevent application developers from using new C/C++ library functions in applications.
- Detection of unsupported program object format: If the
program object format is at a level which is not supported by the
target deployment system, then the deployment system will produce
an abend when trying to load the application program. The abend will
indicate that DFSMS/MVS was
unable to find or load the application program. Correcting
this problem does not require the installation of any toleration PTFs.
Rather the application developer will need to recreate the program
object which is compatible with older deployment system. For information
on using the Program Management binder COMPAT option, see z/OS MVS Program Management: User's Guide and Reference. Note: Starting with z/OS® V1R8, the c89 utility is no longer by default passing COMPAT = CURRENT option to the program management binder. Program objects created by the c89 utility and native program management binder invocations will use the default COMPAT = MIN.