DATA_CRITERIA
定義は、オブジェクト型をファイルまたはディレクトリに割り当てるのに使用する基準を定義します。
使用できるオブジェクト型の基準は、表 13–3 のとおりです。
表 13–3 DATA_CRITERIA の基準と説明
基準 |
説明 |
---|---|
ファイル名 | |
ファイル位置 | |
ファイル内容 | |
ファイル・モード |
ファイルは指定したアクセス権 (読み取り、書き込み、実行、ディレクトリ) を所有しなければなりません。MODE フィールドを使用します。 |
リンク名はオブジェクトがリンクするファイルに基づきます。 |
1 つのデータ型に 2 つ以上の基準を使用できます。ただし、NAME_PATTERN と PATH_PATTERN を同じデータ型で使用しないでください。
NAME_PATTERN フィールドを使用して、命名要件を指定します。フィールド値には、次のワイルドカードを指定できます。
? — 任意の 1 つの文字を示します。
[cc…] — 角括弧で囲まれた任意の文字 (c) を示します。
[c–c] — c から c までの範囲の任意の文字を示します。
次のデータ型定義は、ファイル名に基づいたデータ型を作成します。ファイル名は必ず QS で始まり .doc で終わるようにしてください。
DATA_ATTRIBUTES QS_Doc { DESCRIPTION This file contains a document for the QS \ project. ICON Word_Doc ACTIONS Open } DATA_CRITERIA QS_Doc_Criteria { NAME_PATTERN QS*.doc DATA_ATTRIBUTES_NAME QS_Doc }
次の定義は、Demo_n (n は 0 から 9) という名前のディレクトリのデータ型を作成します。
DATA_ATTRIBUTES Demo_directory { DESCRIPTION This is a directory. Double-click to open it. ICON Demo ACTIONS OpenInPlace,OpenNewView } DATA_CRITERIA Demo_directory_criteria { NAME_PATTERN Demo_[0-9] MODE d DATA_ATTRIBUTES_NAME Demo_directory }
PATH_PATTERN フィールドを使用してパスを指定します。NAME_PATTERN と同じワイルドカードを使用できます。
たとえば、次のデータ型はパスに基づいた基準を使用します。
DATA_ATTRIBUTES Project_Graphics { DESCRIPTION Graphics file for the QS project. Double-click the \ icon to see the graphic. ICON QSgraphics } DATA_CRITERIA Project_Graphics_Criteria { DATA_ATTRIBUTES_NAME Project_Graphics PATH_PATTERN */projects/QS/graphics/* }
ファイル名と位置の両方に基づいたデータ型を作成するには、PATH_PATTERN の値に名前を取り込みます。NAME_PATTERN と PATH_PATTERN の両方を同じ基準定義で使用できません。
次に定義する QS_Source_Files データ型は、*/projects/QS のサブディレクトリにある appn.c (n は 1 から 9) という名前のすべてのファイルに適用されます。
DATA_ATTRIBUTES QS_Source_Files { … } DATA_CRITERIA QS_Source_Files_Criteria { PATH_PATTERN */projects/QS/*/app[1-9].c DATA_ATTRIBUTES_NAME QS_Source_Files }
次のデータ型は、/doc/project1 ディレクトリの chnn.xxx (n は 0 から 9、xxx は任意の 3 文字のファイル名の拡張子) という名前のすべてのファイルに適用されます。
DATA_ATTRIBUTES ChapterFiles { DESCRIPTION Chapter file for the project document. ICON chapter ACTIONS Edit,Print } DATA_CRITERIA Chapter_Criteria { PATH_PATTERN /doc/project1/ch[0-9][0-9].??? DATA_ATTRIBUTES_NAME ChapterFiles }
MODE フィールドを使用して、必須アクセス権を指定します。
通常、モード基準は名前、位置、内容に基づいたデータ型作成の組み合わせで使用します。これらの基準によって、データ型をファイルまたはディレクトリに制限したり、必須の読み取り権、書き込み権、実行権を指定したりできます。
MODE フィールドには、論理演算子 (表 13–4) と文字 (表 13–5) を指定できます。
表 13–4 MODE フィールドの論理演算子と説明
演算子 |
説明 |
---|---|
! | |
& | |
| |
表 13–5 MODE フィールドの文字と説明
文字 |
説明 |
---|---|
ファイルだけに適用されるデータ型 |
|
ディレクトリだけに適用されるデータ型 |
|
r |
任意のユーザが読み取れるファイル |
任意のユーザが書き込めるファイル |
|
任意のユーザが実行できるファイル |
|
リンクであるファイル |
特定モードのデフォルトは、モードには関係ありません。
次のモード・フィールドは、データ型を制限します。
f&!w — 読み専用ファイル
!w — 読み専用ファイルおよび読み専用ディレクトリ
f&x — 実行可能ファイル
f&r&x — 書き込み可能および実行可能ファイル
x|!w — 実行可能ファイルまたは読み専用ファイル
次のデータ型定義は、読み専用で実行可能でないファイルのデータ型を作成します。ファイル名は *.doc という命名規則に従っています。View アクションはデータ型に対して定義されているものとします。
DATA_ATTRIBUTES ReadOnlyDocument { ICON read_only DESCRIPTION This document is not writable. Double- \ clicking runs your editor with a \ read-only copy of the file. ACTIONS View } DATA_CRITERIA ReadOnlyDocument_Criteria { NAME_PATTERN *.doc MODE !d&!x&!w DATA_ATTRIBUTES_NAME ReadOnlyDocument }
CONTENT フィールドを使用して、ファイル内容に基づいたデータ型を作成します。内容に基づいたデータ型の作成には、名前または位置に基づいたデータ型を組み合わせて使用できます。
データ型作成は、ファイルの文字または数字内容に基づいて行われます。ファイルの最初のバイトの番号は 0 です。
ファイルの数字内容には、次の構文を使用します。
CONTENT starting_byte byte number CONTENT starting_byte short number CONTENT starting_byte long number
ディレクトリの内容には、次の構文を使用します。
CONTENT 0 filename "file_name"
8 進数 (先頭が o) と 16 進数 (先頭が oX) には、標準 C 表記を使用します。
内容に基づいたデータ型を作成すると、システム性能が遅くなります。できるだけ、名前または位置に基づいたデータ型を使用してください。
たとえば、次のデータ型 Writable_Wingz は、ファイルの最初に WNGZ 文字列が入っていて、書き込み権を持つすべてのファイルに適用されます。
DATA_ATTRIBUTES Writable_Wingz { … } DATA_CRITERIA Writable_Wingz_Criteria { CONTENT 0 string WNGZ MODE w&!d DATA_ATTRIBUTES_NAME Writable_Wingz }
いくつかの独自の基準を持つデータ型を作成できます。つまり、基準のいずれか (または両方) に一致した場合、ファイルはデータ型に割り当てられます。
たとえば、次の定義は Mif データ型を作成します。データ型は名前または内容に基づき作成します。
DATA_ATTRIBUTES Mif { ICON Frame ACTION_LIST Open,Print } DATA_CRITERIA Mif_Name_Criteria { DATA_ATTRIBUTES_NAME Mif NAME_PATTERN *.mif } DATA_CRITERIA Mif_Content_Criteria { DATA_ATTRIBUTES_NAME Mif CONTENT 1 string MIFFile }