sp-announcements mailing list archive
Index Fortran, C, and C++ on seaborg to be upgraded 12/2/03

From: Michael Stewart (pmstewart_at_lbl.gov)
Date: 11/25/2003


The default versions of the IBM Fortran and C/C++ compilers will be 
upgraded on seaborg.nersc.gov on Tuesday, 12/2/03.  These versions 
contain fixes to several bugs that NERSC reported to IBM as well as 
other changes and new features.

This new version of Fortran is 8.1.1.2.  This version is currently 
contained in the xlf module on seaborg.  The changes and new features in 
this release of Fortran are described in the attached file xlf.8.1.0.2.

The new version of C and C++ is 6.0.0.5.  This version is currently 
contained in the xlc module on seaborg.  The changes and new features in 
this release of C are described in the attached file C.6.0.0.5.  The 
changes and new features in this release of C++ are described in the 
attached file C++.6.0.0.5.

-- 
Michael Stewart
NERSC Consultant
510-486-6648
pmstewart_at_lbl_dot_gov

* @(#) 01 1.2.11.41 1/15/03 21:04:33
*
* COMPONENT_NAME: (Fortran) AIX XL Fortran Compiler
*
* FUNCTIONS: XLF README file
*
* ORIGINS: 31
*
* 5765-F70 (C) COPYRIGHT International Business Machines Corp. 1990, 2002
* All Rights Reserved
* Licensed Materials - Property of IBM
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
* IBM and AIX are trademarks of IBM Corp. in the U.S and/or other countries.
*
* Portions of this document may have been derived from the Information
* technology - Programming languages - Fortran - Part 1: Base
* language, ISO/IEC 1539-1:1997. This document uses the standard's
* informal name, Fortran 95.

* Segments of this document may contain information based on the Fortran 2000
* Draft Standard.
* The Fortran 2000 Draft Standard is open to continual interpretation,
* modification and revision. IBM reserves the right to modify the behavior of
* any features of this product to conform with future interpretations of this
* standard.

This document contains the following sections:

I.	Notes for XL Fortran Version 8.1.0.3
II.	Notes for XL Fortran Version 8.1.0.2 
III.	Fortran 95 Standard Interpretations 
IV.	Language Reference Errata (Version 8.1)
V.    	Memo to Users Errata (Version 8.1) 
VI.	User's Guide Errata (Version 8.1)

I. Notes for XL Fortran Version 8.1.0.3 
=======================================

The -qport compiler option now supports the following suboption:

-qport=sce | nosce 
             -----

	Specifying this suboption allows the compiler to perform short circuit 
	evaluation in selected logical expressions. 

The -qport compiler option increases flexibility when porting programs to XL 
Fortran, providing a number of options to accommodate other Fortran language 
extensions.
    
II. Notes for XL Fortran Version 8.1.0.2
========================================

1. The following run-time option introduces the ability to control the number
   of threads used by the MATMUL and RANDOM_NUMBER intrinsic procedures:

	intrinthds={num_threads}

		num_threads	specifies the number of threads for parallel 
		execution of the MATMUL and RANDOM_NUMBER intrinsic procedures. 
		The default value for num_threads is equal to the number of 
		processors online.
		
III. Fortran 95 Interpretations for XL Fortran for AIX
======================================================

The following interpretations of the Fortran 95 standard apply to the
XL Fortran for AIX Language Reference, version 8.1:

Chapter 3: Data Types and Data Objects

1. Under "Events Causing Undefinition", rule 14b now reads as follows:

	A nonpointer dummy argument with INTENT(OUT) and its associated
	actual argument are undefined, except for nonpointer direct components
	that have default initialization.

Chapter 4: Array Concepts

2. The following restriction has been added to the "Implied-DO list for an
   Array Constructor":

	You must not reference the value of an implied_do_variable in
	the limit expressions expr1 or expr2.

Chapter 5: Expressions and Assignment

3. The following addition has been made in the section entitled "Pointer
   Assignment":

	If the target of a pointer assignment is an allocatable object, it
	must be allocated.

Chapter 7: Program Units and Procedures

4. Rule 1 of "Rules for Resolving Procedure References to Names" now reads as
   follows:
	
	If there is an interface block with that name in the scoping unit or
        accessible through use association, and the reference is consistent
        with a non-elemental reference to one of the specific interfaces
        of that interface block, the reference is to the specific procedure
        associated with the specific interface.

5. Within the "Interface Blocks" section, the paragraph above the IBM Extension
   now reads as follows:

   	A procedure name used in a MODULE PROCEDURE statement must not have
   	been previously specified in any MODULE PROCEDURE statement in any
   	accessible interface block with the same generic identifier.

Chapter 10: Statements

6. The fourth paragraph in the "Rules" section for the "NAMELIST" statement now
   reads as follows:

   	Nname can be specified in more than one NAMELIST statement in the
   	scoping unit, and more than once in each NAMELIST statement. The
   	variable_name_list following each successive appearance of the same
   	Nname in a scoping unit is treated as the continuation of the list for
   	that Nname.
  	
Chapter 12: Intrinsic Procedures

7. The description of the MOLD argument for the TRANSFER intrinsic now reads as
   follows:
 	
 	is a data entity that has the type characteristics you want for the 
 	result. If MOLD is a variable, the value does not need to be defined. 
 	It may be of any type, and may be scalar or array valued. Its value is 
 	not used, only its type characteristics.


IV. Language Reference Errata
=============================

The following corrections and additions apply to the published version of the
XL Fortran for AIX Language Reference, Version 8.1:

Addition to Storage Class Assignment
------------------------------------

Chapter 3: Data Types and Data Objects

In the "Storage Class Assignment" section, the last paragraph under the heading
"Explicitly", now reads as follows:

	A variable that does not satisfy any of the above, and is not
	equivalenced with a variable that has an explicit storage class, has an
	explicit storage class of static if:
		- A SAVE statement with no list exists in the scoping unit, or
		- The variable is declared in the specification part of a main
		  program.

Clarification for Intrinsic Assignment of Allocatable Components
----------------------------------------------------------------

Chapter 5: Expressions and Assignment

The paragraph following the sequence for determining the intrinsic assignment
of an allocatable component now reads as follows:

The value of the component of expression is then assigned to the corresponding
component of variable using intrinsic assignment.

Rule Change for ENTRY
---------------------

Chapter 10: Statements

STATIC and AUTOMATIC attributes can now only be specified if the result
variable is not an allocatable object, array, or pointer, and is not of
character or derived type.

Rule Change for FUNCTION
------------------------

Chapter 10: Statements

STATIC and AUTOMATIC attributes can now only be specified if the result
variable is not an allocatable object, array, or pointer, and is not of
character or derived type.

Clarification of TARGET
-----------------------

Chapter 10: Statements

The following changes have been made to the documentation for the TARGET
statement:

	Purpose:
		Data objects with the TARGET attribute can be associated with
		pointers.

In the Rules section, the first rule has been replaced by the following:

	If a data object has the TARGET attribute, then all of the data
	object's nonpointer subobjects will also have the TARGET attribute.
	
	A data object that does not have the TARGET attribute cannot be
	associated with an accessible pointer.

	
Clarification of COS(X), EXP(X), and SIN(X)
-------------------------------------------

Chapter 12: Intrinsic Procedures

COS(X)

	Result Value
		If X is of type complex, the real and imaginary parts of X
	        are regarded as values in radians.

EXP(X)

	Result Value
		If X is of type complex, its real and imaginary parts are
	        regarded as values in radians.

SIN(X)

	X
		must be of type real or complex. If X is real, it is regarded
		as a value in radians. If X is complex, its real and imaginary
		parts are regarded as values in radians.


Clarification of PACK(ARRAY, MASK, VECTOR)
------------------------------------------

Chapter 12: Intrinsic Procedures

The description of the VECTOR argument for the PACK intrinsic now reads as
follows:
	
	VECTOR (optional)

		is a padding array whose elements are used to fill out the
		result if there are not enough elements selected by the mask.
		It is a one-dimensional array that has the same data type and
		type parameter as ARRAY and at least as many elements as there
		are true values in MASK. If MASK is a scalar with a value of
		.TRUE., VECTOR must have at least as many elements as there are
		array elements in ARRAY.

Clarification of PRODUCT
------------------------

Chapter 12: Intrinsic Procedures

Under the heading "Result Value", "Method 3" now reads as follows:

If DIM is also specified and ARRAY has a rank of one, the result is a scalar
equal to the product of all elements of ARRAY that have a corresponding .TRUE.
array element in MASK.

If DIM is also specified and ARRAY has rank greater than one, the result is a
new array in which dimension DIM has been eliminated. Each new array element is
the product of elements from a corresponding vector within ARRAY. The index
values of that vector, in all dimensions except DIM, match those of the output
element.  The output element is the product of those vector elements that have
a corresponding .TRUE. array element in MASK.

Changed Examples for gmtime_ and ltime_
---------------------------------------


Chapter 14: Service and Utility Procedures

The examples for the following procedures have been corrected:

gmtime_

	INTEGER(KIND=TIME_SIZE) STIME
 	INTEGER(4) TARRAY(9)
 	CALL gmtime_(STIME, TARRAY)
 	
ltime_

	 INTEGER(KIND=TIME_SIZE) STIME
	 INTEGER(4) TARRAY(9)
	 CALL ltime_(STIME, TARRAY)
	
V. Memo to Users Errata
=======================

IBM officially supports multiple installations of the XL Fortran compiler.
Please disregard the following text:

	7. Alternate versions of the compiler may not retain all functionality
	   when they are not installed using default installation procedures.

	Note: IBM will only accept problem reports on an XL Fortran compiler
	with a default installation. To report a problem for a compiler using
	an alternate installation, replicate the problem on a compiler that has
	been installed using the default method.
 	
VI. User's Guide Errata
========================

The following corrections and additions apply to the published version of the
XL Fortran for AIX User's Guide, version 8.1:

Chapter 4: Editing, Compiling, Linking, and Running XL Fortran Programs

1. The section that describes the XLFRTEOPTS environment variable in the
   "Setting Run-Time Options" section is missing a definition for
   cpu_time_type. The cpu_time_type run-time option is defined as follows:

	cpu_time_type={usertime | systime | alltime | total_usertime |
                   total_systime | total_alltime}
                                   -------------

	Determines the measure of time returned by a call to CPU_TIME(TIME).

        The suboptions for cpu_time_type are as follows:

        usertime         Specifies that CPU_TIME(TIME) should return the user
                         time of a process. For a definition of user time, see
                         the AIX Performance and Tuning Guide.

        systime          Specifies that CPU_TIME(TIME) should return the system
                         time of a process. For a definition of system time,
                         see the AIX Performance and Tuning Guide.

        alltime          Specifies that CPU_TIME(TIME) should return the sum of
                         the user and system time of a process.

        total_usertime   Specifies that CPU_TIME(TIME) should return the total
                         user time of a process. The total user time is the
                         sum of the user time of a process and the total user
                         times of its child processes, if any.

        total_systime    Specifies that CPU_TIME(TIME) should return the total
                         system time of a process. The total system time is the
                         sum of the system time of the current process and the
                         total system times of its child processes, if any.

        total_alltime    Specifies that CPU_TIME(TIME) should return the total
                         user and system time of a process. The total
                         user and system time is the sum of the user and system
                         time of the current process and the total user and
                         system times of their child processes, if any.

                         This is the default measure of time for CPU_TIME if
                         you have not set the cpu_time_type run-time option.
            
2. In all sections concerning linking 32 and 64-bit SMP and non-SMP programs
   using the ld command, the following bullet:
	-If you use the -qpdf1 option, specify -lpdf and
	 -L/usr/lpp/xlf/lib/pdf.

   is replaced by the following:
	-If you use the -qpdf1 compiler option, specify -lxlopt.

Chapter 5: Fortran Compiler-Option Reference

3. In the description of the -d compiler option, and in the "Passing Fortran
   Files through the C Preprocessor" section in Chapter 4, the following
   sentence should be added:
   	
   	"When XL Fortran invokes cpp for a file, the preprocessor will emit
   	#line directives unless you also specify the -d option."

4. The description of the -qfloat=fltint suboption, is incorrect.
   The following sentence and note:

   "Speeds up calculations more safely than the hsflt suboption, by
   rounding double-precision values only when they are stored into
   REAL(4) memory locations.

   Note: If a program converts a floating-point value that is outside the
         representable range of integers, it produces undefined results
         because the error condition is not detected."

   should be replaced with this description:

   "Speeds up floating-point-to-integer conversions by using an
   inline sequence of code instead of a call to a library function.

   The library function, which is called by default if -qfloat=fltint is not
   specified or implied by another option, checks for floating-point values
   outside the representable range of integers and returns the minimum or
   maximum representable integer if passed an out-of-range floating-point
   value.

   The Fortran language does not require checking for floating-point values
   outside the representable range of integers.  In order to improve
   efficiency, the inline sequence used by -qfloat=fltint does not perform this
   check.  If passed a value that is out of range, the inline sequence will
   produce undefined results."
 
5. The -qport compiler option now supports the following suboption:

   -qport=typlssarg | notyplssarg
	              -----------

   Converts all typeless constants to default integers if the constants are
   actual arguments to an intrinsic procedure whose associated dummy arguments
   are of integer type. Dummy arguments associated with typeless actual
   arguments of noninteger type remain unaffected by this option.

   Using this option may cause some intrinsic procedures to become mismatched
   in kinds. Specify -qxlf77=intarg to convert the kind to that of the longest
   argument.

===========================================================================
*
* IBM C for AIX, Version 6.0 
* 5765-F57-00
*
* Licensed Materials - Property of IBM
* (C) Copyright IBM Corp. 1991, 2003. All Rights Reserved.
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*
===========================================================================

This README file contains the latest information about C for AIX, Version 6.0 
that was not available for our printed publications or our on-line help.

The latest information about installing C for AIX, Version 6.0 with 
License Use Management (LUM) can be found in /usr/vac/README.password.  
PLEASE READ THIS FILE BEFORE USING THE PRODUCT.

By using C for AIX, Version 6.0, you agree to the terms of the license 
information.  The License Information document is available as a PDF file 
and can be found in /usr/vac/pdf/en_US/license.pdf.  You will need to 
install Adobe Acrobat** Reader 3.0 or later to view the file.  You 
can download the reader from the Adobe website at http://www.adobe.com.

Note:
IBM C for AIX, Version 6.0 is licensed based on a charge unit of one 
authorized user.  The Program may be stored on more than one machine, 
provided that the Program is not in active use on more than one machine 
at the same time.

An authorized user is an individual or specific named user authorized to
have access to the program or any portion of the program.  The Proof of
Entitlement for this program is evidence of your authorization.  Each
individual or specific named user must obtain a Proof of Entitlement.


==============
README CONTENT

* Documentation Issues
* Miscellaneous Issues
* Operating System Migration from AIX Version 4.3.3 to AIX Version 5.1 


====================
Documentation Issues

1)  The following -qlanglvl suboptions are accepted but ignored by the 
    C compiler.  Use -qlanglvl=extended, -qlanglvl=extc99,or-qlanglvl=extc89
    to enable the functions that these suboptions imply.  For other values 
    of -qlanglvl, the functions implied by these suboptions are disabled.

    a)  [no]gnu_assert GNU C portability option.
    b)  [no]gnu_explicitregvar GNU C portability option.
    c)  [no]gnu_include_next GNU C portability option.
    d)  [no]gnu_locallabel GNU C portability option.
    e)  [no]gnu_warning GNU C portability option.

2)  -qipa=pdfname=filename

    The -qipa compiler option includes a new suboption with the following
    syntax:

         -qipa=pdfname=filename

    This option specifies the name of the profile data file containing
    the PDF profiling information.  If you do not specify a filename, the
    compiler uses ._pdf as the default file name.  The profile is placed
    in the current working directory or in the directory named by the
    PDFDIR environment variable.  This lets you do simultaneous runs of 
    multiple executables using the same PDFDIR, which can be useful when 
    tuning with PDF on dynamic libraries.

3)  -qpdf1 / -qpdf2

    The -qpdf1 / -qpdf2 documentation should be changed as follows.

    a) Disregard any references to -lpdf in the documentation.
    b) You must specify at least the -O2 level of optimization when using
       the -qpdf option. For best performance, use the -O3, -O4, or -O5
       optimization levels.
    c) Do not compile or run two different applications that use the same
       PDFDIR directory at the same time, unless you have used the
       -qipa=pdfname suboption to distinguish the sets of profiling
       information.
    d) The showpdf utility is not supported.
    e) The resetpdf utility, found in /usr/xlopt/bin, can be used to reset
       all profiling information to zeros.  The profiling data files are 
       not removed, and remain in the pathname directory or in the PDFDIR
       directory if the pathname is not specified, or in the current 
       directory if PDFDIR is not set.  When you make changes to the 
       application and recompile some files, the profiling information 
       for those files is automatically reset because the changes may 
       alter the program flow.  Run resetpdf to reset the profiling 
       information for the entire application after you make significant 
       changes that may change execution counts for parts of the program  
       that were not recompiled.

4)  The compiler will not automatically detect reductions on loops marked
    with the IBM parallel_loop pragma.  To correctly parallelize loops 
    with reductions, either use the OMP parallel for pragma and specify
    the reductions explicitly or use the IBM independent_loop pragma,
    which will let the compiler discover the reductions.  This is a
    change in behaviour from C for AIX, V5.0.

5)  New Suboptions for -qshowinc

    Suboptions have been added to the -qshowinc option as follows:

    -qshowinc:   Include all of the included files in the source listing.
    -qnoshowinc: Do not include any of the included files in the source
                 listing.
    -qshowinc=<option1>:<option2>: ...
                 The available suboptions are:
                 all     same as -qshowinc
                 usr     include the user header files
                 sys     include the system header files

6)  C compiler no longer supporting "inline" under -qlanglvl=extended

    The C compiler previously turned on the support of "inline" keyword under
    -qlanglvl=extended and -qlanglvl=extc89. This support has been turned off
    by default for these language levels. If you need to use "inline" keyword
    under these language levels, specify -qkeyword=inline option.

7)  Viewing Documentation

    Documentation is in HTML format and must be viewed with a
    frames-capable HTML browser.  Documentation is also available in
    PDF format.

    To start the HTML help system, invoke "/usr/vacpp/bin/vacpphelp".
    This tool is contained in the vacpp.html.help fileset.

    Note:
    Certain versions of Netscape Communicator have a well-known problem
    with HTML frames when they are first loaded.  According to Netscape,
    you should restart the browser to make subsequent calls to framesets
    will display properly.

8)  Browser Settings

    a)  Ensure that the environment SOCKS_NS is not set.

    b)  Your browser must not have proxy handling for the localhost port.
        Ensure you turn off proxy handling for localhost in your browser.
  
        In Netscape 4 (Communicator):
  
        1. Select Edit... Preferences..
        2. Double-click Advanced in the Category tree
        3. Click Proxies in the Advanced subtree
        4. Click View at the Manual Proxy Configuration selection
        5. Type:
           localhost:49213
           in the "Exceptions... Do not use proxy servers for
           domains beginning with" box.
           If you have other entries here, separate the new entry
           with a comma.
        6. Click OK, then click OK to exit the Preferences Window.
  
    c)  If you experience a problem installing the IMNSearch component,
        completely remove the component and re-install.
  
        Do not rely on installp -u to clean up everything, such as
        "group" creates.
  
        Note:
        This only applies to new installs of the IMNSearch component.
        If you have a previous version of the IMNSearch component, you
        should not remove the component before trying to re-install.

9)  Distributed Debugger Online Help

    a)  To access the Distributed Debugger online help that is specific
        to this product, ensure that the product name is selected in the
        Select product context dialog box. To access this dialog box, select
        Change Product Context from the Distributer Debugger's Help
        pull-down menu.
  
    b)  When using an English version of Netscape to view Japanese or
        Simplified Chinese versions of the Distributed Debugger online
        help, fly-over help may be corrupted when it is used over the
        navigation bar of the online help.

10) In the "Getting Started" and "Memo to Users" documentation under
    the section about filesets required for the Online Help, the 
    IMNSearch filesets are shipped with the AIX operating system.  The 
    latest level of the IMNSearch filesets should be obtained and 
    installed prior to installing the C for AIX product.

    For convenience, a version of IMNSearch is available on the CD-ROM.
    See bullet 3 under Miscellaneous Issues in this README file.
 
11) Addition of Support for -qweaksymbol Option:

    On AIX Version 5.1 with APAR IY31207 or AIX Version 5.2, you may use
    -qweaksymbol to enable generation of weak symbols.

    -qweaksymbol:    enable generation of weak symbols
    -qnoweaksymbol:  disable generation of weak symbols (default)

    When the -qweaksymbol option is specified, the compiler generates weak
    symbols for the following:

    a) inline functions with external linkage

    b) identifiers specified as weak with #pragma weak or
       functions specified as weak with __attribute__((weak))

       1. #pragma weak id

          If id is defined in the same compilation unit, it makes id
          a weak definition. If id is not defined in the same compilation
          unit, it makes references to id weak references.

       2. #pragma weak id1=id2

          Defines id1 as a weak global symbol, and references to id1 will
          use the value of id2.

       3. __attribute__((weak))

          If the function is defined, make it a weak definition. If it is
          only referenced, make all references weak references.

12) Addition of c99 Invocation Command:

    On AIX 5.2, you may use c99 to invoke the compiler for C source files,
    with support for ISO C99 language features.

13) Support of -qroptr (read-only pointers) Option

    On AIX Version 5.2 with APAR IY49415, you may use -qroptr to enable
    read-only pointers (address constants) to be moved from the .data 
    section to the .text section.  The .text section is always read-only
    and is never modified by either the loader or by an application.
    Since .text is shared among multiple processes, but .data is not, a
    reduction in memory usage is possible when a move has been made of
    an application's constant pointers using -qroptr.  This option is
    not supported for linked libraries, ie. code that links into a share
    library.

    -qroptr:   enable read-only pointers to be moved to the .text section
    -qnoroptr: leave read-only pointers in the .data section (default)


====================
Miscellaneous Issues

1)  When using UTF-8 locales, invoking 'xlc' (or its equivalents) by itself 
    to display online help might not work properly.  You can work around 
    this problem by piping the output to "more" command:

    xlc 2>&1 | more

2)  Compiler Option -r:

    When specifying -r with C for AIX, Version 6.0, the linker does 
    not link to any libraries.  This is a change in behavior from 
    C for AIX, Version 4.4 or earlier, which allowed the linker to 
    link libraries when the corresponding flags are set 
    (for example, specifying -g causes the linker to link libg.a with 
    C for AIX, Version 4.4, but not C for AIX, Version 5.0 or 6.0.)

3)  Installation fails due to missing or down-level IMNSearch or 
    LUM filesets on system.

    For convenience, a version of IMNSearch and LUM are available 
    with this product on the CD-ROM.  However, the version on the CD 
    may not be the latest version.  It is recommended that the latest 
    version be installed on your system.  

    To install LUM from the CD, insert the CD-ROM into the CD-ROM drive.
    Mount the CD-ROM as follows:

    a)  As root, invoke "smit".
    b)  Select "System Storage Management (Physical & Logical Storage)",
        press the "enter" key.
    c)  Select "File Systems", press the "enter" key.
    d)  Select "Add / Change / Show / Delete File Systems", press the "enter"
        key.
    e)  Select "CDROM File Systems", press the "enter" key.
    f)  Select "Add a CDROM File System", press the "enter" key.
    g)  Enter the "DEVICE" name (e.g. "cd0").
    h)  Enter the "MOUNT POINT" where you would like to mount the CD-ROM
        (e.g. "/cdrom").
    i)  Press the "enter" key.
    j)  Exit "smit".

    The IMNSearch installp images are available in the sub-directory 
    "IMNSearch" indicated by the mount point of the CD-ROM 
    (e.g. "/cdrom/IMNSearch".)

    The LUM installp images are available in the sub-directory 
    "lum" indicated by the mount point of the CD-ROM 
    (e.g. "/cdrom/lum".)


====================================================================
Operating System Migration from AIX Version 4.3.3 to AIX Version 5.1 

DURING AN OPERATING SYSTEM MIGRATION, USERS ARE REQUIRED TO PERFORM
TWO STEPS TO ENSURE C FOR AIX WILL CONTINUE TO OPERATE CORRECTLY.  
THIS IS DUE TO THE LIMITATION OF THE AIX MIGRATION PROCESS.

The C for AIX product contains a number of filesets specific to the 
operating system level which are not contained on the AIX media.  
Therefore, after migrating from an earlier version of AIX to 
AIX 5L Version 5.1, users will be required to manually install the 
AIX 5L versions of the filesets from the C for AIX media.  Only 
the filesets which are required by the users need to be installed.

These filesets are:

memdbg.aix50.adt
xlopt.aix50.lib
xlsmp.aix50.rte

After the migration, if there exists AIX 4.3.3 version of the above 
filesets but are missing the AIX 5L versions, you will be required 
to install them.

===========================================================================
*
* IBM VisualAge C++ Professional for AIX, Version 6.0
* 5765-F56-00
*
* Licensed Materials - Property of IBM
* (C) Copyright IBM Corp. 1991, 2003. All Rights Reserved.
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*
===========================================================================

This README file contains the latest information about VisualAge C++
Professional for AIX, Version 6.0 that was not available for our
printed publications or our on-line help.

The latest information about installing VisualAge C++ Professional for
AIX, Version 6.0 with License Use Management (LUM) can be found in
/usr/vacpp/README.password.  PLEASE READ THIS FILE BEFORE USING THE
PRODUCT.

By using VisualAge C++ Professional for AIX, Version 6.0, you agree to
the terms of the license information.  The License Information document is
available as a PDF file and can be found in /usr/vacpp/pdf/en_US/license.pdf.
You will need to install Adobe Acrobat** Reader 3.0 or later to view the file.
You can download the reader from the Adobe website at http://www.adobe.com.

Note: 
IBM VisualAge C++ Professional for AIX, Version 6.0 is licensed based on a 
charge unit of one authorized user.  The Program may be stored on more than 
one machine, provided that the Program is not in active use on more than one
machine at the same time.

An authorized user is an individual or specific named user authorized to
have access to the program or any portion of the program.  The Proof of
Entitlement for this program is evidence of your authorization.  Each
individual or specific named user must obtain a Proof of Entitlement.


===============
README CONTENTS

1.0  Corrections to the Documentation
   1.1  makeC++SharedLib and -qmkshrobj
   1.2  Accepted/Ignored suboptions to -qlanglvl 
   1.3  New suboptions to -qlanglvl
   1.4  -qipa=pdfname=filename
   1.5  -qpdf
   1.6  #pragma map
   1.7  -qeh
   1.8  Tempinc implementation file extension
   1.9  -qlanglvl=newexcp 
   1.10 New Suboptions for -qshowinc
   1.11 C compiler no longer supporting "inline" under -qlanglvl=extended
   1.12 Two new pragmas that deal with templates: #pragma instantiate, #pragma do_not_instantiate
   1.13 xlCcore: linking to run-time library with only C++ core language support
   1.14 Addition of Support for -qweaksymbol Option
   1.15 Support of -qroptr (read-only pointers) Option
   1.16 Changes to -qnamemangling=ansi Option

2.0  Documentation Issues
   2.1  Viewing Documentation
   2.2  Browser Settings
   2.3  Distributed Debugger Online Help 
   2.4  IMNSearch 
   2.5  -qdatalocal=names and -qdataimported=names

3.0  Miscellaneous
   3.1  -lpthreads removed from non-threadsafe stanzas
   3.2  Installation fails due to IMNSearch or LUM 
   3.3  Export Temporaries
   3.4  Using USL I/O stream with C99 clog function
   3.5  Deployment Considerations

4.0  Other Sources of Information
   4.1  Product Home Page

5.0 Operating System Migration from AIX Version 4.3.3 to AIX Version 5.1 



======================================================================
1.0  Corrections to the Documentation
======================================================================

  --------------------------------------------------------------------
  1.1  makeC++SharedLib and -qmkshrobj
  --------------------------------------------------------------------

  The following table shows equivalent options between
  makeC++SharedLib and -qmkshrobj:

  +-------------------------+---------------------+
  | makeC++SharedLib option | xlC option          |
  +-------------------------+---------------------+
  | -p nnn                  | -qmkshrobj=nnn      |
  +-------------------------+---------------------+
  | -e file_name            | -qexpfile=file_name |
  +-------------------------+---------------------+
  | -E export_file          | -bE:export_file     |
  +-------------------------+---------------------+
  | -I import_file          | -bI:import_file     |
  +-------------------------+---------------------+
  | -x                      | -qnolib             |
  +-------------------------+---------------------+
  | -X 32|64                | -q32|-q64           |
  +-------------------------+---------------------+
  | -n entry_point          | -e entry_point      |
  +-------------------------+---------------------+

  --------------------------------------------------------------------
  1.2  Accepted/Ignored suboptions to -qlanglvl 
  --------------------------------------------------------------------

  The following -qlanglvl suboptions are accepted but ignored by the
  C compiler.  Use -qlanglvl=extended, -qlanglvl=extc99, or -qlanglvl=extc89
  to enable the functions that these suboptions imply.  For other values
  of -qlanglvl, the functions implied by these suboptions are disabled.

  a)  [no]gnu_assert GNU C portability option.
  b)  [no]gnu_explicitregvar GNU C portability option.
  c)  [no]gnu_include_next GNU C portability option.
  d)  [no]gnu_locallabel GNU C portability option.
  e)  [no]gnu_warning GNU C portability option.

  --------------------------------------------------------------------
  1.3  New suboptions to -qlanglvl 
  --------------------------------------------------------------------

  The following -qlanglvl suboptions are new for the C++ compiler:

  a) [no]gnu_assert - GNU C portability option to enable or disable 
                      support for the following GNU C system identification 
                      assertions:  #assert, #unassert, #cpu, #machine,  
                                   #system
  b) [no]gnu_explicitregvar - GNU C portability option to control whether 
                              the compiler accepts and ignores the 
                              specification of explicit registers for
                              variables.
  c) [no]gnu_include_next - GNU C portability option to enable or disable 
                            support for the GNU C #include_next 
                            preprocessor directive.
  d) [no]gnu_locallabel	- GNU C portability option to enable or disable  
                          support for locally-declared labels.
  e) [no]gnu_warning - GNU C portability option to enable or disable 
                       support for the GNU C #warning preprocessor 
                       directive.

  --------------------------------------------------------------------
  1.4  -qipa=pdfname=filename
  --------------------------------------------------------------------

  The -qipa compiler option includes a new suboption with the following 
  syntax:

       -qipa=pdfname=filename

  This option specifies the name of the profile data file containing 
  the PDF profiling information.  If you do not specify a filename, the 
  compiler uses ._pdf as the default file name.  The profile is placed 
  in the current working directory or in the directory named by the 
  PDFDIR environment variable.  This lets you do simultaneous runs of 
  multiple executables using the same PDFDIR, which can be useful when 
  tuning with PDF on dynamic libraries.

  --------------------------------------------------------------------
  1.5  -qpdf1 / -qpdf2
  --------------------------------------------------------------------

  The -qpdf1 / -qpdf2 documentation should be changed as follows.

  a) Disregard any references to -lpdf in the documentation.
  b) You must specify at least the -O2 level of optimization when using
     the -qpdf option. For best performance, use the -O3, -O4, or -O5
     optimization levels.
  c) Do not compile or run two different applications that use the same
     PDFDIR directory at the same time, unless you have used the
     -qipa=pdfname suboption to distinguish the sets of profiling
     information.
  d) The showpdf utility is not supported.
  e) The resetpdf utility, found in /usr/xlopt/bin, can be used to reset
     all profiling information to zeros.  The profiling data files are
     not removed, and remain in the pathname directory or in the PDFDIR
     directory if the pathname is not specified, or in the current 
     directory if PDFDIR is not set.  When you make changes to the 
     application and recompile some files, the profiling information 
     for those files is automatically reset because the changes may 
     alter the program flow.  Run resetpdf to reset the profiling 
     information for the entire application after you make significant 
     changes that may change execution counts for parts of the program  
     that were not recompiled.

  --------------------------------------------------------------------
  1.6  #pragma map 
  --------------------------------------------------------------------

  Please note the following corrections and additions to the #pragma map 
  documentation.

  In the Syntax section, the following note should be added to the 
  description for the "name" variable: 

    "In C++ programs, if linking into a C++ name (a name that will have 
    C++ linkage signature, which is the default signature in C++), please 
    specify the mangled name (see example 3)."

  In the Notes section, the last line in the list of items you should 
  not map with #pragma map should read:
  
    "Functions with built-in linkage."
	
  In the Examples section, replace the examples with the following:


    Example 1 (C) 

    int funcname1()
    {
       return 1;
    }
    #pragma map( func, "funcname1" ) // maps::func to funcname1
    int main()
    {
       return func();                // no function prototype needed in C
    }


    Example 2 (C++) 

    extern "C" int funcname1()
    {
       return 0;
    }
    extern "C" int func();           // function prototypes needed in C++
    #pragma map( func, "funcname1" ) // maps ::func to funcname1
    int main()
    {
       return func();
    }


    Example 3 (C++) 

    #pragma map( foo, "bar__Fv" )
    int foo();                       // function prototypes needed in C++
    int main()
    {
       return foo();
    }
    int bar() {return 7;}

    Note:  The user can avoid using the mangled name "bar_FV" by 
           declaring "bar" as having C linkage (see example 4)


    Example 4 (C++) 

    #pragma map( foo, "bar" )
    int foo();                       //function prototypes needed in C++
    int main()
    {
       return foo();
    }
    extern "C" int bar() {return 7;}

  --------------------------------------------------------------------
  1.7  -qeh
  --------------------------------------------------------------------

  The -qeh compiler option includes two new suboptions with the
  following syntax:
      
       -qeh=v5
       -qeh=v6

  The v5 suboption instructs the compiler to generate exception 
  handling code that is the compatible with VisualAge C++ for AIX, 
  Version 5.0.  

  The v6 suboption instructs the compiler to generate new exception
  handling code that correctly handles a try-catch block nested within
  another catch block.

  The default for the compiler is -qeh=v5.  When -qeh is specified
  without any suboption, -qeh=v5 is used. 

  --------------------------------------------------------------------
  1.8  Tempinc implementation file extension
  --------------------------------------------------------------------

  When using the tempinc option to efficiently handle multiple 
  instantiations in different files, the template implementations must 
  be separated from the header file.  The default tempinc implementation 
  file name has been expanded from just "template_header_name.c" to 
  include the file extensions ".t" and ".T".  The first one found 
  (searched in the order ".c", ".t", ".T") will be the file used.

  --------------------------------------------------------------------
  1.9  -qlanglvl=newexcp 
  --------------------------------------------------------------------
  
  The documentation incorrectly indicates that the suboption "newexcp"
  exists for the "-qlanglvl" option.  This suboption is not supported.

  --------------------------------------------------------------------
  1.10 New Suboptions for -qshowinc
  --------------------------------------------------------------------

  Suboptions have been added to the -qshowinc option as follows:

  -qshowinc:   Include all of the included files in the source listing.
  -qnoshowinc: Do not include any of the included files in the source listing.
  -qshowinc=<option1>:<option2>: ...
               The available suboptions are:
               all     same as -qshowinc
               usr     include only the user header files
               sys     include only the system header files

  --------------------------------------------------------------------
  1.11 C compiler no longer supporting "inline" under -qlanglvl=extended
  --------------------------------------------------------------------

  The C compiler previously supported the "inline" keyword with
  -qlanglvl=extended and -qlanglvl=extc89 options. This support is no longer
  available by default for these language levels. If you need to use the 
  "inline" keyword under these language levels, specify the -qkeyword=inline
  option.

  --------------------------------------------------------------------
  1.12 Two new pragmas that deal with templates: #pragma instantiate, #pragma do_not_instantiate
  --------------------------------------------------------------------

  Two new pragmas that deal with templates have been added,

  #pragma instantiate

  The #pragma instantiate directive causes a specific instance of a
  template declaration to be immediately instantiated.  Use this pragma
  if you are migrating existing code.  If you are writing new code, use the
  standard C++ explicit instantiation.

  The syntax of the #pragma instantiate directive is as follows:

      #pragma instantiate   entity

  where entity is a class template-id


  #pragma do_not_instantiate

  The #pragma do_not_instantiate directive suppresses the instantiation
  of a specified entity. It is typically used to suppress the implicit
  instantiation of an entity for which a definition is supplied.

  The syntax of the #pragma do_not_instantiate directive is as follows:

      #pragma do_not_instantiate entity   

  where entity is a class template-id

  --------------------------------------------------------------------
  1.13 xlCcore: linking to run-time library with only C++ core language support 
  --------------------------------------------------------------------

  This feature is intended for users who use third party (non IBM) C++
  Standard Library implementations.  The C++ core language run-time
  library is required for proper functioning of C++ core language features
  such as exception handling, operator new, RTTI, static initialization.  

  The following commands have been added: 
  xlCcore, xlC128core, xlCcore_r, xlC128core_r, xlCcore_r7, xlC128core_r7
  Use one of these commands when you want your application to be linked
  to the C++ core language run-time library but you do not want your
  application to be linked to IBM-supplied standard C++ libraries
  (such as iostreams) that are not required for core language support.
  
  To ensure the proper header files are included and symbols are resolved
  from the third party shared library. specify the third party C++
  library header files in the include path and link to third party shared
  library.

  --------------------------------------------------------------------
  1.14 Addition of Support for -qweaksymbol Option
  --------------------------------------------------------------------

  On AIX Version 5.1 with APAR IY31207 or AIX Version 5.2, you may use
  -qweaksymbol to enable generation of weak symbols.

  -qweaksymbol:    enable generation of weak symbols
  -qnoweaksymbol:  disable generation of weak symbols (default)

  When -qweaksymbol option is turned on, the compiler generates weak
  symbols for the following:

  a) inline functions with external linkage

     You may use the -qweaksymbol option when compiling C++ programs
     containing extern inline functions to suppress the linker
     messages of:

       ld: 0711-224 WARNING: Duplicate symbol:

  b) identifiers specified as weak with #pragma weak or
     functions specified as weak with __attribute__((weak))

     1. #pragma weak id

        If id is defined in the same compilation unit, it makes id
        a weak definition. If id is not defined in the same compilation
        unit, it makes references to id weak references.

     2. #pragma weak id1=id2

        Defines id1 as a weak global symbol, and references to id1 will
        use the value of id2.

        For C++ functions, id, id1, and id2 must be specified using
        mangled names. #pragma weak may not be used for member functions.

     3. __attribute__((weak))

        If the function is defined, make it a weak definition. If it is
        only referenced, make all references weak references.

  --------------------------------------------------------------------
  1.15 Support of -qroptr (read-only pointers) Option
  --------------------------------------------------------------------

  On AIX Version 5.2 with APAR IY49415, you may use -qroptr to enable
  read-only pointers (address constants) to be moved from the .data 
  section to the .text section.  The .text section is always read-only
  and is never modified by either the loader or by an application.
  Since .text is shared among multiple processes, but .data is not, a
  reduction in memory usage is possible when a move has been made of
  an application's constant pointers using -qroptr.  This option is
  not supported for linked libraries, ie. code that links into a share
  library.

  -qroptr:   enable read-only pointers to be moved to the .text section
  -qnoroptr: leave read-only pointers in the .data section (default)

  --------------------------------------------------------------------
  1.16 Change to -qnamemangling=ansi Option
  --------------------------------------------------------------------

  a) Function parameter list mangling for repeated parameters of the
     same function parameter type has changed under -qnamemangling=ansi
     option.  Repeated parameters of the same function parameter type
     are mangled according to the compressed encoding scheme as following:

     <parameter> ::= T <param number> [_]   #single repeat of a previous parameter
                 ::= N <repetition digit> <param number> [_]	#2-9 repetitions
 
     where

     <param number> indicates the previous parameter number, which is
                    repeated.  It is followed by an '_' if <param number>
                    contains multiple digits.  
     <repetition digit> must be greater than 1 and less than 10.  If
                    an argument is repeated more than 9 times, this
                    rule is applied multiple times.  For example, a
                    sequence of 38 parameters that are the same as
                    parameter 1 mangles to "N91N91N91N91N21".

     Under -qnamemangling=ansi scheme change, repeated function parameters
     now ignore top-level cv-qualifiers when they are compared to determine
     if they have the same type.

  b) Previously, the mangling of non-type integral template arguments
     was written as a 32-bit unsigned decimal number and prefixed by 'SP'.
     Due to ambiguities introduced by this in mangling 64-bit values,
     this scheme has been changed for -qnamemangling=ansi:

     <non-type template argument> ::= SM	    #value of INT_MIN
                                  ::= SP <number>   #positive integral argument
                                  ::= SN <number>   #negative integral argument

     When a non-type integral template argument is positive, the number
     is prefixed with SP.  When a non-type integral template argument
     is negative, the number is prefixed with SN, and the decimal number
     is written without the minus sign.  There is no limit in the range
     of decimal numbers which can be represented.

     This breaks binary compatibility with templates using negative
     non-type integral arguments other than INT_MIN, as well as positive
     integral values, which cannot be represented in a 32-bit quantity.

  To preserve binary compatibility, namemangling scheme prior to this
  change may be obtained by specifying -qnamemangling=v6 option or
  corresponding #pragma namemangling(v6).


======================================================================
2.0  Documentation Issues
======================================================================

  --------------------------------------------------------------------
  2.1  Viewing Documentation
  --------------------------------------------------------------------

  Documentation is in HTML format and must be viewed with a 
  frames-capable HTML browser.  Documentation is also available in 
  PDF format.

  To start the HTML help system, invoke "/usr/vacpp/bin/vacpphelp".
  This tool is contained in the vacpp.html.help fileset.

  Note:  
  Certain versions of Netscape Communicator have a well-known problem 
  with HTML frames when they are first loaded.  According to Netscape, 
  you should restart the browser to make subsequent calls to framesets 
  will display properly.

  --------------------------------------------------------------------
  2.2  Browser Settings
  --------------------------------------------------------------------

  a)  Ensure that the environment SOCKS_NS is not set.

  b)  Your browser must not have proxy handling for the localhost port.
      Ensure you turn off proxy handling for localhost in your browser.

      In Netscape 4 (Communicator):

      1. Select Edit... Preferences..
      2. Double-click Advanced in the Category tree
      3. Click Proxies in the Advanced subtree
      4. Click View at the Manual Proxy Configuration selection
      5. Type:
         localhost:49213
         in the "Exceptions... Do not use proxy servers for
         domains beginning with" box.
         If you have other entries here, separate the new entry
         with a comma.
      6. Click OK, then click OK to exit the Preferences Window.

  c)  If you experience a problem installing the IMNSearch component,
      completely remove the component and re-install.

      Do not rely on installp -u to clean up everything, such as
      "group" creates.

      Note: 
      This only applies to new installs of the IMNSearch component.
      If you have a previous version of the IMNSearch component, you 
      should not remove the component before trying to re-install.

  --------------------------------------------------------------------
  2.3  Distributed Debugger Online Help 
  --------------------------------------------------------------------
 
  a)  To access the Distributed Debugger online help that is specific 
      to this product, ensure that the product name is selected in the
      Select product context dialog box. To access this dialog box, select
      Change Product Context from the Distributer Debugger's Help 
      pull-down menu.

  b)  When using an English version of Netscape to view Japanese or
      Simplified Chinese versions of the Distributed Debugger online
      help, fly-over help may be corrupted when it is used over the 
      navigation bar of the online help.

  --------------------------------------------------------------------
  2.4  IMNSearch 
  --------------------------------------------------------------------
 
  In the "Getting Started" and "Memo to Users" documentation under
  the section about filesets required for the Online Help, the IMNSearch 
  filesets are shipped with the AIX operating system.  The latest level 
  of the IMNSearch filesets should be obtained and installed prior to 
  installing the VisualAge C++ for AIX product.

  For convenience, a version of IMNSearch is available on the CD-ROM.
  See Section 3.2 in this README file.

  --------------------------------------------------------------------
  2.5  -qdatalocal=names and -qdataimported=names
  --------------------------------------------------------------------

  The documentation states the following:

       -qdatalocal=names marks the named variables as local, where 
       names is a list of identifiers separated by colons (:). 

       -qdataimported=names marks the named variables as imported, 
       where names is a list of identifiers separated by colons (:). 
       The default is not changed. 

  The documentation should also indicate that the names should be 
  specified with their mangled variable name.

  For example:

  struct C
  {
     static int i;
  }

  To specify C::i is local data, the option -qdatalocal=i__1C should be
  used.  The same name should also be used for -qproclocal -qprocimported 
  and -qprocunknown.


======================================================================
3.0  Miscellaneous
======================================================================

  --------------------------------------------------
  3.1 -lpthreads removed from non-threadsafe stanzas
  --------------------------------------------------

  -lpthreads has been removed from the xlC and xlC128 stanza's within
  the configuration file.  This is a change in behaviour from 
  VisualAge C++ for AIX, V5.0.

  --------------------------------------------------
  3.2  Installation fails due to IMNSearch or LUM 
  --------------------------------------------------

  Installation fails due to missing or down level of IMNSearch or
  LUM filesets on system.

  For convenience, a version of IMNSearch and LUM are available
  with this product on the CD-ROM.  However, the version on the CD
  may not be the latest version.  It is recommended that the latest
  version be installed on your system.

  To install LUM from the CD, insert the CD-ROM into the CD-ROM drive.
  Mount the CD-ROM as follows:

  a)  As root, invoke "smit".
  b)  Select "System Storage Management (Physical & Logical Storage)",
      press the "enter" key.
  c)  Select "File Systems", press the "enter" key.
  d)  Select "Add / Change / Show / Delete File Systems", press the "enter"
      key.
  e)  Select "CDROM File Systems", press the "enter" key.
  f)  Select "Add a CDROM File System", press the "enter" key.
  g)  Enter the "DEVICE" name (e.g. "cd0").
  h)  Enter the "MOUNT POINT" where you would like to mount the CD-ROM
      (e.g. "/cdrom").
  i)  Press the "enter" key.
  j)  Exit "smit".

  The IMNSearch installp images are available in the sub-directory
  "IMNSearch" indicated by the mount point of the CD-ROM
  (e.g. "/cdrom/IMNSearch".)

  The LUM installp images are available in the sub-directory
  "lum" indicated by the mount point of the CD-ROM
  (e.g. "/cdrom/lum".)

  --------------------------------------------------
  3.3  Exporting Temporaries
  --------------------------------------------------
  
  The compiler incorrectly exported temporary variables.  As of
  6.0.0.1, the compiler no longer exports temporary variables.
  
  --------------------------------------------------
  3.4  Using USL I/O stream with C99 clog function
  --------------------------------------------------

  The C run-time library in AIX version 5.2 now supports the C99
  complex functions. These include a function called clog
  (i.e. the complex logarithm), which has the same name as the 
  USL ::clog stream (see footnote below). The clog function 
  resides in the math library libm.a. The compiler's default 
  configuration file links libm.a after libC.a so that
  the USL ::clog stream is available by default; the
  C99 clog function is not available in this configuration. 
  The reverse would happen if you change the link order by 
  explicitly specifying libm.a before the C++ library on the 
  command line.

  The following are possible scenarios in your application:

  1) The C99 clog function is not used. The compiler's default 
     configuration file would work. If you specify libraries on 
     the linker command line, make sure libm.a is linked after 
     the C++ libraries.

  2) C code that uses C99 clog() is linked with C++ code that 
     doesn't use the USL ::clog stream.
     Make sure that libm.a is linked before the C++ libraries, 
     for example by specifying -lm to the link step.

  3) C code that uses C99 clog() is linked with C++ code that uses 
     the USL ::clog stream.
     This is a limitation due to the introducing of the C99 clog 
     function. Try the following as workarounds.
     a. Change the application to use the C++ std I/O stream. The std 
        name space separates std::clog stream from C99 clog().
     b. Avoid using C99 clog(). Use the other elementary functions
        and formulae as substitute if the algorithm permits.
     c. Change the application to avoid using the USL ::clog stream 
        and use other streams instead.

  Note: The USL I/O stream class library was part of the IBM
        Open Class Library in previous releases. Please refer
        to the IBM Open Class Library Transistion Guide for
        more information.
  
  --------------------------------------------------
  3.5  Deployment Considerations
  --------------------------------------------------

    When an application is built and linked to the run-time, it must
    use that level of the run-time or later when deployed.

  
======================================================================
4.0  Other Sources of Information
======================================================================

  ----------------------
  4.1  Product Home Page
  ----------------------

  For the latest information about VisualAge C++ Professional for AIX,
  Version 6.0, see the VisualAge C++ home page at:

  http://www.ibm.com/software/awdtools/vacpp


========================================================================
5.0 Operating System Migration from AIX Version 4.3.3 to AIX Version 5.1 
========================================================================

DURING AN OPERATING SYSTEM MIGRATION, USERS ARE REQUIRED TO PERFORM 
TWO STEPS TO ENSURE VISUALAGE C++ WILL CONTINUE TO OPERATING
CORRECTLY.  THIS IS DUE TO THE LIMITATION OF THE AIX MIGRATION
PROCESS. 

The VisualAge C++ product contains a number of filesets specific
to the operating system level which are not contained on the AIX
media.  Therefore, after migrating from an earlier version of AIX
to AIX 5L Version 5.1, users will be required to manually install
the AIX 5L versions of the filesets from the VisualAge C++ media.
Only the filesets which are required by the users need to be installed.

These filesets are:

memdbg.aix50.adt
vacpp.cmp.aix50.lib
vacpp.cmp.aix50.tools
vacpp.memdbg.aix50.lib
vacpp.memdbg.aix50.rte
xlopt.aix50.lib
xlsmp.aix50.rte

After the migration, if there exists AIX 4.3.3 version of the above 
filesets but are missing the AIX 5L versions, you will be required 
to install them.