このページでは、ABAPで行う計算処理を一通り整理して解説します。このページで解説する内容をマスターすれば、ABAPの計算式は100%理解できるでしょう。
このページで学べる内容
- COMPUTE命令の意味と使い方
- ABAPで用いる基本的な算術式
- ABAPにおける計算方法の注意点
ABAPを学習する人であれば、知らないと恥ずかしい内容ばかりですので是非最後までご覧ください。
それでは、早速解説を始めます。
COMPUTE命令とは
COMPUTE (答え) = (計算式).
例)COMPUTE A = A + 1.
COMPUTE命令は、(答え)に(計算式)の結果を代入する命令です。COMPUTE命令は省略可能です。
したがって、以下の2つのコードは全く同じ働きをします。
COMPUTE A = A + 1.
A = A + 1.
COMPUTE命令を用いる理由は、「これが計算式である」ということを明示するためのようです。ただし、実際のプログラムでCOMPUTE命令が用いられている場面を見る機会は非常に少ないのが実態です。
また
COMPUTE A = B.
という形で、Bの値をAに代入することも可能です。これは、MOVE命令と全く同じ処理になります。こちらも、わざわざCOMPUTE命令を用いる必要性がないため、利用されている場面は非常に少ないと言えます。
※MOVE命令については以下の記事で詳しく解説しています。
算術式(算術演算子)
実は、このページで解説する内容で、重要なのはCOMPUTE命令ではなくここから解説する算術演算子です。
算術式(算術演算子)というと、小難しく感じるかもしれませんが、"+" "-" "×" などの符号のことです。ABAPでは、これらの符号を用いて計算式を実行していきます。
また、上記の符号を用いる形に加えて、ADD命令(掛け算を実行)などの計算命令も存在します。ここからは、ABAPにおける計算式の書き方を解説していきます。
加算・・・ADD / +
① COMPUTE命令(算術式)を用いる方法
COMPUTE A = A + 1.
② 計算命令を用いる方法
ADD 1 TO A.
上記①と②は全く同じ結果になります。ADDとは日本語で「加える」の意です。変数の順番の違いに注意して覚えましょう。
減算・・・SUBTRACT / -
① COMPUTE命令(算術式)を用いる方法
COMPUTE A = A - 1.
② 計算命令を用いる方法
SUBTRACT 1 FROM A.
上記①と②は全く同じ処理になります。SUBTRACTとは日本語で「引く」の意です。
乗算・・・MULTIPLY / *
① COMPUTE命令(算術式)を用いる方法
COMPUTE A = A * 2.
② 計算命令を用いる方法
MULTIPLY A BY 2.
ADD命令/SUBTRACT命令と比較すると、掛ける数字と掛けられる数字の順番が異なりますので注意しましょう。
MULTIPLYは日本語で「掛ける」の意味になります。2でかける、というイメージで理解しておきましょう。
除算・・・DIVIDE / "/"
① COMPUTE命令(算術式)を用いる方法
COMPUTE A = A / 2.
② 計算命令を用いる方法
DIVIDE A BY 2.
DIVIDEとは日本語で「割る・分ける」の意です。
基本的な四則演算は、上記4つの符号or命令で実行することが可能です。符号でも命令でも、結果は同じになるため、どちらを用いても問題はありませんが、1つのプログラム中ではどちらか一方に記載を統一するようするのが一般的です。
経験談で言えば、計算命令を用いる方法よりも符号を用いて変数と数字を結ぶ形のほうが使用頻度は多いような気がします。
特殊な算術式
これまでは基本的な四則演算について解説してきました。ここからは、ABAP初心者にとっては少し理解しづらい特殊な3つの算術式について解説します。
DIV・・・割り算の答えの整数部分
例)A = A DIV 5.
算術式DIVは、割り算した結果の整数部分を返します。上記、例であげた構文では、Aが「12」の場合を考えます。
12 DIV 5
とした場合、12÷5=2あまり2となります。
この場合、Aに格納されるのは、「2」ということになります。
少数を切り下げしたい場合に、"DIV 1" とするような使い方が可能です。
MOD・・・割り算の答えの余り
例)A = A MOD 3.
算術式MODは、割り算の答えの余り部分を返します。
10 MOD 3
とした場合、10÷3=3 あまり1
となるので、Aに格納されるのは「1」となります。
**・・・累乗
例)3**2
算術式**は、累乗を表します。例に挙げたのは、3の2乗を表します。すなわち、9と同意です。
計算の順序
最後に「A = B+C*D/E+(F-G)MOD H」のような複数の算術式が存在する場合の計算順序について補足します。
基本的には一般的な四則演算の法則にのっとり、以下の順番で実行されます。
- 括弧の中の計算
- 指数計算(**)
- 乗算/除算(* or / or MOD or DIV)
- 加減算(+ or -)
一般的な機能であれば、複数の算術式が複雑に絡みあうことはあまり無いように思います。したがって、基本的に上記の順番を暗記する必要性は低いと言えます。
是非、本ページをブックマークして備忘録としていただければ幸いです。