前へ | 次へ | 目次 | 索引 |
DCL では拡張ファイル名の大文字と小文字の区別が保存されますが,ワイルドカードのマッチングでは,大文字と小文字は区別されません。
ワイルドカードを含む検索処理では,引き続き,対象となる指定の同じ部分にある対応する文字だけをマッチします。 表 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 |
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] |
ODS-5 ボリュームでは,ディレクトリ名は, ISO Latin-1 文字セットを使用した場合のファイル名と同じ規則に準拠します。ピリオドと特殊文字は,ディレクトリ名の中で使用することができますが,リテラル文字として認識されるためには, 表 3-2 に示すように, エスケープ文字としてのサーカンフレックス (^) を前に付けなければなりません。
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 に変更した場合に影響を受ける可能性のある,次の分野について説明します。
解析スタイルの切り替えの詳細については,
第 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 |
$ set process/parse_style=traditional $ @ss ^ parg2 parg3 p1 = ^ p2 = PARG2 p3 = PARG3 |
サーカンフレックス (^) は,最初の引数であり (エスケープ文字ではない),プロシージャ引数 p2 および p3 の大文字と小文字の区別が保存されていないことに注意してください。
$ set process/parse_style=extended $ @ss ^ parg2 parg3 p1 = ^ PARG2 p2 = PARG3 |
コマンド・プロシージャで
サーカンフレックス(^) が,スペースを引数の区切り文字としてではなくリテラル文字として識別するエスケープ文字として認識されていることと,"^ PARG2" が最初の引数であることに注意してください。大文字と小文字の区別は保存されません。
$ @ss "^" parg2 parg3 p1 = ^ p2 = PARG2 p3 = PARG3 |
サーカンフレックス (^) は引用文字列の中にあるため,エスケープ文字として処理されません。
$ @ss "^" parg2 "parg3" p1 = ^ p2 = PARG2 p3 = parg3 |
プロシージャ引数 p3 の大文字と小文字の区別が保存されていることに注意してください。
$ set process/parse_style=traditional $ @ss^ parg2 parg3 p1 = ^ p2 = PARG2 p3 = PARG3 |
$ 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 |
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 |
アンパサンドの置換は,フォーリン・コマンドには使用できません。 |
一部の 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 の新しい機能を示しています。
DCL コマンド | 新しい機能 |
---|---|
COPY | 新しいキーワード EXPANDED および CONDENSED を持つ,新しい修飾子 /STYLE を追加。 |
DELETE | 新しいキーワード EXPANDED および CONDENSED を持つ,新しい修飾子 /STYLE を追加。 |
DIRECTORY | 次の項目を追加。
|
DUMP | 次の項目を追加。
|
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 を追加。 |
新しいキーワード 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』を参照してください。
前へ | 次へ | 目次 | 索引 |