Software Product Description ________________________________________________________________ PRODUCT NAME: VAX C, Version 3.2 SPD 25.38.17 DESCRIPTION VAX C is an extended implementation of the C programming lan- guage originally developed at Bell[TM] Laboratories. The VAX C compiler runs under the VMS Operating System and generates optimized and position-independent code. As a native-mode VAX language, VAX C is integrated into the VAX common language environment. All VAX system services are thus available to programs written in VAX C. VAX C supports VAX Record Management Services (RMS), including sequential, relative, and indexed file organizations and associated access methods, in addition to the stream file-access conventional among most C implementations. VAX C programs can invoke, as functions, modules written in other VAX languages. VAX C provides assistance in decomposing loops. Decomposed loops run in parallel in multiple processes, reducing the total elapsed time required to run the program. This capability is most useful on multiple processor machines, such as the VAX 8800. VAX C supports the lint-like features of the Source Code Ana- lyzer component of VAX Language-Sensitive Editor/Source Code Analyzer (SPD 26.59.xx). The combination of using function prototypes and the Source Code Analyzer component allows the programmer to check for consistent function usage throughout a program environment. VAX C also generates complete debug and traceback records for use with the VAX Symbolic Debugger. The Debugger allows the C programmer to set breakpoints, examine and DIGITAL December 1990 AE-M878S-TE VAX C, Version 3.2 SPD 25.38.17 modify the contents of user variables, and selectively halt or continue program execution. Features o Compiler-assisted decomposition of for loops to run in paral- lel in multiple processes o Function prototypes for declaring and checking function argument count and types o Structured programming control flow constructs: - if...else construct for simple selection - switch statement for multi-choice selection with an arbi- trary number of case statements - while, do, and for statements for iterative execution o Flow modification statements: - break - continue - goto o Data types for numeric, nonnumeric, and systems programming: - Byte, word, and longword signed and unsigned integers - Integer constants in decimal, octal, and hexadecimal radices - Void data type - Single-character variables and constants - Single, double-precision and G_Floating point numbers - Pointer variables containing the addresses of other vari- ables 2 VAX C, Version 3.2 SPD 25.38.17 - Data aggregates including arrays, structures, and unions, referencing allowed o Storage allocation using: - Auto, static, register, and extern storage allocation classes for variables - Keywords (globalref, globaldef, and globalvalue) for sharing data among program modules - Keywords (readonly, noshare, and psect name specification) for control of data attributes and data placement - Keywords (const and volatile) for specifying attributes for storage in which objects are placed - Keyword (_align) for specifying the alignment boundaries of data objects o Large set of concise arithmetic, relational, and logical operators o Preprocessor control statements for: - File inclusion - Identifier substitution - Conditional compilation - Pragmas to control compiler options - Pragmas to support compiler-assisted decomposition o Separate compilation capabilities o Compiler generated listing file including optional: - In-line machine code - Expanded preprocessor substitution listing - Storage allocation map - Cross referencing of variables - Compilation statistics 3 VAX C, Version 3.2 SPD 25.38.17 - Loop decomposition report o Access to VAX machine instructions from C source code o Integration into the VAX Common Languages Environment: - Generation of complete debug and traceback records for VAX Symbolic Debugger support - Facility for interfacing with the VAX calling standard - Access to the VAX Common Run-Time Library for general pur- pose routines and support of multi-language environments - Access to the data management facilities of VAX Record Management Services (RMS) via direct calls to the Common Run-Time Library - Access to data structures declared using the VAX CDD/Plus - Interface to VAX DEC/Shell as an alternate command line interpreter under which the VAX C compiler and user pro- grams may be run - Support for VAX Language-Sensitive Editor/Source Code Analyzer to provide error diagnostics to the Language- Sensitive Editor component, cross reference information for the Source Code Analyzer component, and support for low-level program design, including the processing of pseudocode and the extraction of design information from comments o Extensive global and local optimizations of generated code for increased performance and reduced size under VMS o Interface to the curses screen manipulation package Compatibility with Other C Implementations 4 VAX C, Version 3.2 SPD 25.38.17 VAX C represents a more current definition and implementation of the language than is described in the initial guiding docu- ment for C, The C Programming Language[1]. However, some incom- patibilities among implementations do exist. In general, many programs written in C for other compilers can be successfully recompiled under VAX C. The C language has been closely associated with the UNIX[R] Operating System, which itself is largely written in C. Over 150 UNIX-specific routines have been included in the run-time library available with the VAX C compiler. Routines selected for inclusion in this library are primarily those for which a reasonable emulation is possible under VMS. Inherent architec- tural differences between UNIX and VMS necessarily preclude the likelihood of every C program written for a UNIX environment compiling and executing unaltered. Programs exploiting highly machine-dependent or UNIX-specific features will require some conversion effort. Run-Time Package for C Applications The VAX C Run-Time Package is distributed with the VMS Operating System. The VAX C Run-Time Package provides shareable routines to perform input/output, character and string handling, math- ematical computations, memory allocations, and emulation of selected UNIX features. Also supported are the 4.3BSD socket routines for interprocess communication across a network. HARDWARE REQUIREMENTS VAX, MicroVAX, VAXstation, or VAXserver configuration as speci- fied in the System Support Addendum (SSA 25.38.17-x) ___________________ [1] Brian Kernighan and Dennis M. Ritchie, Prentice-Hall, 1978. 5 VAX C, Version 3.2 SPD 25.38.17 SOFTWARE REQUIREMENTS For Systems Using Terminals (No DECwindows Interface): VMS Operating System For Workstations Running VWS: VMS Operating System VMS Workstation Software For Workstations Running DECwindows: VMS Operating System (and necessary components of VMS DECwin- dows) VAX C supports a DECwindows compiler interface for compile qual- ifier selection on workstations. This interface is accessible from FileView. Refer to the System Support Addendum (SSA 25.38.17-x) for avail- ability and required versions of prerequisite software and for information regarding components of VMS DECwindows. ORDERING INFORMATION Software Licenses: QL-015A*-** Software Media: QA-015A*-** Software Documentation: QA-015AA-GZ Software Product Services: QT-015A*-** * Denotes variant fields. For additional information on avail- able licenses, services, and media, refer to the appropriate price book. 6 VAX C, Version 3.2 SPD 25.38.17 SOFTWARE LICENSING This software is furnished under the licensing provisions of Digital Equipment Corporation's Standard Terms and Conditions. For more information about Digital's licensing terms and poli- cies, contact your local Digital office. LICENSE MANAGEMENT FACILITY SUPPORT This layered product supports the VMS License Management Facil- ity. License units for this product are allocated on a CPU-capacity basis. For more information on the License Management Facility, refer to the VMS Operating System Software Product Description (SPD 25.01.xx) or the License Management Facility manual of the VMS Operating System documentation set. For more information about Digital's licensing terms and poli- cies, contact your local Digital office. SOFTWARE PRODUCT SERVICES A variety of service options are available from Digital. For more information, contact your local Digital office. SOFTWARE WARRANTY Warranty for this software product is provided by Digital with the purchase of a license for the product as defined in the Software Warranty Addendum of this SPD. [R] UNIX is a registered trademark of UNIX System Laboratories, Inc. 7 VAX C, Version 3.2 SPD 25.38.17 [TM] Bell is a trademark of Bell Telephone Companies. [TM] X11 is a trademark of Massachusetts Institute of Technol- ogy. [TM] The DIGITAL Logo, CI, DECwindows, MicroVAX, ULTRIX, VAX, VAX C, VAX CDD/Plus, VAX RMS, VAXcluster, VAXft, VAXserver, VAXstation, and VMS are trademarks of Digital Equipment Corporation. 8