COBOL言語が得意とする計算処理を体験してみよう! | 基礎ガイド

COBOL(コボル)言語が得意な計算処理の書き方とは

基礎-計算処理-イメージ

COBOL(コボル)言語による計算処理

COBOL(コボル)は事務処理や計算が得意なプログラミング言語です。その理由としては、COBOLが事務計算処理を目的に設計されていることが挙げられます。

他のプログラミング言語との違いとしては、10進数の計算が強いと言われており、コンピュータは通常2進数を利用されていますが、2進数では10進数に変換する過程で誤差が発生し、正確に計算が行われない場合もあります。

そのため、COBOLでは計算処理をより正確に高速で変換できるように、2進化10進数という10進数の1桁を、0から9までを表す2進数の4桁で表したものが考案されました。

また、通常データ項目に対して浮動小数点を扱うと、丸めの誤差が生じたり、余剰分は切り捨てられることがあります。そのためプログラマやコンパイラが計算結果の末尾の桁については責任を持つことはありません。

しかし、COBOLでは小数点以下も明示的に定義することができ、桁数も指定することができるため、四則演算やべき乗などの計算もプロジェクトの規定やプログラマによって、自由に定義することが可能です。

COBOL(コボル)言語における数字項目の定義

COBOL(コボル)は数字項目の定義もわかりやすく設計されているのも特徴の1つです。

01 データ項目 PIC 9(4)V9(3) VALUE 1234.567

この数字項目の定義では、9(4)で小数点以上の整数が4桁、V9(3)で小数点以下3桁のデータ項目を定義していることになります。このデータ項目は7バイト長の領域が割り当てられ、小数点以上が4バイト、小数点以下が3バイトを表します。

ANSI規格では、数値の桁数は小数点以上、以下をあわせて18桁までに制限されており、18桁を超える桁は無効となります。なお、データ項目定義の末尾にVALUE句を指定すると、そのデータ項目の初期値を設定することができます。

COBOL(コボル)言語における10進数の計算

COBOLでは計算処理の自由度も高く、四則演算についても加算を行うADD文、減算を行うSUBTRACT文、乗算を行うMULTIPLY文、除算を行うDIVIDE文がそれぞれ用意されています。また、計算式を用いて計算処理を行うCOMPUTE文があります。

以下に数字項目を定義して、四則演算及びCOMPUTE文を使用した計算処理を行う簡単なサンプルプログラムを紹介します。

サンプル:10進数の計算(1/1)
基礎-計算処理-記載例1

サンプル:10進数の計算(2/2)
基礎-計算処理-記載例2

実行結果:
基礎-計算処理-実行結果1

サンプルプログラムでは四則演算のそれぞれの構文と、COMPUTE文で計算処理を行う方法を紹介しました。それぞれの演算は通常の計算式にすると、以下のようになります。

ADD文は「SUM-DATA = NUM-A + NUM-B」
SUBTRACT文は「SUM-DATA = NUM-A – NUM-C」
MULTIPLY文は「SUM-DATA = NUM-A * NUM-B」
DIVIDE文は「SUM-DATA = NUM-A / NUM-C」

練習問題
ここでは練習問題にチャレンジしてみましょう。

COMPUTE文で加算・減算・乗算・除算の計算を行い、計算結果をそれぞれDISPLAY文で出力するプログラムを作成してください。

<用意するデータ項目>
データ項目1に小数点以上の整数4桁、小数点以下5桁
データ項目2に小数点以上の整数2桁、小数点以下5桁
計算結果を格納する項目に小数点以上の整数5桁、小数点以下5桁

回答:

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. CALCULATION_SAMPLE02.
  3. ENVIRONMENT DIVISION.
  4. CONFIGURATION SECTION.
  5. DATA DIVISION.
  6. WORKING-STORAGE SECTION.
  7. *>----------------------------------------------------
  8. *> 数値項目を定義
  9. *>----------------------------------------------------
  10. 01 SAMPLE-DATA.
  11. *>整数4桁、小数点以下5
  12. 03 NUM-A PIC 9(4)V9(5) VALUE 1111.12345.
  13. *>整数2桁、小数点以下5
  14. 03 NUM-B PIC 9(2)V9(5) VALUE 10.11356.
  15. 03 SUM-DATA PIC 9(5)V9(5).
  16. PROCEDURE DIVISION.
  17. MAIN.
  18. *>----------------------------------------------------
  19. *> 計算処理(COMPUTE)
  20. *>----------------------------------------------------
  21. *> 加算
  22. COMPUTE SUM-DATA = NUM-A + NUM-B.
  23. DISPLAY "加算結果:"SUM-DATA.
  24. *> 減算
  25. COMPUTE SUM-DATA = NUM-A - NUM-B.
  26. DISPLAY "減算結果:"SUM-DATA.
  27. *> 乗算
  28. COMPUTE SUM-DATA = NUM-A * NUM-B.
  29. DISPLAY "乗算結果:"SUM-DATA.
  30. *> 除算
  31. COMPUTE SUM-DATA = NUM-A / NUM-B.
  32. DISPLAY "除算結果:"SUM-DATA.
  33. STOP RUN.

実行結果:
基礎-計算処理-記載例2
このようにCOMPUTE文を使用すれば、四則演算の計算処理も分かりやすく記述することができます。

COBOLでの計算処理はADD文やSUBTRACT文などの処理と、COMPUTE文を使用した計算処理と使用することができますので、用途によって使い分けるのが良いでしょう。

また、データ項目の桁数も明示的に定義することができますので、計算結果の誤差を出したくない場合や余剰分を切り捨てたくない場合は、データ項目を厳密に取り決めておきましょう。

この記事を読んだ人は、こちらの記事も読んでいます

あなたのCOBOL技術を活かしませんか?

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

|  基礎  |  応用  |  勉強  |  試験 |  辞書  |

取引企業様 募集中
COBOL技術者 募集
COBOL魂
読者採用
COBOL入門