DATA: num1 TYPE I VALUE 10,
num2 TYPE I VALUE 3,
result TYPE I.
* 演算子を使った加算(num1とnum2を加算する)
result = num1 + num2. " 結果: 13
* 計算命令を使った加算(resultにnum1を加算する)
ADD num1 TO result. " 結果: 23
このプログラムでは、最初に num1 と num2 を加算し、次に result にさらに num1 を加算しています。最初の result が13で、加算後は 23 となります。
減算(- または SUBTRACT)
減算には演算子 – または SUBTRACT命令 が使用されます。
使用例
DATA: num1 TYPE I VALUE 10,
num2 TYPE I VALUE 3,
result TYPE I.
* 演算子を使った減算(num1からnum2を減算する)
result = num1 - num2. " 結果: 7
* 計算命令を使った減算(resultからnum2を減算する)
SUBTRACT num2 FROM result. " 結果: 4
DATA: num1 TYPE I VALUE 10,
num2 TYPE I VALUE 3,
result TYPE I.
* 演算子を使った乗算(num1とnum2を乗算する)
result = num1 * num2. " 結果: 30
* 計算命令を使った乗算(resultとnum2を乗算する)
MULTIPLY result BY num2. " 結果: 90
DATA: num1 TYPE I VALUE 10,
num2 TYPE I VALUE 3,
result TYPE I.
* 演算子を使った除算(num1をnum2で除算する)
result = num1 / num2. " 結果: 3.33333…
* 計算命令を使った除算(resultをnum1で除算する)
DIVIDE result BY num2. " 結果: 1.11111…
このプログラムでは、まず num1 を num2 で除算し、その後 result を num2 で再度割っています。DIVIDE 命令も小数を含む結果を返します。
整数除算(DIV)
整数除算には DIV 演算子が使用されます。 小数部分は切り捨てられ、整数の結果が返されます。
使用例
DATA: num1 TYPE I VALUE 10,
num2 TYPE I VALUE 3,
result TYPE I.
* 整数除算(num1をnum2で除算する)
result = num1 DIV num2. " 結果: 3
このプログラムでは、num1 を num2 で割った整数部分が返されます。小数部分は無視されます。
剰余(MOD)
剰余計算には MOD 演算子が使用されます。これは、割り算の余りを返します。
使用例
DATA: num1 TYPE I VALUE 10,
num2 TYPE I VALUE 3,
result TYPE I.
* 剰余(num1をnum2で除算して余りを格納する)
result = num1 MOD num2. " 結果: 1
このプログラムでは、num1 を num2 で割った余りが返されます。
合計計算(SUM)
SUM 命令は、内部テーブル内の数値フィールドの合計値を計算するために使用されます。LOOP 処理内で使用すると、対象フィールドの値を自動的に集計します。
使用例
DATA: BEGIN OF itab OCCURS 0,
key TYPE I,
field1 TYPE I,
END OF itab.
* データの登録
itab-key = 1. itab-field1 = 10. APPEND itab.
itab-key = 1. itab-field1 = 20. APPEND itab.
itab-key = 2. itab-field1 = 30. APPEND itab.
itab-key = 2. itab-field1 = 40. APPEND itab.
* 合計計算
LOOP AT itab.
AT END OF key.
SUM. " 同じ key の field1 の合計値を計算
WRITE: / 'Key:', itab-key, 'Sum:', itab-field1.
ENDAT.
ENDLOOP.
このプログラムでは、LOOP 処理中に AT END OF key を使用して key ごとにデータをグループ化しています。SUM 命令は、同じ key を持つすべてのレコードの field1 を自動的に合計し、最後のレコードにその結果を反映します。この場合、key = 1 の合計は 30、key = 2 の合計は 70 です。