指定したターゲット・ファイルの完全なファイル仕様 (pathname と filename) を返します。
Synopsis
$ZSEARCH(target)
$ZSE(target)
パラメータ
target ファイル名、パス名、または NULL 文字列のいずれか。1 つ、または複数の *、や ? ワイルドカード文字が含まれることもあります。
概要
$ZSEARCH は指定したターゲット・ファイルの完全なファイル仕様 (パス名とファイル名) を返します。ファイル名にはワイルドカードを含む場合もあるため、$ZSEARCH はワイルドカードを満たす一連の完全修飾パス名を返します。
target パラメータでパス名が指定されていない場合は、$ZSEARCH によって現在作業中のディレクトリ内が検索されます。$ZSEARCH は、それに合う規制を以下の順番で適用します。
  1. $ZSEARCH は、target をスキャンして、パーセント文字 (%) で囲まれているか否かを確認します。このようなテキストを見つけた場合は、この文字列を環境変数として処理します。$ZSEARCH は、文字列の名前変換を実行します。
  2. $ZSEARCH は、手順 1 で得られた文字列をスキャンして、最後のスラッシュ文字を見つけます。最後のスラッシュが見つかった場合は、検索されるパスまたはディレクトリとして、最後のスラッシュの前の文字までの文字列を使用します。最後のスラッシュが見つからない場合は、現在作業しているディレクトリを検索します。 これは、現在のネームスペースから決定します。
  3. 手順 2 で $ZSEARCH が最後のスラッシュを見つけた場合、最後のスラッシュの後に続く target 文字列の一部を、ファイル名検索パターンとして使用します。手順 2 で最後のスラッシュが見つからなかった場合は、手順 1 で得た文字列全体を、ファイル名検索パターンとして使用します。
ファイル名検索パターンは、正当なファイル名文字列あるいはファイル名のワイルドカード式です。検索パターンに一致する最初のファイル名は、$ZSEARCH 関数値として返されます。これは、最初に一致したファイルがプラットフォームに依存します (下記のメモ・セクションで説明しています)。
次回の $ZSEARCH の呼び出しで target として NULL 文字列を指定すると、$ZSEARCH は前回の target で続行され、検索パターンに一致する次のファイル名を返します。検索パターンに一致するファイルがない場合、$ZSEARCH は NULL 文字列を返します。
ワイルドカード
$ZSEARCH では、引用符付きの target 文字列内で以下のワイルドカード式を使用できます。
ワイルドカード 一致
* 0 文字以上の文字列と一致
? 任意の文字に一致。VMS システムでは、このワイルドカードは % 文字です。
上記のワイルドカードは、ホスト・プラットフォームの使用規定に従います。
パラメータ
target
target パラメータに使用できる値のタイプは、以下の通りです。
target のタイプ 概要
path name リストしたいファイル・グループ、またはファイルへのパスを指定する文字列に評価する式。
file name ファイル名。既定の位置は、現在のデータセットです。
NULL 文字列 ("") 前の $ZSEARCH の後、次に一致するファイル名を返します。
以下の Windows の例は、SAMPLES ネームスペースの中でファイル拡張子が “.DAT” で終了するすべてのファイルを検索します。
   ZNSPACE "SAMPLES"
   SET file=$ZSEARCH("*.DAT")
   WHILE file'="" {
       WRITE !,file
       SET file=$ZSEARCH("")
   }
   WRITE !,"That is all the matching files"
   QUIT
これは、以下を返します。
c:\cachesys\mgr\samples\CACHE.DAT
以下の Windows の例は、SAMPLES ネームスペースの中で文字 “c” で開始するすべてのファイルを検索します。
   ZNSPACE "SAMPLES"
   SET file=$ZSEARCH("c*")
   WHILE file'="" {
       WRITE !,file
       SET file=$ZSEARCH("")
   }
   WRITE !,"That is all the matching files"
   QUIT
これは、以下を返します。
c:\cachesys\mgr\samples\CACHE.DAT
c:\cachesys\mgr\samples\cache.lck
メモ
ディレクトリのロック
適切な結果を返すため、$ZSEARCH がすべてのファイルをディレクトリに返すまで (つまり、$ZSEARCH が NULL 文字列を返すまで、または新規の $ZSEARCH が開始するまで) プロセスはそのディレクトリを開いたままにしておきます。これにより、ディレクトリの削除などの他のオペレーションを阻止します。$ZSEARCH を開始するとき、$ZSEARCH("") が NULL 文字列を返すまで繰り返します。また、すべてのファイルを検索したい場合は、$ZSEARCH(-1) などの存在が不確かなファイル名で $ZSEARCH を実行します。
Windows のサポート
Windowsでは、target パラメータは、ワイルドカード文字 (* と ?) を含むファイル仕様です。Windows システムでは、* ワイルドカードはドットと一致させるために使用されますが、? ワイルドカードは使用できません。名前要素内では、? ワイルドカードはゼロ文字と一致することができません。 しかし名前要素の最後では、? ワイルドカードがゼロ文字に一致するときは無視されます。
特にディレクトリを指定しなければ、現在作業中のディレクトリを使用します。$ZSEARCH はディレクトリで最初に一致したエントリを、アルファベット順に返します。これは完全ファイル仕様、または完全修飾パス名を返します。
検索実行時に Windows 2000 と NT では、ファイル名拡張子の接尾語の最初の 3 文字だけがチェックされます。このため、$ZSEARCH *.txt では、a.txtfred.txt だけではなく、a.txt2fred.txta なども返されることになります。
UNIX サポート
UNIX では、target パラメータは、ワイルドカード文字 (* と ?) を含む標準 UNIX ファイル仕様です。特にディレクトリを指定しなければ、現在作業中のディレクトリを使用します。
UNIX では、$ZSEARCH は、ディレクトリで最初にアクティブなエントリを返します。UNIX は、ディレクトリのエントリをアルファベット順に保存しないので、返り値はアルファベット順ではありません。Windows のプラットフォームとは異なり、$ZSEARCH 関数は現在作業中のディレクトリが使用されない限り、完全ファイル仕様、または完全修飾パス名を返しません。
VMS サポート
VMS では、target パラメータは、ワイルドカード文字 (* と %) を含む標準 VMS ファイル仕様です。特にディレクトリを指定しなければ、現在作業中のディレクトリを使用します。VMS には、環境変数の置換や target のスラッシュ文字のスキャン機能はありません。
VMS では、$ZSEARCH は、ディレクトリで最初にアクティブなエントリを返します。$ZSEARCH は、デバイスとディレクトリを含む、完全ファイル仕様を返します。