COBOL2002 ユーザーズガイド

[目次][用語][索引][前へ][次へ]

5.2.2 算術文

算術文には,COMPUTE文,ADD文,SUBTRACT文,MULTIPLY文,およびDIVIDE文があります。各文の説明を,次に示します。

なお,例中のtemp,quot,rem-tmp,およびremは,任意の一時的な記憶場所を示します。

<この項の構成>
(1) COMPUTE文
(2) ADD文
(3) SUBTRACT文
(4) MULTIPLY文
(5) DIVIDE文

(1) COMPUTE文

COMPUTE文は,算術式の値を一つ以上のデータ項目に収めます。

COMPUTE文による演算の例を次に示します。なお,A〜Dは整数項目を表します。

(例)
COMPUTE A = B +  C.    ←BにCを加算し,その結果をAに収める
COMPUTE A = B -  C.    ←BからCを減算し,その結果をAに収める
COMPUTE A = B *  C.    ←BにCを乗算し,その結果をAに収める
COMPUTE A = B /  C.   ←BをCで除算し,その結果をAに収める
COMPUTE A = B ** C.    ←BをC乗し,その結果をAに収める
注※
剰余を求めたい場合には,次のようなCOMPUTE文を組み合わせます。
 
COMPUTE A =  B / C          ←BをCで除算し,その商をAに収める
COMPUTE D =  B - C * A      ←商Aを使って剰余を求め,Dに収める

(2) ADD文

ADD文は,幾つかの数字作用対象の和を一つ以上のデータ項目に収めます。

ADD文による演算の例を次に示します。

(例1)
ADD文は,続く注記行のCOMPUTE文と同じです。
       ADD A TO B
      *COMPUTE B = A + B
       ADD A B C TO D
      *COMPUTE D = A + B + C + D
       ADD A B TO C D
      *COMPUTE temp = A + B
      *COMPUTE C = temp + C
      *COMPUTE D = temp + D

(例2)
ADD文は,続く注記行のCOMPUTE文と同じです。
       ADD A B TO C GIVING D
      *COMPUTE D = A + B + C
       ADD A B GIVING C D ROUNDED
      *COMPUTE temp = A + B
      *COMPUTE C = temp
      *COMPUTE D ROUNDED = temp

(例3)
ADD文は,続く注記行の二つのCOMPUTE文を合わせたものと同じです。
       05 A.
         10 D1 PIC S9(6).
         10 D2 PIC S9(3)V9(2) USAGE COMP.
       05 B.
         10 D1 PIC S9(5)V9 USAGE COMP.
         10 D2 PIC 9(5)V9(5).
         :
           ADD CORRESPONDING A TO B ROUNDED
      *    COMPUTE D1 OF B = D1 OF A + D1 OF B
      *    COMPUTE D2 OF B = D2 OF A + D2 OF B

(3) SUBTRACT文

SUBTRACT文は,幾つかの数字作用対象の和を,一つ以上のデータ項目から減じ,その結果を一つ以上のデータ項目に収めます。

SUBTRACT文による演算の例を次に示します。

(例1)
SUBTRACT文は,続く注記行のCOMPUTE文と同じです。
       SUBTRACT A FROM B
      *COMPUTE B = B - A
       SUBTRACT A B C FROM D
      *COMPUTE D = D - (A + B + C)
       SUBTRACT A B FROM C D
      *COMPUTE temp = A + B
      *COMPUTE C = C - temp
      *COMPUTE D = D - temp

(例2)
SUBTRACT文は,続く注記行のCOMPUTE文と同じです。
       SUBTRACT A FROM B GIVING C
      *COMPUTE C = B - A
       SUBTRACT A B C FROM D GIVING E
      *COMPUTE E = D - (A + B + C)
       SUBTRACT A B FROM C GIVING D E ROUNDED
      *COMPUTE temp = C - (A + B)
      *COMPUTE D = temp
      *COMPUTE E ROUNDED = temp

(例3)
SUBTRACT文は,続く注記行の二つのCOMPUTE文を合わせたものと同じです。
       05 A.
        10 D1 PIC S9(6).
        10 D2 PIC S9(3)V9(2) USAGE COMP.
       05 B.
        10 D1 PIC S9(5)V9 USAGE COMP.
        10 D2 PIC 9(5)V9(5).
              :
           SUBTRACT CORRESPONDING A FROM B
      *COMPUTE D1 OF B = D1 OF B - D1 OF A
      *COMPUTE D2 OF B = D2 OF B - D2 OF A

(4) MULTIPLY文

MULTIPLY文は,数字作用対象同士の積を計算し,その結果を一つ以上のデータ項目に収めます。

MULTIPLY文による演算の例を次に示します。

(例1)
MULTIPLY文は,続く四つのCOMPUTE文を合わせたものと同じです。
       MULTIPLY A BY B ROUNDED C D
      *COMPUTE temp = A 
      *COMPUTE B ROUNDED = temp * B
      *COMPUTE C = temp * C
      *COMPUTE D = temp * D

(例2)
MULTIPLY文は,続く四つのCOMPUTE文を合わせたものと同じです。
       MULTIPLY A BY B GIVING C D ROUNDED E
      *COMPUTE temp = A * B
      *COMPUTE C = temp
      *COMPUTE D ROUNDED = temp
      *COMPUTE E = temp

(5) DIVIDE文

DIVIDE文は,一つの作用対象をほかの数字作用対象で割り,その商と剰余を一つ以上のデータ項目に収めます。

DIVIDE文による演算の例を次に示します。

(例1)
DIVIDE文は,続く注記行のCOMPUTE文の組と同じです。
       DIVIDE A INTO B ROUNDED A C
      *COMPUTE temp = A
      *COMPUTE B ROUNDED = B / temp
      *COMPUTE A = A / temp
      *COMPUTE C = C / temp

(例2)
DIVIDE文は,続く注記行のCOMPUTE文と同じです。
       DIVIDE A INTO B GIVING C D ROUNDED
      *COMPUTE temp = B / A
      *COMPUTE C = temp
      *COMPUTE D ROUNDED = temp

(例3)
DIVIDE文は,続く注記行のCOMPUTE文と同じです。
       DIVIDE A BY B GIVING C D ROUNDED
      *COMPUTE temp = A / B
      *COMPUTE C = temp
      *COMPUTE D ROUNDED = temp

(例4)
DIVIDE文は,続く注記行のCOMPUTE文の組と同じです。
       DIVIDE A INTO B GIVING C ROUNDED REMAINDER D
      *COMPUTE quot = B / A
      *COMPUTE rem-tmp = quot.
      *COMPUTE rem = B - A * rem-tmp.
      *COMPUTE C ROUNDED = quot
      *COMPUTE D = rem

(例5)
DIVIDE文は,続く注記行のCOMPUTE文と同じです。
       DIVIDE A BY B GIVING C ROUNDED REMAINDER D
      *COMPUTE quot = A / B
      *COMPUTE rem = A - B * quot
      *COMPUTE C ROUNDED = quot
      *COMPUTE D = rem