ABAP には一連の組込関数が含まれており、それらを数式として、または数式の一部として使用することができます。
[COMPUTE] n = func( m ).
括弧と引数 m の間の空白は必須です。引数 m を指定して関数 func を呼び出した結果は m に代入されます。
全数値データ型に対する関数
以下の組込関数では、引数として 3 つの数値データ型 (f、i、p) が使用されます。
全数値データ型に対する関数
関数 |
結果 |
Abs |
引数の絶対値 |
Sign |
引数のプレフィクス: 1 x > 0 SIGN( x ) = 0 if x = 0 -1 x < 0 |
Ceil |
引数より小さくない整数値のうち最も小さなもの |
Floor |
引数より大きくない整数値のうち最も大きなもの |
Trunc |
引数の整数部分 |
FRAC |
引数の少数部分 |
上記関数の引数が数値データ型である必要はありません。別のデータ型を選択した場合は数値データ型へと変換されます。ただしパフォーマンス上の理由により、できる限り正確なデータ型を使用する必要があります。関数自体は独自のデータ型を持ちません。関数により数値演算の数値精度が変化することはありません。
DATA n TYPE p DECIMALS 2. DATA m TYPE p DECIMALS 2 VALUE '-5.55'. n = abs( m ). WRITE: 'ABS: ', n. n = sign( m ). WRITE: / 'SIGN: ', n. n = ceil( m ). WRITE: / 'CEIL: ', n. n = floor( m ).WRITE: / 'FLOOR:', n. n = trunc( m ).WRITE: / 'TRUNC:', n. n = frac( m ). WRITE: / 'FRAC: ', n.
以下のように出力されます。
ABS: 5.55 SIGN: 1.00- CEIL: 5.00- FLOOR: 6.00- TRUNC: 5.00- FRAC: 0.55-
DATA: t1(10) TYPE c, t2(10) TYPE c VALUE '-100'. t1 = ABS( t2 ). WRITE t1.
結果:
100
2 つの変換が実行されます。まず、t2(c 型) の内容が p 型に変換されます。次に、その変換の結果を使用して関数 abs が処理されます。次に、c 型項目 t1 への代入時に、その関数の結果が元の c 型へと変換されます。
浮動小数点数関数
以下の組込関数では、引数として浮動小数点数 (f 型) が使用されます。
浮動小数点関数
関数 |
意味 |
acos, asin, atan; cos, sin, tan |
三角関数 |
cosh, sinh, tanh |
双曲線関数 |
Exp |
e を底とする指数関数 (e=2.7182818285) |
Log |
e を底とする自然対数 |
log10 |
10 を底とする対数 |
Sqrt |
平方根 |
すべての関数について、通常の数学的制約が適用されます (たとえば、平方根は正数についてのみ可能)。違反があると実行時エラーが発生します。
上記関数の引数が浮動小数点数項目である必要はありません。別のデータ型を選択した場合には、f 型に変換されます。関数自体のデータ型は f です。数値演算の数値精度が変化する場合があります。
DATA: result TYPE f, pi(10) TYPE c VALUE '3.14159265'. result = cos( pi ). WRITE result.
出力は -1.00000000000000E+00 です。計算の実行前に、文字項目 pi は自動的に f 型項目へと変換されます。