数値を検証し、返します。オプションで数の丸めや範囲チェックを行います。
Synopsis
$NUMBER(num,format,min,max)
$NUM(num,format,min,max)
パラメータ
num 検証され、Caché キャノニック形式に変換される数値。数値、文字列値、変数名、あるいは有効な Caché ObjectScript 式です。
format オプションnum に適用する処理オプションを指定します。これらの処理法は、主に小数点を含む数字を認識し、処理する方法を指示します。
min オプション — 許容範囲内の最小値。
max オプション — 許容範囲内の最大値。
概要
$NUMBER 関数は、指定した形式を使用して、num 数値の変換と妥当性検証を実行します。さまざまな句読点形式の数字を受け取り、Caché キャノニック形式の数字を返します。
パラメータ
format
利用可能な format コードは、以下のとおりです。これらの format コードは、どのような順序でも指定できます。数値以外の format は、引用符付きの文字列として指定されなければなりません。以下の format コードはいずれも省略可能です。format が無効の場合、$NUMBER は <SYNTAX> エラーを返します。
Min と Max
許容最小値や許容最大値、またはその両方を指定できます。あるいは、一切指定なしでもかまいません。指定する場合、num 値 (丸め実行後) は、min 値以上、max 値以下でなければなりません。min または max 値として NULL 文字列を指定した場合、これは 0 に相当します。値がこの基準に合わない場合、$NUMBER は NULL 文字列を返します。
したがって、以下の例で 1 つ目は、num (4.0) が max (4) と同等なので、有効です。2 つ目の例も、num (4.003) が max (4) と形式範囲内 (小数点以下 2 桁) で同等なので、有効です。しかし 3 つ目の例は、$NUMBERnum を形式範囲内で maxより大きい値である (4.01) まで丸めを行ってしまうため、有効ではありません。その結果、NULL 文字列を返します。
   WRITE !,$NUMBER(4.0,2,0,4)
   WRITE !,$NUMBER(4.003,2,0,4)
   WRITE !,$NUMBER(4.006,2,0,4)  
コンマをプレース・ホルダとして保持し、パラメータの削除を行うことができます。以下の例で、1 行目は max 値を設定しますが、format または min の値は設定されません。2 行目では、format 値を設定しませんが、ゼロと等しい NULL 文字列の min 値を設定します。したがって、1 行目は –7 を返し、2 行目は min の基準を満たさないので、NULL 文字列を返します。
   SET max=10
   WRITE !,$NUMBER(-7,,,max)
   WRITE !,$NUMBER(-7,,"",max)
末尾のコンマは指定できません。以下の結果は <SYNTAX> エラーになります。
   WRITE $NUMBER(mynum,,min,)
メモ
演算の順序
$NUMBER は以下の一連の変換と検証を実行します。数字の妥当性検証に失敗した場合、$NUMBER は長さゼロの文字列 ("") を返します。すべての検証に合格した場合、Caché 標準の数字に変換した結果を返します。
  1. $NUMBER は 10 進文字形式を使用して、いずれの文字がグループ・セパレータであるか、またすべてのグループ・セパレータ文字をストリッピングするか (数の位置に関係なく) を決定します。使用する規則は以下のとおりです。format で指定される 10 進文字がピリオド (.) の場合、グループ・セパレータはコンマ (,) またはアポストロフィ (')です。format で指定される 10 進文字がコンマ (,) の場合、グループ・セパレータはピリオド (.) またはアポストロフィ (')です。format に 10 進文字が指定されていない場合、グループ・セパレータは、現在のロケールの NumericGroupSeparator プロパティの値となります。
  2. $NUMBER は、数字が規則に合っているかどうか妥当性の検証を行います。適格な number は以下のいずれかを含みます。
  3. 整数表示文字が format 内に存在する場合、$NUMBER は整数をチェックします。整数は小数表示文字を含むことはできません。数値文字列 ("123.45") と数 (123.45) は、個別に解析されます。数値文字列は、小数表示文字の後に数字の桁がない、あるいは拡張指数や数の丸めにより小数桁が削除されていたとしても、整数テストには失敗します。数は、これらの検証テストに成功します。数が整数表示テストに失敗した場合、$NUMBER は NULL 文字列 ("") を返します。
  4. $NUMBER は number を Caché 標準数値に変換します。指数記数法を展開し、括弧を負の符号文字と置き換え、先頭あるいは末尾にあるゼロを切り離し、後にゼロでない数字桁が続かない小数表示文字を削除します。
  5. $NUMBER は (存在する場合は) 丸め係数を使用して、指定された桁に数字を丸めます。その後、後に数字が何も続かない場合は、先頭あるいは末尾にあるゼロと小数表示文字を切り離します。
  6. $NUMBER は、最小値が指定されている場合、その値に対し数字の妥当性を検証します。
  7. $NUMBER は、最大値が指定されている場合、その値に対し数字の妥当性を検証します。
  8. $NUMBER は結果の数字を返します。
関連項目