コンテンツフレーム起動

算術計算 文書を SAP ライブラリストラクチャに組み込む

算術計算では、算術演算と特殊 ABAP 命令を使用します。

四則演算

ABAP は、四則演算と累乗計算がサポートされています。. 算術式で以下の算術演算子を使用することができます。

演算子

意味

+

加算

-

減算

*

乗算

/

除算

DIV

整数除算

MOD

整数除算の余り

**

累乗

算術式で演算子を使用する代わりに、キーワード ADDSUBTRACTMULTIPLY 、および DIVIDE によって四則演算を実行することができます。

以下の表には、ABAP で四則演算を表現するさまざまな方法が示されています。

演算

 

算術式を使用する命令

キーワードを使用する命令

加算

<p> = <n> + <m>.

ADD <n> TO <m>.

減算

<p> = <m> - <n>.

SUBTRACT <n> FROM <m>.

乗算

<p> = <m> * <n>.

MULTIPLY <m> BY <n>.

除算

<p> = <m> / <n>.

DIVIDE <m> BY <n>.

整数除算

<p> = <m> DIV <n>.

---

除算の余り

<p> = <m> MOD <n>.

---

累乗

<p> = <m> ** <n>.

---

キーワードを使用する命令では、演算結果が項目<m> に代入されます。

オペランド<m><n> 、および<p> は任意の数値項目にすることができます。項目のデータ型が異なる場合、すべての項目は、命令内で使用されている最上位階層のデータ型に変換されます。

算術式を使用するとき、演算子 +-*** 、および / と開括弧ならびに閉括弧は、ABAP の用語として解釈されるので、前後に空白を入れる必要があります。

除算演算では、被除数がゼロでない場合、除数をゼロにすることはできません。整数除算では、演算子 / の代わりに DIV または MOD を使用します。DIV では整数の商が算出され、MOD では余りが算出されます。

算術式を組み合わせると、ABAP では左から右に計算が行われます。ただし、唯一の例外として、累乗は右から左に計算されます。したがって、<n> ** <m> ** <p> <n> ** ( <m> ** <p> ) と同じですが、( <n> ** <m> ) ** <p> とは異なります。

 例

DATA: COUNTER TYPE I.

COMPUTE COUNTER = COUNTER + 1.

COUNTER = COUNTER + 1.

ADD 1 TO COUNTER.

この場合、3 つの操作命令で同じ算術演算が実行されます。つまり、項目 COUNTER の内容に 1 が加算されて、その結果が COUNTER に代入されます。

 例

DATA: PACK TYPE P DECIMALS 4,
      N TYPE F VALUE '+5.2',
      M TYPE F VALUE '+1.1'.

PACK = N / M.
WRITE PACK.

PACK = N DIV M.
WRITE  / PACK.

PACK = N MOD M.
WRITE /PACK.

出力は以下のようになります。

           4.7273

           4.0000

           0.8000

この例には、各種の除算が示されています。

構造を使用する算術計算

MOVE-CORRESPONDING 命令を使用して、構造間でコンポーネントごとに値を転送する場合と同様に、以下の命令によって、構造のコンポーネント間で算術演算を行うこともできます。

        ADD-CORRESPONDING

        SUBTRACT-CORRESPONDING

        MULTIPLY-CORRESPONDING

        DIVIDE-CORRESPONDING

ABAP では、両方の構造で名称が同じであるすべてのコンポーネントに対し、該当する計算が行われます。ただし、すべての関連コンポーネントが数値データ型である場合のみ、演算する意味があります。

 例

DATA: BEGIN OF RATE,
         USA TYPE F VALUE '0.6667',
         FRG TYPE F VALUE '1.0',
         AUT TYPE F VALUE '7.0',
      END OF RATE.

DATA: BEGIN OF MONEY,
         USA TYPE I VALUE 100,
         FRG TYPE I VALUE 200,
         AUT TYPE I VALUE 300,
      END OF MONEY.

MULTIPLY-CORRESPONDING MONEY BY RATE.

WRITE / MONEY-USA.
WRITE / MONEY-FRG.
WRITE / MONEY-AUT.

出力は以下のようになります。

        67

       200

     2,100

ここでは、MONEY-USA RATE-USA と掛け算され、その他のコンポーネントも同様に掛け算されます。

項目シーケンスの加算

ADD 命令には、メモリ内の項目シーケンスを加算することのできる記述法があります。以下の例があります。

項目シーケンスを加算し、その結果を別項目に代入する場合:

ADD <n1> THEN <n2> UNTIL <nz> GIVING <m>.

<n1><n2>... <nz> が、データ型と長さが同じであり、メモリ内の一連の等距離項目である場合、これらのシーケンスを集計し、その結果を <m> に代入することができます。

項目シーケンスを加算し、その結果を別項目の内容に加算する場合:

ADD <n1> THEN <n2> UNTIL <nz> TO <m>.

この命令は、項目の合計が <m> の既存内容に加算される点だけを除き、前の命令と同じです。

その他の類似した記述法の追加情報については、ADD 命令のキーワード文書を参照してください。

 例

DATA: BEGIN OF SERIES,
         N1 TYPE I VALUE 10,
         N2 TYPE I VALUE 20,
         N3 TYPE I VALUE 30,
         N4 TYPE I VALUE 40,
         N5 TYPE I VALUE 50,
         N6 TYPE I VALUE 60,
      END OF SERIES.

DATA SUM TYPE I.

ADD SERIES-N1 THEN SERIES-N2 UNTIL SERIES-N5 GIVING SUM.
WRITE SUM.

ADD SERIES-N2 THEN SERIES-N3 UNTIL SERIES-N6 TO SUM.
WRITE / SUM.

以下が出力されます。

       150

       350

この場合、コンポーネント N1 から N5 までの内容が集計され、項目 SUM に代入されます。次に、コンポーネント N2 から N6 までの内容が集計され、項目 SUM の値に加算されます。

 

 

 

 

コンテンツフレーム終了