数値を検証し、ブーリアン値を返します。オプションで、範囲のチェックも行います。
Synopsis
$ISVALIDNUM(num,scale,min,max)
パラメータ
num 検証される数値。数値、文字列値、変数名、あるいは有効な Caché ObjectScript 式です。
scale オプションminmax の範囲を比較する場合に有効な小数点以下の桁数
min オプション — 許容範囲内の最小値
max オプション — 許容範囲内の最大値
概要
$ISVALIDNUM 関数は num を検証し、ブーリアン値を返します。オプションで、min 値と max 値を使用して範囲チェックも行います。scale パラメータは、範囲チェック時に比較する小数桁数を指定するために使用されます。ブーリアン値 1 は、num が適切に構成された数であることを意味し、指定された場合は範囲チェックを渡します。
パラメータ
num
検証される数は整数、10 進数、または指数 (文字 “E” または “e”) のいずれかです。文字列、式、または数に解釈される変数のいずれかになることもあります。符号付きや符号なし、先頭、または末尾に 0 がついていることもあります。検証は、以下の場合に失敗 ($ISVALIDNUM が 0 を返す) します。
scale パラメータ値により、num 値の端数を丸めた値、または切り捨てた値の評価が行われます。num 変数の実際の値は、$ISVALIDNUM 処理によって変更されません。
scale
scale パラメータは、範囲チェック時に比較する小数桁数を指定するために使用されます。scale に対する整数値を指定します。scale 値の小数桁数は無視されます。他のパラメータで指定された小数桁数よりも大きい scale 値を指定することができます。–1 の scale 値を指定することもできます。それ以外の負の scale 値はすべて、<FUNCTION> エラーが返されます。
非負数の scale 値を指定すると、minmax の範囲チェック実行前に、num がその小数桁数に丸められます。scale値に 0 を指定すると、範囲チェック実行前に num は整数値 (3.9 = 4) に丸められます。scale値に –1 を使用すると、範囲チェック実行前に num は整数値 (3.9 = 3) に切り捨てられます。指定されたすべての桁を丸めたり、切り捨てることなく比較するには、scale パラメータを省略します。非数値の scale 値や NULL 文字列は、scale 値 0 に相当します。
丸めは、– 1 を除くすべての scale 値に対して実行されます。5 以上の値は常に切り上げられます。
scale パラメータを省略する場合、コンマはプレースホルダとして保持しておきます。
Min と Max
許容最小値や許容最大値、またはその両方を指定できます。 あるいは、一切指定なしでも構いません。指定された場合、(scale 演算後の) num の値は min の値以上で、max の値以下でなければなりません。min または max 値として NULL 文字列を指定した場合、これは 0 に相当します。値がこの条件に合わない場合、$ISVALIDNUM は 0 を返します。
パラメータを省略する場合、コンマはプレースホルダとして保持しておきます。例えば、scale を省略して minmax を指定するとき、または min を省略して max を指定するときなどです。末尾のコンマは無視されます。
以下の例では、$ISVALIDNUM の呼び出しはすべて 1 を返します (有効な値)。
   WRITE !,$ISVALIDNUM(0)        ; All integers OK
   WRITE !,$ISVALIDNUM(4.567)    ; Decimal numbers OK
   WRITE !,$ISVALIDNUM("4.567")  ; Numeric strings OK
   WRITE !,$ISVALIDNUM(-.0)      ; Signed numbers OK
   WRITE !,$ISVALIDNUM(+004.500) ; Leading/trailing zeroes OK
   WRITE !,$ISVALIDNUM(4E2)      ; Exponents OK   
以下の例では、$ISVALIDNUM の呼び出しはすべて 0 を返します (無効な値)。
   WRITE !,$ISVALIDNUM("")      ; Null string is invalid
   WRITE !,$ISVALIDNUM("4,567") ; Commas are not permitted
   WRITE !,$ISVALIDNUM("4A")    ; Invalid character
以下の例は、min パラメータや max パラメータの使用法を示しています。以下はすべて、1 を返します (数は有効で、範囲チェックも渡します)。
   WRITE !,$ISVALIDNUM(4,,3,5)    ; scale can be omitted
   WRITE !,$ISVALIDNUM(4,2,3,5)   ; scale can be larger than 
                                  ; number of decimal digits
   WRITE !,$ISVALIDNUM(4,0,,5)    ; min or max can be omitted
   WRITE !,$ISVALIDNUM(4,0,4,4)   ; min and max are inclusive
   WRITE !,$ISVALIDNUM(-4,0,-5,5) ; negative numbers
   WRITE !,$ISVALIDNUM(4.00,2,04,05) ; leading/trailing zeros
   WRITE !,$ISVALIDNUM(.4E3,0,3E2,400) ; exponents expanded
以下の例は、min パラメータと max パラメータと一緒に scale パラメータを使用する方法を示しています。以下はすべて、1 を返します (数は有効で、範囲チェックも渡します)。
   WRITE !,$ISVALIDNUM(4.55,,4.54,4.551)
     ; When scale is omitted, all digits of num are checked.
   WRITE !,$ISVALIDNUM(4.1,0,4,4.01)
     ; When scale=0, num is rounded to an integer value
     ; (0 decimal digits) before min & max check.
   WRITE !,$ISVALIDNUM(3.85,1,3.9,5)
     ; num is rounded to 1 decimal digit, 
     ; (with values of 5 or greater rounded up) 
     ; before min check.
   WRITE !,$ISVALIDNUM(4.01,17,3,5) 
     ; scale can be larger than number of decimal digits.
   WRITE !,$ISVALIDNUM(3.9,-1,2,3)
     ; When scale=-1, num is truncated to an integer value
メモ
$ISVALIDNUM、$NORMALIZE、および $NUMBER の比較
$ISVALIDNUM$NORMALIZE、および$NUMBER関数はすべて、数値を検証します。$ISVALIDNUM は、ブーリアン値 (0 または 1) を返します。$NORMALIZE$NUMBER は、指定された数を検証して返します。
これら 3 つの関数では、検証の条件は異なります。必要に応じて、それぞれの関数を使いわけてください。
$ISVALIDNUM 関数と $NUMBER 関数は、オプションで min/max の範囲チェックを行います。
$ISVALIDNUM$NORMALIZE、および $NUMBER はすべて、指定された小数桁数に 10 進数を丸めます。$ISVALIDNUM$NORMALIZE は、小数桁数の丸め、および 10 進数の丸めまたは切り捨てを行って、整数を返します。例えば、$NORMALIZE は 488.65 を 488.7 または 489 に丸めるかまたは、488 に切り捨てることができます。$NUMBER は、10 進数または整数を丸めることができます。例えば、$NUMBER は 488.65 を 488.7、489、490、または 500 に丸めることができます。
関連項目