# Compaq OpenVMS
Extended File Specifications の手引き

前へ | 次へ | 目次 | 索引

# 3.6 拡張ファイル名の表示

表 3-3 に示されているように，一部の DCL コマンドでは，次のように新しい修飾子を使用して拡張ファイル名の表示を制御することができます。

    /STYLE= [CONDENSED | EXPANDED]

この修飾子を使用すると，更新された DCL コマンドが拡張ファイル名およびそれらに関連するプロンプトを表示する方法を制御することができます。

キーワード CONDENSED を使用すると，多くのユーティリティで 255 バイトと定められている文字列の上限以内に納まるように生成されたファイル指定が表示されます。必要に応じて，このファイル指定には，DID 短縮形または FID 短縮形が含まれている場合があります。キーワード EXPANDED を使用すると，ディスク上に格納されているファイル指定が完全な形で表示され， DID 短縮形や FID は含まれません。

この後の項では， DIRECTORY コマンド，TYPE コマンド，PURGE コマンド，および DELETE コマンドに /STYLE 修飾子を使用した例が示されています。

## 3.6.1 DIRECTORY コマンド

DIRECTORY コマンドを使用すると，ディレクトリの内容を表示するときに，ファイル名を表示する形式を選択することができます。

    DIRECTORY/STYLE=(keyword[,keyword])

DIRECTORY コマンドを使用すると，省略時の設定では，次の例のように，必要に応じて DID を使用し，DID が不要な場合には完全なディレクトリ指定に切り替わって，ファイル名が表示されます。

    $ DIRECTORY

    Directory TEST$ODS5:[23,1,0]

    abcdefghijklmnopqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXYabcdefghijklmnopqrs
    tuvwxyABCDEFGHIJKLMNOPQRSTUVWXYabcdefghijklmnopqrstuvwxyABCDEFGHIJKLM
    NOPQRSTUVWXY.abcdefghijklmnopqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXYabcdef
    ghijklmnopqrst;2

    Total of 1 file.

    Directory TEST$ODS5:[TEST.RANDOMTESTING.RANDOM]

    AddressFiles.DIR;1  LOGIN.COM;3         test.1;1       test^.1.clue;1
    Travel.LIS;1        whee.;5       work.dat;8

    Total of 8 files.

    Grand total of 2 directories, 9 files.

DIRECTORY コマンドで /STYLE 修飾子を使用し，両方のキーワードを指定すると，2 列から成るディレクトリ・リストが表示されます。それぞれの列には，すべてのファイル名が含まれています。CONDENSED の列には，必要に応じて DID および FID が含まれ，EXPANDED の列には，完全なディレクトリ名および完全なファイル名が含まれています。ファイル・エラーがあると，CONDENSED 列に表示されます。次の例は， DIRECTORY コマンドで /STYLE 修飾子を使用し，両方のキーワードを指定した結果を示しています。

    $ DIRECTORY/STYLE=(CONDENSED,EXPANDED)

    Directory TEST$ODS5:[23,1,0]        TEST$ODS5:[TEST.RANDOMTESTING.RANDO
                                        M]

    abcdefghijklmnopqrstuvwxyABCDEFGHIJ abcdefghijklmnopqrstuvwxyABCDEFGHIJ
    KLMNOPQRSTUVWXYabcdefghijklmnopqrst KLMNOPQRSTUVWXYabcdefghijklmnopqrst
    uvwxyABCDEFGHIJKLMNOPQRSTUVWXYabcde uvwxyABCDEFGHIJKLMNOPQRSTUVWXYabcde
    fghijklmnopqrstuvwxyABCDEFGHIJKLMNO fghijklmnopqrstuvwxyABCDEFGHIJKLMNO
    PQRSTUVWXY.abcdefghijklmnopqrstuvwx PQRSTUVWXY.abcdefghijklmnopqrstuvwx
    yABCDEFGHIJKLMNOPQRSTUVWXYabcdefghi yABCDEFGHIJKLMNOPQRSTUVWXYabcdefghi
    jklmnopqrst;2                       jklmnopqrst;2
    AddressFiles.DIR;1                  AddressFiles.DIR;1
    LOGIN.COM;3                         LOGIN.COM;3
    test.1;1                            test.1;1
    test^.1.clue;1                      test^.1.clue;1
    Travel.LIS;1                        Travel.LIS;1
    whee.;5                             whee.;5
    work.dat;8                          work.dat;8

    Total of 8 files.

DIRECTORY コマンドでは，/STYLE 修飾子に一方または両方のキーワードを使用することができます。

## 3.6.2 TYPE コマンド

TYPE コマンドは，/STYLE 修飾子を受け付けます。この修飾子を使用すると，ファイルやプロンプトを入力するときにシステム・メッセージに表示されたファイル名形式を選択することができます。

    $ TYPE/STYLE=(keyword)

次の例では，TYPE コマンドに修飾子 TYPE=EXPANDED および CONFIRM を使用しています。

    $ TYPE/CONFIRM/STYLE=EXPANDED abc*.*rst;2
    TYPE TEST$ODS5:[TEST.RANDOMTESTING.RANDOM]abcdefghijklmnopqrstuvwxyzABCDEF
    GHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYabc
    defghijklmnopqrstuvwxyzGHIJKLMNOPQRSTUVWXYabcdefghijklmnopqrst;2 ? [N]: Y

    [System outputs contents of file]

## 3.6.3 DELETE コマンド

DELETE コマンドは /STYLE 修飾子を受け付けます。この修飾子を使用すると，コマンドを実行するときに表示するファイル名形式を選択することができます。

    $DELETE/STYLE=(keyword)

次の例の反復記号 (...) は，ファイル名の中に多くの文字が含まれていることを示します。これらの例では，CONFIRM 修飾子を使用して，システム・メッセージを生成しています。

省略時の値 (CONDENSED) を使用した DELETE:

    $ DELETE/CONFIRM abc*.*.*
    DELETE TEST$ODS5:[TEST.RANDOMTESTING.RANDOM]abcAlphabet.stuff;1 ? [N]: Y
    DELETE TEST$ODS5:[23,1,0] abcdefg. . .QRSTUVWXY.abcdefg. . .tuvw
    xy;1 ? [N]: Y

完全なファイル指定が必要な場合には，DELETE コマンドで /STYLE 修飾子と EXPANDED キーワードを使用します。

    $ DELETE/CONFIRM/STYLE=EXPANDED abc*.*.*
    DELETE TEST$ODS5:[TEST.RANDOMTESTING.RANDOM]abcAlphabet.stuff;1 ? [N]: Y
    DELETE TEST$ODS5:[TEST.RANDOMTESTING.RANDOM]abcdefg. . .QRSTUVWX
    Y.abcdefg. . .tuvwxy;1 ? [N]: Y

## 3.6.4 PURGE コマンド

PURGE コマンドは /STYLE 修飾子を受け付けます。この修飾子を使用すると，コマンドを実行するときに表示するファイル名形式を選択することができます。

    $ PURGE/STYLE=(keyword)

次の例の反復記号 (...) は，ファイル名の中に多くの文字が含まれていることを示します。これらの例では，CONFIRM 修飾子を使用して，システム・メッセージを生成しています。

省略時の値 (CONDENSED) を使用した PURGE:

    $ PURGE/CONFIRM
    DELETE TEST$ODS5:[23,1,0]abcdefg. . .QRSTUVWXY.abcdefg. . .tuvwxy;1
    ? [N]: Y

完全なファイル指定が必要な場合には，PURGE コマンドで /STYLE 修飾子と EXPANDED キーワードを使用します。

    $ PURGE/CONFIRM/STYLE=EXPANDED
    DELETE TEST$ODS5:[TEST.RANDOMTESTING.RANDOM]abcdefg. . .QRSTUVWXY.ab
    cdefg. . .tuvwxy;1 ? [N]: Y

# 3.7 拡張ファイル名の端末表示

端末に拡張ファイル名を表示するには，端末で表示する文字セットとして ISO Latin-1 を指定しなければなりません。このように設定しないと，画面に表示される文字は，PC で表示される文字と一致しなくなります。 図 C-1 には， DEC MCS と ISO Latin-1 文字セットの間で異なる文字のリストが示されています。

ISO Latin-1 文字セットを DECterm 上で正しく表示するには， Options メニューの General サブメニューから `UPSS ISO Latin 1`を選択します。

DEC で定義している文字セットを DECterm 上で正しく表示するには， Options メニューの General サブメニューから `UPSS DEC Supplemental`を選択します。

ISO Latin-1 文字セットを VT320 または VT420 上で正しく表示するには， Setup メニューの General サブメニューから `UPSS ISO Latin 1`を選択します。

DEC で定義している文字セットを VT320 または VT420 上で正しく表示するには， Setup メニューの General サブメニューから `UPSS DEC Supplemental`を選択します。

# 第 4 章
OpenVMS アプリケーション開発での拡張ファイル名に関する注意点

この章では， Extended File Specifications に関するアプリケーションのサポートを評価する方法について説明します。

# 4.1 現在のサポート状態の評価

OpenVMS Alpha バージョン 7.2 のテストの一環として，OpenVMS アプリケーションの開発者は，すべての既存のアプリケーションを評価し，テストして， Extended File Specifications の現在のサポート・レベルと，そのレベルが適切であるかどうかを確認する必要があります。サポートのレベルについては， 第 2.1 節 を参照してください。

文書化されていないインタフェースを使用してコーディングされているアプリケーションでは，深いディレクトリまたは拡張ファイル名のサポートが提供されないことがあります。 第 4.1.2 項 では，アプリケーションが拡張ファイル名をサポートできなくなるアプリケーション属性が示されています。 第 4.1.3 項 では，アプリケーションが ODS-5 ボリュームをサポートできなくなるアプリケーション属性が示されています。

これらのアプリケーションが Extended File Specifications をサポートするように変更するか，Extended File Specifications ではこれらを使用しないようにするか，どちらかにします。 Extended File Specifications の省略時のサポートを提供するようにアプリケーションを変更する方法については， 第 4.2.1 項 を参照してください。完全サポートを行うようにアプリケーションをアップグレードする方法については， 第 4.2.2 項 を参照してください。

## 4.1.1 省略時のサポート

変更されていない OpenVMS アプリケーションのほとんどは，省略時のサポートのカテゴリに分類されます。特に，このようなアプリケーションは，RMS 呼び出しを実行する際に，新しい API ではなく従来の API を使用します (新しい RMS API の詳細については， 付録 B.2 節 を参照してください)。高水準言語呼び出しを使用してファイル操作を実行するアプリケーションも，言語の実行時ライブラリが完全サポートに変更されていない限り，このカテゴリに分類されます。 1 ほとんどの場合は，これらのアプリケーションを変更しなくても，Extended File Specifications の環境で正常に動作します。

注意 #### 1 OpenVMS バージョン 7.2 の時点では，完全サポートにアップグレードされた言語の RTL はありません。

## 4.1.2 Extended File Names の非サポート

次のいずれかに該当するアプリケーションでは，拡張ファイル名がサポートされていないことがあります。

1. QIO インタフェースを使用してファイル名を指定している。開発者は，すべてのレイヤード・プロダクトおよびアプリケーションを調べ， RMS インタフェースと XQP インタフェースとの間での相互作用を評価する必要がある。拡張ファイル名の形式は，それぞれのインタフェースによって異なるため，アプリケーションが RMS と XQP の両方で同じファイル名を使用できるとは限らない。さらに， XQP では，更新されていないアプリケーションが拡張ファイル名を使用することができない。拡張ファイル名をサポートするために XQP に追加された変更の詳細については， 付録 B.3 節 を参照。有効なファイル名は，インタフェースによって異なることがある。

2. 区切り記号や有効な文字の位置の位置など，ファイル指定の構文に関する仮定がある。

3. ファイル指定の大文字と小文字の区別に仮定がある。RMS は，大文字と小文字が混在しているファイル指定や，小文字だけのファイル指定をすべて大文字に変換する処理を実行しないため，文字列のマッチング処理に影響を与える可能性がある。

4. 従来のディレクトリの深さに依存している (8 レベル未満)。

## 4.1.3 ODS-5 ボリュームの非サポート

ディレクトリの内容やファイル・ヘッダのデータのディスクでの構造など，ファイル・システムの内部知識を使用するアプリケーションは，ODS-5 ボリュームでは正常に動作しません。

# 4.2 Extended File Specifications サポートのためのアプリケーションのアップグレード

この後の項では Extended File Specifications のサポート・レベルをアップグレードするために必要な変更について説明します。アプリケーションを完全サポート・レベルにアップグレードするには，最初にそのアプリケーションが省略時のサポート・レベルを満たしていなければならないことに注意してください。

注意 RMS インタフェースや QIO インタフェースを使用せずに ディスク入出力を実行している場合，現在のアプリケーションの Extended File Specifications のサポート・レベルは，現在使用しているインタフェース (言語の実行時ライブラリなど) が完全サポートを提供しているかどうかによって決まります。

## 4.2.1 省略時サポートへのアップグレード

Extended File Specifications の省略時サポートを提供するようにアプリケーションをアップグレードするには， 4.2.1.1 および 4.2.1.2 でそれぞれ推奨されているように，少なくともそのアプリケーションが ODS_5 ボリューム構造と拡張ファイル命名機能の両方をサポートしている必要があります。省略時サポートについては， 第 2.1.2 項 で説明しています。

### 4.2.1.1 ODS-5 サポートの提供

新しい ODS-5 ボリューム構造をサポートしていないアプリケーションは，従来型のファイル指定だけを処理した場合でも，これらのボリューム上では正常に動作しません。

ODS-5 ボリューム上でアプリケーションが正常に動作しない場合には，そのアプリケーションについて次の点を確認してください。

- ODS-5 ボリュームにアクセスする際，このアプリケーションは物理入出力または論理入出力のどちらを使用してファイル・システムをバイパスしているのか? あるいは，BITMAP.SYS のようなメタデータ・ファイルに直接アクセスしているのか?

  このようなアプリケーションは，通常，ディスク・デフラグメンタのようなシステム・プログラムか，またはディスクに直接アクセスすることによってオーバヘッドを避けようとしているプログラムです。このようなアプリケーションは，ディスク上のファイルまたはディレクトリに関する特定の知識に依存していますが，この知識は， ODS-5 構造を導入したことによって，すでに変更されています。

  推奨事項: アプリケーションには，できる限り文書化されたインタフェースや構造を使用します。

- このアプリケーションは，ディレクトリ・ファイルに直接アクセスし，内容を解釈しているか?

  そのような場合，拡張ファイル名が含まれているディレクトリをこのアプリケーションが処理するときにエラーが発生する可能性があります。

  推奨事項: RMS2 インタフェースまたは QIO インタフェース，あるいは LIB$FIND_FILE のような LIBRTL ルーチンで提供されている検索関数を使用できるようにアプリケーションを変更します。

注意 #### 2 OpenVMS Alpha バージョン 7.2 では，RMS ディレクトリのキャッシング・サイズが大幅に増加したため，大規模なディレクトリでの $SEARCH システム・サービスの性能が飛躍的に向上しました。

### 4.2.1.2 拡張ファイル命名機能サポートの提供

アプリケーションが拡張名を正しく処理できない場合には，そのアプリケーションについて次の点を確認してください。

- このアプリケーションは，ファイル指定の構文を解析したり，その構文に関する知識を仮定して動作しようとしているか?

  たとえば，アプリケーションがディレクトリ指定の先頭を探すために大括弧 ([) を検索したり，ファイル指定の末尾を示すスペース文字を探している場合があります。

  推奨事項: アプリケーションは，ファイル指定が有効かどうかを判断するためには，実際の名前を使用して予備テストを実行するのではなく，RMS に依存するべきです。NAM ブロックのUse the NAM$L_NODEフィールド，NAM$L_DEV フィールド，NAM$L_DIR フィールド， NAM$L_TYPE フィールド，および NAM$L_VER フィールドを使用するか，または SYS$FILESCAN を使用して，この情報を取り出します。

- このアプリケーションは，文字列比較演算を実行することによって，2 つのファイルが同一であるかどうかを判断しようとしているか?

  ファイル名の大文字と小文字は区別されず，同じ文字を表す方法が複数あるため，2 つの文字列が同一のファイルを表している場合でも，文字列比較演算を実行するとエラーが発生する可能性があります。

  推奨事項: 新しいシステム・サービス $CVT_FILENAMES を使用してファイル名を比較する例については，サンプル・プログラム [SYSHLP.EXAMPLES]FILENAME_COMPARE.C を参照してください。

- このアプリケーションは，NAM$L_FNB フィールドにある NAM$V_DIR_LVLS ビットに依存して，現在のファイル指定にあるディレクトリ・レベルの数を判断しているか?

  このフィールドには 3 ビットしかないため，指定できるのは最大で 8 レベルまでです。アプリケーションがこれらのビットを使用することはほとんどなく，通常，これらのビットは NAM が相対ファイル指定として指定されるときに，RMSによって使用されます。

  推奨事項: OpenVMS バージョン 7.2 以降，NAM ブロックと NAML ブロックの両方で，新しくより大きいフィールド NAM$W_LONG_DIR_LEVELS を使用することができます。ディレクトリ・レベルの正しい数を知るには，このフィールドを使用します。

- このアプリケーションは，NAM$V_WILD_UFD および SFD1 - SFD7 ビットに依存して，ワイルドカード・ディレクトリがあるかどうかを判断しているか?

  このようなビットは 8 つしかないため，報告できるのは最初の 8 ディレクトリ・レベルのワイルドカードに限られます。アプリケーションがこれらのビットを使用することはほとんどなく，通常，これらのビットは NAM が相対ファイル指定として指定されるときに，RMSによって使用されます。

  推奨事項: OpenVMS バージョン 7.2 以降，NAM ブロックと NAML ブロックの両方で，新しくいフィールド NAML$W_FIRST_WILD_DIR を使用することができます。ワイルドカードが含まれている最も上のディレクトリ・レベルを知るには，このフィールドを使用します。

- このアプリケーションは， ファイル・システムに対し QIO インタフェースを使用して，QIO のファイル名を直接指定したり要求しているか?

  QIO インタフェースでは，拡張ファイル名を受け付けたり返すためには，アプリケーションが拡張ファイル名を認識できることを明示的に指定する必要があります。さらに，拡張ファイル名のファイル名形式は，RMS インタフェースと QIO インタフェースとでは異なっています。しかも，一部のファイル名は，2 バイトの Unicode (UCS-2) 文字で指定されていることがあります。アプリケーションは，2 バイトを占有する 1 文字を処理できるようになっていなければなりません。

  推奨事項: QIO インタフェースを使用しているほとんどのアプリケーションは，RMS を使用してファイル指定を解析したり，ファイルのファイル ID やディレクトリ ID を取り出している。そのようなアプリケーションは，これらの ID の値を使用して，QIO インタフェースからファイルにアクセスします。このアクセス方式は，拡張名にも使用できます。この方式に変更することによって，問題を解決できます。

  NAML ブロックの NAML$L_FILESYS_NAME フィールドから QIO システムが使用する名前を取得したり，新しいシステム・サービス (SYS$CVT_FILENAME) を使用して，RMS ファイル名と QIO ファイル名との間で相互に変換することもできます。この場合には， QIO サービスで拡張 FIB ブロックを使用して，アプリケーションが拡張名を認識していることを指定し，バッファを最大サイズまで拡大し，2 バイトの Unicode 文字を処理できるように準備する必要があります。

前へ | 次へ | 目次 | 索引