[an error occurred while processing this directive]

HP OpenVMS Systems Documentation

Content starts here

HP C

Run-Time Library Reference Manual for OpenVMS Systems

Order Number: BA554-90014


June 2010

This manual describes the functions and macros in the HP C Run-Time Library for OpenVMS systems.

Revision/Update Information: This manual supersedes the HP C Run-Time Library Reference Manual for OpenVMS Systems, Version 8.3

Software Version: OpenVMS Version 8.4 for Integrity servers
OpenVMS Alpha Version 8.4




Hewlett-Packard Company
Palo Alto, California


© Copyright 2010 Hewlett-Packard Development Company, L.P.

Confidential computer software. Valid license from HP 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.

The information contained herein is subject to change without notice. The only warranties for HP products and services are set forth in the express warranty statements accompanying such products and services. Nothing herein should be construed as constituting an additional warranty. HP shall not be liable for technical or editorial errors or omissions contained herein.

UNIX is a registered trademark of The Open Group.

X/Open is a registered trademark of X/Open Company Ltd. in the UK and other countries.

Intel and Itanium are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

Printed in the US

ZK5763

The HP OpenVMS documentation set is available on CD-ROM.

This document was prepared using DECdocument, Version V3.3-1e.

Portions of the HP C Run-Time Library have been implemented using source copyrighted by the University of California, Berkley and its contributors.

Copyright (c) 1981 Regents of the University of California.

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the University of California, Berkeley and its contributors.
  4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Contents Index


Preface

This manual describes the HP C Run-Time Library (RTL) for the OpenVMS operating system on Integrity servers and Alpha. HP OpenVMS Industry Standard 64 for Integrity servers is the full product name of the OpenVMS operating system on Intel Itanium processors.

This manual provides reference information about the C RTL functions and macros that perform input/output (I/O) operations, character and string manipulation, mathematical operations, error detection, subprocess creation, system access, screen management, and emulation of selected UNIX features. It also notes portability concerns between operating systems, where applicable.

The HP C RTL contains XPG4-compliant internationalization support, providing functions to help you develop software that can run in different languages and cultures.

The complete HP C Run-Time Library (C RTL) needed for use with the HP C and C++ compilers is distributed with the OpenVMS Alpha and OpenVMS Integrity server operating systems in both shared image and object module library form.

This manual no longer documents the socket routines used for writing Internet application programs for the TCP/IP Services protocol. For help on the socket routines, use the following:


$ HELP TCPIP_Services Programming_Interfaces Sockets_API 

Also see the HP TCP/IP Services for OpenVMS product documentation.

Intended Audience

This manual is intended for experienced and novice programmers who need reference information on the functions and macros found in the HP C RTL.

Document Structure

This manual has the following chapters, reference section, and appendixes:

  • Chapter 1 provides an overview of the HP C RTL.
  • Chapter 2 discusses the Standard I/O, Terminal I/O, and UNIX I/O functions.
  • Chapter 3 describes the character, string, and argument-list functions.
  • Chapter 4 describes the error-handling and signal-handling functions.
  • Chapter 5 explains the functions used to create subprocesses.
  • Chapter 6 describes the Curses Screen Management functions.
  • Chapter 7 discusses the math functions.
  • Chapter 8 explains the memory allocation functions.
  • Chapter 9 describes the functions used to interact with the operating system.
  • Chapter 10 gives an introduction to the facilities provided in the HP C environment on OpenVMS systems for developing international software.
  • Chapter 11 describes the date/time functions.
  • Chapter 12 describes symbolic links and POSIX pathname support.
  • The Reference Section describes all the functions in the HP C RTL.
  • Appendix A contains version-dependency tables that list the HP C RTL functions supported on different OpenVMS versions.
  • Appendix B lists the function prototypes that are duplicated in more than one header file.

Related Documents

The following documents may be useful when programming in HP C for OpenVMS Systems:

  • HP C User's Guide for OpenVMS Systems---For C programmers who need information on using HP C for OpenVMS Systems.
  • HP C Language Reference Manual---Provides language reference information for HP C on HP systems.
  • VAX C to HP C Migration Guide---To help OpenVMS VAX application programmers migrate from VAX C to HP C.
  • HP C Installation Guide for OpenVMS VAX Systems---For OpenVMS system programmers who install the HP C software on VAX systems.
  • HP C Installation Guide for OpenVMS Alpha Systems---For OpenVMS system programmers who install the HP C software on Alpha systems.
  • OpenVMS Master Index---For programmers who need to work with the VAX and Alpha machine architectures or the OpenVMS system services. This index lists manuals that cover the individual topics concerning access to the OpenVMS operating system.
  • HP TCP/IP Services for OpenVMS Sockets API and System Services Programming---For information on the socket routines used for writing Internet application programs for the HP TCP/IP Services for OpenVMS product or other implementations of the TCP/IP protocol.
  • HP TCP/IP Services for OpenVMS Guide to IPv6---For information on HP TCP/IP Services for OpenVMS IPv6 features, how to install and configure IPv6 on your system, changes in the socket application programming interface (API), and how to port your applications to run in an IPv6 environment.
  • X/Open Portability Guide, Issue 3---Documents what is commonly known as the XPG3 specification.
  • X/Open CAE Specification System Interfaces and Headers, Issue 4---Documents what is commonly known as the XPG4 specification.
  • X/Open CAE Specification, System Interfaces and Headers, Issue 4, Version 2---Documents what is commonly known as XPG4 V2.
  • X/Open CAE Specification, System Interfaces and Headers, Issue 5---Documents what is commonly known as the XPG5 specification.
  • Technical Standard. System Interfaces, Issue 6---Combined Open Group Technical Standard and IEEE standard. IEEE Std 1003.1-2001, sometimes known as XPG6.
  • Standard for Information Technology - Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API)---Amendment 2: Threads Extension [C Language]---Documents what is also known as POSIX 1003.1c-1995.
  • ISO/IEC 9945-2:1993 - Information Technology - Portable Operating System Interface (POSIX) - Part 2: Shell and Utilities---Documents what is also known as ISO POSIX-2.
  • ISO/IEC 9945-1:1990 - Information Technology - Portable Operating System Interface (POSIX) - Part 1: System Application Programming Interface (API) (C Language)---Documents what is also known as ISO POSIX-1.
  • ANSI/ISO/IEC 9899:1999 - Programming Languages - C---The C99 standard, published by ISO in December, 1999 and adopted as an ANSI standard in April, 2000.
  • ISO/IEC 9899:1990-1994 - Programming Languages - C, Amendment 1: Integrity---Documents what is also known as ISO C, Amendment 1.
  • ISO/IEC 9899:1990[1992] - Programming Languages - C---Documents what is also known as ISO C. The normative part is the same as X3.159-1989, American National Standard for Information Systems - Programming Language C, also known as ANSI C.

For more information about HP OpenVMS products and services, see:

http://www.hp.com/go/openvms

Reader's Comments

HP welcomes your comments on this manual. Please send your comments or suggestions to:

openvmsdoc@hp.com

How to Order Additional Documentation

For information about how to order additional documentation, see:

http://www.hp.com/go/openvms/doc/order

Conventions Used in this Document

Convention Meaning
OpenVMS Integrity servers The variant of the OpenVMS operating system that runs on the Intel Itanium architecture.
OpenVMS systems Refers to the OpenVMS operating system on all supported platforms, unless otherwise specified.
[Return] The symbol [Return] represents a single stroke of the Return key on a terminal.
Ctrl/X The symbol Ctrl/X, where letter X represents a terminal control character, is generated by holding down the Ctrl key while pressing the key of the specified terminal character.
switch statement
int data type
fprintf function
<stdio.h> header file
Monospace type identifies language keywords and the names of HP C functions and header files. Monospace type is also used when referring to a specific variable name used in an example.
arg1 Italic type indicates a placeholder, such as an argument or parameter name, and the introduction of new terms.
$ RUN CPROG [Return] Interactive examples show user input in boldface type.
float x;
.
.
.

x = 5;
A vertical ellipsis indicates that not all of the text of a program or program output is illustrated. Only relevant material is shown in the example.
option,... A horizontal ellipsis indicates that additional parameters, options, or values can be entered. A comma that precedes the ellipsis indicates that successive items must be separated by commas.
[output-source,...] Square brackets, in function synopses and a few other contexts, indicate that a syntactic element is optional. Square brackets are not optional, however, when used to delimit a directory name in an OpenVMS file specification or when used to delimit the dimensions of a multidimensional array in HP C source code.
sc-specifier ::=
auto
static
extern
register
In syntax definitions, items appearing on separate lines are mutually exclusive alternatives.
[a|b] Brackets surrounding two or more items separated by a vertical bar (|) indicate a choice; you must choose one of the two syntactic elements.
A delta symbol is used in some contexts to indicate a single ASCII space character.

Platform Labels

A platform is a combination of operating system and hardware that provides a distinct environment. This manual contains information applicable to the OpenVMS operating system running on VAX, Alpha, and Itanium processors.

The information in this manual applies to all of these processors, except when specifically labeled as follows:

Label Explanation
(ALPHA ONLY) Specific to an Alpha processor.
(INTEGRITY SERVERS ONLY) Specific to an Intel Itanium processor running the OpenVMS operating system. On this platform, the product name of the operating system is OpenVMS Integrity servers.
(INTEGRITY SERVERS, ALPHA) Specific to Integrity servers and Alpha processors.

New and Changed Features - OpenVMS Version 8.4

The following sections describe the C Run-Time Library (C RTL) enhancements included in OpenVMS Version 8.4. These enhancements provide improved UNIX portability, standards compliance, and the flexibility of additional user-controlled feature selections. New C RTL functions are also included.

Unicode Support

The C RTL now supports Unicode, UTF-8 encoding for filenames given in UNIX style. For example, the following filename is now allowed:


/disk/mydir/^U65E5^U672C^U8A9E.txt filename 

This greatly enhances the UNIX portability of International software that uses UTF-8 encoded filenames.

A new logical, DECC$FILENAME_ENCODING_UTF8, is provided to enable this feature.

With this logical undefined, the default behavior is to accept filenames as ASCII and Latin-1 format.

This feature works only on ODS-5 disks. To ENABLE this feature ensure that you must define both the DECC$FILENAME_ENCODING_UTF8 and DECC$EFS_CHARSET logicals.

Semaphore Support

C RTL supports the following Open Group semaphore control operations in the C RTL:

System V semaphore routines supported:


semctl() 
semget() 
semop() 
ftok() 

POSIX semaphore routines supported:


sem_close() 
sem_destroy() 
sem_getvalue() 
sem_init() 
sem_open() 
sem_post() 
sem_timedwait() 
sem_trywait() 
sem_unlink() 
sem_wait() 

Note

Applicable to all semaphore routines

When the semaphore APIs, semget and sem_open returns an error status value of 28, which indicates 'no space left on device', you may want to increase the GBLSECTIONS SYSGEN parameter. Semaphores internally use global sections and having huge number of semaphore sets on a system may result in exhaustion of GBLSECTIONS. As a result, the SYSGEN parameter needs to be increased.

Limitations in System V Semaphores

Following are the limitations in System V semaphores:

  • Maximum number of System V semaphore sets allowed in a system is 1024
  • Maximum number of System V semaphores allowed within a semaphore set is 1024
  • Maximum value of a semaphore is 32767
  • Maximum number of System V SEM_UNDO operations allowed in a process is 1024

DECC$PRINTF_USES_VAX_ROUND Feature Switch

A new feature switch, DECC$PRINTF_USES_VAX_ROUND, has been added to the C RTL.

With this switch set, the F and E format specifiers of printf use VAX rounding rules for programs compiled with IEEE float.

Symbolic Link and POSIX-Compliant Pathname Support Enhancements

OpenVMS Version 8.3

Enhancements have been made to the Open Group-compliant symbolic-link support and POSIX-compliant pathname support provided in OpenVMS Version 8.3.

These enhancements include:

  • Support of logical names in POSIX filenames and symlinks
  • Loop detection in RMS directory wildcarding
  • Following symlinks in RMS directory wildcard searches
  • Redesign of on-disk symlink representation
  • Miscellaneous bug fixes


Next Contents Index