前へ | 次へ | 目次 | 索引 |
アクセス・コールバック・ルーチンが確立された後,このルーチンは, RMS 関数 sys$create または sys$open を呼び出す直前に,オープン・タイプのルーチンで呼び出されます。エラー・コールバック・ルーチンが確立され, sys$create または sys$open 関数からエラー状態が返された場合は,状態が確認され,エラー値が検出された直後に,コールバック・ルーチンが呼び出されます。
コールバック関数で RAB または FAB を操作すると,その後の HP C RTL I/O 関数の呼び出しで重大な問題が発生する可能性があります。 |
表 REF-3 は RMS キーワードと値を示しています。
キーワード | 値 | 説明 |
---|---|---|
"acc" | コールバック | アクセス・コールバック・ルーチン。 |
"alq = n" | 10 進数 | 割り当て数量。 |
"bls = n" | 10 進数 | ブロック・サイズ。 |
"ctx = bin" | 文字列 | '\n' を変換せずに端末に出力する。バイナリ・データをファイルに書き込むときはこのキーワードを使用する。 |
"ctx=cvt" | 文字列 | "ctx=nocvt" の前の設定を否定する。これはデフォルトである。 |
"ctx = nocvt" | 文字列 | Fortran のキャリッジ制御バイトを変換しない。 |
"ctx = rec" | 文字列 | レコード・モード・アクセスを強制する。 |
"ctx = stm" | 文字列 | ストリーム・モード・アクセスを強制する。 |
"ctx=xplct" | 文字列 | fflush , close , fclose の呼び出しによって明示的に指定された場合にだけ,レコードを書き込む。 |
"deq = n" | 10 進数 | デフォルトの拡張数量。 |
"dna = filespec" | 文字列 | デフォルトのファイル名文字列。 |
"err" | コールバック | エラー・コールバック・ルーチン。 |
"fop = val, val ,..." | ファイル処理オプション: | |
ctg
cbt dfw dlt tef cif sup scf spl tmd tmp nef rck wck mxv rwo pos rwc sqo |
連続。
連続最適トライ。 遅延書き込み。共用アクセスのためにオープンされたファイルにだけ適用される。 クローズ時にファイルを削除する。 EOF で切り捨てる。 存在しない場合は作成する。 現在は使用されていない。 クローズ時にコマンド・ファイルとしてサブミットする。 クローズ時にシステム・プリンタにスプールする。 一時的に削除する。 一時的 (ファイル・ディレクトリでない)。 EOF でない。 読み込みチェック比較操作。 書き込みチェック比較操作。 バージョン番号を最大にする。 オープン時にファイルを巻き戻す。 現在の位置。 クローズ時にファイルを巻き戻す。 ファイルは順次処理だけが可能である。 |
|
"fsz = n" | 10 進数 | 固定ヘッダ・サイズ。 |
"gbc = n" | 10 進数 | ファイルに対して要求されたグローバル・バッファの数。 |
"mbc = n" | 10 進数 | マルチブロック・カウント。 |
"mbf = n" | 10 進数 | マルチバッファ・カウント。 |
"mrs = n" | 10 進数 | 最大レコード・サイズ。 |
"pmt=usr-prmpt" | 文字列 | 端末入力を促すプロンプト。このオプションと "rop=pmt" が指定されている場合は,端末デバイスからの RMS 入力の前に "usr-prmpt" が付加される。 |
"rat = val, val..." | レコード属性: | |
cr
blk ftn none prn |
キャリッジ・リターン制御。
レコードがブロック境界にまたがることを禁止する。 Fortran プリント制御。 明示的にキャリッジ制御なしを強制する。 ファイル・フォーマットをプリントする。 |
|
"rfm = val" | レコード・フォーマット: | |
fix
stm stmlf stmcr var vfc udf |
固定長レコード・フォーマット。
RMS ストリーム・レコード・フォーマット。 改行区切り文字付きストリーム・フォーマット。 キャリッジ・リターン区切り文字付きストリーム・フォーマット。 可変長レコード・フォーマット。 固定長制御部付き可変長レコード。 未定義。 |
|
"rop = val, val..." | レコード処理操作: | |
asy | 非同期 I/O。 | |
cco | Ctrl/O をキャンセルする (端末 I/O で使用)。 | |
cvt | 端末からの読み込み時に文字を大文字に変換する。 | |
eof | 接続操作の場合のみ,レコード・ストリームを EOF に設定する。 | |
nlk | レコードをロックしない。 | |
pmt | 端末からの入力時に "pmt=usr-prmpt" によって指定されるプロンプトの使用を有効にする。 | |
pta | 端末からの読み込み時に先読みバッファの情報を消去する。 | |
rea | このプロセスに対して読み込み操作のためにレコードをロックするが,他のプロセスがレコードを読み込むことは許可する。 | |
rlk | 書き込みのためにレコードをロックする。 | |
rne | キーボードからの入力時に,入力データの画面表示を行わない。 | |
rnf | 端末入力で Ctrl/U,Ctrl/R,DELETE が制御コマンドとして解釈されないが,アプリケーション・プログラムに渡されることを示す。 | |
rrl | ロックとは無関係に読み込む。 | |
syncsts | 要求されたサービスがタスクをただちに完了したときに,RMS$_SYNCH という正常終了状態を返す。 | |
tmo | I/O 時間切れ。 | |
tpt | 順次レコード・アクセス・モードを使用する put/write サービスがファイルの任意のポイントで発生することを許可し,そのポイントでファイルを切り捨てる。 | |
ulk | RMS が自動的にレコードのロックを解除することを禁止する。 | |
wat | レコードが現在別のストリームによってロックされている場合,そのレコードが使用可能になるまで待つ。 | |
rah | 先読みする。 | |
wbh | 後書きする。 | |
"rtv=n" | 10 進数 | RMS がメモリ内で管理しなければならない検索ポインタの数 (0〜127,255)。 |
"shr = val, val, ..." | ファイル共用オプション: | |
del
get mse nil put upd upi nql |
ユーザによる削除を許可する。
ユーザによる読み込みを許可する。 マルチストリーム接続を許可する。 ファイルの共用を禁止する。 ユーザによる書き込みを許可する。 ユーザによる更新を許可する。 1 人以上のユーザによる書き込みを許可する。 クエリ・ロックを行わない (ファイル・レベル)。 |
|
"tmo = n" | 10 進数 | I/O 時間切れの値。 |
これらのオプションの他に,キー値を受け付けるオプション ("fop" や "rat" など) は,値の前に "no" を付けることにより否定することができます。たとえば, "fop=notmp" と指定すると, "fop" フィールドの "tmp" ビットがクリアされます。
|
これらのオプションの詳細については,『 OpenVMS Record Management Services Reference Manual 』を参照してください。
HP C RTL は読み込みと書き込みのために新しいファイルをオープンし,対応するファイル記述子を返します。ファイルが存在する場合:
- 既存のバージョンより 1 だけ大きいバージョン番号が新規作成されたファイルに割り当てられます。
- デフォルト設定により,新しいファイルは既存のファイル・バージョンから特定の属性を継承します。ただし, creat呼び出しに指定された属性は継承しません。次の属性が継承されます。
- レコード・フォーマット (FAB$B_RFM)
- 最大レコード・サイズ (FAB$W_MRS)
- キャリッジ制御 (FAB$B_RAT)
- ファイル保護
ファイルが存在しない場合:
- mode 引数および現在の保護マスクの補数に対してビット単位の AND を実行することにより作成されるファイル保護が与えられます。
- デフォルト設定により,ライン・フィード・レコード・セパレータと暗黙のキャリッジ・リターン属性が割り当てられたストリーム・フォーマットが設定されます。
このセクションの open, close, read, write, lseekも参照してください。
n ファイル記述子。 - 1 保護違反,未定義ディレクトリ,ファイル属性の競合などのエラーを示します。
UNIX システム環境では, crmode関数と nocrmode関数は端末を cbreak モードに設定するか,または設定を解除します。cbreak モードでは, Return を処理せずに 1 文字の入力文字を処理することができます。このシングル文字入力モードは Curses 入力ルーチン getchでのみサポートされます。
#include <curses.h>crmode()
nocrmode()
/* Program to demonstrate the use of crmod() and curses */ #include <curses.h> main() { WINDOW *win1; char vert = '.', hor = '.', str[80]; /* Initialize standard screen, turn echo off. */ initscr(); noecho(); /* Define a user window. */ win1 = newwin(22, 78, 1, 1); /* Turn on reverse video and draw a box on border. */ setattr(_REVERSE); box(stdscr, vert, hor); mvwaddstr(win1, 2, 2, "Test cbreak input"); refresh(); wrefresh(win1); /* Set cbreak, do some input, and output it. */ crmode(); getch(); nocrmode(); /* Turn off cbreak. */ mvwaddstr(win1, 5, 5, str); mvwaddstr(win1, 7, 7, "Type something to clear the screen"); wrefresh(win1); /* Get another character, then delete the window. */ getch(); wclear(win1); touchwin(stdscr); endwin(); }
この例では, getchの最初の呼び出しは, 1 文字が入力されるとただちに戻ります。これは, getchが呼び出される前に, crmodeが呼び出されているからです。 getchの 2 回目の呼び出しでは,入力された文字を処理する前に,Return キーが押されるのを待ちます。これは, getchの 2 回目の呼び出しの前に, nocrmodeが呼び出されているからです。
SYS$COMMAND の同値文字列を与える文字列を返します。これは制御端末の名前です。
#include <stdio.h>関数バリアント ctermid関数には, _ctermid32および _ctermid64という名前のバリアントがあり,それぞれ 32 ビット・ポインタ・サイズおよび 64 ビット・ポインタ・サイズで使用されます。ポインタ・サイズ固有の関数の使い方の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。char *ctermid (char *str);
str
文字配列を指すポインタ。この引数が NULL の場合は,ファイル名は内部的に格納され,次に ctermidを呼び出したときに上書きされます。NULL 以外の場合は,ファイル名は引数によって示される位置から始まる場所に格納されます。引数は L_ctermid( <stdio.h>ヘッダ・ファイルで定義) の長さの記憶域を示さなければなりません。
ポインタ 文字列を指すポインタ。
1970 年 1 月 1 日 00:00:00 からの経過時間 (秒数) を, asctime関数で生成される形式の ASCII 文字列に変換します。
#include <time.h>関数バリアント _DECC_V4_SOURCE および _VMS_V6_SOURCE 機能テスト・マクロを定義してコンパイルすると,OpenVMS バージョン 7.0 より前の動作に相当するこの関数のローカル・タイム・ベースのエントリ・ポイントが有効になります。char *ctime (const time_t *bintim);
char *ctime_r (const time_t *bintim, char *buffer); (ISO POSIX-1)
bintim
変換する時間値 (秒数) を指定する変数を指すポインタ。buffer
長さが 26 バイト以上の文字列の配列を指すポインタ。この配列は,生成された日付/時刻文字列を格納するために使用されます。
ctime関数と ctime_r関数は, bintimによって示される時刻を 26 文字の文字列に変換し,この文字列を指すポインタを返します。ctime_r関数と ctime関数の相違点は, ctime_r関数が結果をユーザ指定バッファに格納するのに対し, ctime関数は HP C RTL によって割り当てられたスレッド固有の静的メモリに結果を格納する点です。 ctimeまたは asctimeを再び呼び出すと,スレッド固有の静的メモリに格納されている結果は上書きされる可能性があります。結果を保存する必要がある場合は,コピーを作成しなければなりません。
正常終了すると, ctimeは文字列を指すポインタを返します。 ctime_rは 2 番目の引数を返します。異常終了すると,これらの関数は NULL ポインタを返します。
time_t型は,次に示すように <time.h>ヘッダ・ファイルに定義されています。
typedef long int time_t
ctime関数は, tzsetを呼び出したかのように動作します。
注意
一般に,UTC ベースの時刻関数は,プロセス単位のデータであるメモリ内のタイム・ゾーン情報に影響を与える可能性があります。しかし,アプリケーションの実行中,システム・タイム・ゾーンが変化せず (これは一般的なケースです),タイム・ゾーン・ファイルのキャッシュが有効に設定されている場合 (これはデフォルトです),時刻関数 asctime_r, ctime_r, gmtime_r, localtime_rの _rバリアントはスレッド・セーフで,かつ AST リエントラントです。しかし,アプリケーションの実行中にシステム・タイム・ゾーンが変化する可能性がある場合や,タイム・ゾーン・ファイルのキャッシュが有効に設定されていない場合は, UTC ベースの時刻関数のバリアントはいずれも第 3 の関数クラスに属し,これはスレッド・セーフでも AST リエントラントでもありません。
x 正常終了した場合は, 26 文字の ASCII 文字列を指すポインタ。 NULL 異常終了を示します。
前へ | 次へ | 目次 | 索引 |