IBM FileNet P8, バージョン 5.2.1            

データ型変換関数

このセクションでは、データ型間で式を変換する関数について簡単に説明します。

表 1. データ型間で変換する関数の表
関数 動作
convert サポートされるデータ型間で式を変換します。
numbertostring 指定されたマスクを使用して、整数式または浮動小数点数式から文字列式に変換します。
stringtotime 指定されたマスクを使用して、文字列式を時間式に変換します。
timetostring 指定されたマスクを使用して、時間式を文字列式に変換します。
is_valid 指定された式が、指定された単純データ型に変換できる有効な値かどうかを判別します。

convert

この関数は、サポートされるデータ型間で式を変換します。使用する構文は次のとおりです。
convert (source_expr, type_name)
ここで
表 2. convert 関数のパラメーターおよび説明
パラメーター 説明
source_expr サポートされるデータ型の式です。 この式は、type_name で指定されたデータ型に変換されます。
type_name

source_expr の変換先のデータ型です。 有効な項目は、float、float[ ]、integer、integer[ ]、string、string[]、Boolean、Boolean[ ]、time、および time[ ] です。

type_name の後に大括弧 ([ ]) が付いている場合は、source_expr は配列でもなければならないことに注意してください。配列内の各要素は、単純データ型に適用される規則にしたがって type_name に変換されます。

convert 関数の結果は、source_exp と type_name のデータ型によって異なります。

注: データ型の組み合わせによっては、convert 関数で構文エラーが発生することに注意してください。例えば、時間データ型をブール・データ型に変換することは非論理的なので、構文エラーが発生します。必要に応じて、convert 関数で式を使用する前に is_valid 関数を使用して式のタイプを確認してください。

ブール型からの変換

source_expr がブール型の場合、convert 関数の結果は次のようになります。

表 3. データ型がブール型である場合の convert 関数の結果
ブール型からの変換先... 結果
ブール型 変化しません。
float ブール式が true の場合、結果は 1 です。ブール式が false の場合、結果は 0 です。
整数型 ブール式が true の場合、結果は 1 です。ブール式が false の場合、結果は 0 です。
文字列型 ブール式が true の場合、結果は「true」です。ブール式が false の場合、結果は「false」です。
時間型 構文エラーが発生します。

浮動小数点型からの変換

source_expr が浮動小数点型の場合、convert 関数の結果は次のようになります。

表 4. データ型が浮動小数点型である場合の convert 関数の結果
浮動小数点型からの変換先 結果
ブール型

source_expr = 0 の場合、結果は false です。source_expr = 1 の場合、結果は true です。

source_expr が <> 0 でも 1 でもない場合は、構文エラーが発生します。

float 変化しません。
整数型 source_expr の整数部を変換します (すなわち、すべての数値の小数点以下を切り捨てます)。結果が整数の範囲に含まれないと、エラーが発生します。
文字列型 浮動小数点数を表す数字の文字列を返します。
時間型

source_expr の整数部を秒数として使用して、1/1/1970 00:00:00 UTC (協定世界時) に追加します。新しい時間が返されます。

UTC (協定世界時) 以前は GMT (グリニッジ標準時) と呼ばれていました。UTC は世界標準の参照タイム・ゾーンです。

例えば、convert (5.3, time) を指定すると、1/1/1970 00:00:05 が返されます。

整数型からの変換

source_expr が整数型の場合、convert 関数の結果は次のようになります。
表 5. データ型が整数型である場合の convert 関数の結果
整数型からの変換先 結果
ブール型

source_expr = 0 の場合、結果は false です。source_expr = 1 の場合、結果は true です。

source_expr が <> 0 でも 1 でもない場合は、構文エラーが発生します。

float 同等の浮動小数点数値が返されます。
整数型 変化しません。
文字列型 整数値を表す数字の文字列が返されます。
時間型

source_expr を秒数として使用して、1/1/1970 00:00:00 UTC (協定世界時) に追加します。新しい時間が返されます。

例えば、convert (5, time) を指定すると、1/1/1970 00:00:05 が返されます。

文字列型からの変換

source_expr が文字列型の場合、convert 関数の結果は次のようになります。

表 6. データ型が文字列型である場合の convert 関数の結果
文字列型からの変換先 結果
ブール型 source_expr = "true" または source_expr = "false" である場合以外は、構文エラーが発生します。(大文字と小文字の組み合わせは有効です)。
float source_expr が浮動小数点数値の正規表現である場合以外は、構文エラーが発生します。
整数型 source_expr が整数値の正規表現である場合以外は、構文エラーが発生します。
文字列型 変化しません。
時間型

source_expr が時間値の有効な表現であり、ワークフロー・システムの日付時間マスクで指定されるフォーマットを使用している場合以外は、構文エラーが発生します。

時間型からの変換

source_expr が時間型の場合、convert 関数の結果は次のようになります。

表 7. データ型が時間型である場合の convert 関数の結果
時間型からの変換先 結果
ブール型 構文エラーが発生します。
float

現在のシステム時間と 1/1/1970 00:00:00 UTC (協定世界時) との差を秒数で返します。

例えば、SysTime = 1/1/1970 00:00:28 UTC の場合、convert (SysTime, float) を指定すると 28 が返されます。

現在のシステム時間が UTC 以外のタイム・ゾーンに設定されている場合、convert 関数は必要な調整を加えます。例えば、太平洋標準時 (PST) と UTC の時差は 8 時間です。SysTime = 1/1/1970 00:00:28 PST で、ローカルのタイム・ゾーンが PST の場合に convert(SysTime, float) を指定すると 28828.0 が返されます。

8(hours) * 60(minutes) *60(seconds) + 28(seconds)

整数型

現在のシステム時間と 1/1/1970 00:00:00 UTC (協定世界時) との差を秒数で返します。

例えば、SysTime = 1/1/1970 00:00:28 UTC の場合、convert (SysTime, integer) を指定すると 28 が返されます。

現在のシステム時間が UTC 以外のタイム・ゾーンに設定されている場合、convert 関数は必要な調整を加えます。例えば、PST と UTC の時差は 8 時間です。SysTime = 1/1/1970 00:00:28 PST で、ローカルのタイム・ゾーンが太平洋標準時 (PST) の場合に convert(SysTime, integer) を指定すると 28828 が返されます。

8(hours) * 60(minutes) *60(seconds) + 28(seconds)

文字列型

source_expr の文字列表現が返されます。なお、この文字列は、ワークフロー・システムの日付時間マスクで指定されたフォーマットを使用します。

時間型 変化はありません。

numbertostring

この関数は、指定されたフォーマットを使用して、浮動小数点数式または整数式を文字列式に変換します。この関数は、数字を特定のフォーマット (例えば、$1,000,000) で表示する場合に使用します。また、numbertostring 関数は数値の四捨五入に使用することもできます。

使用する構文は次のとおりです。
numbertostring (num_exp{, num_mask}opt)
ここで
パラメーター 説明
num_exp 浮動小数点型または整数型の式です。
num_mask

numbertostring 関数の出力フォーマットを指定する数値マスクです。

数値マスクが入力されないと、numbertostring 関数は convert 関数と同等の動作を行います。

数値マスク

数値マスクは、numbertostring 関数の出力のフォーマットに使用するテンプレートです。数値マスクは、次のコンポーネントの有効な組み合わせから成る文字列式です。

コンポーネント 意味
+ (プラス符号)

マスクの最初または最後のコンポーネントの場合は、数値の符号が表示されます。

最初または最後以外の位置にある場合、プラス符号は、マスクで指定されるとおりに出力文字列内の位置に挿入されます。 次に例を示します。

numbertostring (12345, "###+##")

123+45 が出力されます。

- (マイナス符号)

マスクの最初または最後のコンポーネントで、数値が負である場合はマイナス符号が表示され、数値が正である場合はスペースが表示されます。

最初または最後以外の位置にある場合、マイナス符号は、マスクで指定されるとおりに出力文字列内の位置に挿入されます。 次に例を示します。

numbertostring (123456789, "###-##-####")

123-45-6789 が出力されます。

# (番号記号) 有効である数字が表示されます。マスクに含まれる # の数が有効数字より多い場合は、まず右端から有効数字と同じ数の # が受け入れられ、残りの # には空白が設定されます。
0 (ゼロ) 有効かどうかに関係なく、数字が表示されます。先頭および末尾の両方に 0 (ゼロ) が表示されることがあります。
. (小数点) 小数点を挿入する位置を指定します。指定されない場合、小数点はマスクの右端に挿入されると見なされます。数値はマスクに収まるように四捨五入されます。マスクに入れることができる小数点の数は 1 つのみです。

数値マスクのサンプル

次に、numbertostring 関数が数値 0、+29、-3344、および 77.88369 を変換した場合の出力結果を示します。出力は、指定される数値マスクにしたがってフォーマットされます。

注: マスクが小さすぎて数値が入らないと、エラーが発生します。小数点の左側に # や 0 (ゼロ) がほとんどない場合は、マスクが小さすぎます。例えば、マスク ## は数値 300 には不適切です。
マスク 0 +29 -3344 77.88369
0000 0000 0029 3344 0078
####   29 3344 78
$#,### $ $29 $3,344 $78
+#### + +29 -3344 +78
-####   29 -3344 78
####+ + 29+ 3344- 78+
####- 29 3344- 78
##.## . 29. ランタイム・エラー 77.88

数値の四捨五入

数値を四捨五入するには、numbertostring 関数と適切な数値マスクを使用します。各数値は、マスクの最後の位に収まるように四捨五入されます。次の例では、数値は小数点第 3 位に四捨五入されます。この例で、Number1 は浮動小数点型の式の名前です。
numbertostring (Number1, "#,###.###")
Number1 = 3344.7788 の場合、出力結果は次のようになります。
3,344.779

is_valid

この関数は、指定された式が、指定された単純データ型に変換できる有効な値かどうかを判別します。式が有効な場合はブール値 true が返されます。それ以外の場合は、false が返されます。convert 関数で式を使用する前に is_valid 関数によって式のタイプを確認すると役立ちます。使用する構文は次のとおりです。
is_valid (expr, type)
ここで
表 8. is_valid 関数のパラメーターおよび説明
パラメーター 説明
expr 任意の式です。
type 単純データ型です (Boolean、float、integer、string、time)。
次に、文字列式を使用する 2 つの例を示します。1 つ目の例では true が返され、2 つ目の例では false が返されます。1 つ目の例では、str = "true" です。
is_valid (str, Boolean)
is_valid ("1.2.3", float)
次の例は、指定された浮動小数点数式が整数型への変換に有効かどうかを確認します。この例では、浮動小数点数値は有効な整数値の範囲外であるので、false が返されます。
is_valid (1e20, integer)


最終更新日: 2015 年 10 月
bpfe005.htm

© Copyright IBM Corp. 2015.