[ 前のページ ]
[ 次のページ ]
[ 目次 ]
[ 索引 ]
[ DOC Home ]
Extended File Specificationsにより,ユーザはWindowsスタイルのファイル指定をOpenVMS 環境で使用できるようになります。ユーザがExtended File Specificationsの環境になじめるようにする方法の1つに,ODS-2とODS-5 で見られるファイル名のいくつかの相違点について説明することがあります。 相違点としては,ODS-2からODS-5のスタイルに切り替えた場合に最も目立つものを取り上げます。
この後の節では,システム管理者がユーザに知らせておくと効果的であると思われる使用上の注意を示します。 これらの注意点は,次のように分類されます。
この節では,ユーザが初めて使用する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準拠のログ・ファイル指定を使用するようにします。
この節では,システム・アーキテクチャに関するExtended File Specificationsの注意事項について説明します。
VAXシステムでODS-5ボリュームをマウントすることはできますが,VAXシステムにログインしても, 拡張ファイル名を表示することができません。 その代わりに,疑似名が表示されます。
次の例は,同じディレクトリ名がAlphaシステムとVAXシステムとで表示される場合の違いを示しています。
$ DIRECTORY DPA100:[TEST] Directory DPA100:[TEST] Accounting^_data.lis;1 atest.txt;1
$ DIRECTORY DPA200:[TEST] Directory DPA200:[TEST] \PISO_LATIN\.??? ATEST.TXT
さらに,VAXシステムでのディレクトリの深さは,8 (最上位論理名を使用した場合には16) に制限されます。
この節では,拡張ファイル名を使用する場合の制約事項について説明します。
DEC C Run Time Library (CRTL)を使用することにより,プログラマは, creat()やfopen()などのルーチンに対して,UNIXスタイルとVMSスタイルの両方のファイル指定を実行することができます。
UNIXのファイル指定では,最初の文字がチルダ(~)になっているパス名は, ユーザのホーム・ディレクトリを表します。一方,OpenVMSの拡張ファイル名では, チルダはファイル名またはディレクトリ名のどの位置にあっても有効です。
下位互換性を保つために,CRTLでは,引き続きファイル名やディレクトリ名の先頭にあるチルダ(~) をユーザのホーム・ディレクトリを表します。 先頭がチルダ(~)になっているOpenVMSファイル名を,UNIXスタイルのファイル指定を受け付けるCRTL ルーチンに渡すには,^~のように,チルダの前にエスケープ文字としてサーカンフレックス(^) を付けます。
次のDEC CRTL関数はOpenVMSの拡張ファイル名を受け付けますが,ファイル指定の中で先頭にチルダ(~) がある場合にはこの構文が必要になります。
[ 前のページ ]
[ 次のページ ]
[ 目次 ]
[ 索引 ]
[ DOC Home ]