z/OS V1R12 XL C/C++ readme This readme file contains the latest information about the "C/C++ without Debug Tool" optional feature of z/OS V1R12 that was not previously available for the documentation. This file will be updated from time to time via PTF, so that you can get the latest information possible. ======================================================================== July 2010 Additional information about the LONGNAME compiler option and prelinking z/OS XL C/C++ programs - The following information is added to the section "Specifying z/OS XL C compiler options using #pragma options" in the z/OS V1R12 XL C/C++ User's Guide. "You can use the #pragma preprocessor directive to override the default values for compiler options. The exception is LONGNAME/NOLONGNAME, where the compiler options override the #pragma preprocessor directives." - The following note is added to the section "Pragma equivalent" under "LONGNAME | NOLONGNAME" in the z/OS V1R12 XL C/C++ User's Guide. "You can use the #pragma preprocessor directive to override the default values for compiler options. However, for LONGNAME/NOLONGNAME, the compiler options override the #pragma preprocessor directives." - The following note is added to the section "Mapping long names to short names" in the z/OS V1R12 XL C/C++ User's Guide. "Programs compiled with the LONGNAME compiler option and which use POSIX functions must define _LONGMAP when using the prelinker outside of a z/OS UNIX shell environment. If __LONGNAME__ is defined and _LONGMAP is not defined, you will not get the right mapping of POSIX functions." ======================================================================== July 2010 Description changes of suboption "ZEROEXTARRAY | NOZEROEXTARRAY" - The description of suboption "ZEROEXTARRAY | NOZEROEXTARRAY" in the z/OS V1R12 XL C/C++ User's Guide is changed to: "This option controls whether zero-extent arrays are allowed as the last non-static data member in a structure definition. When LANG(ZEROEXTARRAY) is in effect, the z/OS XL C++ compiler allows arrays with zero elements. This is an extension to the C++ standard. Example: The following statement declares a zero-extent array a: struct S1 { char a[0]; }; Specify LANG(NOZEROEXTARRAY) for compliance with the ISO C++ standard. When LANG(ZEROEXTARRAY) is set, you will receive informational messages about zero-extent arrays in your code, unless you suppress the message with SUPPRESS(CCN6607). The default is LANG(ZEROEXTARRAY)." ======================================================================== July 2010 Additional information about #pragma prolog and #pragma epilog - The following information is added to the end of the section "Supplying your own prolog and epilog code" in the z/OS V1R12 Metal C Programming Guide and Reference. "Starting from z/OS V1R11, the following pragma directives are also supported: #pragma prolog(function_name, main) #pragma epilog(function_name, main) When the keyword main is specified instead of HLASM Statements, the default prolog/epilog code generated by the compiler for function_name is the same as if it was generated for function main. For functions specified in this form of directives, when the RENT option is used with the METAL option, the default prolog/epilog code generated for function_name will have extra code to connect to the RENT environment initialization and termination routines. Because there can be only one reference to the RENT environment initialization and termination routines, you must ensure that there is only one such prolog/epilog code in your entire program." ======================================================================== July 2010 Additional information about the ARCHITECTURE and TUNE compiler options - The description of the ARCHITECTURE(9) and TUNE(9) suboptions in the z/OS V1R12 XL C/C++ User's Guide is changed to: "ARCHITECTURE(9): Produces code that uses instructions available on the IBM zEnterprise 196 models in z/Architecture mode." "TUNE(9): Generates code that is executable on all system machine models, but is optimized for the IBM zEnterprise 196 models." The following PTFs are required: XL C/C++ Compiler: UK59137, UK59138 and UK59139 Run-Time Library Extensions: UK59143 and UK59144 C++ Standard Library: UK59145 ======================================================================== August 2010 Description changes of message CCN2320 - The "User response" part of message CCN2320 in the z/OS V1R12 XL C/C++ Messages is changed to: "User response: No user response is required." ======================================================================== August 2010 Changes to the compiler-generated "COPY IEABRC" instruction - The following information applies to the section "Compiler-generated HLASM source code" in the z/OS V1R12 Metal C Programming Guide and Reference: "As of z/OS V1R12, the compiler-generated "COPY IEABRC" instruction has been changed to "IEABRCX DEFINE". To disable the effect of "IEABRCX", you can add the instruction "IEABRCX DISABLE". For more information about the "IEABRCX" macro, see z/OS V1R12.0 MVS Assembler Services Reference IAR-XCT (SA22-7607-16)." ========================================================================