日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS
ドキュメント・ライブラリ

タイトルページ
目次
まえがき
リファレンス・セクション
    ≫ コマンド一覧
    ≫ レキシカル関数
付録 A:廃止されたコマンド
付録 B:DCL整数表現の範囲を超える数値の処理
索引
PDF    Vol.1   Vol.2
OpenVMS ホーム

HP OpenVMS
DCL ディクショナリ


目次 索引

F$EXTRACT

文字列から部分文字列を取り出します。

形式

F$EXTRACT (開始, 長さ, 文字列)

戻り値


開始引数と 長さ引数によって区切られた部分文字列。

引数



開始

取り出したい部分文字列の先頭のオフセットを指定します。 0 以上の整数式として指定します。

オフセットは文字の相対位置,または文字列の先頭の部分文字列です。オフセット位置は 0 から始まります。文字列は,常に左端の文字から始まります。

文字列の長さ以上のオフセットを指定した場合には,空文字列 ("") を戻します。

長さ

取り出す文字数を指定します。文字列サイズ以下でなければなりません。長さは,0 以上の整数式を指定します。

オフセットから文字列の最後までの文字数より大きな値の長さを指定すると,オフセットから文字列の最後までの文字を戻します。

文字列

編集する文字列を指定します。文字列には,文字列式を指定します。

#1
$ NAME = "PAOLO TESTA"
$ FIRST = F$EXTRACT(0,5,NAME)
$ SHOW SYMBOL FIRST
  FIRST = "PAOLO"
 

この例はコマンド・プロシージャの一部であり,シンボル NAME に割り当てられた文字列から最初の 5 文字を取り出すために, F$EXTRACT 関数を使用しています。オフセット引数と長さ引数は整数であり,文字列引数はシンボルです。レキシカル関数に対する引数として整数やシンボルを使用する場合には,これらを引用符 (" ") で囲む必要はありません。

#2
$ P1 = "MYFILE.DAT" 
$ FILENAME = F$EXTRACT(0,F$LOCATE(".",P1),P1) 
 

この例もコマンド・プロシージャの一部です。文字列からある 1 文字を見つけ,その位置で終わる部分文字列を取り出す方法を示しています。

F$LOCATE 関数は, P1 に対応する文字列中のピリオドのオフセット位置を示す数値を戻します ( ピリオドのオフセット位置は,ピリオドの前の部分文字列の長さと同じです )。

F$EXTRACT 関数の引数として F$LOCATE 関数を使用して,文字列から取り出す文字数を指定しています。パラメータ MYFILE.DAT を使用してプロシージャを呼び出し,これらのステートメントを実行すると,シンボル FILENAME に MYFILE という値が割り当てられます。

上記の例で F$LOCATE 関数は,ファイル指定にサブディレクトリ名を含むディレクトリ指定や,ノード名が含まれていないとして解釈しています。完全なファイル指定からファイル名を取り出すためには,F$PARSE 関数を使用します。

#3
$ IF F$EXTRACT(12,2,F$TIME()) .GES. "12" THEN GOTO AFTERNOON 
$ MORNING: 
$ WRITE SYS$OUTPUT "Good morning!" 
$ EXIT 
$ AFTERNOON: 
$ WRITE SYS$OUTPUT "Good afternoon!" 
$ EXIT 
 

この例では,現在の時刻が午前であるか午後であるかに応じて,異なるメッセージを表示するプロシージャを示しています。最初に,F$TIME 関数を使用して,現在の時刻が戻されます。 F$TIME 関数は文字列を戻し,この文字列が F$EXTRACT 関数に対する文字列引数として使用されます。 F$TIME 関数が引数として使用されている場合には,この関数は自動的に評価されるので,引用符を使用する必要はありません。

次に F$EXTRACT 関数は, F$TIME から戻された日付と時刻の示された文字列から時を取り出します。 F$TIME から渡される文字列には,常に先頭から12 文字のオフセットから時フィールドが含まれています。

F$EXTRACT 関数は,このオフセットから始まる 2 文字を文字列から取り出し,取り出した文字列値と文字列値 12 を比較します。比較結果が真の場合には,プロシージャは "Good afternoon!" を出力します。比較結果が偽の場合には,"Good morning!" を出力します。

また,時刻指定から時フィールドを取り出すために,F$CVTIME 関数を使用できます。 F$CVTIME 関数を使用する方が,上記の例に示されている方法に比べ簡単です。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.