OpenVMS
HP C ランタイム・ライブラリ・
リファレンス・マニュアル (上巻)


前へ 次へ 目次 索引


DECC$EFS_CHARSET を有効に設定すると, OpenVMS 形式のファイル名を UNIX 形式のファイル名に変換するときに, EFS 拡張文字の次のエンコーディングがサポートされます。

DECC$EFS_FILE_TIMESTAMPS

DECC$EFS_FILE_TIMESTAMPS を有効に設定すると, statfstatは, SET VOLUME/VOLUME=ACCESS_DATES を使用して拡張ファイル時刻が有効に設定されている ODS-5 ボリュームのファイルに対して,新しい ODS-5 アクセス時刻 ( st_atime),属性改訂時刻 ( st_ctime),および変更時刻 ( st_mtime) を報告します。

DECC$EFS_FILE_TIMESTAMPS が無効に設定されているか,ボリュームが ODS-5 でない場合,あるいは有効に設定されたこれらの追加時刻がボリュームでサポートされない場合, st_ctimeはファイルの作成時刻になり, st_atimest_mtimeと同じになります。

関数 utimeutimesはこれらの ODS-5 の時刻を statと同じ方法でサポートします。

DECC$EFS_NO_DOTS_IN_DIRNAME

ODS-5 のファイル名での拡張文字のサポートにより, NAME.EXT などの名前は,NAME.EXT.DIR と解釈できます。 UNIX ファイル名の拡張文字サポートが有効の場合, [.name^.ext] というディレクトリが存在するかどうかを調べるために, UNIX 名の変換でオーバヘッドが発生します。

DECC$EFS_NO_DOTS_IN_DIRNAME 機能論理名を有効にすると,ドットを含むファイル名をディレクトリ名として解釈しなくなります。この論理名を有効にすると,NAME.EXT はファイル名と見なされ,ディレクトリ [.name^.ext] はチェックされません。

DECC$ENABLE_GETENV_CACHE

C RTL では, environテーブルにある環境変数の一覧の他に,プロセスで使用できるすべての論理名と DCL シンボルも使用されます。

デフォルトでは, environテーブルにない名前に対して getenvが呼び出されると,この名前を論理名として解決しようとします。解決できない場合は,DCL シンボルとして解決しようとします。

DECC$ENABLE_GETENV_CACHE を有効に設定すると,論理名または DCL 名が正しく変換された後,その値はキャッシュに格納されます。同じ名前が getenvの将来の呼び出しで要求された場合は,論理名や DCL シンボルを再評価するのではなく,キャッシュにある値が返されます。

DECC$ENABLE_TO_VMS_LOGNAME_CACHE

UNIX 名変換の性能を改善するには, DECC$ENABLE_TO_VMS_LOGNAME_CACHE を使用します。この値は,各キャッシュ・エントリの存続時間 (秒) です。同値文字列 ENABLE は,1 秒と見なされます。

各エントリの存続時間を 1 秒としてキャッシュを有効にするには, DECC$ENABLE_TO_VMS_LOGNAME_CACHE に 1 を定義します。

各エントリの存続時間を 2 秒としてキャッシュを有効にするには, DECC$ENABLE_TO_VMS_LOGNAME_CACHE に 2 を定義します。

キャッシュ・エントリの有効期限なしでキャッシュを有効にするには, DECC$ENABLE_TO_VMS_LOGNAME_CACHE に - 1 を定義します。

DECC$EXEC_FILEATTR_INHERITANCE

DECC$EXEC_FILEATTR_INHERITANCE 機能論理名は, C プログラムの子プロセスに影響します。

バージョン 7.3-2 より前の OpenVMS では, DECC$EXEC_FILEATTR_INHERITANCE は,有効か無効のどちらかです。

バージョン 7.3-2 およびそれ以降の OpenVMS では, DECC$EXEC_FILEATTR_INHERITANCE に 1 または 2 を定義するか,無効にすることができます。

DECC$FILENAME_UNIX_ONLY

DECC$FILENAME_UNIX_ONLY を有効に設定すると,ファイル名は OpenVMS 形式の名前として解釈されません。このため,以下の文字が OpenVMS の特殊文字として解釈されるのを防止できます。


:   [   ^ 

DECC$FILENAME_UNIX_NO_VERSION

DECC$FILENAME_UNIX_NO_VERSION を有効に設定すると, UNIX 形式のファイル名で OpenVMS のバージョン番号はサポートされません。

DECC$FILENAME_UNIX_NO_VERSION を無効に設定すると, UNIX 形式の名前でバージョン番号を報告するときに,その前にピリオド (.) が付加されます。

DECC$FILENAME_UNIX_REPORT

DECC$FILENAME_UNIX_REPORT を有効に設定すると,呼び出し元が特に OpenVMS 形式を選択しない限り,ファイル名はすべて UNIX 形式で報告されます。これは getpwnamgetpwuidargv[0]getnamefgetnametempnamに適用されます。

DECC$FILENAME_UNIX_REPORT を無効に設定すると,関数呼び出しで指定しない限り,ファイル名は OpenVMS 形式で報告されます。

DECC$FILE_PERMISSION_UNIX

DECC$FILE_PERMISSION_UNIX を有効に設定すると,新しいファイルとディレクトリのファイル・アクセス許可は,ファイルの作成モードおよび umaskに従って設定されます。これにはモード 0777 も含まれます。ファイルの以前のバージョンが存在する場合は,新しいファイルのファイル・アクセス許可は古いバージョンから継承されます。 WRITE アクセス許可が有効に設定されていると,このモードは新しいディレクトリに対して DELETE アクセス許可を設定します。

DECC$FILE_PERMISSION_UNIX を無効に設定すると,モード 0 およびモード 0777 は RMS のデフォルト保護またはファイルの前のバージョンの保護を使用することを示します。また,新しいディレクトリのアクセス許可は, DELETE アクセス許可の無効化も含めて,OpenVMS の規則に従います。

DECC$FILE_SHARING

DECC$FILE_SHARING を有効に設定すると,すべてのファイルは完全な共用を有効にした状態でオープンされます (FAB$M_DEL | FAB$M_GET | FAB$M_PUT | FAB$M_UPD)。これは,呼び出し元が指定した共用モードとの論理和 (OR) として指定されます。

DECC$FIXED_LENGTH_SEEK_TO_EOF

DECC$FIXED_LENGTH_SEEK_TO_EOF を有効に設定すると, direction パラメータが SEEK_END に設定された lseekfseekofseekは,固定長レコードのファイル内の最後のバイトを基準に位置を設定します。

DECC$FIXED_LENGTH_SEEK_TO_EOF を無効に設定すると,固定長レコードのファイルに対して SEEK_EOF を設定して呼び出した場合, lseekfseekfseekoはファイル内の最後のレコードの末尾を基準にして位置を設定します。

DECC$GLOB_UNIX_STYLE

DECC$GLOB_UNIX_STYLE を有効にすると, glob関数の UNIX モードを選択します。

DECC$LOCALE_CACHE_SIZE

DECC$LOCALE_CACHE_SIZE は,ロケール・データをキャッシュに格納するために割り振るメモリ容量をバイト数で定義します。デフォルト値は 0 であり,その場合はロケール・キャッシュは無効になります。

デフォルト値: 0

最大値: 2147483647

DECC$MAILBOX_CTX_STM

デフォルト設定では,パイプではないローカル・メールボックスに対する openは, FAB$M_CR というレコード属性を持つものとして,メールボックス・レコードを取り扱います。

DECC$MAILBOX_CTX_STM を有効に設定すると,レコード属性 FAB$M_CR は設定されません。

DECC$NO_ROOTED_SEARCH_LISTS

decc$to_vms関数は,UNIX 形式のパス文字列を評価する際に,論理名となる 1 番目の要素を検出すると,次の処理を行います。

上記の 3 つのケースでは,予想可能な,期待どおりの結果が得られます。

1 番目の要素が,最上位の論理名と最上位でない論理名が混在した検索リストの場合,以前の説明のとおりにパスを変換すると,古いバージョン (7.3-1 よりも前) の OpenVMS とは異なる動作になることがあります。

DECC$NO_ROOTED_SEARCH_LISTS は, decc$to_vms関数が検索リスト論理名を解決する方法を制御します。また,OpenVMS の動作をバージョン 7.3-1 より前の状態に戻すこともできます。

DECC$NO_ROOTED_SEARCH_LISTS を有効にすると,次のようになります。

この機能論理名を有効にすると,検索リスト論理名の動作が,7.3-1 以前の状態になります。

DECC$NO_ROOTED_SEARCH_LISTS を無効にすると,次のようになります。

この機能論理名を無効にすると, OpenVMS バージョン 7.3-1 およびそれ以降の動作になります。

DECC$PIPE_BUFFER_SIZE

パイプ書き込み操作の場合, 512 バイトというシステムのデフォルト・バッファ・サイズでは, 512 バイトより長いメッセージを取り扱うときに,性能が低下し,余分なライン・フィードが生成される可能性があります。

DECC$PIPE_BUFFER_SIZE を指定すると, pipepopenなどのパイプ関数に対して,大きなバッファ・サイズを使用できます。 512〜65535 バイトまでの値を指定できます。

DECC$PIPE_BUFFER_SIZE を指定しないと,デフォルト・バッファ・サイズである 512 が使用されます。

デフォルト値: 512

最小値: 512

最大値: 65024

DECC$PIPE_BUFFER_QUOTA

OpenVMS バージョン 7.3-2 では,パイプのメールボックスのバッファ・クォータを指定する, int型の第 4 引数 (オプション) が, pipe関数に追加されました。以前のバージョンの OpenVMS では,バッファ・クォータはバッファ・サイズと同じでした。

DECC$PIPE_BUFFER_QUOTA を使用すると,この関数のオプションの第 4 引数を省略した場合に, pipe関数が使用するバッファ・クォータを指定できます。

pipeのオプションの第 4 引数を省略し, DECC$PIPE_BUFFER_QUOTA も定義していない場合,バッファ・クォータは,デフォルトで,以前と同じようにバッファ・サイズになります。

デフォルト値: 512

最小値: 512

最大値: 2147483647

DECC$POSIX_SEEK_STREAM_FILE

DECC$POSIX_SEEK_STREAM_FILE を有効に設定すると, STREAM ファイルでファイルの終端 (EOF) を超えた位置設定を行った場合,次の書き込みまでファイルへの書き込みが行われません。書き込みが現在のファイルの終端を超える場合,古いファイルの終端を超えた位置から書き込みの先頭までの位置に 0 が埋め込まれます。

DECC$POSIX_SEEK_STREAM_FILE を無効に設定すると,ファイルの終端を超える位置設定を行った場合,現在のファイルの終端から新しい位置までの間に 0 がただちに書き込まれます。

DECC$POSIX_STYLE_UID

DECC$POSIX_STYLE_UID が有効の場合,32 ビットの UID と GID は, POSIX 形式の識別子として解釈されます。

この論理名が無効の場合,UID と GID はプロセスの UIC から得られます。

この機能は, POSIX 形式の UID と GID をサポートしている OpenVMS システムでのみ利用できます。

DECC$READDIR_DROPDOTNOTYPE

DECC$READDIR_DROPDOTNOTYPE を有効に設定すると, readdirは UNIX 形式でファイル名を報告するときに,ファイル名にピリオド (.) が含まれている場合,ファイル・タイプのないファイルに対して末尾のピリオドだけを報告します。

この論理名を無効に設定すると,ファイル・タイプのないすべてのファイル名の末尾にピリオドが付加されて報告されます。

DECC$READDIR_KEEPDOTDIR

readdirから UNIX 形式のファイルを報告する場合,デフォルト動作では,ファイル・タイプを付けずにディレクトリだけが報告されます。

DECC$READDIR_KEEPDOTDIR を有効に設定すると,ディレクトリは UNIX 形式でファイル・タイプ ".DIR" を付けて報告されます。

DECC$RENAME_NO_INHERIT

DECC$RENAME_NO_INHERIT は, rename関数で,より UNIX に準拠した動作を提供します。 DECC$RENAME_NO_INHERIT が有効な場合は,次のような動作を強要します。

この論理名が無効の場合,OpenVMS で期待されている動作になります。例を次に示します。

"A.A" の名前を "B" に変更すると,"B.A" になります。

DECC$RENAME_ALLOW_DIR

DECC$RENAME_ALLOW_DIR を有効にすると, rename関数の動作が以前の OpenVMS の状態に戻ります。以前の動作では,あいまいなファイル指定が第 2 引数で論理名として渡された場合,ディレクトリ指定へ変換されます。あいまい性は,論理名が UNIX ファイル指定と OpenVMS ファイル指定のどちらかという点にあります。

例を次に示します。


rename("file.ext", "logical_name")  /* where logical_name = dev:[dir.subdir] */ 
                                    /* and :[dir.subdir] exists              */ 

次のような結果になります。


dev:[dir.subdir]file.ext 

この例では,ファイル名の変更により,あるディレクトリから別のディレクトリへファイルが移動されます。この動作は,V7.3-1 より前の OpenVMS の古い動作と同じです。またこの例では, dev:[dir.subdir]が存在しない場合, renameがエラーを返します。

DECC$RENAME_ALLOW_DIR を無効にすると, renamelogical_name 引数の変換が,より UNIX に準拠したものになります。

例を次に示します。


rename("file.ext", "logical_name")   /* where logical_name = dev:[dir.subdir] */ 

次のような結果になります。


dev:[dir]subdir.ext 

この例では,logical_name 引数の subdir部分を新しいファイル名として使用して,ファイル名が変更されます。これは,UNIX システム上ではファイルからディレクトリへの名前変更 (rename) はできないためです。このため renameは内部的に "logical_name"をファイル名に変換し, to a file name, dev:[dir]subdirが最も妥当な変換結果となります。

この新しい機能には,名前をファイルに変更するのではなくディレクトリに変更するという副作用があります。次に例を示します。


rename ( "file1.ext", "dir2" )      /* dir2 is not a logical */ 

DECC$RENAME_ALLOW_DIR が無効な場合,この例では,サブディレクトリ [.dir2]が存在するかどうかに関わらず dir2.extという結果になります。

DECC$RENAME_ALLOW_DIR が有効な場合, [.dir2]が存在しなければ dir2.extという結果になります。サブディレクトリ [.dir2]が存在する場合は, [.dir2]file1.extという結果になります。

注意

DECC$RENAME_NO_INHERIT が有効の場合は,UNIX 準拠の動作が行われます。このため,DECC$RENAME_ALLOW_DIR は無視され,ファイルからディレクトリへの名前変更 (rename) は許されません。

DECC$SELECT_IGNORES_INVALID_FD

DECC$SELECT_IGNORES_INVALID_FD を有効に設定すると,記述子セットのいずれかに不正なファイル記述子が指定されている場合, selectは異常終了し, errnoは EBADF に設定されます。

DECC$SELECT_IGNORES_INVALID_FD を無効に設定すると, selectは不正なファイル記述子を無視します。

DECC$STDIO_CTX_EOL

DECC$STDIO_CTX_EOL を有効に設定すると,ストリーム・アクセスのための stdoutおよび stderrへの書き込みは,区切り文字が確認されるか,バッファが満杯になるまで実行されません。

DECC$STDIO_CTX_EOL を無効に設定すると, fwriteを実行するたびに個別に書き込みが実行され,メールボックスとレコード・ファイルの場合,個別のレコードが作成されます。

DECC$STRTOL_ERANGE

DECC$STRTOL_ERANGE を有効に設定すると, ERANGE エラーに対する strtolの動作は,文字列内の残りのすべての桁を使用するように修正されます。

DECC$STRTOL_ERANGE を無効に設定すると,問題が発生した桁にポインタを保持するというこれまでの動作が有効になります。

DECC$THREAD_DATA_AST_SAFE

C RTL には,AST のために割り振られるデータ用とは別に,非 AST レベルでスレッドによって割り振られるスレッド固有のデータのための記憶域を割り振るモードがあります。このモードでは,スレッド固有のデータにアクセスするたびに, LIB$AST_IN_PROG を呼び出す必要があり, C RTL でスレッド固有のデータにアクセスする場合,大きなオーバヘッドが発生する可能性があります。

代替モードでは,スレッド固有のデータは,別の関数がロックしている場合にだけ保護されます。このモードでは,C RTL の内部で使用中のデータは保護されますが, AST がデータを変更するのを呼び出し元で保護することはできません。


前へ 次へ 目次 索引