前へ | 次へ | 目次 | 索引 |
システム管理ユーティリティやディスク管理ユーティリティなど一部の OpenVMS アプリケーションでは,Extended File Specifications の完全サポートが必要です。通常,このようなユーティリティは,DID や FID の短縮形を持たないすべてのファイル指定を表示し,操作しなければなりません。Extended File Specifications のすべての機能を完全にサポートするようにアプリケーションをアップグレードするには,次の操作を行います。
Extended File Specifications により,ユーザは Windows スタイルのファイル指定を OpenVMS 環境で使用できるようになります。ユーザが Extended File Specifications の環境になじめるようにする方法の 1 つに,ODS-2 と ODS-5 で見られるファイル名のいくつかの相違点について説明することがあります。相違点としては,ODS-2 から ODS-5 のスタイルに切り替えた場合に最も目立つものを取り上げます。
この後の節では,システム管理者がユーザに知らせておくと効果的であると思われる使用上の注意を示します。これらの注意点は,次のように分類されます。
A.1 Extended File Specifications の新しい特性
この節では,ユーザが初めて使用する Extended File Specifications の新しい特性に関する注意事項について説明しています。
ODS-5 ファイルを ODS-5 ボリュームに格納できるように,ディスクが ODS-2 ボリュームであるか,または ODS-5 ボリュームであるかを把握しておく必要があります。
ボリューム・タイプは,次のようなコマンドを実行することによって表示できます。
$ 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, subject to mount verification, file high-water marking, write-back caching enabled. $ SHOW DEVICE DKA200:/FULL 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, subject to mount verification, file high-water marking, write-back caching enabled. |
それぞれのコマンドの後に表示される "Volume Status:" は,ボリュームが ODS-5 であるか,または ODS-2 であるかを示しています。
ODS-2 ボリューム上では,拡張ファイル名を持つファイルを作成することができません。
次の例では, DKA200 が ODS-2 ボリューム,解析スタイルが EXTENDED であるため, RMS は,エラー・メッセージを返します。
$ SET DEFAULT DKA200:[TEST] $ CREATE x.x.x.x %CREATE-E-OPENOUT, error opening DAK200:[TEST]X^.X^.X.X; as output -RMS-E-CRE, ACP file create failed -SYSTEM-W-BADFILEVER, bad file version number |
◆大文字と小文字の区別は拡張ファイル名を最初に作成したときに決まる
ODS-5 ボリューム上では,1 つのファイルのすべてのバージョンで,大文字と小文字の区別が同じです。つまり,大文字と小文字の区別は,そのファイル名が最初に作成されたときのまま保存されます。
次の例では,DKA500 は ODS-5 ディスクです。
$ SET DEFAULT DKA500:[TEST] $ 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 の中で大文字と小文字を区別しないファイル名のマッチングの重要さを示しています。このプログラムでは,大文字と小文字を区別するマッチングを実行する場合には引数を指定せず,大文字と小文字を区別しないマッチングを実行する場合には引数を指定することに注意してください。
このプログラムでは,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 |
次に,この例の中で番号が付いている部分について説明します。
次の例では,検索プログラムは大文字と小文字を区別する検索を実行し,マッチするものを見つけていません。
$ @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 |
◆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](1) aaaa.txt;1 Total of 1 file. Directory DKA300:[528,7036,0](2) xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.txt;1 Total of 1 file. Grand total of 2 directories, 2 files.(3) |
DIRECTORY コマンドの詳細については,『OpenVMS DCL ディクショナリ』を参照してください。
◆等価名としての Extended File Specifications に注意する
Extended File Specifications のエスケープ文字,サーカンフレックス (^) は,論理名の等価名文字列の中では使用されません。エスケープ文字を必要とする拡張ファイル名に対して論理名を定義するときには,DEFINE コマンドの中の拡張ファイル名にエスケープ文字を使用しないようにします。次に例を示します。
$ define xxx a&b $ dir xxx Directory DKA500:[EXTENDED_FILES] a^&b.txt;1 Total of 1 file. |
この節では,クラスタ内での ODS-2 と ODS-5 の同時使用に関する注意事項について説明します。
◆ボリュームが混在している環境では従来型のファイル名を使用する
ODS-2 ボリュームと ODS-5 ボリュームの両方を使用している場合には,ODS-2 のファイル名と ODS-5 のファイル名の互換性の問題が発生することを避け,OpenVMS の以前のバージョンとの下位互換性を保つために, 従来型の ODS-2 のファイル名だけを使用します。
ユーザに対して表示されるエラー・メッセージは,解析スタイルによって異なることがあります。解析スタイルが EXTENDED に設定されていると,以前は DCL レベルで検出されていた構文エラーが,RMS や 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, (1) subject 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 $ (5) |
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, (1) subject 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 |
$ 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, (1) subject 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) |
処理されるファイルを基にユーティリティが出力ファイルを作成できるようにする場合には,省略時の値に注意が必要です。誤って ODS-2 ボリュームに拡張ファイル名を格納しようとすることがないように,ファイルが格納される場所を確認する必要があります。
次に,予想しなかった場所にファイルが格納される例をいくつか示します。
$ SHOW DEFAULT DKA200:[DOREO] $ DUMP /OUTPUT DKA500:[DOREO]This^_is^_a^_file.Dat %DUMP-E-OPENOUT, error opening DKA200:[DOREO]THIS^_IS^_A^_FILE.DMP;as output -RMS-E-CRE, ACP file create failed -SYSTEM-W-BADFILENAME, bad file name syntax |
/OUTPUT 修飾子を使用して指定した出力ファイルは,省略時の設定では,入力ファイルと同じ名前でファイル・タイプが .DMP になり省略時のディレクトリ内に生成されます。入力ファイル指定は ODS-5 ボリューム上の拡張名ですが,.DMP ファイルは ODS-2 ボリュームに書き込まれるため,従来型の名前でなければなりません。このため,エラーが発生します。
このような場合,ログ・ファイルを作成できないため,バッチ・コマンド・ファイルの実行は失敗します。このような状況は,論理名 SYS$LOGIN が ODS-2 ボリュームを参照したときに最も多く発生します。これは,ログ・ファイルが SYS$LOGIN デバイス上で暗黙に作成されるためです。さらに,通知が無効になっていると,バッチ・ジョブが実行されなかったことが通知されません。
このようなエラーを防ぐには,拡張ファイル名を持つコマンド・ファイルを実行するときには,/LOG= 修飾子および ODS-2 準拠のログ・ファイル指定を使用するようにします。
前へ | 次へ | 目次 | 索引 |