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)
サンプル:10進数の計算(2/2)
実行結果:
サンプルプログラムでは四則演算のそれぞれの構文と、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桁
回答:
- IDENTIFICATION DIVISION.
- PROGRAM-ID. CALCULATION_SAMPLE02.
- ENVIRONMENT DIVISION.
- CONFIGURATION SECTION.
- DATA DIVISION.
- WORKING-STORAGE SECTION.
- *>----------------------------------------------------
- *> 数値項目を定義
- *>----------------------------------------------------
- 01 SAMPLE-DATA.
- *>整数4桁、小数点以下5桁
- 03 NUM-A PIC 9(4)V9(5) VALUE 1111.12345.
- *>整数2桁、小数点以下5桁
- 03 NUM-B PIC 9(2)V9(5) VALUE 10.11356.
- 03 SUM-DATA PIC 9(5)V9(5).
- PROCEDURE DIVISION.
- MAIN.
- *>----------------------------------------------------
- *> 計算処理(COMPUTE)
- *>----------------------------------------------------
- *> 加算
- COMPUTE SUM-DATA = NUM-A + NUM-B.
- DISPLAY "加算結果:"SUM-DATA.
- *> 減算
- COMPUTE SUM-DATA = NUM-A - NUM-B.
- DISPLAY "減算結果:"SUM-DATA.
- *> 乗算
- COMPUTE SUM-DATA = NUM-A * NUM-B.
- DISPLAY "乗算結果:"SUM-DATA.
- *> 除算
- COMPUTE SUM-DATA = NUM-A / NUM-B.
- DISPLAY "除算結果:"SUM-DATA.
- STOP RUN.
実行結果:
このようにCOMPUTE文を使用すれば、四則演算の計算処理も分かりやすく記述することができます。
COBOLでの計算処理はADD文やSUBTRACT文などの処理と、COMPUTE文を使用した計算処理と使用することができますので、用途によって使い分けるのが良いでしょう。
また、データ項目の桁数も明示的に定義することができますので、計算結果の誤差を出したくない場合や余剰分を切り捨てたくない場合は、データ項目を厳密に取り決めておきましょう。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの 求人情報 が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
応募条件
※2020年5月31日を以って、締切りました。
18歳~28歳の方。
正社員採用において、北川社長の著書『祈り方が9割』を読んで感想文を事前に提出すると、無条件で最終面接まで進むことができます。
COBOLとは、どのようなプログラミング言語なのか、初心者にもわかりやすく、文法の例をあげて解説してます。
COBOL入門の人気記事
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
- 【COBOL言語】条件分岐処理の代名詞「IF文」について知ろう|用語辞典
- COBOL言語の「MOVE文」とは?転記のルールをご紹介します|用語辞典
- COBOL言語の「STRING文」とは?文字連結の基礎知識と注意点|用語辞典
- 多枝分岐ってなに?COBOL言語の「EVALUATE文」を知ろう!|用語辞典
- COBOL言語の「PICTURE句」とは?基本事項を解説します!|用語辞典
- COBOL言語で計算処理をするなら「COMPUTE文」|用語辞典
- COBOL言語の「REDEFINES句」とは?使い方を確認しよう!|用語辞典
- 覚えておけば楽ができる?COBOL言語の「COPY文」の使い方|用語辞典
- COBOL言語の文字列操作のパターンを理解しよう!|基礎ガイド
- COBOL言語の初期化処理に重宝する「INITIALIZE文」とは?|用語辞典
- COBOL言語の「LOW-VALUE」の使い方について理解しよう!|基礎ガイド
- COBOL言語の「OCCURS句」について知ろう!学ぶべき基本とは|用語辞典
- COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|用語辞典
- COBOL言語の「PERFORM文」とは。実行制御について解説!|用語辞典
- COBOL言語の繰り返し処理のパターンを理解しよう!|基礎ガイド
- COBOL言語の「定数」の種類と使い方について理解しよう!|用語辞典
- COBOLのDBアクセスパターンを学ぼう!「FETCH」|応用ガイド
- COBOL言語の「DISPLAY文」は、ディスプレイ出力の為にある|用語辞典
- COBOL言語の「VARYING句」は便利?使用方法を学びましょう|用語辞典