Additional Features of IBM XL C/C++ for z/VM
| Feature | Explanation |
|---|---|
| long long Data Type | The IBM® XL C/C++ for z/VM® compiler
supports long long as a native data type when the compiler option LANGLVL(LONGLONG) is
turned on. This option is turned on by default by the compiler option LANGLVL(EXTENDED). |
| Multibyte Character Support | IBM XL C/C++ for z/VM supports multibyte characters for those national languages such as Japanese whose characters cannot be represented by a single byte. |
| Wide Character Support | Multibyte characters can be normalized by z/VM C library functions
and encoded in units of one length. These normalized characters are
called wide characters. Conversions between multibyte and wide characters
can be performed by string conversion functions such as wcstombs(), mbstowcs(), wcsrtombs(),
and mbsrtowcs(), as well as the family of wide-character
I/O functions. Wide-character data can be represented by the wchar_t data
type. |
| Extended Precision Floating-Point Numbers | IBM XL C/C++ for z/VM
provides three S/390® floating-point number data types:
single precision (32 bits), declared as float; double precision (64 bits), declared
as double; and extended precision (128 bits), declared as long
double . Extended precision floating-point numbers give greater accuracy to mathematical calculations. IBM XL C/C++ for z/VM also supports IEEE 754
floating-point representation. By default, |
| Command Line Redirection | You can redirect the standard streams stdin , stderr,
and stdout from the command line or when calling
programs using the system() function. |
| National Language Support | IBM XL C/C++ for z/VM provides message text in either American English or Japanese. You can dynamically switch between these two languages. |
| Locale Definition Support | IBM XL C/C++ for z/VM provides
a locale definition utility that supports the creation of separate
files of internationalization data, or locales. Locales can be used
at run time to customize the behavior of an application to national
language, culture, and coded character set (code page) requirements.
Locale-sensitive library functions, such as isdigit(),
use this information. |
| Coded Character Set (Code Page) Support | The IBM XL C/C++ for z/VM compiler
can compiler C and C++ source written in different EBCDIC code pages.
In addition, the iconv utility converts data or source
from one code page to another. |
| Selected Built-in Library Functions | Selected library functions, such as string and character functions, are built into the compiler to improve performance execution. Built-in functions are compiled into the executable, and no calls to the library are generated. |
| Multithreading | Threads are efficient in applications that allow them to take advantage of any underlying parallelism available in the host environment. This underlying parallelism in the host can be exploited either by forking a process and creating a new address space, or by using multiple threads within a single process. For more information, see z/OS: XL C/C++ Programming Guide. |
| Packed Structures and Unions | z/VM C provides support for packed structures and unions. Structures and unions may be packed to reduce the storage requirements of a z/VM C program or to define structures that are laid out according to COBOL or PL/I structure layout rules. |
| Fixed-point (Packed) Decimal Data | z/VM C
supports fixed-point (packed) decimal as a native data type for use
in business applications. The packed data type is similar to the COBOL
data type COMP-3 or the PL/I data type FIXED
DEC , with up to 31 digits of precision. |
| Long Name Support | For portability, external names can be mixed case and up to 1024 characters in length. For C++, the limit applies to the mangled version of the name. |
| System Calls | You can call commands or executable modules
using the system() function under CMS and OpenExtensions. You can also
use the system() function to call execs in CMS or
Shell scripts using OpenExtensions. |
| Exploitation of hardware | Use the ARCHITECTURE compiler
option to select the minimum level of machine architecture on which
your program will run. ARCH(2) instructs the compiler
to generate faster instruction sequences that are available only on
newer machines. ARCH(3) also generates these faster
instruction sequences and enables support for IEEE 754 Binary Floating-Point
instructions. Code compiled with ARCH(2) runs on
G2, G3, G4, and 2003 processors and code compiled with ARCH(3) runs
on a G5 or G6 processor, and follow-on models. Use the |
| Built-in Functions for Floating-Point and Other Hardware Instructions | Use built-in functions for floating-point and other hardware instructions that are otherwise inaccessible to C and C++ programs. For more information, see z/OS: XL C/C++ Programming Guide. |