# Compaq OpenVMS
Extended File Specifications の手引き

前へ | 次へ | 目次 | 索引

#### 3.1.2.5.2 ワイルドカードの構文

DCL では拡張ファイル名の大文字と小文字の区別が保存されますが，ワイルドカードのマッチングでは，大文字と小文字は区別されません。

ワイルドカードを含む検索処理では，引き続き，対象となる指定の同じ部分にある対応する文字だけをマッチします。 表 3-1 には，ワイルドカードを使用した検索の例を示しています。

表 3-1 ワイルドカードおよびパターン・マッチングの例
パターン | マッチする例 | マッチしない例
--- | --- | ---
A*B;* | AHAB.;1 | A.B;1
A.*.B* | A^.DISK.BLOCK;1 | A^.C^.B.DAT;1
A?B.TXT;* | A^.B.TXT;5 | A^.^.B.TXT;1
*.DAT | Lots^.of^.Periods.dat;1 | DAT.;1
Mil?no.dat | Milano.dat;1 | Millaano.dat;1
NAPOLI.?.DAT | napoli.q.dat;1 | napoli.abc77.dat;1

### 3.1.2.6 大文字と小文字の区別の保存

ODS-5 ボリュームでは，ファイル名の大文字と小文字の区別は，バージョンが異なっても統一されます。ファイル名の大文字と小文字の区別は，そのファイルが最初に作成されたときの状態が保存されます。大文字と小文字の区別が異なるだけで，同じ名前のファイル名を複数作成すると，DCL は後でできたファイルを新しいバージョンとして扱い，大文字と小文字の区別を元のファイルと同じ状態に変換します。

たとえば，次のコマンドを使用したとします。

    $ CREATE CaPri.;1
    $ CREATE CAPRI
    $ CREATE capri

この結果，次のファイルが作成されます。

    CaPri.;1  CaPri.;2  CaPri.;3

以前のバージョンの OpenVMS では，DCL および RMS は，すべてのファイル指定を大文字に変換していました。ODS-5 ボリュームでは，すべてのファイル名の大文字と小文字の区別は，ユーザが作成したときの状態のまま保存されます。

# 3.2 ディレクトリ指定

この後の項では，ODS-5 ボリューム上で使用できる深いディレクトリ構造および拡張命名構文について説明します。これまで OpenVMS でサポートされていた 8 レベルよりも深いディレクトリを使用することができます。

## 3.2.1 深いディレクトリ構造

OpenVMS 7.2 は，ディレクトリ指定が全体で 8 ビットまたは 16 ビットで 512 文字以内であれば，255 レベルまでのディレクトリのネスティングをサポートしています。

たとえば，ユーザは ODS-2 または ODS-5 ボリューム上で，次のようなディレクトリを作成することができます。

    $ CREATE/DIRECTORY [a.b.c.d.e.f.g.h.i.j.k.l.m]

ユーザは ODS-5 ボリューム上で，長いファイル名を持つ次のようなディレクトリを作成することができます。

    $ CREATE/DIRECTORY -
    [.AVeryLongDirectoryNameWhichHasNothingToDoWithAnythingInParticular]

## 3.2.2 ディレクトリの命名構文

ODS-5 ボリュームでは，ディレクトリ名は， ISO Latin-1 文字セットを使用した場合のファイル名と同じ規則に準拠します。ピリオドと特殊文字は，ディレクトリ名の中で使用することができますが，リテラル文字として認識されるためには， 表 3-2 に示すように， エスケープ文字としてのサーカンフレックス (^) を前に付けなければなりません。

表 3-2 ODS-5 ボリューム上のディレクトリ名
CREATE/DIRECTORY. . . | 結果
--- | ---
[Hi^&Bye] | Hi^&Bye.DIR;1
[Lots^.Of^.Periods^.In^.This^.Name] | Lots^.Of^.Periods^.In^.This^.Name.DIR;1

### 3.2.2.1 ディレクトリ ID およびファイル ID の短縮形

状況によっては，完全なファイル指定に，変更されていないアプリケーションで許可されている 255 バイトより多くの文字が含まれている場合があります。そのようなアプリケーションが必要とするファイル指定の長さが 255 バイトを超えている場合， RMS はディレクトリを DID に短縮し，ファイル名を FID に短縮することによって，より短いファイル指定を生成します。

ファイル指定が長すぎる場合，RMS はまずディレクトリをそのディレクトリ ID に変換することにより，より短いディレクトリを生成しようとします。この短い指定は， DID と呼ばれます。

    TEST$ODS5:[5953,9,0]Alghero.TXT;1

UIC 形式のディレクトリ名との混同を避けるため，この形式のディレクトリ名には，3 つの数字と 2 つのコンマがなければならないことに注意してください。DIRECTORY コマンドを使用すると，ファイル指定の短いバージョンのほか，完全なバージョンも表示することができます。長いファイル指定を表示する方法については， 第 3.6 節 を参照してください。DID の短縮形の詳細については， 付録 B.2.2.7 項 を参照してください。FID の短縮形の詳細については， 付録 B.2.2.8 項 を参照してください。

# 3.3 複合環境での作業

OpenVMS Alpha システムと OpenVMS VAX システムの両方が含まれている環境で作業を行う場合には，ユーザが次のことを認識していることが重要です。

> どちらのタイプのシステムでユーザが作業しているのか
> どちらのタイプのボリュームにユーザの省略時のディレクトリが存在するのか
> どちらのタイプのボリュームにユーザが新しいファイルを作成するのか

OpenVMS 7.2 を使用すると，VAX システムから ODS-5 ボリュームをマウントすることができます。ただし，OpenVMS VAX システム上のユーザがアクセスできるのは， ODS-2 準拠のファイル名を持つファイルだけです。

ODS-2 ボリュームと ODS-5 ボリュームの複合環境で作業を行う場合には，ODS-5 ボリューム上でファイルを作成するときの ODS-2 ファイル名の制約に注意してください。ファイル名に特殊文字が含まれている ODS-5 ボリューム上のファイルを ODS-2 ボリューム上にコピーするには，ODS-2 準拠の名前を付ける必要があります。

# 3.4 ODS-5 ボリュームの DCL サポート

拡張ファイル名を DCL コマンド行で使用する場合には，拡張ファイル指定を受け付けて表示できるように，解析スタイルを EXTENDED に設定する必要があります。省略時の設定は TRADITIONAL です。解析スタイルを設定するには，次のコマンドを入力します。

    $ SET PROCESS/PARSE_STYLE=EXTENDED

注意 DCL レキシカル関数は，ODS-5 ディスク上のファイル名に使用されている Latin-1 文字セットとは異なる DEC で定義している文字セットを使用します。このため，たとえば DCL 関数 F$EDIT を使用してファイル名を大文字に変更した場合などには，予期しない結果が発生する可能性があります。F$EDIT は，F0，F7，FE，および FF の 16 進数値を持つ DEC で定義している文字セットの文字については，大文字に変更しません。

DCL の名前解析スタイルの変更の詳細については， 第 3.4.1 項 を参照してください。

## 3.4.1 DCL での Extended File Specifications 解析機能の使用

3.4.1.1 ， 3.4.1.2 ，および 3.4.1.3 の各項では， DCL 名前解析スタイルを，コマンド行およびコマンド・プロシージャの中で制御する方法について説明します。

### 3.4.1.1 拡張ファイル名解析機能の設定

OpenVMS Alpha システムでは，次のコマンドを入力して，DCL が ODS-5 ファイル名をプロセス単位で受け付けるように設定することができます。

    $ SET PROCESS/PARSE_STYLE=EXTENDED

このコマンドは，OpenVMS VAX システムには全く影響を与えないことに注目してください。

このコマンドを入力すると，DCL は，次のようなファイル名を受け付けるようになります。

    $ CREATE MY^[FILE

サーカンフレックス (^) は，次に続く文字 (この例の場合には左大括弧 ([))) が区切り記号ではなく，ファイル名の中のリテラル文字として処理されるように DCL に指示するエスケープ文字として使用されます。

詳細については，『OpenVMS DCL ディクショナリ: N--Z』の SET PROCESS/PARSE_STYLE コマンドに関する説明を参照してください。

### 3.4.1.2 省略時の解析スタイルの再設定

ファイル名に対する省略時の DCL 解析スタイルは，ODS-2 スタイルのファイル名です。 DCL を省略時の解析スタイルに再設定するには，次のコマンドを入力します。

    $ SET PROCESS/PARSE_STYLE=TRADITIONAL

このコマンドを入力すると，DCL は，ODS-2 のファイル名形式だけを受け付けるようになります。

### 3.4.1.3 ファイル名解析スタイルの切り替え

特定のファイル名解析スタイルを必要とするコマンド・プロシージャでは，そのコマンド・プロシージャ内にコマンドを入れて解析スタイルを切り替えることができます。次のコマンド・プロシージャは，現在の解析スタイルを保存し，解析スタイルを TRADITIONAL に設定し，コマンド (未指定) を実行して，保存された解析スタイルを復元します。

    $ original_style= f$getjpi("","parse_style_perm")
    $ SET PROCESS/PARSE_STYLE=TRADITIONAL
       .
       .
       .
    $ SET PROCESS/PARSE_STYLE='original_style'

最初のコマンドにより，'original_style' が現在の解析スタイルになります。2 番目のコマンドにより，解析スタイルが TRADITIONALに設定されます。最後のコマンドにより，解析スタイルが元のスタイルに再設定されます。

## 3.4.2 DCL コマンド・パラメータでの拡張ファイル名の使用

ファイル名をパラメータとして使用するコマンド・プロシージャは，ODS-5 環境では異なった結果を生成する場合があります。

解析スタイルは TRADITIONAL から EXTENDED に変更することができます。この項では， EXTENDED に変更した場合に影響を受ける可能性のある，次の分野について説明します。

- コマンド・プロシージャのファイル指定

- 大文字と小文字の区別および $FILE

- アンパサンドと一重引用符の置換

解析スタイルの切り替えの詳細については， 第 3.4.1 項 を参照してください。

## 3.4.3 コマンド・プロシージャのファイル指定

インダイレクト・コマンド・プロシージャが使用されている場合には，一部のプロシージャの引数を引用符で囲む必要がある場合があります。

次の例は，同じコマンド・ファイル SS.COM を使用した場合の，TRADITIONAL 解析スタイルと EXTENDED 解析スタイルでの出力の違いを示しています。

           $ create ss.com
           $ if p1 .nes. "" then write sys$output "p1 = ",p1
           $ if p2 .nes. "" then write sys$output "p2 = ",p2
           $ if p3 .nes. "" then write sys$output "p3 = ",p3

- 解析スタイルを TRADITIONAL に設定し，コマンド・ファイル SS.COM を実行すると，出力は次のようになる。

             $ set process/parse_style=traditional
             $ @ss ^ parg2 parg3
             p1 = ^
             p2 = PARG2
             p3 = PARG3

  サーカンフレックス (^) は，最初の引数であり (エスケープ文字ではない)，プロシージャ引数 p2 および p3 の大文字と小文字の区別が保存されていないことに注意してください。

- 解析スタイルを EXTENDED に設定し，同じコマンド・プロシージャを実行すると，出力は次のようになる。

             $ set process/parse_style=extended
             $ @ss ^ parg2 parg3
             p1 = ^ PARG2
             p2 = PARG3

  コマンド・プロシージャで サーカンフレックス(^) が，スペースを引数の区切り文字としてではなくリテラル文字として識別するエスケープ文字として認識されていることと，"^ PARG2" が最初の引数であることに注意してください。大文字と小文字の区別は保存されません。

- サーカンフレックス (^) に引用符を追加すると，結果は次のようになる。

             $ @ss "^" parg2 parg3
             p1 = ^
             p2 = PARG2
             p3 = PARG3

  サーカンフレックス (^) は引用文字列の中にあるため，エスケープ文字として処理されません。

- 引数 p3 に引用符を追加すると，結果は次のようになる。

             $ @ss "^" parg2 "parg3"
             p1 = ^
             p2 = PARG2
             p3 = parg3

  プロシージャ引数 p3 の大文字と小文字の区別が保存されていることに注意してください。

- 解析スタイルを TRADITIONAL に設定すると，次のコマンドでは サーカンフレックス (^) と，parg2 および parg3 の文字列とが，プロシージャ引数として処理され，コマンド・プロシージャを実行すると，結果は次のようになる。

             $ set process/parse_style=traditional
             $ @ss^ parg2 parg3
             p1 = ^
             p2 = PARG2
             p3 = PARG3

- 解析スタイルを EXTENDED に設定すると， サーカンフレックス (^) は，スペースをリテラル文字として識別するエスケープ文字として処理される。DCL は，ファイル "SS^_PARG2.COM" を探し，次の例で示されているエラーが生成される。

             $ set process/parse_style=extended
             $ @ss^ parg2 parg3
             %DCL-E-OPENIN, error opening USER$DISK:[TEST]SS^_PARG2.COM; as input
             -RMS-E-ACC, ACP file access failed
             -SYSTEM-W-BADFILENAME, bad file name syntax

## 3.4.4 大文字と小文字の区別の保存と $FILE

DCL は，ファイル指定の大文字と小文字の区別を保存しようとします。実際にファイル指定の大文字と小文字の区別が保存されるのは， Command Definition Utility (CDU) を使用して定義されたコマンドに限られます。 DCL は，$FILE 解析タイプを持つコマンド定義ファイル (.CLD) の中で定義されている項目の大文字と小文字を保存します。

詳細については，『OpenVMS Command Definition, Librarian, and Message Utilities Manual』を参照してください。

## 3.4.5 アンパサンドと一重引用符の置換

一重引用符に対してアンパサンド (&) による置換を使用して，従来型の解析の際に大文字と小文字の区別を保存することができます。

次の従来型の解析の例は，文字列の大文字と小文字の区別を変更する一連のコマンドを示しています。

           $ set process/parse_style=traditional
           $ x = "string"
           $ define y 'x'
           $ sho log y
              "Y" = "STRING" (LNM$PROCESS_TABLE)
           $ define y &x
           %DCL-I-SUPERSEDE, previous value of Y has been superseded
           $ sho log y
              "Y" = "string" (LNM$PROCESS_TABLE)

アンパサンド (&) を使用することにより，変数 x に割り当てられた文字列の大文字と小文字の区別が保存されていることに注意してください。

一重引用符による置換は，コマンド行が大文字に設定される前に実行され，アンパサンドによる置換は，コマンド行が大文字に設定された後で実行されます。

次の拡張解析機能の例は，同じ一連のコマンドを示しています。

           $ set process/parse_style=extended
           $ define y 'x'
           %DCL-I-SUPERSEDE, previous value of Y has been superseded
           $ sho log y
              "Y" = "string" (LNM$PROCESS_TABLE)
           $ define y &x
           %DCL-I-SUPERSEDE, previous value of Y has been superseded
           $ sho log y
              "Y" = "string" (LNM$PROCESS_TABLE)

変数 y に割り当てられた文字列はどちらも小文字で返されていることに注意してください。これは，DEFINE コマンドが，大文字と小文字の区別を保存する $FILE を使用するために発生します。

このような特徴を持つことから，アンパサンドによる置換は，解析スタイルが TRADITIONAL に設定されている場合でも EXTENDED ファイル名を指定するために使用することができます。次に例を示します。

    $ set process/parse=extended
    $ cre file^ name.doc
    Contents of an ODS5 file
     Exit

    $ set process/parse=traditional
    $ a = "file^ name.doc"
    $ type file^ name.doc
    %DCL-W-PARMDEL, invalid parameter delimiter - check use of special characters
     \^NAME\
    $ type 'a'
    %DCL-W-PARMDEL, invalid parameter delimiter - check use of special characters
     \^NAME\
    $ type &a
    Contents of an ODS5 file

注意 アンパサンドの置換は，フォーリン・コマンドには使用できません。

# 3.5 DCL コマンドおよびユーティリティ

一部の DCL コマンドおよび OpenVMS ユーティリティは，拡張ファイル名のすべての機能を活用できるように変更されています。これらのユーティリティおよびコマンドは，エラーを発生させたり，目的の大文字と小文字の区別を修正することなく，拡張ファイル指定を受け付けることができるようになっています。

一方，拡張ファイル名を活用するための変更がほとんど加えられていない DCL コマンドおよび OpenVMS ユーティリティもあります。このようなユーティリティやコマンドは，拡張ファイル指定のほとんどの属性 (新しい文字や深いディレクトリ構造など) を正しく処理できると考えられています。

Extended File Specifications をサポートするための，DCL の新しい機能については， 表 3-3 を参照してください。

第 2.1 節 では，OpenVMS バージョン 7.2 で DCL コマンドおよび Open VMS ユーティリティによって提供されている，拡張ファイル名に関するさまざまなレベルのサポートについて，詳しく説明しています。

次の DCL コマンドおよび OpenVMS ユーティリティは，拡張ファイル名を完全にサポートしています。

> ANALYZE /AUDIT
> ANALYZE /DISK
> ANALYZE /RMS
> BACKUP
> CONVERT
> CONVERT /RECLAIM
> COPY
> CREATE /DIRECTORY
> DELETE
> DIRECTORY
> DUMP
> EDIT /ACL
> EXCHANGE /NETWORK
> FDL
> PURGE
> RECOVER/RMS
> RENAME
> SEARCH
> SET SECURITY
> SYSMAN
> TYPE

表 3-3 は，Extended File Specifications をサポートするための，DCL の新しい機能を示しています。

表 3-3 DCL の新機能
DCL コマンド | 新しい機能
--- | ---
COPY | 新しいキーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /STYLE を追加。
DELETE | 新しいキーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /STYLE を追加。
DIRECTORY | 次の項目を追加。 新しいキーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /STYLE クライアント属性を表示するための /FULL への表示項目
DUMP | 次の項目を追加。 名前のタイプ属性を表示するための /DIRECTORY への表示項目 新しい属性を表示するための /HEADER への表示項目 新しいキーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /STYLE
EXCHANGE NETWORK | 新しいキーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /STYLE を追加。
F$FILE_ATTRIBUTES レキシカル関数 | 新しい項目コード FILE_LENGTH_HINT，VERLIMIT，DIRECTORY を追加。
F$GETDVI レキシカル関数 | ACPTYPE 項目コードに新しいタイプを追加。
F$GETJPI レキシカル関数 | 新しい項目コード PARSE_STYLE_PERM および PARSE_STYLE_IMAGE を追加。
INITIALIZE | 新しい修飾子 /STRUCTURE=5 device-name[:] volume-label を追加。
PRINT | 新しいキーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /STYLE を追加。
PURGE | 新しいキーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /STYLE を追加。
RENAME | 新しいキーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /STYLE を追加。
SEARCH | 新しいキーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /STYLE を追加。
SET ACL | 新しいキーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /STYLE を追加。
SET DEFAULT | ODS-5 準拠のファイル指定を受け付けることができるように，ディレクトリ指定パラメータを変更。
SET DIRECTORY | 新しいキーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /STYLE を追加。
SET FILE | 新しいキーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /STYLE を追加。
SET PROCESS | キーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /PARSE_STYLE=(キーワード) を追加。
SET SECURITY | 新しいキーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /STYLE を追加。
SET VOLUME | 新しい修飾子 /STRUCTURE_LEVEL=5 を追加。
SHOW DEVICE/FULL | ディスク構造レベルを表示できるように，表示情報を更新。
SUBMIT | 新しいキーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /STYLE を追加。
TYPE | 新しいキーワード EXPANDED および CONDENSED を持つ，新しい修飾子 /STYLE を追加。

Extended File Specifications をサポートするために OpenVMS オペレーティング・システムおよびそのユーティリティに追加された拡張機能の詳細については，『OpenVMS DCL ディクショナリ: A--M』，『OpenVMS DCL ディクショナリ: N--Z』，および『OpenVMS Utility Routines Manual』を参照してください。

前へ | 次へ | 目次 | 索引