OpenVMS
OpenVMS
HP C ランタイム・ライブラリ・
リファレンス・マニュアル (上巻)
AA-RVXUA-TE
2004 年 2 月
本書は,OpenVMS システム用の HP C ランタイム・ライブラリの機能とマクロについて説明します。
改訂/更新情報:
|
本書は『
HP C Run-Time Library Reference Manual for OpenVMS Systems』の改訂版です。
|
ソフトウェア・バージョン:
|
HP OpenVMS Alpha V7.3--2
OpenVMS VAX V7.3
|
日本ヒューレット・パッカード株式会社
© Copyright 2004 Hewlett-Packard Development Company, L.P.
UNIX® は, The Open Group の登録商標です。
X/Open® は,英国およびその他の国における X/Open Company Ltd. の登録商標です。
本書の著作権は日本ヒューレット・パッカード株式会社が保有しており,本書中の解説および図,表は弊社からの文書による許可なしに,その全体または一部を,いかなる場合にも再版あるいは複製することを禁じます。
また,本書に記載されている事項は,予告なく変更されることがありますので,あらかじめご承知おきください。万一,本書の記述に誤りがあった場合でも,弊社は一切その責任を負いかねます。
本書で解説するソフトウェア ( 対象ソフトウェア ) は,所定のライセンス契約が締結された場合に限り,その使用あるいは複製が許可されます。
弊社は,弊社または弊社の指定する会社から納入された機器以外の機器で対象ソフトウェアを使用した場合,その性能あるいは信頼性について一切責任を負いかねます。
原典:HP C Run-Time Library Reference Manual for OpenVMS Systems
© 2003 Hewlett-Packard Development Company, L.P. <copyright_page_continued>
HP C ランタイム・ライブラリの一部は,カリフォルニア大学バークレイ校およびその協力者 (contributors) が著作権を保有するソースを使用してインプリメントされています。
Copyright (c) 1981 Regents of the University of California.
All rights reserved.
次の条件が満たされる場合,変更されているかかどうかにかかわらず,ソースおよびバイナリ形式の再配布と使用が認められます。
- ソース・コードを再配布する際は,上記の著作権に関する通告,再配布と使用に関するこの条件一覧,以下の免責事項を添付する必要があります。
- バイナリ形式での再配布の際は,添付するドキュメントや他のマテリアルとともに,上記の著作権に関する通告,再配布と使用に関するこの条件一覧,以下の免責事項を添付する必要があります。
- 本ソフトウェアの機能や本ソフトウェアを使用していることを記載した宣伝広告資料すべてに,次の情報を記載する必要があります。「本製品には,カリフォルニア大学バークレイ校およびその協力者が開発したソフトウェアが含まれています。」
- 事前に書面による承認を受けない限り,本ソフトウェアを利用して開発された製品の宣伝や販売促進で,大学の名前や協力者の名前を使用することは認められません。
本ソフトウェアは,開発者および協力者が提供するものを「そのまま」提供するものであり,商品性や特定の目的への適合性の暗黙の保証も含めて ( これらに限定されません ),いかなる表明や暗黙の保証も適用されません。いかなる場合も,開発者および協力者は,直接的または間接的損害,事故による損害,特別損害など ( たとえば,代替商品やサービスの調達の必要性,製品が使用できなくなる障害,データや収益の消失,ビジネスの中断など ) の発生の責任を負いません。さらに,本ソフトウェアの使用によって発生する契約上の責任,無過失責任,不法行為 ( 過失によるもの他 ) に関しても,そのような損害の可能性があらかじめ助言されていた場合でも,開発者および協力者は一切の責任を負いません。 <endcopyright_page_continued>
まえがき
本書では,HP C ランタイム・ライブラリ ( HP C Run-Time Library (RTL) ) について説明します。入出力 (I/O) 操作,文字および文字列操作,算術演算,エラー検出,サブプロセスの生成,システム・アクセス,画面管理を行う C RTL 関数およびマクロに関する参照情報を示します。また,オペレーティング・システム間の移植性に関する問題点も示します。
HP C RTL には,XPG4 準拠の国際化サポートが含まれており,異なる言語やカルチャで動作可能なソフトウェアを開発するのに役立つ関数が提供されます。
本書や HP C のドキュメントに関するご意見は,次のインターネット・アドレスに英文でご送付ください。
c_docs@hp.com
本書の対象読者
本書は, HP C RTL で提供される関数とマクロに関する参照情報が必要な,経験の豊富なプログラマおよび初心者のプログラマを対象にしています。
本書の構成
本書は次の章と付録で構成されています。
- 第 1 章 では, HP C RTL の概要を示します。
- 第 2 章 では,標準 I/O,端末 I/O,UNIX I/O 関数について説明します。
- 第 3 章 では,文字,文字列,引数リスト関数について説明します。
- 第 4 章 では,エラー処理関数とシグナル処理関数について説明します。
- 第 5 章 では,サブプロセスを生成するために使用される関数について説明します。
- 第 6 章 では,Curses 画面管理関数について説明します。
- 第 7 章 では,算術演算関数について説明します。
- 第 8 章 では,メモリ割り当て関数について説明します。
- 第 9 章 では,オペレーティング・システムとやり取りするために使用される関数について説明します。
- 第 10 章 では,国際化ソフトウェアの開発のために OpenVMS システムの HP C 環境で提供される機能について,その概要を紹介します。
- 第 11 章 では,日付 / 時刻関数について説明します。
- 付録 A では,異なる OpenVMS バージョンでサポートされる HP C RTL 関数の一覧を示した,バージョン依存の表を示します。
- 付録 B では,複数のヘッダ・ファイルに重複している関数プロトタイプを示します。
リファレンス・セクションについて
『HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)』はリファレンス・セクションで HP C RTL のすべての関数について説明しています。
|
関連ドキュメント
OpenVMS システム向けのプログラムを HP C で作成する場合,次のドキュメントが役立ちます。
- 『HP C User's Guide for OpenVMS Systems』 --- HP C for OpenVMS Systems の使用方法に関する情報が必要な C プログラマを対象にしています。
- 『HP C Language Reference Manual』 --- HP システムでの HP C の言語リファレンス情報を示します。
- 『VAX C to HP C Migration Guide』 --- OpenVMS VAX アプリケーション・プログラマが VAX C から HP C に移行するのに役立ちます。
- 『HP C Installation Guide for OpenVMS VAX Systems』 --- VAX システムに HP C ソフトウェアをインストールする OpenVMS システム・プログラマを対象にしています。
- 『HP C Installation Guide for OpenVMS Alpha Systems』 --- Alpha システムに HP C ソフトウェアをインストールする OpenVMS システム・プログラマを対象にしています。
- 『OpenVMS Master Index』 --- VAX および Alpha マシン・アーキテクチャや OpenVMS システム・サービスを使用する必要のあるプログラマを対象にしています。このインデックスには, OpenVMS オペレーティング・システムへのアクセスに関する個別のトピックを説明したドキュメントの一覧が示されています。
- 『HP TCP/IP Services for OpenVMS Sockets API and System Services Programming』 --- HP TCP/IP Services for OpenVMS 製品または他の TCP/IP プロトコル実装用の,インターネット・アプリケーション・プログラムを作成するためのソケット・ルーチンについての情報を示します。
- 『HP TCP/IP Services for OpenVMS Guide to IPv6』 --- HP TCP/IP Services for OpenVMS の Ipv6 機能や,システム上での IPv6 のインストールや構成方法,ソケット・アプリケーション・プログラミング・インタフェース (API) の変更, IPv6 環境で動作させるためにアプリケーションを移植する方法についての情報を示します。
- 『X/Open Portability Guide, Issue 3』 --- 一般に XPG3 と呼んでいる仕様について解説しています。
- 『X/Open CAE Specification System Interfaces and Headers, Issue 4』 --- 一般に XPG4 と呼んでいる仕様について解説しています。
- 『X/Open CAE Specification, System Interfaces and Headers, Issue 4, Version 2』 --- 一般に XPG4 V2 と呼んでいる仕様に関して解説しています。
- 『Standard for Information Technology - Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API)---Amendment 2: Threads Extension [C Language]』 --- 一般に POSIX 1003.1c-1995 と呼んでいる仕様に関して解説しています。
- 『ISO/IEC 9945-2:1993 - Information Technology - Portable Operating System Interface (POSIX) - Part 2: Shell and Utilities』 --- 一般に ISO POSIX-2 と呼んでいる仕様に関して解説しています。
- 『ISO/IEC 9945-1:1990 - Information Technology - Portable Operating System Interface (POSIX) - Part 1: System Application Programming Interface (API) (C Language)』 --- 一般に ISO POSIX-1 と呼んでいる仕様について解説しています。
- 『ANSI/ISO/IEC 9899:1999 - Programming Languages - C』 --- 1999 年 12 月に ISO によって公開され, 2000 年 4 月に ANSI 標準として採用された C99 標準について解説しています。
- 『ISO/IEC 9899:1990-1994 - Programming Languages - C, Amendment 1: Integrity』 --- 一般に ISO C,Amendment 1 と呼んでいる仕様について解説しています。
- 『ISO/IEC 9899:1990[1992] - Programming Languages - C』 --- 一般に ISO C と呼んでいる仕様について解説しています。標準的な部分 (normative part) は
X3.159-1989, American National Standard for Information Systems - Programming Language C (ANSI C とも呼ぶ) と同じです。
HP OpenVMS 製品およびサービスについての詳細は,弊社の Web サイトを参照してください。アドレスは次のとおりです。
http://www.hp.com/go/openvms
http://www.hp.com/jp/openvms
本書で使用する表記法
表記法 |
意味 |
[Return]
|
[Return] は端末上の Return キーを 1 回押すことを示します。
|
Ctrl/X
|
Ctrl/X (英字の X は端末の制御文字を表す) は, Ctrl キーを押したまま指定の端末文字キー (X) を押すことを示します。
|
switch
文
int
データ型
fprintf
関数
<stdio.h>
ヘッダ・ファイル
|
モノスペース文字は言語キーワードおよび HP C 関数とヘッダ・ファイルの名前を示します。また,例で使用している特定の変数名を参照するときも使用します。
|
arg1
|
斜体は引数やパラメータ名を示すプレースホルダとして使用し,新出用語を強調するときも使用します。
|
$
RUN CPROG
[Return]
|
ユーザと対話する例では,ユーザ入力は太字で示します。
|
float x;
.
.
.
x = 5;
|
垂直方向の省略記号は,プログラムやプログラムからの出力の一部が省略されていることを示します。例では関連する部分だけが示されています。
|
option,...
|
水平方向の省略記号は,パラメータ,オプション,値を追加入力できることを示します。省略記号の前のコンマは,後続の項目の区切り文字を表します。
|
[output-source,...]
|
関数構文やその他の場所で使用している角括弧は,その構文要素が省略可能であることを示します。しかし,OpenVMS ファイル指定でディレクトリ名を区切るために使用する角括弧や, HP C ソース・コードで多次元配列の次元を区切るために使用する角括弧は省略できません。
|
sc-specifier::=
auto
static
extern
register
|
構文定義で,別々の行に示されている項目は組み合わせて指定できないことを示します。
|
[a|b]
|
2 つ以上の項目が縦線 (|) で区切られ,角括弧で囲まれている場合は, 2 つの構文要素のいずれかを選択しなければならないことを示します。
|
<ucDelta symbol>
|
デルタ記号は,1 文字の ASCII スペース文字を表します。
|
プラットフォーム・ラベル
プラットフォームは,異なる環境を提供するオペレーティング・システムとハードウェアの組み合わせです。本書では,VAX アーキテクチャと Alpha アーキテクチャの両方で OpenVMS オペレーティング・システムに適用される情報を示します。
次のように特に指定した場合を除き,本書の情報は両方のプラットフォームに適用されます。
ラベル |
説明 |
(Alpha only)
|
OpenVMS オペレーティング・システムが稼動している Alpha プロセッサ (Alpha アーキテクチャ) 固有。
|
(VAX only)
|
OpenVMS オペレーティング・システムが稼動している VAX プロセッサ固有。
|
新機能と変更された機能---OpenVMS バージョン 7.3-2
OpenVMS バージョン 7.3-2 で, C ランタイム・ライブラリの以下の機能が拡張されました。これらの拡張により,UNIX 移植性と,追加のユーザ制御機能を選択する際の柔軟性が改善されます。また,新しい C RTL 関数も含まれています。
- POSIX 形式の識別子
- 一部のソケット・ルーチンでの 64 ビット・ポインタのサポート
- 子プロセスのデフォルト・ディレクトリの設定
- 新しい機能論理名
- UNIX ファイル名変換の拡張
- 新規関数と変更された関数
POSIX 形式の識別子
POSIX 形式の識別子のサポートが,C RTL に追加されました。これにより,UNIX 移植性と,標準への準拠性が高まります。 POSIX 形式の識別子とは,ユーザ識別子 (UID),グループ識別子 (GID),およびプロセス・グループを指します。このスコープには,実識別子と実効識別子が含まれます。
C RTL での POSIX 形式の識別子のサポートには, 32 ビットのユーザ ID およびグループ ID のサポートが必要です。また,OpenVMS のベース・バージョンの機能にも依存します。 POSIX 形式の ID は, OpenVMS バージョン 7.3-2 およびそれ以降でサポートされます。
POSIX 形式の識別子を使用するには,アプリケーションは, 32 ビット UID/GID 用にコンパイルされていなければなりません (
__USE_LONG_GID_Tマクロを定義する)。また,DECC$POSIX_STYLE_UID 機能論理名に ENABLE を定義して, POSIX 形式の ID を有効にしなければなりません。
POSIX 形式の ID を無効にするには, DECC$POSIX_STYLE_UID に DISABLE を定義します。
一部のソケット・ルーチンでの 64 ビット・ポインタのサポート
64 ビット・ポインタのサポートが,次の TCP/IP ソケット・ルーチンに追加されました。
freeaddrinfo recvmsg
getaddrinfo sendmsg
|
これまでは,これらのルーチンには, 32 ビット・インタフェースしかありませんでした。
子プロセスのデフォルト・ディレクトリの設定
vfork/
exec* によって作成される子プロセスのデフォルト (作業) ディレクトリを, C RTL の新しい
decc$set_child_default_dir関数を使用して設定できるようになりました。
新しい機能論理名
以下の新しい機能論理名により,標準への準拠性と, UNIX 移植性が高まります。
- DECC$UNIX_LEVEL により, UNIX 互換性のレベルを指定するメカニズムが利用でき,アプリケーションでは,個々の UNIX 互換性機能論理名を設定しなくても,UNIX 互換性用の C RTL 機能論理名のグループを制御できます。
- DECC$ENABLE_TO_VMS_LOGNAME_CACHE は, UNIX 名の変換における論理名の変換を高速化します。
- DECC$EFS_NO_DOTS_IN_DIRNAME は,ピリオド (.) を含むファイル名をディレクトリ名として解釈しないようにします。
- DECC$ALLOW_REMOVE_OPEN_FILES は,オープン・ファイルでの
removeの動作を制御します。通常,操作は失敗しますが, POSIX 準拠の動作では,この操作は成功します。この POSIX 準拠の動作は,新しい機能スイッチで有効になります。
- DECC$POSIX_STYLE_UID は,32 ビット UID と GID が, POSIX 形式の識別子として解釈されるか,プロセス UIC から得られるかを制御します。
- DECC$NO_ROOTED_SEARCH_LISTS は,
to_vms関数が検索リスト論理名を解決する方法を制御します。
- DECC$ALLOW_UNPRIVILEGED_NICE は,
nice関数が従来の動作 (呼び出しプロセスの特権チェックを行わない) を行うか, X/Open 仕様に従って動作する (特権をチェックする) かを制御します。
- DECC$USE_JPI$_CREATOR は, JPI$_OWNER の代わりに JPI$_CREATOR を使用して $GETJPI を呼び出すことにより,
getppidでの親プロセス ID を決定します。この機能は, POSIX 形式のセッション識別子をサポートしているシステムでのみ利用できます。
- DECC$WRITE_SHORT_RECORDS は,固定長のファイルへのレコードの書き込みという従来の方法をデフォルトの動作として残したまま,ショート・サイズのレコードに対応します。
- DECC$PIPE_BUFFER_QUOTA は,
pipe関数の新しいオプションの第 4 パラメータが省略された場合にこの関数で使用する,バッファ・クォータを指定します。
- DECC$GLOB_UNIX_STYLE は,
glob関数の UNIX モードを選択します。
- DECC$RENAME_ALLOW_DIR 機能論理名は,
rename関数の動作に影響します。
- DECC$ACL_ACCESS_CHECK 機能論理名は, UIC 保護と OpenVMS アクセス制御リスト (ACL) の両方を確認できるように
access関数の動作を制御します。
- DECC$EXEC_FILEATTR_INHERITANCE 機能論理名は,ファイル・アクセス・モードに関するプロセス継承性の設定での選択範囲が広くなるように変更されました。