!--a11y-->

ABAP には、一連の組込関数が用意されており、算術式として、または算術式の一部として使用することができます。
[COMPUTE] <n> = <func>( <m> ).
括弧間の空白と引数 <m> は必須です。引数 <m> による関数 <func> の呼出結果が <n> に代入されます。
以下の組込関数は、3 つの数値データ型 (F 、I 、P) を引数として処理します。
すべての数値データ型に対する関数
|
関数 |
結果 |
|
ABS |
引数の絶対値 |
|
SIGN |
引数の符号: X > 0 の場合 1 X = 0 の場合 SIGN( X) = 0 X < 0 の場合 -1 |
|
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),
T2(10)
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)
VALUE '3.141592654'.
RESULT = COS( PI ).
WRITE RESULT.
出力は -1.00000000000000E+00 になります。文字項目 PI は、計算前に自動的に型 F に変換されます。
