ファイル名をフルパス名に展開し、フルパス名またはそのフィールドの1つ (ディレクトリ、名前、拡張子) を返します。
$ZPARSE関数の書式は次のとおりです。
$ZPARSE(expr1[,expr2[,expr3[,expr4[,expr5]]]])
最初の式はファイル名を指定します; ファイル名が有効でない場合、$ZPARSE() は空文字列を返します ; ファイル名にワイルドカード( *および/または?)が含まれている場合、$ZPARSE() はワイルドカードを含むファイル名を返します。
オプションの2番目の式は、$ZPARSE() が返す パス名のフィールドを指定します; この引数がない、またはnullの場合、$ZPARSE() は、 ディレクトリ、ファイル、拡張子に欠けているフィールドの代わりにデフォルト値を使用して構築された完全 パス名を返します。
オプションの第3および第4の式は、もしあればオリジナルのファイル名に存在するフィールド(ディレクトリ、名前、拡張子)が存在しない場合に、ファイル名拡張時に使用するデフォルト値を指定します。expr1 で指定されたオリジナルのファイル名に存在しないフィールドについては、$ZPARSE() はexpr3の対応するフィールドを置換しようと試みます; そのフィールドがexpr3に存在しない場合、$ZPARSE() はexpr4から対応するフィールドを使用しようとします。
ファイル 拡張子がexpr1、expr3、およびexpr4の3つすべてにない場合、$ZPARSE() は対応するフィールドのnull 文字列を返します。expr1、expr3、およびexpr4の3つすべてにファイルまたはディレクトリがない場合、$ZPARSE() は現在の作業ディレクトリの情報を置き換えます。
オプションの第5の式は、$ZPARSE() が実行する解析のモードまたはタイプを指定します。
$ZPARSE() は、 ファイル名が構文的に正しいことを検証するため、ファイル名の特定のフィールドを調べるため、およびデフォルトの階層に基づいて部分的な指定で不足している部分を埋め込むためのツールを提供します。ファイルが存在するかどうかを判断する方法については、 “$ZSEARCH()” を参照してください。
最初の$ZPARSE() の引数はオプションです。他の引数を使用しない場合は、1つの引数で十分です。ただし、選択された引数を使用する場合、$ZPARSE() では、指定されていない引数に空文字列( "" )を入力する必要があります。
2番目の引数に使用できるキーワードは次のとおりです:
"DIRECTORY" :ディレクトリ名
"NAME":ファイル名(ファイル拡張子を除く)
"TYPE":ファイルタイプの拡張子
キーワードは大文字または小文字のどちらでも入力できます。これらの文字列と間接指定に評価される変数は、引数2でも受け入れられます。キーワード自体が文字列リテラルとして表示される場合は、引用符( "" )で囲む必要があります。
引数1、3、4を構築するには、次のガイドラインに従わなければなりません:
ディレクトリ指定はスラッシュで終わらなければなりません; ディレクトリ指定の最後のスラッシュの後のものはすべて、名前指定の一部であるとみなされます。
拡張子の付いたファイル名には、ピリオド( . )の左に少なくとも1文字を含める必要があります。したがって、 "/user/.login" は ".login"というファイルを参照し、 "/usr/taxes.c"は "taxes"という拡張子 "c"のファイルを参照します。ファイル名に複数のピリオドが含まれている場合は、右端のピリオドの右にあるすべての文字が拡張子に含まれます。
$ZPARSE() の第5引数 のキーワードは次のとおりです:
NULL( "" ):完全なファイル指定またはデバイスを返します。
"SYNTAX_ONLY":ディレクトリまたはデバイスの存在のチェックを無効にします。
例:
GTM>write $zparse("test","","/usr/work/","dust.lis") /usr/work/test.lis GTM>
これは、$ZPARSE() を使用して、第3引数と第4引数を使用してデフォルト値を示します。結果は、3番目の式のディレクトリ・フィールド、1番目の式の名前、4番目の式のタイプを取得します。
例:
GTM>r!,"file :",f w ?20,$zparse(f,"directory") file: test.list /usr/work/ GTM>
これは、$ZPARSE() を使用してプロンプト・ファイルに入力として入力されたファイル名のディレクトリを表示します:この場合は現在の作業ディレクトリです。
例:
$ cd /usr/work/me $ $gtm GTM>write $zparse("test","","x.list","y.c")/usr/work/me/test.lis GTM>write $zparse("test","","/usr/work/","/dev/y.c")/usr/work/test.c GTM>write $zparse("test","","/usr/work","/dev/y.c")/usr/test.c GTM>
この例は、$ZPARSE() への第3引数と第4引数の使用を示しています。最初のステートメントでは、最初の引数にディレクトリまたは拡張フィールドがないため、$ZPARSE() は3番目の引数の拡張フィールドを置き換えます。第3引数と第4引数のどちらもディレクトリを指定していないため、第4引数には第3引数に存在しないフィールドが含まれていないため、第4引数は使用されません。
2番目のステートメントでは、$ZPARSE() の最初の引数には、ディレクトリと拡張子の両方が再度指定されていません。この例では、$ZPARSE() は第3引数で指定されたディレクトリを使用し、第1引数と第3引数のどちらもファイル拡張子を指定しないため、$ZPARSE() は第4引数のファイル拡張子を使用します。
3番目の文では、 "/usr/work" はバックスラッシュ(/)で終わらないため、$ZPARSE() は部分文字列 "work"をファイル名として解釈します。次に、$ZPARSE() は、最初の引数に欠落しているディレクトリを "/usr/" に置き換え、1番目と3番目の引数の両方に欠けている拡張子の4番目の引数を ".c"に置き換えます。
例:
$ cd /usr/work/me $ /usr/lib/fis-gtm/V5.4-002B_x86/gtm GTM>For i="DIRECTORY","NAME","TYPE","" Write $ZPARSE("test.m",i),! /usr/work/me/ test .m /usr/work/me/test.m GTM>
この例は、第2引数の可能な値ごとに生成された出力を示しています。