Table of Contents (exploded view)
Abstract for XL C/C++ Compiler and Runtime Migration Guide for the Application Programmer
Introduction
New migration issues for z/OS V2R2 XL C/C++
New migration issues for z/OS XL C/C+ V2R1M1
Program migration checklists
Before you start your migration
When you are compiling code
When you are binding program objects or load modules
When you are running an application
Tools that facilitate your migration
The Edge Portfolio Analyzer
Applicability of product information
Version history of IBM C/C++ compilers and libraries
Migration of pre-OS/390 C/C++ applications to z/OS V2R2 XL C/C++
Source code compatibility issues with pre-OS/390 C/C++ programs
Removal of IBM Open Class Library support
Source code modifications necessitated by changes in runtime library
The #pragma runopts directive
Resource allocation and memory management issues
The sizeof operator applied to a function return type
A user-defined global new operator and array new
Addressing incompatibilities
C/370 V2 main program and main entry point
Pointer incompatibilities
Data type incompatibilities
Assignment restrictions for packed structures and unions
DSECT header files and packed structures
Changes required by programs with interlanguage calls
Explicit program mask manipulations
Assembler source code changes in System Programming C (SPC) applications built with EDCXSTRX
Internationalization incompatibilities
Support of alternate code points
Compile-time issues with pre-OS/390 C/C++ programs
Changes in compiler listings, messages, and return codes
Macro redefinitions might result in severe errors
Changes in compiler options
Compiler options that are no longer supported
DECK compiler option
LANGLVL(COMPAT) compiler option
OMVS compiler option
SRCMSG compiler option
SYSLIB, USERLIB, SYSPATH and USERPATH compiler options
Compiler options that were introduced in OS/390 C/C++ or later
ENUMSIZE compiler option
Changes in compiler option functionality
HALT compiler option
HWOPTS compiler option
INFO compiler option
INLINE compiler option
LANGLVL(ANSI), LANGLVL(SAA), or LANGLVL(SAAL2) compiler option and macro redefinitions
LANGLVL(EXTENDED) compiler option and macro redefinitions
LOCALE compiler option
OPTIMIZE optimization level mapping
SEARCH and LSEARCH compiler options
SQL compiler option and SQL EXEC statements
TEST compiler option
Changes that affect compiler invocations
IPA compiler option and very large applications
Customized JCL and the CXX format
CBCI and CBCXI procedures in JCL
Changes that affect SYSLIB DD cards
Change in SCLBH logical record length
Bind-time migration issues with pre-OS/390 C/C++ programs
Library release level in use
Binder invocation changes
Impact of changes to CC EXEC invocation syntax
Changes due to customizations of the runtime environment
User-developed exit routines
Abnormal termination exit routines and dump formats
Incompatibilities in external references
Requirements for relinking C/370 modules that invoke Debug Tool
C/370 modules with interlanguage calls (ILC)
Interlanguage calls between assembler and PL/I language modules
Function calls between C and Fortran modules
Function calls to and from COBOL modules
Compatibility with earlier and later releases
Impact of changes in packaging of language libraries
Linkage editor control statements for modules that contain calls to COBOL routines
Programs that require the C370 Common Library environment
Runtime migration issues with pre-OS/390 C/C++ applications
Retention of pre-OS/390 runtime behavior
Runtime library messages
Return codes and messages
Error conditions that cause runtime messages
Prefixes of perror() and strerror() messages
Language specification for messages
User-developed exit routines
Changes that affect customized JCL procedures
Changes in data set names
Arguments that contain a slash
Differences in standard streams
Dump generation
Changes in runtime option specification
Runtime options lists
Obsolete runtime options
Return codes for abnormal enclave terminations
Abnormal terminations and the TRAP runtime option
Default heap allocations
HEAP parameter specification
Default stack allocations
STACK parameter specification
XPLINK downward-growing stack and the THREADSTACK runtime option
Runtime library compatibility issues with pre-OS/390 applications
Changes to the putenv() function and POSIX compliance
UCMAPS and UCS-2 and UTF-8 converters
Common library initialization compatibility issues with C/370 modules
Initialization schemes
Special considerations: CEEBLIIA and IBMBLIIA
Internationalization issues in POSIX and non-POSIX applications
Hardware and OS exceptions
Decimal overflow exceptions
SIGTERM, SIGINT, SIGUSR1, and SIGUSR2 exceptions
Unexpected SIGFPE exceptions
Resource allocation and memory management migration issues
The realloc() function
Input and output operations compatibility
Migration issues when opening pre-OS/390 files
Migration issues when writing to pre-OS/390 files
Changes in DBCS string behavior
Changes in stdout and stderr file positioning
Behavior changes when closing and reopening ASA files
Changes in values returned by the fldata() function
VSAM I/O changes
Change in allocation of VSAM control blocks and I/O buffers
Terminal I/O changes
Migration of OS/390 C/C++ applications to z/OS V2R2 XL C/C++
Source code compatibility issues with OS/390 programs
Overflow processing and code modifications
References to class libraries that are no longer shipped
Compile-time migration issues with OS/390 programs
Changes in compiler listings and messages
Debug format specification
Language specification for compiler messages
Optimization level mapping and listing content
Macro redefinitions and error messages
Changes in compiler options
Compiler options that are no longer supported
ARCHITECTURE compiler option
ARCHITECTURE level and overflow processing
ARCHITECTURE level and Metal C file-scope header SYSSTATE ARCHLVL statement
ARGPARSE compiler option with Metal
ASCII compiler option
CHECKOUT(CAST) compiler option
DIGRAPH compiler option
ENUMSIZE compiler option
INFO compiler option
INLINE compiler option
IPA(LINK) compiler option
IPA Link step default changes
The IPA(LINK) option and exploitation of 64-bit virtual memory
IPA object module binary compatibility
LANGLVL(ANSI), LANGLVL(SAA), or LANGLVL(SAAL2) compiler option and macro redefinitions
LANGLVL(EXTENDED) compiler option and macro redefinitions
LANGLVL(LONGLONG) compiler option
LOCALE compiler option
M compiler option
OPTIMIZE compiler option
NORENT compiler option
ROSTRING compiler option
ROCONST compiler option
STATICINLINE compiler option
SQL compiler option and SQL EXEC statements
TARGET compiler option
TEST compiler option
TUNE compiler option
Changes in IBM data set names
Introduction of 1998 Standard C++ support
Changes that affect performance and optimization
Addition of the #pragma reachable and #pragma leaves directives
Changes that affect customized JCL procedures
Potential increase in memory requirements
JCL CBCI and CBCXI procedures and the variable CLBPRFX
Syntax to invoke the CC command
Removal of Model Tool support
Bind-time migration issues with OS/390 C/C++ programs
Reentrant variables when the compiler option is NORENT
Runtime migration issues with OS/390 C/C++ applications
Retention of OS/390 runtime behavior
Changes to the putenv() function and POSIX compliance
Debug format and translation of the c89 -g flag option
Language Environment customization issues
Change in allocation of VSAM control blocks
Migration issues resulting from class library changes between OS/390 C/C++ applications and Standard C++ library
Function calls to different libraries
Removal of IBM Open Class Library support
Removal of SOM support
Removal of Database Access Class Library utility
Migration of programs with calls to UNIX System Laboratories I/O Stream Library functions
Migration of earlier z/OS C/C++ applications to z/OS V2R2 XL C/C++
Source code compatibility issues with earlier z/OS C/C++ programs
Function calls to different libraries
References to class libraries that are no longer shipped
Migration from UNIX System Laboratories I/O Stream Library to Standard C++ I/O Stream Library
Standard C++ compliance compatibility issues
Use of XL C/C++ library functions
Timing of processor release by the pthread_yield() function
New information returned by the getnameinfo() function
Feature test macros and system header files
Potential need to include _Ieee754.h
New definitions exposed by use of the _OPEN_SYS_SOCK_IPV6 macro
Required changes to fprintf and fscanf strings %D, %DD, and %H
Changes to the putenv() function and POSIX compliance
Required changes to fprintf and fscanf strings due to new specifiers for vector types
C99 support of long long data type
Use of pragmas
Application of #pragma unroll() as of z/OS V1R7 XL C/C++
Unexpected C++ output with #pragma pack(2)
Virtual function declaration and use
Compile-time migration issues with earlier z/OS C/C++ programs
Changes in compiler listings, messages, and return codes
Appearance of compiler substitution variables
Corrections in escape sequence encoding
Function offsets in source listing
Diagnostic refinement in identification of linkage issues (C++ only)
References to UNIX System Services file names
Non-compliant array index raises an exception
Unexpected name lookup error messages with template use
Width of mnemonic in assembly listings
Macro redefinitions and error messages
Changes in compiler option functionality
Option behavior change when processing multiple suboptions
CHECKOUT compiler option
CMDOPTS compiler option and conflict resolution
DFP compiler option and earlier floating-point applications
DSAUSER compiler option
ENUMSIZE(SMALL) and protected enumeration types in system header files
FLAG compiler option
FLOAT(AFP) suboptions for applications that access CICS data
GENASM compiler option
GONUMBER compiler option and LP64 support
IPA compiler option
LANGLVL(ANSI), LANGLVL(SAA), or LANGLVL(SAAL2) compiler option and macro redefinitions
LANGLVL(EXTC1X) compiler option
LANGLVL(EXTENDED) compiler option and macro redefinitions
LANGLVL(EXTENDED0X) compiler option
LOCALE compiler option
M compiler option
RESTRICT option
SEVERITY option
SQL compiler option and SQL EXEC statements
TARGET compiler option
TEMPLATEDEPTH compiler option
Changes that affect compiler invocations
Changes that affect use of the c89 command
Debug format specification
Changes that affect use of the xlc utility
Exposure of build problems and xlc utility
When C++ style comments are the default
Changes that affect JCL procedures
User-defined conversion tables and iconv() functions
ILP32 compiler option and name mangling
IPA(LINK) compiler option and very large applications
IPA(LINK) compiler option and exploitation of 64-bit virtual memory
JCL that runs pre-z/OS V1R5 C/C++ programs
Compiler options that manage Standard C++ compliance
Impact of recompiling applications that include
with the _XOPEN_SOURCE_EXTENDED feature test macro
Impact of recompiling applications that include the pselect() interface
Impact of recompiling with the _OPEN_SYS_SOCK_IPV6 macro
Impact of recompiling code that relies on math.h to include IEEE 754 interfaces
Bind-time migration issues with earlier z/OS C/C++ programs
Unexpected "missing symbol" error (C++ only)
Program modules from an earlier release
Namespace pollution binder errors
c89 COMPAT binder option default and programs from an earlier release
Alignment incompatibilities between object models
Alignment incompatibilities between XL C and XL C++ output with #pragma pack(2)
Debug format and c89 -g flag option translation
argc argv parsing support for Metal C programs
Runtime migration issues with earlier z/OS C/C++ applications
Earlier AMODE 64 applications
HEAPPOOLS runtime option no longer ignored in all AMODE 64 applications
Customized runtime libraries
Failure of authentication process
Retention of previous runtime behavior
Unexpected output from fprintf() or fscanf()
IEEE754 math functions
Internal timing algorithm specification
Daylight saving time definition
Changes to the putenv() function and POSIX compliance
Internationalization issues
Default daylight saving time change
EEC default currency update
Movement of LOCALDEF utilities to new data sets
Changes in math library functions
Changes in floating-point support
Hexadecimal floating-point notation
Floating-point special values
Changes in allocation of VSAM control blocks
Changes to st_mode attribute of AF_UNIX socket files
Changes to strfmon() output
Changes to structure t_opthdr in xti.h
Changes to getting group or user database entry
Removal of conversion table source code
ISO Standard C++ compliance migration issues
Language level and your Standard C++ compliance objectives
Changes that affect Standard C++ compliance of language features
Unqualified name lookups and the using directive
Order of destruction for statically initialized objects
Implicit integer type declarations
Scope of for-loop initializer declarations
Visibility of friend declarations
Migration of friend declarations in class member lists
cv-qualifications when the thrown and caught types are the same
Compiler options that are introduced in C++11 standard
LANGLVL(AUTOTYPEDEDUCTION) compiler option (C++11)
LANGLVL(C1XNORETURN) compiler option (C++11)
LANGLVL(C99LONGLONG) compiler option (C++11)
LANGLVL(C99PREPROCESSOR) compiler option (C++11)
LANGLVL(CONSTEXPR) compiler option (C++11)
LANGLVL(DECLTYPE) compiler option (C++11)
LANGLVL(DEFAULTANDDELETE) compiler option (C++11)
LANGLVL(DELEGATINGCTORS) compiler option (C++11)
LANGLVL(EXPLICITCONVERSIONOPERATORS) compiler option (C++11)
LANGLVL(EXTENDEDFRIEND) compiler option (C++11)
LANGLVL(EXTENDEDINTEGERSAFE) compiler option (C++11)
LANGLVL(EXTERNTEMPLATE) compiler option (C++11)
LANGLVL(INLINENAMESPACE) compiler option (C++11)
LANGLVL(REFERENCECOLLAPSING) compiler option (C++11)
LANGLVL(RIGHTANGLEBRACKET) compiler option (C++11)
LANGLVL(RVALUEREFERENCES) compiler option (C++11)
LANGLVL(SCOPEDENUM) compiler option (C++11)
LANGLVL(STATIC_ASSERT) compiler option (C++11)
LANGLVL(VARIADICTEMPLATES) compiler option (C++11)
WARN0X compiler option (C++11)
Errors due to changes in compiler behavior
C++ class access errors
CCN5413 exception
CCN5193 exception
Exceptions caused by ambiguous overloads
Exceptions caused by user-defined conversions
Issues caused by the use of incomplete types in exception-specifications
Syntax errors with array new
Migration issues for C/C++ applications that use other IBM products
Migration issues with earlier C/C++ applications that run CICS statements
Migration of CICS statements from pre-OS/390 C/C++ applications
CICS statement translation options
HEAP option used with the interface to CICS
User-developed exit routines
Multiple libraries under CICS
CICS abend codes and messages
Default option for ABTERMENC changed to ABEND
CICS reason codes
Standard stream support under CICS
Changes in stderr output under CICS
Transient data queue names under CICS
Migration of CICS statements from earlier XL C/C++ applications
CICS TS V4.1 with "Extended MVS Linkage Convention"
Customized CEECCSD.COPY and CEECCSDX.COPY files and iconv() changes
Renaming direct converters
Direct converters for 31-bit base code
Direct converters for XPLINK processing
Direct converters for 64-bit base code
Renaming indirect binary converter tables
Renaming HFS indirect binary converter tables
Migration issues with earlier C/C++ applications that use DB2
Namespace violations and SQL coprocessor-based compilations
Example: Performing a macro definition check
Example: Explicitly undefining and redefining a macro
Potential need to specify DBRMLIB with the SQL option