$ SET PROCESS /PARSE_STYLE=EXTENDED
$ CREATE myfile.txt
Ctrl/Z
$ CREATE MYFILE.TXT
Ctrl/Z
$ DIRECTORY
Directory DKA500:[TEST]
myfile.txt;2 myfile.txt;1
◆Extended File Specificationsの大文字と小文字の区別の保存とその無視に注意する
ODS-5ボリュームでは,ファイルが最初に入力されたときの大文字と小文字の区別が
保存されますが,ファイルの検索は大文字と小文字を区別せずに実行されます。同様 に,ユーザがコマンド・プロシージャの中で.EQS.やF$LOCATEなどのDCL文字 関数を使用するときなどに比較を実行する場合にも,注意しなければなりません。
次の例は,DCLの中で大文字と小文字を区別しないファイル名のマッチングの重要 さを示しています。このプログラムでは,大文字と小文字を区別するマッチングを実 行する場合には引数を指定せず,大文字と小文字を区別しないマッチングを実行する
ユーザを対象としたExtended File Specificationsの注意点 A.1 Extended File Specificationsの新しい特性
このプログラムでは,F$SEARCHを使用して,‘‘.TXT’’というファイル・タイプのす べてのファイルを見つけます。RMS (したがってF$SEARCH)は大文字と小文字を 区別しないマッチングを実行するため,‘‘.txt’’というファイル・タイプのファイルも見 つけます。次に,F$SEARCHはF$LOCATEを使用して,‘‘TEST’’という名前を持 つファイル名を検索します。F$LOCATEは大文字と小文字を区別するマッチングを 実行するため,あらかじめ文字列を大文字に変換しておかないと,マッチングは失敗 します。
$ case_blind = 0
$ if p1 .nes. "" then case_blind = 1
1$loop:
$ file = f$search("*.TXT;")
2$ if file .eqs. "" then goto not_found
$ write sys$output "Search returns " + file
$ if case_blind .eq. 1 then file = f$edit(file,"UPCASE")
3$ if (f$locate("TEST",file) .ne. f$length(file)) then goto found
4$ goto loop
$found:
$ write sys$output "Found a file matching TEST"
$ exit
$not_found:
$ write sys$output "Did not find file matching TEST"
$ exit
次に,この例の中で番号が付いている部分について説明します。
1 引数(大文字と小文字を区別しない比較演算を実行するよう,プログラムに要求す
る)がある場合には,‘‘case_blind’’を1に設定する。
2 末尾が‘‘.TXT’’または‘‘.txt’’になっているファイルを取得する(F$SEARCHは大文字 と小文字を区別しないため)。
3 手順1で大文字と小文字を区別しない比較演算が選択された場合には,ファイル 名を大文字に変更して,大文字と小文字を区別しない比較演算を実行する。
4 F$LOCATEは,ファイルを見つけると,‘‘found:’’に進む。
次の例では,検索プログラムは大文字と小文字を区別する検索を実行し,マッチする ものを見つけていません。
$ @test
Search returns DKA300:[FISHER]test.txt;1 Did not find file matching TEST
次の例では,検索プログラムは大文字と小文字を区別しない検索を実行し,マッチす るものを見つけません。
$ @test case-blind
Search returns DKA300:[FISHER]test.txt;1
Found a file matching TEST
ユーザを対象としたExtended File Specificationsの注意点 A.1 Extended File Specificationsの新しい特性
◆CONDENSEDスタイルのファイル名では短縮形と完全なディレクトリが別々に表
示される
一部のシステムユーティリティおよびDIRECTORYのようなDCLコマンドには,
ファイル名を表示する方法を制御するスタイル・スイッチがあります。スタイルが
CONDENSEDの場合には,最長で255バイトのファイル名が表示される。ファイル
指定が255バイトの上限に達すると,ディレクトリ名はディレクトリID (DID)に短 縮される。
DIRECTORYコマンドは,DIDの短縮形によるディレクトリ名を短縮されていない
ディレクトリ名と区別するため,短縮が行われると,それぞれのディレクトリ名に対 して個別のヘッダを作成します。
$ DIR/STYLE=CONDENSED
Directory DKA300:[DEEPER.aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii._ten.aaaa.
bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii._ten.aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.
hhhh.iiii._ten.aaaa.bbbb.cccc.dddd.eeee.ffff.gggg.hhhh.iiii._ten]
1aaaa.txt;1 Total of 1 file.
Directory DKA300:[528,7036,0]
2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.txt;1 Total of 1 file.
Grand total of 2 directories, 2 files.
31 CONDENSEDスタイルでは,ディレクトリ名とファイル名の組み合わせが255
バイトを超えない場合には,ディレクトリ名はDIDに短縮されない。
2 CONDENSEDスタイルでは,ディレクトリ名とファイル名の組み合わせが255
バイトを超える場合には,ディレクトリ名はDIDに短縮される。
3 同じ1つのディレクトリに対して完全なディレクトリ形式と短縮形による ディレクトリ形式の両方を表示するDIRECTORYコマンドを実行すると,
DIRECTORYはこれらを2つの異なるディレクトリとしてカウントする。
DIRECTORYコマンドの詳細については,『OpenVMS DCLディクショナリ』を参
照してください。
◆等価名としてのExtended File Specificationsに注意する
Extended File Specificationsのエスケープ文字,サーカンフレックス(^)は,論理名 の等価名文字列の中では使用されません。エスケープ文字を必要とする拡張ファイル 名に対して論理名を定義するときには,DEFINEコマンドの中の拡張ファイル名に エスケープ文字を使用しないようにします。次に例を示します。
$ define xxx a&b
$ dir xxx
Directory DKA500:[EXTENDED_FILES]
ユーザを対象としたExtended File Specificationsの注意点 A.1 Extended File Specificationsの新しい特性
Total of 1 file.
A.2 ODS-2 と ODS-5 の同時使用
この節では,クラスタ内でのODS-2とODS-5の同時使用に関する注意事項について 説明します。
◆ボリュームが混在している環境では従来型のファイル名を使用する
ODS-2ボリュームとODS-5ボリュームの両方を使用している場合には,ODS-2のフ
ァイル名とODS-5のファイル名の互換性の問題が発生することを避け,OpenVMS の以前のバージョンとの下位互換性を保つために,従来型のODS-2のファイル名だ けを使用します。
◆エラー・メッセージは解析スタイルによって異なることがある
ユーザに対して表示されるエラー・メッセージは,解析スタイルによって異なること があります。解析スタイルがEXTENDEDに設定されていると,以前はDCLレベル で検出されていた構文エラーが,RMSやXQPなどのファイル・システムのレベルに 渡されます。このため,ファイルの構文エラーに対してユーザが受け取るメッセージ は,解析スタイルとボリューム構造によって多少異なることがあります。
次にさまざまなエラー・メッセージの例を示します。
• ODS-5ボリューム上でのTRADITIONALスタイルとEXTENDEDスタイルの例
$ SHOW DEVICE DKA500:/FULL
Disk AABOUT$DKA500:, device type RZ25, is online, allocated, deallocate on dismount, mounted, file-oriented device, shareable.
Error count 0 Operations completed 155
. . .
Volume Status: ODS-5,
1subject to mount verification, file high-water marking, write-back caching enabled.
$ SET PROCESS /PARSE_STYLE=TRADITIONAL
2$ OPEN /WRITE FILE z.z.z.z
%DCL-W-PARMDEL, invalid parameter delimiter - check use of special characters \.Z\
3$ SET PROCESS /PARSE_STYLE=EXTENDED
4$ OPEN /WRITE FILE z.z.z.z
$
51 ボリュームはODS-5。
2 解析スタイルをTRADITIONALに設定する。
3 DCLは一部のODS-5ファイル名に対してこのようなエラーを返す。
4 解析スタイルをEXTENDEDに設定する。
5 DCLはファイルを作成する。
ユーザを対象としたExtended File Specificationsの注意点 A.2 ODS-2とODS-5の同時使用
• ODS-2ボリューム上でのTRADITIONALスタイルとEXTENDEDスタイルの例
Disk AABOUT$DKA200:, device type RZ25, is online, allocated, deallocate
on dismount, mounted, file-oriented device, shareable.
Error count 0 Operations completed 232
. . .
Volume Status: ODS-2,
1subject to mount verification, file high-water marking, write-back caching enabled.
$ SET PROCESS /PARSE_STYLE=TRADITIONAL
2$ OPEN /WRITE FILE z.z.z.z
%DCL-W-PARMDEL, invalid parameter delimiter - check use of special characters \.Z\
3$ SET PROCESS /PARSE_STYLE=EXTENDED
4$ OPEN /WRITE FILE z.z.z.z
%DCL-E-OPENIN, error opening
-RMS-E-CRE, ACP file create failed
5-SYSTEM-W-BADFILEVER, bad file version number
1 ボリュームはODS-2。
2 解析スタイルをTRADITIONALに設定する。
3 DCLはエラー・メッセージを返す。
4 解析スタイルをEXTENDEDに設定する。
5 DCLはこのファイル名を受け付けるが,XQPはエラーを返す。
• 同じ構文エラーに対するエラー・メッセージが異なる例
$ SHOW DEVICE DKA500:/FULL
Disk AABOUT$DKA500:, device type RZ25, is online, allocated, deallocate on dismount, mounted, file-oriented device, shareable.
Error count 0 Operations completed 155
. . .
Volume Status: ODS-5,
1subject to mount verification, file high-water marking, write-back caching enabled.
$ SET PROCESS /PARSE_STYLE=TRADITIONAL
2$ CREATE a^<b.c
%DCL-W-PARMDEL, invalid parameter delimiter - check use of special characters
\^\
3$ SET PROCESS /PARSE_STYLE=EXTENDED
4$ CREATE a^<b.c
%CREATE-E-OPENOUT, error opening a^<b.c as output
-RMS-F-SYN, file specification syntax error
5ユーザを対象としたExtended File Specificationsの注意点 A.2 ODS-2とODS-5の同時使用
2 解析スタイルをTRADITIONALに設定する。
3 DCLは構文エラーに対するエラー・メッセージを返す。
4 解析スタイルをEXTENDEDに設定する。
5 RMSは,同じ構文エラーに対して異なるエラー・メッセージを返す("<"は,
拡張ファイル名では使用できない)。
◆暗黙のファイル名出力に注意する
処理されるファイルを基にユーティリティが出力ファイルを作成できるようにする場 合には,省略時の値に注意が必要です。誤ってODS-2ボリュームに拡張ファイル名 を格納しようとすることがないように,ファイルが格納される場所を確認する必要が あります。
次に,予想しなかった場所にファイルが格納される例をいくつか示します。
• アプリケーションまたはユーティリティがODS-5の拡張ファイル名をODS-2
(DKA200:)ボリュームに書き込もうとすると,次の例のようにエラーが発生す
る。