Features and benefits
With the XL C/C++ compiler feature of z/OS, you can produce high-performing z/OS-based XL C/C++ programs to provide optimized business software solutions. The z/OS XL C/C++ compiler is part of the family of IBM XL C/C++ compilers that adhere to international standards to allow for easier portability of applications to z/OS from both IBM and non-IBM platforms.
Common XL C/C++ compiler features
IBM z/OS XL C/C++ provides the following features, common to both XL C and XL C/C++ compilers:
- z/OS UNIX System Services (z/OS UNIX) support, including the use of the z/OS UNIX Hierarchical File System (HFS) and/or the z/OS Distributed File Service zSeries File System (zFS) for storage of compiler source and output. The z/OS UNIX Shell and Utilities feature provides the c89, c99, and cxx commands for invoking the z/OS XL C/C++ compilers, the Language Environment Prelinker, and the system binder.
- Coded character set (code page) support, the compiler can process C and C++ syntax characters (such as square brackets) regardless of which Latin-1 EBCDIC coded character set is used to create the source file.
- DSECT Conversion Utility for converting descriptive data produced by the High Level Assembler licensed program into C/C++ data structures, for XL C/C++ programs that interface with assembler programs.
- DLL support for generating Dynamic Link Libraries (DLLs) similar to the way Windows® DLLs are generated. DLLs allow a function call or a variable reference in one load module to use a definition located in another load module at run time. DLL support is also available in the z/OS UNIX environment.
- Full program reentrancy for C/C++ programs.
- Interlanguage calls between C and C++ programs, and between C or C++ programs and assembler, COBOL, PL/I or Fortran programs.
- Language Environment preinitialized interface support for greater efficiencies when invoking a C or C++ program repeatedly from a PL/I or assembler program.
- Longname support so external names can be mixed case and up to 1024 characters long.
- Optimization of C and C++ code, using the OPT compiler option, in which the compiler changes unoptimized or inefficient code sequences. This includes such things as:
Inlining, or replacing of certain function calls with the actual code of the function being performed
Value numbering, which involves local constant propagation, local expression elimination, and folding several instructions into a single instruction
Straightening, which rearranges program code to minimize branch logic, and combines physically separate blocks of code
Common (or duplicate) expression elimination
Code motion, or performing calculations outside a loop (if the variables in a loop are not altered within that loop) and using the results within that loop
Strength reduction, in which less efficient instructions are replaced with more efficient ones
Constant propagation, where the compiler combines constants used in an expression and generates new ones
Instruction scheduling, where the compiler reorders instructions to minimize program execution time
Dead store elimination, where the compiler eliminates stores when the value stored is never referred to again
Dead code elimination, where the compiler eliminates code for calculations that is not required
- The compiler also performs both intraprocedural and interprocedural analysis. Intraprocedural analysis is a mechanism for performing optimization on each function in a compile unit, using only the information available for that function and compilation unit. Interprocedural analysis is a mechanism for performing optimization across source file boundaries. You can invoke interprocedural analysis by using a compiler option. It performs optimizations that are not otherwise available with the XL C/C++ compiler.
- C/C++ support for the z/OS UNIX environment, allowing application developers to use C or C++ to build z/OS UNIX applications.
- National Language Support to allow dynamic switching between English and Japanese messages.
The z/OS XL C compiler
In addition to the features common to z/OS XL C and XL C++, the z/OS XL C compiler provides you with the following capabilities:
- The ability to write portable code that supports the following standards:
ISO/IEC 9899:1999
ANSI/ISO 9899:1990[1992] (formerly ANSI X3.159-1989 C)
X/Open Specification Programming Language Issue 3, Common Usage C FIPS-160
FIPS-160
- System programming capabilities, which allow you to use z/OS XL C in place of assembler
the __asm keyword allows the programmer to specify assembly instructions in C code
the METAL compiler option allows the developer to use the MVS(TM) system linkage conventions
the PROLOG and EPILOG compiler options and the #pragma prolog() and #pragma epilog() preprocessor directives allow the programmer to specify custom HLASM prolog and epilog code, to implement custom function linkage conventions if required
- Additional optimization capabilities through the INLINE compile-time option
- Extensions of the standard definitions of the C language to provide programmers with support for the z/OS environment, such as fixed-point (packed) decimal data support
The z/OS XL C++ compiler
In addition to the features common to z/OS XL C and XL C++, the z/OS XL C++ compiler supports the International Standard for the C++ Programming Language (ISO/IEC 14882:1998) specification. Also, it further conforms to the Programming languages - C++ (ISO/IEC 14882:2003(E)) standard, which incorporates the latest Technical Corrigendum 1.
C and C++ industry standards
When used with z/OS UNIX System Services and z/OS Language Environment, the z/OS XL C/C++ compilers provide support for the following standards at the system level:
A subset of ISO/IEC 9899:1999
ISO/IEC 9945-1:1990 (POSIX-1)/IEEE POSIX 1003.1-1990
A subset of IEEE POSIX 1003.1a, Draft 6, July 1991
IEEE Portable Operating System Interface (POSIX) Part 2, P1003.2
A subset 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
A subset of IEEE 754-1985 (R1990) IEEE Standard for Binary Floating-Point Arithmetic (ANSI), as applicable to the S/390® environment.
X/Open CAE Specification, Network Services, Issue 4
Documentation
Displayable BookManager and PDF (softcopy) versions of most publications are available on CD with the z/OS Software Products Collection (SK3T-4270).
For a fee, you can order additional copies of the softcopy collection from the IBM Publications Center at:
http://www.ibm.com/shop/publications/order
For other publication ordering options, see:
http://www.ibm.com/servers/eserver/zseries/zos/bkserv/order_books.html
