IBM® Rational® PurifyPlus™ for Windows v7.0.1.0-003 Release Notes

This file last updated: 04/17/2012


(C) Copyright IBM Corporation. 1992, 2012. All Rights Reserved.

This documentation (the "Work") is protected under the copyright laws of the United States and/or other jurisdictions, as well as various international treaties. Any reproduction or distribution of the Work is expressly prohibited without the prior written consent of IBM Corporation.

Before using this information, be sure to read the general information in Appendix. Notices


Contents

What's New in Interim Fix v7.0.1.0-003
What's New in Previous Releases
Installation Information
Product Documentation
Hardware Requirements
Supported Platforms
Compatibility Issues
With Rational Products
With Third-Party Products
End-of-Life Announcements
Restrictions and Guidelines
Known Issues
Resolved Issues
Documentation Updates
Additional Information
Contacting IBM Customer Support
Copyright Notices

What's New in Interim Fix v7.0.1.0-003


What's New in Previous Releases

What's New in v7.0.1.0-001


Installation Information

To install this release:

Once the installation is complete, you can start any of the PurifyPlus components using menu items in Start>All Programs>IBM Rational>IBM Rational PurifyPlus. The Help->About box for any of the components should report a version number of 7.0.1.0-003. You will NOT need to reboot your system.


Product Documentation

PurifyPlus product documentation is available from the following locations:


Hardware Requirements

Memory: 1GB (2 GB recommended); more memory generally improves responsiveness
Swap space: 2 x physical memory
Video: 600 X 800 X 256-color resolution or higher; true color recommended
Disk space to install: 200 MB
Additional disk space (needed to accommodate instrumentation cache): Depends on the size and complexity of executables and shared object files being instrumented. As a rough guide, expect instrumented modules to be 50% bigger than the original module.


Supported Platforms

Supported Platforms
Processor Architectures Executable Type Operating System versions IDEs
AMD 32
AMD 64
Intel 32
Intel 64
32-bit
64-bit
  • Microsoft Windows 7, base through SP1
  • Microsoft Windows Server 2008 R2 (Standard, Enterprise, DataCenter), base through SP1
  • Microsoft Windows Server 2008 (Standard, Enterprise, DataCenter), base through SP2
  • Microsoft Windows Vista (Business, Enterprise, Ultimate), base through SP2
  • Microsoft Windows Server 2003 (Standard, Enterprise), base through SP2
  • Microsoft Windows Server 2003 R2 (Standard, Enterprise), base through SP2
  • Microsoft Windows XP Professional, base through SP3
  • Microsoft Visual Studio 2010, base through SP1
  • Microsoft Visual Studio 2008, base through SP1
  • Microsoft Visual Studio 2005, base through SP1

Managed Support
Data Collection Type Runtime Environment
.NET data collection Microsoft .NET 3.0, 3.5

Java data collection Sun JRE 1.5.0, 1.6.0
IBM JRE 5.0, 6.0

Note: PureCoverage only


Compatibility Issues

This section identifies special considerations for using PurifyPlus with other products, including Rational products and third-party software products.

With Third-Party Products

Installing PurifyPlus on a Windows system running Remote Desktop Services

You can install and run PurifyPlus on a Windows system running Remote Desktop Services (RDS), which was previously known as Terminal Services.

When running on a Server versions of Windows with RDS (for example Windows Server 2003), you must configure the system to use PurifyPlus floating licenses. When running on a Client version of Windows with RDS (for example Windows 7), you can configure the system to use either a PurifyPlus floating license or a PurifyPlus Authorized User license.

End-of-Life Announcements

The following capabilities are no longer supported as of PurifyPlus v7.0.1.0-003: The following capabilities are no longer supported as of PurifyPlus v7.0.1:

Restrictions and Guidelines

Restrictions and Guidelines
Topic
Applies To
Restriction
Installation PurifyPlus If PurifyPlus v7.0 (or earlier) is currently installed, you must uninstall it before you can install v7.0.1. This is because v7.0 used a different install technology that is incompatible with IBM Installation Manager. Use Add or Remove Programs to uninstall v7.0, then install v7.0.1.
AppInit_DLLs PurifyPlus PurifyPlus does not work correctly when dlls are injected into a process via the AppInit_DLLs registry key because it fails to instrument the injected libraries. In order for PurifyPlus to work correctly, the application which uses the key must be uninstalled and the system must be rebooted. The utility ComSpyNT is known to use this registry key.
Visual C++ PurifyPlus Applying changes to a running, instrumented program, using "Edit & Continue" in Visual C++ is not supported.
SetWindowsHook PurifyPlus There are compatibility problems between PurifyPlus and applications that use SetWindowsHook() and SetWindowsHookEx(). Often these compatibility problems can be solved by using minimal instrumentation for the hook DLL.

The SetWindowsHookEx() API is disabled in instrumented programs. This is to avoid hooking uninstrumented code from within an instrumented application. For workarounds to this, please contact Rational Software's Technical Support.

Stdin PurifyPlus You cannot use the stdin redirection request, as in test.exe < test.txt, when you instrument and run programs using the Run Program dialog. Use the command line interface instead.
argv[0] PurifyPlus In natively instrumented applications, argv[0] is set to the instrumented filename. You can specify a name for the instrumented file in Settings>Executable Settings>Files>Instrumented File Name, if your application depends on a specific value for argv[0].
Debug Data PurifyPlus PurifyPlus does not support the use of the NB05 debug data format in modules. You can use the cvpack utility program, included with Microsoft Visual Studio, to update the debug information for use with PurifyPlus. To do this, make a backup copy of the module, then run cvpack on the module. It will rewrite the module in place with the new debug information.
Instrumentation PurifyPlus The instrumentation of files fails to happen in the following situations:
  • A .pdb file is supplied after a .dll or .exe file has been instrumented. When the application is re-run, the .pdb file is not reinstrumented.
  • Two .dlls that have the same name and the same creation time are swapped, such as a debug version and a production version. The "new" .dll is not instrumented, because an identically-named file with the same timestamp already exists in the cache directory.
  • Instrumented .dll and .exe files that are located outside of the cache directory are not deleted when a new version of PurifyPlus is installed. When an application that uses one of these files is run, the existing instrumented version is used.
In each case, the problem can be resolved by deleting the instrumented files to force reinstrumentation.
Cache directory PurifyPlus PurifyPlus does not support Universal Naming Convention (UNC) names for the cache directory setting. Instead, a network drive should be mapped to specify a cache directory on a remote machine.
VirtualAlloc PurifyPlus PurifyPlus does not support VirtualAlloc regions that contain executable code. The code is considered to be part of the data section, and is not instrumented.
Relocations PurifyPlus PurifyPlus requires relocation data in order to provide source line information for an instrumented application. To ensure an application contains the necessary relocations, the Visual C++ linker option /FIXED:NO should be used when building an executable.
Hand-coded Assembly PurifyPlus PurifyPlus does not support modules that include hand-coded assembly. To ensure proper behavior, these modules should be instrumented in Exclude mode.
Japanese Language Pack PurifyPlus Due to a synchronization problem within the Japanese Language Pack on Windows XP, PurifyPlus must change the default keyboard setting for instrumented programs from Japanese to English. Before doing this, a dialog box will be displayed requesting consent to do so.
Running as a non-administrative user PurifyPlus The default location of the PurifyPlus cache directory is under the install folder which is typically located in the C:\Program Files\IBM\RationalPurifyPlus\x64 or C:\Program Files\IBM\RationalPurifyPlus\x86 directory. A user without administrative privileges does not have write access to the Program Files folder and may encounter error messages from PurifyPlus about not being able to create (or write to) a cache directory. In order to resolve this issue, non administrative users are advised to define an environment variable to point PurifyPlus to a writable folder for the cache directory:
set RATL_PQC_PROFILE_DIR=<writable folder> - e.g. user's profile directory
Further information can be found in the Files and File Locations section of the PurifyPlus online help.
SetErrorMode Purify SetErrorMode() suppresses all system-level message boxes, including the Windows Application Error message box. If you enable Purify's Break On Error for a program that calls SetErrorMode(), Purify displays the access error in the Error View window, but the Application Error message box does not appear and the program continues to run.
Debugging Purify Purify assigns a default debugger based on the default AeDebug Debugger entry in the Registry. If you do not have Microsoft Visual Studio installed, it's possible that the registered program will not support full debugging.
Variable clock speed Quantify Quantify may provide incorrect timing results on systems equipped with variable clock rate mechanisms. Some processors, including many mobile processors, are designed so that their clock rates change on the fly. If the system is busy, the clock rate is higher; if it's not so busy the clock rate drops. Quantify measures the clock rate at a time when the processor is busy and then counts clock ticks to measure the times for functions that block or wait, such as Sleep(). When the clock rate slows down, there aren't as many clock ticks, and so the numbers that Quantify reports for functions like Sleep() may appear too low. To correct the timing results on these systems, shut down the operating system, and disengage the variable clock rate feature via the system's CMOS settings. This feature is known by different names, including SpeedStep (on Intel processors) and PowerNow! (on AMD processors). By disabling this feature while you are using Quantify, you can ensure that timing results are accurate even while the system is not constantly busy.

Known Issues

The following table lists the known issues in PurifyPlus v7.0.1.

Known Issues
Topic
Product
Change Request
Description
Selective instrumentation and ASP.NET PurifyPlus RATLC0070331 Using PurifyPlus to selectively instrument ASP.NET applications does not work. The options necessary to enable this feature are not properly passed to the running application. This problem can be circumvented by setting a system environment variable. For Purify, this can be accomplished with the following:

PURIFYOPTIONS=sys_ini_filename="<User Profile>\Application Data\Rational\Purify\purifyw_pure.ini"

Where <User Profile> is the system-returned location for the Windows user profile directory.

Profiling .NET application running as a Service PurifyPlus RATLC00031871 In order to correctly profile a .NET application running as a Windows Service, perform the following steps:
  1. set COR_ENABLE_PROFILING=1
  2. set COR_PROFILER=BciEngCor.BciEngCorImp
  3. set PURE_MONITOR_ENABLE=<Component>
    where <Component> is one of Purify, Quantify or Coverage.
  4. set PURE_MONITOR_TARGET_PATTERN=<Basename of EXE>
    where <Basename of EXE> is the basename of your service executable (e.g. foo is the basename of foo.exe.)
  5. Reboot your machine

Note: If your managed service is running as a 64-bit application, you will need to set COR_PROFILER=BciEngCor64.BciEngCorImp. If your managed service was built with a target CPU of ANY, it may run as a 32-bit application on a 32-bit operating system and a 64-bit application on a 64-bit operating system.
JNI Quantify RATLC00369104 When profiling native code invoked through Java's JNI interface, the Java runtime may throw an exception and abort. This is a known problem that can be worked around by specifying the Quantify option /profiler-runtime-flags=4 when instrumenting the native code. This may cause the Descendant time for functions that return back through JNI to appear larger than normal. The function time, however, will still be correct.
Data Set operations Quantify RATLC00369110 Data set operations such as focus and delete subtree data can change F and F+D times or even eliminate certain functions that have annotated source. Currently all the data collected at line level is NOT changed during data set operations (it reflects the totals over the entire dataset).
Memory Leaks Purify RATLC00433950 Currently Purify does not track memory allocated on the heap by certain Windows API functions. Affected APIs are implemented in the following system libraries:
  • NTDLL.DLL
  • KERNEL32.DLL
  • KERNELBASE.DLL
The memory will be tracked only if the heap block was allocated directly by one of the following calls:
  • RtlAllocateHeap
  • HeapAlloc
  • GlobablAlloc
  • LocalAlloc.
If it was allocated by any other Windows API call listed in the libraries above, it will not be tracked. Memory leaks or errors that require Purify's "Red Zones" will not be reported. In the example below, the memory leak will be reported.

{ BYTE* pb = (BYTE*)::HeapAlloc(::GetProcessHeap(), 0, 0x10); pb = NULL; }

However, in the example below, the memory leak will not be reported even though the GetEnvironmentStrings call allocates a heap block.

{ LPTSTR szEnv = ::GetEnvironmentStrings(); szEnv = NULL; }


Resolved Issues

This table describes all issues resolved since v7.0.1 was released.

Component Change Request APAR Headline Fixed In Release
Purify RATLC00421511 PM14109 Application instrumented with Purify crashes with EXU message when module containing deallocator is unloaded 7.0.1.0-003
Purify RATLC00423236 PM20912 Purify reports many IPRs from selectively instrumented unmanaged dll loaded by a managed application 7.0.1.0-003
Purify RATLC00427638 PM36647 Purify fails to run hello.exe on Japanese version of Windows 7 7.0.1.0-003
All components RATLC01332974 PM36929 Application instrumented by Purify fails in CreateProcess 7.0.1.0-003
All components RATLC01500600 PM09081 License Key Administrator is launched after silent install with Installation Manager 7.0.1.0-003
Purify RATLC01514077 PM24342 Purify instruments two copies of dll, causes PUT runtime issues 7.0.1.0-003
Purify RATLC01516250 PM26886 Purify instrumentation engine encounters access violation while processing dblnet.exe 7.0.1.0-003
Purify RATLC01522656 PM35213 purifyw.exe crashes during instrumentation on Windows 7 Pro K (32bit) 7.0.1.0-003
Purify RATLC02497680 PM52379 PurifyPlus version 7.0.1-001 integration with VS behaves abnormally 7.0.1.0-003
Purify RATLC00425381 PM27981 MLK is not detected when running Purify and collecting "Coverage,error,and leak data" 7.0.1.0-003
PureCoverage RATLC00427932 PM42301 PureCoverage "purecovweb.pl" utility fails when directory names start with a digit 7.0.1.0-003
Purify RATLC00428249 PM39255 Purify reports an unexpected EXU message 7.0.1.0-003
Purify RATLC00428612 PM40523 All Cache folder files can not be deleted if Purify is Running 7.0.1.0-003
PureCoverage RATLC01291097 PK87770 Collecting data for managed dll loaded by MSTest causes application to hang 7.0.1.0-003
Purify RATLC01523288 PM35856 Purify api PurifyPostAlloc doesn't perform as expected 7.0.1.0-003
Purify RATLC02490353 PM42729 Application built with Visual Studio 2010 and instrumented with PurifyPlus crashes at run time 7.0.1.0-003
Quantify RATLC02499879 PM55491 Settings for Quantify change based on how the GUI is opened 7.0.1.0-003
Purify RATLC02561176 PM38135 Application instrumented with Purify generates an EXU at run time 7.0.1.0-003
PureCoverage RATLC00323989 PM12781 PureCoverage always reports a statement just before a catch clause as "partially executed" 7.0.1.0-003
PureCoverage RATLC00421320 PM13342 Application instrumented with PureCoverage crashes during startup with error "failed to initialize properly" 7.0.1.0-003
Purify RATLC00423528 PM22083 Purify for Windows can not merge coverage reports 7.0.1.0-003
Purify RATLC01420715 PM06902 Purify Istream wrappers are not passing the correct number of parameters to their respective real_APIs 7.0.1.0-003
Purify RATLC01492529 PK98410 Application instrumented with Purify generates message "Unhandled exception at 0x... in purifyW.exe" at runtime 7.0.1.0-003
PureCoverage RATLC01513299 PM23438 Application instrumented with PureCoverage crashes during startup with error "failed to initialize properly" 7.0.1.0-003
Purify RATLC01523100 PM35663 Visual Studio 2010 application instrumented with Purify crashes in logarithmic functions 7.0.1.0-003
All components RATLC01418086 PM04983 "userinst.exe" program is misspelled in PurifyPlus Installation Guide 7.0.1.0-003
Purify RATLC01491535 PK97104 Application instrumented with Purify crashes with "unhandled win32 exception" and exits with code 0xC000013A 7.0.1.0-003
PureCoverage RATLC01532322 PM25253 Text file may not be generated using PureCoverage option /SaveMergeTextData 7.0.1.0-003
Purify RATLC00415491 PK95976 Purify's keeping track of the stack between nested function calls may result in a major slowdown 7.0.1.0-001
All components RATLC00418291 PM04064 Launching Source Code Viewer brings up additional instance of Visual Studio 7.0.1.0-001
Purify RATLC00418294 PM04074 Purify aborts after the memory leak button is clicked 7.0.1.0-001
Quantify RATLC00419091 PM05835 Diff between two pre-existing quantify datasets takes over an hour 7.0.1.0-001
Purify RATLC01306004 PM03770 Purify reports "Error: Can't repair branch at 0xb03912" and "Error: Unable to patch a compressed reference" 7.0.1.0-001
Purify RATLC01482849 PK86132 P-W: File -> Open causes instrumented application to crash on 64 bit Windows 7.0.1.0-001
Purify RATLC01488335 PK93073 Using Quick Filter during a leak scan may cause Purify to crash 7.0.1.0-001
Purify RATLC01495967 PM02817 Purify'd managed app error: "An unhandled exception of type 'System.InvalidProgramException' occurred ..." 7.0.1.0-001
Purify RATLC00420119 PM08264 Purify'd app exhausts memory and limits test sets 7.0.1.0-001
Purify RATLC00421297 PM13267 Unable to patch a compressed reference from 0x53afd5 (new) to 0x53b008 7.0.1.0-001
Purify RATLC01214013 IC54033 Purify'd process terminates unexpectedly with low "length for errors" or "length for allocations" settings 7.0.1.0-001
All components RATLC01501901 PM11420 Unable to use PurifyPlus v7.0.1 on Windows 2008 (x64) Server with AU license 7.0.1.0-001
Purify RATLC01509403 PM18978 Command Arguments are not passed to Purify 7.0.1.0-001
PureCoverage RATLC00415791 PK97192 Customer exe starts up and exits immediately only with selective instrumentation 7.0.1.0-001
All components RATLC00416731 PM00187 PurifyPlus error report does not show function name defined in DLLs. 7.0.1.0-001
Purify RATLC00418029 PM04953 Regression: possible memory leak in Purify runtime 7.0.1.0-001
All components RATLC00418541 PM04988 LA-iFix release notes needs clarification on steps to add repository directory when using Browse feature 7.0.1.0-001
All components RATLC00419996 PM07998 Purify and Quantify reports "Run-time error: Attempt to create Application-Specific PWQ failed; code-50006" 7.0.1.0-001
Purify RATLC01410527 PK99226 PURIFY REPORTS SPURIOUS UMR FROM CRYPTO++ LIBRARY 7.0.1.0-001
Purify RATLC01420596 PM06794 Dataset(error=e29a0009) is reported when taking a snap shot while profiling a ASP.net application 7.0.1.0-001
PureCoverage RATLC01488280 PK92984 PC-W: PureCoverage hangs after writing output files 7.0.1.0-001
Purify RATLC01495236 PM01762 Exception occurs to profiling ASP.NET web application related to AJAX and RAD Controls 7.0.1.0-001
All components RATLC00411749 PK85554 Dual monitor - Purify does not remember Instrumentation dialog window on Monitor display #2 7.0.1.0-001
Purify RATLC00418408 PM04399 Instrumented app locks up when trying to exit 7.0.1.0-001
Purify RATLC00420333 PM09088 Command-line args are not passed to VS debugger when using Purify's "Run under the debugger" 7.0.1.0-001
Quantify RATLC00420467 PM09483 Quantify buffer overflow errors when profiling a large job 7.0.1.0-001
Purify RATLC00421530 PM14786 Visual Studio integration: Purify opens second instance of Visual Studio 7.0.1.0-001
PureCoverage RATLC00883215 PK97875 PC-W: "An unhandled win32 exception occured in coveragew.exe" using SI 7.0.1.0-001
PureCoverage RATLC01300674 PK97996 P-W: "Attempt to create Application-Specific PWQ failed; code=50006" 7.0.1.0-001
Purify RATLC01481628 PK86785 Purify reports "new handles" as "all handles" 7.0.1.0-001
Purify RATLC01504525 PM13958 P-W: "Trap bits found in live chunk ..." 7.0.1.0-001


Documentation Updates

There are no known documentation issues at this time.


Additional Information

Product Notes
Topic
Applies To
Note
Language Support
PurifyPlus You can install PurifyPlus on these international operating systems:
  • Simplified or Traditional Chinese
  • Dutch, French
  • German
  • Hebrew
  • Italian
  • Japanese
  • Korean
  • Swedish
All displays, menus, controls, wizards, reports, and user documentation are in U.S. English.
  • If you have a Traditional Chinese, Dutch, Hebrew, or Korean operating system, enter data (such as path names) in U.S. English or the ASCII character set.
  • If you have a Simplified Chinese, French, German, Italian, Japanese, or Swedish operating system, enter data in U.S. English or the native language character set. Regional date, time, currency, and numbering conventions are also supported for both input and output.
Debug data PurifyPlus PurifyPlus has a limited ability to display symbolic and line level information if it can not find the associated debug data for a given module. When you copy a DLL that you want to instrument into your working directory, also copy any related .pdb, .dbg, or .map files. This ensures that messages and profiling detail are as informative as possible. To verify that the debug data has been found and instrumented, check the module instrumentation dialog (Settings>Executable Settings>PowerCheck>Modules to Instrument>Configure).
Custom Allocators Purify Purify supports some custom memory allocators. Custom versions of new and malloc may initialize memory or increase the size of allocations. Custom allocation schemes that do their own sub-allocation are also supported. The function prototypes and calling conventions of overloaded new, malloc, calloc, realloc, delete, and free must match the standard allocators. In addition, it is still important to match new/delete and malloc/free calls.
First chance exceptions Purify When you run an application instrumented with Purify under a debugger, "First-chance exceptions" or access violations are displayed. These messages can safely be ignored.
Object Reference Data Purify In the Object List View of the Data Browser (for Java code), the Object + Reference (O+R) column does not list data by default. Since the O+R calculation is potentially time-consuming, it is an optional calculation. To force the system to make this calculation, display the Object details view: Right click in the Object reference graph pane and select the Line Scale Factors->Linear or the Line Scale Factors->Logarithmic menu item.
Stock Sample Purify Purify provides the source files to build a sample program, the Stock program. The Stock program contains intentional errors. If you try to run the program outside of Purify or a debugger, the program might crash.

Additional product information is available at the IBM Publications Center.

Contacting IBM Customer Support for Rational software products

If you have questions about installing, using, or maintaining this product, contact IBM Customer Support as follows:

The IBM software support Internet site provides you with self-help resources and electronic problem submission. The IBM Software Support Home page for Rational products can be found at http://www.ibm.com/software/rational/support/.

Voice Support is available to all current contract holders by dialing a telephone number in your country (where available). For specific country phone numbers, go to http://www.ibm.com/planetwide/.

Note:
When you contact IBM Customer Support, please be prepared to supply the following information:

Downloading the IBM Support Assistant

The IBM Support Assistant (ISA) is a locally installed serviceability workbench that makes it easier to resolve software product problems. ISA is a free, stand-alone application that you download from IBM.

ISA includes these features:

For more information about ISA, including instructions for downloading and installing ISA and product plug-ins, go to the ISA Software Support page.

IBM Support Assistant: http://www.ibm.com/software/support/isa/


Appendix. Notices

This information was developed for products and services offered in the U.S.A. IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service.

IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not grant you any license to these patents. You can send license inquiries, in writing, to:

IBM Director of Licensing 
IBM Corporation, North Castle Drive 
Armonk, NY 10504-1785 
U.S.A.

For license inquiries regarding double-byte (DBCS) information, contact the IBM Intellectual Property Department in your country or send inquiries, in writing, to:

IBM World Trade Asia Corporation Licensing 
2-31 Roppongi 3-chome, Minato-ku 
Tokyo 106, Japan

The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you.

This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice.

Any references in this information to non-IBM Web sites are provided for convenience only and do not in any manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of the materials for this IBM product and use of those Web sites is at your own risk.

IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you.

Licensees of this program who wish to have information about it for the purpose of enabling: (i) the exchange of information between independently created programs and other programs (including this one) and (ii) the mutual use of the information which has been exchanged, should contact:

Intellectual Property Dept. for Rational Software
IBM Corporation 
5 Technology PArk Drive
Westford, MA 01866 
U.S.A. 

Such information may be available, subject to appropriate terms and conditions, including in some cases, payment of a fee.

The licensed program described in this document and all licensed material available for it are provided by IBM under terms of the IBM Customer Agreement, IBM International Program License Agreement or any equivalent agreement between us.

Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurement may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment.

Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.

COPYRIGHT LICENSE:

This information contains sample application programs in source language, which illustrates programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. You may copy, modify, and distribute these sample programs in any form without payment to IBM for the purposes of developing, using, marketing, or distributing application programs conforming to IBM's application programming interfaces.

Each copy or any portion of these sample programs or any derivative work, must include a copyright notice as follows:

(c) (your company name) (year). Portions of this code are derived from IBM Corp. Sample Programs. (c) Copyright IBM Corp. _enter the year or years_. All rights reserved.

Additional legal notices are described in the legal_information.html file that is included in your Rational software installation.

Trademarks

AIX, ClearCase, ClearCase Attache, ClearCase MultiSite, ClearDDTS, ClearGuide, ClearQuest, DB2, DB2 Universal Database, DDTS, Domino, IBM, Lotus Notes, MVS, Notes, OS/390, Passport Advantage, ProjectConsole, PureCoverage, Purify, PurifyPlus, Quantify, Rational, Rational Rose, Rational Suite, Rational Unified Process, RequisitePro, RUP, S/390, SoDA, SP1, SP2, Team Unifying Platform, WebSphere, XDE, and z/OS are trademarks of International Business Machines Corporation in the United States, other countries, or both.

Java and all Java-based trademarks and logos are trademarks of Oracle and/or its affiliates in the United States, other countries, or both.

Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both.

UNIX is a registered trademark of The Open Group in the United States and other countries.

Linux is a trademark of Linus Torvalds in the United States, other countries, or both.

Other company, product or service names may be trademarks or service marks of others.

others.