[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]

A ユーザを対象とした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ボリューム上では拡張ファイル名を使用しない

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

次に,この例の中で番号が付いている部分について説明します。

【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

◆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】
【1】
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]

     a^&b.txt;1

     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-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ボリュームに書き込まれるため,従来型の名前でなければなりません。 このため,エラーが発生します。

A.3 アーキテクチャに関する注意点

この節では,システム・アーキテクチャに関するExtended File Specificationsの注意事項について説明します。

◆VAXシステムでは拡張ファイル名を表示できない

VAXシステムでODS-5ボリュームをマウントすることはできますが,VAXシステムにログインしても, 拡張ファイル名を表示することができません。 その代わりに,疑似名が表示されます。

次の例は,同じディレクトリ名がAlphaシステムとVAXシステムとで表示される場合の違いを示しています。

さらに,VAXシステムでのディレクトリの深さは,8 (最上位論理名を使用した場合には16) に制限されます。

A.4 制約事項

この節では,拡張ファイル名を使用する場合の制約事項について説明します。

◆チルダ(~)をファイル名の最初の文字として使用しない

DEC C Run Time Library (CRTL)を使用することにより,プログラマは, creat()やfopen()などのルーチンに対して,UNIXスタイルとVMSスタイルの両方のファイル指定を実行することができます。

UNIXのファイル指定では,最初の文字がチルダ(~)になっているパス名は, ユーザのホーム・ディレクトリを表します。一方,OpenVMSの拡張ファイル名では, チルダはファイル名またはディレクトリ名のどの位置にあっても有効です。

下位互換性を保つために,CRTLでは,引き続きファイル名やディレクトリ名の先頭にあるチルダ(~) をユーザのホーム・ディレクトリを表します。 先頭がチルダ(~)になっているOpenVMSファイル名を,UNIXスタイルのファイル指定を受け付けるCRTL ルーチンに渡すには,^~のように,チルダの前にエスケープ文字としてサーカンフレックス(^) を付けます。

次のDEC CRTL関数はOpenVMSの拡張ファイル名を受け付けますが,ファイル指定の中で先頭にチルダ(~) がある場合にはこの構文が必要になります。


.create
.fopen
.freopen
.open
.stat


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]