Common features of the z/OS XL C and XL C++ compilers

The XL C and XL C++ compilers, when used with the Language Environment® element, offer many features to increase your productivity and improve program execution times:
  • Optimization support:
    • Extra Performance Linkage (XPLINK) function calling convention, which has the potential for a significant performance increase when used in an environment of frequent calls between small functions. XPLINK makes subroutine calls more efficient by removing non-essential instructions from the main path.
    • Algorithms to take advantage of the IBM® System z® architecture to achieve improved optimization and memory usage through the OPTIMIZE and IPA compiler options.
    • The OPTIMIZE compiler option, which instructs the compiler to optimize the machine instructions it generates to try to produce faster-running object code and improve application performance at run time.
    • Interprocedural Analysis (IPA), to perform optimizations across procedural and compilation unit boundaries, thereby optimizing application performance at run time.
    • Additional optimization capabilities are available with the INLINE compiler option.
  • DLLs (dynamic link libraries) to share parts among applications or parts of applications, and dynamically link to exported variables and functions at run time.

    DLLs allow a function reference or a variable reference in one executable to use a definition located in another executable at run time.

    You can use DLLs to split applications into smaller modules and improve system memory usage. DLLs also offer more flexibility for building, packaging, and redistributing applications.

  • Full program reentrancy

    With reentrancy, many users can simultaneously run a program. A reentrant program uses less storage if it is stored in the Link Pack Area (LPA) or the Extended Link Pack Area (ELPA) and simultaneously run by multiple users. It also reduces processor I/O when the program starts up, and improves program performance by reducing the transfer of data to auxiliary storage. z/OS® XL C programmers can design programs that are naturally reentrant. For those programs that are not naturally reentrant, z/OS XL C programmers can use constructed reentrancy. To do this, compile programs with the RENT option and use the program management binder supplied with z/OS or the Language Environment prelinker and program management binder. The z/OS XL C++ compiler always uses the constructed reentrancy algorithms.

  • Locale-based globalization support derived from IEEE POSIX 1003.2-1992 standard. Also derived from X/Open CAE Specification, System Interface Definitions, Issue 4 and Issue 4 Version 2. This allows you to use locales to specify language/country characteristics for their applications.
  • The ability to call and be called by other languages such as assembler, COBOL, PL/1, compiled Java™, and Fortran, to enable you to integrate z/OS XL C/C++ code with existing applications.
  • Exploitation of z/OS and z/OS UNIX System Services technology.

    z/OS UNIX System Services is the IBM implementation of the open operating system environment, as defined in the XPG4 and POSIX standards.

  • Support features in the following standards at the system level:
    • ISO/IEC 9899:1999
    • ISO/IEC 9945-1:1990 (POSIX-1)/IEEE POSIX 1003.1-1990
    • The core features of IEEE POSIX 1003.1a, Draft 6, July 1991
    • IEEE Portable Operating System Interface (POSIX) Part 2, P1003.2
    • The core features of IEEE POSIX 1003.4a, Draft 6, February 1992 (the IEEE POSIX committee has renumbered POSIX.4a to POSIX.1c)
    • X/Open CAE Specification, System Interfaces and Headers, Issue 4 Version 2
    • The core features of IEEE 754-1985 (R1990) IEEE Standard for Binary Floating-Point Arithmetic (ANSI), as applicable to the IBM System z environment.
    • X/Open CAE Specification, Networking Services, Issue 4
    • A subset of IEEE Std. 1003.1-2001 (Single UNIX Specification, Version 3)
    • A subset of ISO/IEC 9899:2011
  • Support for the Euro currency