日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
文字列に含まれる特定の部分を探し,最初の文字のオフセットを整数値で戻します。オフセットとは,文字列の先頭を基準にした文字 ( 1 文字または部分文字列 ) の位置です。オフセットとは,文字列の開始位置を基準にして,文字,または部分文字列までの位置を示します。文字列の 1 文字目は,常に文字列の先頭からオフセット 0 の位置にあります。部分文字列が見つからないと,F$LOCATE 関数は,検索文字列の長さ ( 文字列の最後の文字のオフセットに 1 を加算した値 ) を戻します。
F$LOCATE (部分文字列,文字列)
部分文字列引数がない場合には,F$LOCATE 関数は,文字列の最後の文字のオフセットより, 1 だけ大きなオフセットを戻します ( これは文字列の長さに相当します )。
部分文字列
文字列 引数に指定した文字列から検索したい文字列を指定します。文字列
F$LOCATE が編集する文字列を指定します。
#1 |
---|
$ FILE_SPEC = "MYFILE.DAT;1" $ NAME_LENGTH = F$LOCATE(".",FILE_SPEC) |
この例では,F$LOCATE 関数は,文字列の先頭を基準にした,文字列中のピリオド (.) の位置を戻します。ピリオドはオフセット 6 の位置に存在するため, 6 という値がシンボル NAME_LENGTH に割り当てられます。また,NAME_LENGTH は,MYFILE.DAT というファイル指定のファイル名の部分の長さ,つまり 6 に等しくなります。
部分文字列引数であるピリオドは,文字列リテラルとして指定されているので,引用符 (" ") で囲まれています。しかし,FILE_SPEC 引数はシンボルであるため,引用符で囲む必要はありません。このシンボルは,関数を処理しているときに,自動的に現在の値に置き換えられます。
#2 |
---|
$ INQUIRE TIME "Enter time" $ IF F$LOCATE(":",TIME) .EQ. F$LENGTH(TIME) THEN - GOTO NO_COLON |
これは,コマンド・プロシージャの一部です。この中では,F$LOCATE 関数の結果と F$LENGTH 関数の結果を比較し,結果が等しいかどうかを調べています。1 文字または部分文字列が,ある文字列に含まれているかどうかを判断するときに,この方法をよく使用します。
この例では,INQUIRE コマンドが,時刻の値の入力を要求するプロンプトを表示し,利用者が入力した時刻をシンボル TIME に割り当てます。 IF コマンドは,プロンプトに対する応答として入力された文字列に,コロンが含まれているかどうかを調べます。 F$LOCATE 関数から戻された値が,F$LENGTH 関数から戻された値と等しい場合には,コロンは文字列の中に含まれていません。 F$LOCATE 関数と F$LENGTH 関数はどちらも整数値を戻すため, (.EQS.演算子ではなく ) .EQ. 演算子が使用されています。
部分文字列引数であるコロンは文字列リテラルであるため,引用符で囲まれています。しかし,シンボル TIME は,引用符で囲む必要はありません。これは,文字列式として自動的に評価されるためです。
目次 | 索引 |
|