HP OpenVMS SystemsC Programming Language
Compaq C V6.4 for OpenVMS VAX Release Notes
© 2001 Compaq Computer Corporation.
COMPAQ, the Compaq logo, VAX, Alpha, VMS, and OpenVMS are registered in the U.S. Patent and Trademark Office. Tru64 is a trademark of Compaq Information Technologies Group, L.P. in the United States and other countries. Microsoft and Visual C++ are trademarks of Microsoft Corporation. UNIX is a trademark of The Open Group in the United States and other countries. All other product names mentioned herein may be trademarks of their respective companies.
Confidential computer software. Valid license from Compaq required for possession, use, or copying. Consistent with FAR 12.211 and 12.212, Commercial Computer Software, Computer Software Documentation, and Technical Data for Commercial Items are licensed to the U.S. Government under vendor's standard commercial license.
Compaq shall not be liable for technical or editorial errors or omissions contained herein. The information in this document is provided as is without warranty of any kind and is subject to change without notice. The warranties for Compaq products are set forth in the express limited warranty statements accompanying such products. Nothing herein should be construed as constituting an additional warranty.
1 Product name change: DEC C -> Compaq C
Note that the change in the product name from DEC C to Compaq C reflects only the acquisiton of the corporation, and meeting the new requirements for product branding. The technical content of the compiler has not changed, and in particular the use of the string DEC or DECC in the software itself (e.g. names of predefined macros, command line qualifiers, filenames, symbol prefixes, etc) has not changed.
We have tried to use the name Compaq C when referring to the new version, or when making general references to the product that might encompass both old and new versions. We try to use the name DEC C only where an older version is specifically being designated or where the use involves software identifiers or strings that are not changing. There are bound to be instances that inadvertently use the "wrong" name. The important thing to know is that from a technical point of view, this is a new version of the DEC C compiler and the name change does not signify a change in technology that could introduce incompatibilites with previous versions of DEC C.
Similarly for DEC C++, which is being renamed to Compaq C++ in V5.7 for
There is a new product called "OpenVMS Enterprise Toolkit for Visual Studio" that supports remote development for OpenVMS using a Windows/NT desktop running a Visual Studio interface that is now shipping. See http://h71000.www7.hp.com/commercial/et/et_index.html for more information.
Also note that most of the Compaq C documentation is now being provided in html format, including help and release notes, as well as all of the Compaq C manuals. The URL to access the online help with a local browser is given at the start of the "$ help cc/decc" command. For additional information about the OpenVMS VAX version of Compaq C, see also:
For additional information about the Compaq C language and its supported library routines, see also:
The Compaq C media contains three VMSINSTAL kits; in order: AACRT060.A CCnnn.A, CCnnn.B.
AACRT060 is the Compaq C/C++ Run-Time Components for OpenVMS VAX V6.0 kit. It includes image files and libraries for the Compaq C RTL, Compaq C++ Class Library and DECthreads. These files are updated versions of the binaries provided with V6.0 of OpenVMS VAX. Additional files useful for building applications which use both the VAX C RTL and Compaq C RTL are also included. This kit must not be installed on V6.1 of OpenVMS VAX systems or later. Starting with V6.1 of OpenVMS VAX, all of the components and functionality contained on the AACRT060 kit were provided with the base operating system. Please see the Compaq C/C++ for OpenVMS VAX Run-Time Components Reference and Installation Manual in that kit's documentation for installation and usage information, and the following section regarding redistribution of libraries.
The CCnnn.A and CCnnn.B savesets contain the compiler and documentation
kits, where the nnn encodes the compiler version number.
This section describes how developers who need to redistribute run-time library components to their users' systems are required to do so. The Compaq C Version 6.2 kit contains two run-time library components that you may need to redistribute:
Redistribution of other components on the Compaq C Version 6.2 kit is
prohibited. The redistribution rights set forth in the Software Product
Description do not apply to the DECC$CRTL.EXE or DECC$CRTL.README files
distributed with this kit.
The Compaq C/C++ Run-Time Components kit has been engineered to allow
for redistribution with any application that uses one or more of these
components. Redistributing the Compaq C/C++ Run-Time Components kit
requires that the entire kit and its documentation be shipped to the
remote site receiving any such application. See the Compaq C/C++
Run-Time Components for OpenVMS VAX Reference and Installation
Guide for detailed installation and redistribution instructions.
Note that applications targeted to V6.1 and later versions of OpenVMS
have no need of this kit.
Redistribution of this library is only required by those applications that need the features supplied by the library and need to be linked during or after installation on an end user target system. If you link your application against this library and ship either a shareable or executable image to your customers, then redistribution of the object library is not necessary. The linking process of your application causes those library modules to be incorporated into your resultant image.
There are two options that can be used to redistribute the DECC$CRTL.OLB object library. The options are based on whether or not the library is needed after the installation is completed.
The first option is for applications that link during installation, but have no need for the object library once installation is completed. For that set of developers, we recommend placing DECC$CRTL.OLB on your kit, but to link using the copy in VMI$KWD and not issue a PROVIDE_FILE option which would move this file onto the system. In other words, the object library resides only on your kit, is used during installation to link your application, but is not placed onto the end user system.
The second option is for applications that do need the object library
after installation is completed. For this class of applications, the
object library should be placed in a product-specific location on the
target system and not in SYS$LIBRARY. The contents of this object
library must not be inserted into the SYS$LIBRARY:STARLET.OLB library.
For additional information about installing the kit, and for the
location of installed components of this product, refer to the
Compaq C Installation Guide accompanying these release notes.
After installing Compaq C for OpenVMS VAX on a cluster, you must invoke
the command @SYS$STARTUP:CCXX$STARTUP.COM on each node of the cluster.
If you have VAX C installed on your system, the installation procedure will ask if you want the CC command to default to VAX C or Compaq C. The default response is Compaq C. If you choose the default response and let CC invoke Compaq C instead of VAX C, you may find that:
So that users and other produces can determine the default for the
command, Compaq C defines the logical
. This logical has the value
invokes VAX C and the value
invokes Compaq C. This logical does not control the behavior of the
command. That is determined at installation time.
On versions of OpenVMS VAX prior to V6.1 only, Compaq C requires the previous installation of the Compaq C/C++ Run Time Components kit. The Compaq C compiler will not install if the Compaq C/C++ Run Time Components kit is not installed on such systems. See the Compaq C/C++ Run Time Components kit release notes for more information. On versions of OpenVMS VAX from V6.1 onward, the run time components needed by Compaq C are shipped as part of the OpenVMS distribution and the Compaq C/C++ Run Time Components kit must not be installed on those systems.
When installing or upgrading to OpenVMS V5.* on a system that has Compaq C installed on it, certain files will be superseded by old versions that are incompatible with the newer versions contained in the Compaq C/C++ Run-Time Components kit. Therefore, the AACRT kit should be reinstalled after any update of OpenVMS. It is not necessary to reinstall the AACRT kit after updating to OpenVMS V6.1. It is not necessary to reinstall the AACRT kit prior to future upgrades of Compaq C.
The AACRT060 kit provides a version of DECthreads for use on OpenVMS VAX V5.5-2 through OpenVMS VAX V6.0. This version of DECthreads cooperates with the Compaq C RTL. Some existing applications may not run correctly if they use both the new version of DECthreads and the OpenVMS V5.* versions of SYS$LIBRARY:VAXCRTL*.EXE. If you upgrade to VMS 6.1, the system versions of the DECthreads headers are newer than the version which ship on this kit. Therefore, you will need to reinstall Compaq C V6.4 so that the pre-6.1 DECthreads headers will be removed from DECC$RTLDEF.TLB.
You must not redistribute individual components contained in the AACRT kit. See Section 4 for information on redistributing run-time components.
Finally, note that the Compaq C RTL was substantially enhanced in
versions 6.2 and 7.0 of OpenVMS VAX. Many new API's were added for XPG4
localization in V6.2, and for UNIX compatibility and to support the ISO
C addendum in V7.0 of OpenVMS. These features and other RTL
improvements incorporated with them are not available on pre-6.2
versions of OpenVMS. Since the Compaq C RTL is part of the OpenVMS
operating system, to benefit from the continuing feature and
performance enhancements in the Compaq C RTL it will generally be
necessary to upgrade your version of OpenVMS. However, in cases where
upgrading is not an option, it is possible to build Compaq C images
that use some newer features of the Compaq C RTL that will run on
earlier versions of the operating system that lack those RTL features.
This involves special compilation, and linking against an object
library as described in SYS$LIBRARY:DECC$CRTL.README.
If you wish to use both VAX C V3.* and Compaq C on a system, you must
install Compaq C after installing VAX C. Installing Compaq C modifies
the CC command so that CC/DECC invokes the Compaq C compiler and
CC/VAXC invokes the VAX C compiler. If you install VAX C after Compaq
C, you will not be able to activate Compaq C with the CC command. If
you do install VAX C after installing Compaq C, you must then reinstall
If you wish to use both DEC C++ V1.3 (or higher, including Compaq C++ V5.7) for OpenVMS VAX and Compaq C V6.4 for OpenVMS VAX, you may install the C and C++ kits in either order. Beginning with DEC C V4.0 and DEC C++ V1.3, the two kit installation procedures were made to be compatible.
If you wish to use both Compaq C V6.4 for OpenVMS VAX and a version of DEC C++ for OpenVMS VAX prior to V1.3, you must install Compaq C after installing DEC C++.
Compaq C V6.4 provides initial support for installing and using multiple versions of the compiler on the same node.
During installation of V6.4, if a V6.0 or V6.2 version of the compiler is already installed, you will be given the opportunity to preserve that compiler rather than overwrite it. If you choose to preserve the currently-installed compiler, you will then be given an opportunity to keep the currently-installed compiler as the system default and install the new compiler as an alternate. By default, preserving the currently installed system compiler is performed by making it an alternate compiler, and installing the new compiler as the system default.
The choice to use an alternate compiler instead of the installed system
compiler can be made by users, by running a command procedure that
changes the behavior of the cc command for the process that invokes it.
This kit provides two command procedures to display and control which Compaq C compiler is used by a process.
6.2 Side effects and restrictions on multiple versions
When you install this kit, it provides the latest CLD file (to establish DCL tables), the latest decc$rtldef.tlb, and the latest documentation, even if you select the option of having the new compiler as an alternate compiler. The new CLD file and the new decc$rtldef.tlb do not adversely impact a preexisting V6-based compiler because they are upwardly compatible. HOWEVER, if you attempt to use a new compiler option with an older compiler, you will no longer get a DCL error that the option is not supported. Instead, the option will be reported by VCG. For example, note that before installation of V6.4, the following would have produced "%DCL-W-IVQUAL, unrecognized qualifier ...."
And because you must have the newest CLD file and header files in order to use the newest compiler, if you run an older installation procedure to put an older compiler back on your system, you must then re-run the 6.4 installation to get the newest files.
Note that there are two logical names involved in establishing the
compiler version - one for the compiler image and one for its message
file. This version of the compiler will issue a diagnostic if it is
invoked with the wrong version of the message file - but prevous
versions of the compiler do not detect this situation. If you find that
an older version of the compiler is issuing diagnostics that don't make
sense for the code construct they're attached to, or if the message
text is missing and only a message number is issued, check that you
have matched versions of the files designated by the two logicals using
the command "$ show logical decc$compiler*". The response should show
matching version-numbered files as in the example selecting the 6.2
compiler. Or if you are using the system compiler, the response should
be "%SHOW-S-NOTRAN, no translation for logical name DECC$COMPILER*".
When you install Compaq C V6.4 on a system that already has a 6.0 or higher compiler installed, you will be given the opportunity to preserve the currently-installed system compiler. To do this, answer yes to the following question (the xxx will be replaced by the full version number of the existing system compiler):
If you answer no, the installation will procede in the traditional manner, overwriting the currently-installed system compiler.
If you answer yes, you will be asked an additional question. To get the traditional behavior of installing the kit compiler as the system default, answer NO to the question:
Since you have previoiusly asked to preserve the existing system
compiler, that compiler is made an alternate compiler before installing
the new system compiler from the kit. If you answer yes to the
question, the kit compiler will be installed as an alternate compiler
with a name based on its ident and the existing system default compiler
will remain the default.