COBOLではさまざまな計算ができる。特に四則演算の出現頻度は非常に高いので、丁寧に解説します。
今回は加算(足し算)について解説します。
足し算についてはこちら、掛け算についてはこちら、割り算についてはこちらで解説します。
演算子を使用することができるCOMPUTEについてはこちらで解説しています。
目次
減算(引き算)
減算
引き算は「SUBTRACT」を使用して行います。
まずは簡単な例を、
SUBTRACT A FROM B.
これは、「B – A」を計算して、計算結果をBに代入するという意味。
数値を用いると下記の例のようになる。
SUBTRACT 2 FROM B.
これは、「B – 2」を計算して、計算結果をBに代入するという意味。
様々な減算方法
SUBTRACTには様々な使い方があります。ここでは、複数の引き算を同時に行う方法や足し算を引き算を同時に行う方法について解説します。
複数の引き算を同時に行う
「SUBTRACT」は複数の引き算を同時に行うことが可能。
SUBTRACT A FROM B C.
上記の変数Bと変数Cのところでそれぞれ、「B – A = B」、「C – A = C」の二つを行うことができる。
この変数Bと変数Cの部分は二つだけでなくもっと増やすことも可能となっている、ただ、わかりやすさという点から、あまりにも多すぎると可読性に影響を与えるため、ある程度制限した方が良いです。
足し算と引き算を同時に行う
「SUBTRACT」は引き算だけではなく、足し算と引き算を同時におこうなことができる。
ADD A B TO C.
上記のよう「ADD」を使用すると、「A + B + C」を行い、計算結果をCに代入するということになる。
では下記のように「SUBTRACT」で行うとどうなるか
SUBTRACT A B FROM C.
これは、「C – (A + B)」を計算して、その結果を変数Cに代入するという意味になる。
計算結果を編集する
ここからは、計算結果を異なる変数に代入したり、四捨五入や切り捨ての方法を解説します。
計算結果を異なる変数に代入(GIVING指定)
計算結果を異なる変数に代入したい時は、「GIVING」指定をすることで異なる変数に代入することができます。
SUBTRACT A FROM B GIVING C.
これで「B – A」の計算結果を変数Cに代入することができる。
GIVING指定をする際には、AとBの部分に計算結果が代入されることはないので、どちらも数値にすることが可能です。
SUBTRACT 12 FROM 1 GIVING C.
つまり上記のようにすることが可能である。この場合「12 – 1」の計算結果が変数Cに代入される。
なお、計算結果については、数字項目ではなく数字編集項目に代入することも可能である。
数字編集項目は「ZZ9」など、計算で用いることのできない項目のことであり、「Z」はゼロサプレスと言い、数値が入っていない場合にはスペースが出力されることになる。
なお、数字編集項目とは「X」ではなく。代入先に「X」の文字項目を指定してしまうとエラーになるので使用してはいけない。
計算結果を四捨五入する
計算結果を四捨五入したい時は、式の最後に「ROUNDED」指定をする。
SUBTRACT A FROM B ROUNDED.
この時、変数Bが整数なのか、少数第一位まであるのかなどによって、どの位で四捨五入するかが変化する。
変数Bが、少数第一位まであった場合
01 B PIC 99V9.
少数第二位を四捨五入して、結果は少数第一位までにしてくれる。
もちろん変数Bが整数であった場合
01 B PIC 99.
少数第一位を四捨五入し、結果は整数になる。
四捨五入について詳しくはこちら。
計算結果を切り捨てする
計算結果を切り捨てする場合には、特に「ROUNDED」指定などせず、変数に合わせて自動的に切り捨てをしてくれる。
例えば以下のような変数であった場合、
01 A PIC 99 VALUES 10.
この場合には、小数点以下の数は切り捨てし、自動的に整数にしてくれる。
では実際に計算をすると、
SUBTRACT 5.5 FROM A.
計算結果は「4.5」であるが、小数点以下を切り捨て、結果は「4」になる。