Compaq OpenVMS
Extended File Specifications の手引き


前へ 次へ 目次 索引


B.1.4 $CREPRC システム・サービス

stsflg パラメータでは新しいフラグを指定することができます。

PRC$M_PARSE_EXPANDED

これにより,EXPANDED への新しいプロセスに PARSE_STYLE_PERM プロパティおよび PARSE_STYLE_IMAGE プロパティが設定されます。

B.1.5 $SETDDIR システム・サービス

このシステム・サービスについては,次の情報が追加されました。

結果の省略時のディレクトリが 255 バイトを超える場合,Alpha システムでは, Set Default Directory サービスが省略時のディレクトリ文字列を DID に置き換えようとします。この場合,通常の構文チェックに加えて,その指定に対するパス全体が,デバイスを含めてチェックされます。呼び出しが成功するには,このパスが存在していなければなりません。

B.2 レコード管理サービス (RMS) の変更点

OpenVMS のレコード管理サービス (RMS) は, Extended File Specifications をサポートするように変更されています。この後の項では,構文および意味の変更点と, RMS データ構造の変更点について説明します。

B.2.1 レコード管理サービスの変更点の概要

Extended File Specifications をサポートするために,レコード管理サービス (RMS) は,既存のインタフェースを使用して以下のような機能を提供するように強化されました。

B.2.1.1 Extended File Specification のサポート

ODS-5 ボリュームでは,RMS が操作できるのは,8 ビットまたは 16 ビットで 255 文字までの長さのファイル名およびサブディレクトリ指定です。 RMS は,合計で 8 ビットまたは 16 ビットで 512 文字までの長さのパス名を処理できます。

OpenVMS Alpha バージョン 7.2 以前は,NAM ブロック・インタフェースが渡すことのできるファイル指定は,それぞれ (結果のファイル指定の場合も) 最大で 255 バイトまででした。この後の項では,より長いファイル指定を渡すための変更点と,このリリース以前の NAMブロック・インタフェースを使用したアプリケーションに対して提供する互換性について説明します。

B.2.1.2 追加された文字

ODS-5 ボリューム上では,RMS は,任意の数の 8 ビット文字が含まれている名前を持つファイルおよびディレクトリへのアクセスをサポートしています。ただし, C0 制御セット (16進数で 00〜1F) および以下の文字は例外です。

二重引用符 (")
アスタリスク (*)
バックスラッシュ (\)
Colon (:)
左山括弧および右山括弧 (< >)
スラッシュ (/)
疑問符 (?)
縦線 (|)

この中には,C1 文字セット (16 進数の 80〜9F) の他,9F〜FF までのグラフィック文字およびその他の文字も明示的に含まれることに注意してください。これにより,すべての ISO Latin-1 文字セットおよび定義済みの Unicode 文字を使用することができます (すでに示されているとおり 7 ビット文字は例外です)。

B.2.1.3 深くネストされたディレクトリのサポート

Alpha システム上の Extended File Specifications では,RMSは最大で 255 レベルまでのディレクトリの深いネスト をサポートしています。ただし,合計のディレクトリ指定が 8 ビットまたは 16 ビットで 512 文字を超えてはならないという制約があります。ディレクトリの深いネストは, ODS-2 ディスクでもサポートされています。

B.2.2 構文および意味の変更点

この後の項では,新しい RMS のファイル指定構文および意味の機能について説明します。 Extended File Specifications の環境で RMS を使用する方法の詳細については,『Guide to OpenVMS File Applications』を参照してください。

B.2.2.1 ファイル名の最初の文字としてのハイフンの使用

OpenVMS バージョン 7.2 以前の RMS ドキュメントでは,ハイフン (マイナス記号) で始まるファイル名を作成しないように推奨されていました。

Alpha システムでは,Extended File Specifications により RMS に変更が追加され,ファイル名またはディレクトリ名のどの位置にもハイフンを使用できるようになりました。ハイフンが含まれているディレクトリ名があいまいである,つまり,親ディレクトリを参照するように解釈される可能性がある場合,そのハイフンにエスケープ文字のサーカンフレックス (^) を付けてファイルまたはディレクトリを正しく指定しなければなりません。

B.2.2.2 直接受け付けられる文字

ファイル指定の中で (特殊なエスケープ文字なしで) RMS インタフェースから使用できる文字セットは,次のリストのように拡張されています。これらの文字の前には,エスケープ文字の サーカンフレックス ( ^) を使用できないことに注意してください。

B.2.2.3 エスケープ文字を必要とする文字

B.2.2.4 エスケープ文字を付けることができる文字

以下の文字の前には,RMS または DCL への入力の際にエスケープ文字 (^) を付けることができますが,必須ではありません。ピリオド (.)1 およびチルダ (~)2 の場合,エスケープ文字はある状況の時のみ必要になります。詳しくは脚注を参照してください。

ドル記号 ($)
負記号 (-)
ピリオド (.)1
チルダ (~)2

注意

1 エスケープ文字は,ディレクトリ名の中のピリオドの前には必須ですが,ファイル名の中のピリオドの前には付けても付けなくても構いません。ただし,ファイル・タイプを区切るピリオドとしては使用できません。ピリオドは,ファイル・タイプの中で使用できません。

2 ファイル名またはディレクトリの中で先頭の文字としてチルダを使用する場合,エスケープ文字が必要なことがあります。「 ◆チルダ (~) をファイル名の最初の文字として使用しない 」を参照してください。

B.2.2.5 予約済みのエスケープ・シーケンス

これまでの項で説明されていない文字が後に続くエスケープ文字から成るシーケンスは,予約されています。

B.2.2.6 ファイル指定の正規表現

同じ文字を表現する方法が複数存在することがあります。たとえば, ^20,^,および ^_ はすべて等価です。RMS がファイル指定を (結果の名前などとして) 出力するときには,以下の規則に従って使用する規則を決定します。

B.2.2.7 DID による短縮

拡張ファイル名を使用すると,長いディレクトリのレベルが多すぎたり,長いファイル名にエスケープ文字が含まれていることが原因で,有効な名前であっても変更されていない RMS アプリケーションや DCL にとっては長すぎて処理できない場合があります。従来の (またはバージョン 7.2 以前の) インタフェースを使用しているアプリケーションとの互換性を保つために, RMS がアプリケーションに出力したり,アプリケーションが従来のインタフェースを使用して RMS に入力できる短い名前が生成されます。

ファイル指定の長さが 255 バイトを超える場合には,RMS はまず DID による短縮を使用して名前を作成します。 RMS は,ディレクトリをそのディレクトリ ID (DID) に短縮することによって,適切な短い名前を生成しようとします。次に例を示します。


        DKA100:[5953,9,0]FOO.TXT;1. 

DID による短縮の制約

従来の (バージョン 7.2 以前の) 短い出力バッファに納まらないファイル指定を処理するときに,RMS はルートまたはディレクトリのコンポーネントを,そのコンポーネント内の最も下のレベルのサブディレクトリのディレクトリ ID に置き換えて短縮しようとすることがあります。

RMS が DID によって短縮されたルートまたはディレクトリのコンポーネントを生成できない場合もあります。たとえば,最も下のレベルのサブディレクトリにワイルドカードが含まれている場合には,RMS が使用できる特定のディレクトリ ID はありません (RMS はルートまたはディレクトリのコンポーネントの一部を DID に置き換えることもしません)。

RMS が DID によって短縮されたルートまたはディレクトリを生成することによって,ファイル指定を適切に短縮できない場合には,次のステップである FID による短縮に進みます。

B.2.2.8 FID による短縮

DID による短縮を実行してもまだファイル指定が長すぎる場合,RMS は次に,ファイル名フィールドの中でファイルをそのファイル ID (コンマで区切られた 10 進数の文字列のシーケンスを大括弧で囲んだもの) に短縮することによって,適切な短い名前を生成しようとします。

拡張フィールドが通常どおり表示されている場合,スペースに余裕があるかどうかによって,生成された名前には完全な拡張子が含まれるか,または拡張子が (ピリオド (.) も共に) 省略されます。

バージョン番号が通常どおり表示されている場合,FID によって短縮されたファイル名にはバージョン番号が含まれます。ファイルを認識しやすくするために,FID による短縮が生成されると,名前フィールドには実際のファイル名の先頭部分のサブセットも含まれます。このサブセットには,ファイル名の最初の (エスケープ文字も文字として認識される) 38 文字と,後に続くチルダ (~) から構成されます。ファイル名の最初の 38 文字以降だけが異なるファイルがある場合でも,ファイルの曖昧さは解決されません。

次に FID による短縮の例を示します。


        LookAtWhatWeHave^!ThisIsAVery_long^.fi~[7254,30,0].txt;1 

FID および DID による短縮の制約

FID によって短縮されたファイル名は,RMS への入力に使用できますが,RMS への入力の際に有意義なのは FID による短縮だけです。この時に使用するサブセットのファイル名,タイプ・フィールド,およびバージョン番号はすべて,入力の際には無視されます。

ファイルを作成するときに,FID を CREATE コマンド (または他のファイル作成コマンドまたは API) への入力として使用することはできません。 DID を使用してディレクトリを作成することはできません。ファイル指定に FID を使用すると,そのファイル指定には最初からデバイスおよびディレクトリが含まれているか,または RMS で処理される省略時の値からデバイスおよびディレクトリを取得します。指定された FID を持つファイルが既にボリューム上に存在する場合には,指定されたディレクトリ内に存在していなければなりません。そうでない場合,RMS はあたかもそのファイルが見つからなかったかのように動作します。

B.2.3 RMS のデータ構造の変更点 (Alpha システムのみ)

この項では,名前 (NAM) ブロックの変更点を示します。また,長さが 255 バイトを超えるファイル指定を指定するために使用する新しい名前 (NAML) ブロックについても説明します。

B.2.3.1 NAM ブロック

ファイル名ブロック・オプション・フィールド NAM$B_NOP には, 表 B-3 にある新しいフラグがあります。

表 B-3 新しい NAM$B_NOP フラグ
フラグ 意味
NAM$V_NO_SHORT_UPCASE ユーザによって設定され,NAM$L_ESA バッファにあるディレクトリおよびファイル指定を大文字に変換しないように RMS に指示する。

ファイル名状態ビット・フィールド NAM$L_FNB には, 表 B-4 にある新しいフラグがあります。

表 B-4 新しい NAM$L_FNB フラグ
フラグ 意味
NAM$V_DIR_LVLS_G7 ディレクトリ・レベルの数が 7 を超えることを示す。このフラグが設定されている場合,NAM$V_DIR_LVLS は 7 に設定される。
NAM$V_WILD_SFDG7 7 を超えるレベルにあるサブディレクトリに,ワイルドカード文字が含まれていることを示す。このフィールド・オフセットは, NAM$V_WILDCARD フィールド・オフセットに要約される。

NAM には,NAM$B_NMC,NAM$W_FIRST_WILD_DIR,および NAM$W_LONG_DIR_LEVELS という 3 つのフィールドがあります。 NAM$B_NMC フィールドは, 表 B-5 にあるフラグを返します。

表 B-5 新しい NAM$B_NMC フラグ
フラグ 意味
NAM$V_DID 入力ディレクトリのルートまたはディレクトリ名のコンポーネントの中に DID によって短縮されたディレクトリが見つかると,RMS によって設定される。
NAM$V_FID 入力ファイル指定の中に FID によって短縮されたファイル名が見つかると, RMS によって設定される。
NAM$V_RES_DID 短い結果または拡張バッファの中に DID によって短縮されたディレクトリがあると, RMS によって設定される。
NAM$V_RES_FID 短い結果または拡張バッファの中に FID によって短縮された名前があると, RMS によって設定される。
NAM$V_RES_ESCAPE 短い結果または拡張バッファの中にエスケープ文字 (^)があると, RMS によって設定される。
NAM$V_RES_UNICODE 短い結果バッファまたは拡張バッファの中に 1 つまたは複数の ^U シーケンスがあると,RMS によって設定される。

B.2.3.2 NAML ブロック

NAML は,オプションで NAM ブロックの代わりに使用できる新しいブロックです。 NAML には,NAM のすべてのフィールドの他に,255 バイトを超える長さのファイル指定を指定できるようにするための新しいフィールドが含まれています。

表 B-6 に NAML の新しいフィールドを示します。

表 B-6 NAMLブロックの新しいフィールド
拡張フィールド名 サイズ (バイト) 意味
NAML$L_FILESYS_NAME 4 ユーザが指定するファイル・システム名バッファのアドレス。 RMS が NAML$V_FILESYS_NAME_UCS2 出力フラグを設定すると,出力ファイル名は 2 バイト文字になり,ファイル名の中の ASCII 文字および区切り文字を含むすべての文字が 2 バイト文字になる。それ以外の場合は,すべて 1 バイト文字になる。
NAML$L_FILESYS_NAME_ALLOC 4 ユーザが指定するファイル・システム名バッファの割り当てサイズ。
NAML$L_FILESYS_NAME_SIZE 4 RMS によって返されるファイル・システム名の長さ。
NAML$L_LONG_DEFNAME_SIZE 4 入力として指定される省略時のファイル指定文字列の長さ (long)。 FAB$B_DNS と等価 (入力のみ)。FAB$L_DNA が -1 に設定され,FAB$B_DNS が 0 に設定されている場合に限って使用される。
NAML$L_LONG_DEFNAME 4 入力として指定される省略時のファイル指定文字列のアドレス (long)。 FAB$L_DNA と等価 (入力のみ)。FAB$L_DNA が -1 に設定され,FAB$B_DNS が 0 に設定されている場合に限って使用される。
NAML$L_LONG_FILENAME_SIZE 4 ファイル指定文字列のサイズ (long)。 FAB$B_FNS と等価 (入力のみ)。FAB$L_FNA が -1 に設定され,FAB$B_FNS が 0 に設定されている場合に限って使用される。
NAML$L_LONG_FILENAME 4 ファイル指定文字列のアドレス (long)。 FAB$L_FNA と等価 (入力のみ)。FAB$L_FNA が -1 に設定され,FAB$B_FNS が 0 に設定されている場合に限って使用される。
NAML$L_LONG_NODE_SIZE 4 ノード名文字列の長さ (long)。
NAML$L_LONG_NODE 4 ノード名文字列のアドレス (long)。
NAML$L_LONG_DEV_SIZE 4 デバイス文字列の長さ (long)。
NAML$L_LONG_DEV 4 デバイス文字列のアドレス (long)。
NAML$L_LONG_DIR_SIZE 4 ディレクトリ文字列の長さ (long)。
NAML$L_LONG_DIR 4 ディレクトリ文字列のアドレス (long)。
NAML$L_LONG_NAME_SIZE 4 ファイル名文字列の長さ (long)。
NAML$L_LONG_NAME 4 ファイル名文字列のアドレス (long)。
NAML$L_LONG_TYPE_SIZE 4 ファイル・タイプ文字列の長さ (long)。
NAML$L_LONG_TYPE 4 ファイル・タイプ文字列のアドレス (long)。
NAML$L_LONG_VER_SIZE 4 ファイル・バージョン文字列の長さ (long)。
NAML$L_LONG_VER 4 ファイル・バージョン文字列のアドレス (long)。
NAML$L_LONG_EXPAND_ALLOC 4 拡張文字列領域のサイズ (long)。拡張バッファのサイズ (long) を指定するために,呼び出し元によって設定される。
NAML$L_LONG_EXPAND_SIZE 4 拡張文字列の長さ (long)。拡張文字列の長さ (long) を表すために,RMS によって設定される。
NAML$L_LONG_EXPAND 4 拡張文字列領域のアドレス (long)。拡張バッファ (long) をポイントするために,呼び出し元によって設定される。
NAML$L_LONG_RESULT_ALLOC 4 結果文字列領域のサイズ (long)。結果バッファのサイズ (long) を指定するために,呼び出し元によって設定される。
NAML$L_LONG_RESULT_SIZE 4 結果文字列の長さ (long)。結果文字列の長さ (long) を表すために,RMS によって設定される。
NAML$L_LONG RESULT 4 結果文字列領域のアドレス (long)。結果バッファ (long) をポイントするために,呼び出し元によって設定される。
NAML$L_INPUT_FLAGS 4 この後の表で定義されている NAML$V_NO_SHORT_OUTPUT など,RMS への入力として指定されるその他のフラグ。
NAML$L_OUTPUT_FLAGS 4 この後の表で定義されている NAML$V_LONG_RESULT_ESCAPE および NAML$V_FILESYS_NAME_UCS2 など, RMS による出力として渡されるその他の状態ビット。
NAML$Q_USER_CONTEXT 8 呼び出し元は,このフィールドをどのような目的にでも使用できる。RMS によって読み込まれたり変更されることはない。


前へ 次へ 目次 索引