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言語で計算処理をするなら「COMPUTE文」|入門用語辞典
- COBOL言語の「ACCEPT文」の使い方を分かり易く解説|入門用語辞典
- COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|入門用語辞典
- 徹底解説!一歩先を行くCOBOL言語のCOPY文活用法|応用ガイド
- 一歩先を行くCOBOL言語の表操作!逐次検索と二分検索|応用ガイド
- COBOL言語の加算処理の基本を伝授! 命令文「ADD」とは?|入門用語辞典
- 徹底解説!一歩先を行くCOBOL言語のファイル併合処理|応用ガイド
- COBOL言語でファイルの開閉命令はOPEN文とCLOSE文!|入門用語辞典
- 徹底解説!一歩先を行くCOBOL言語のデータ共有|応用ガイド
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
- COBOL言語の歴史とこれまでの進化を知る!廃止・追加機能|基礎ガイド
- COBOL言語のオブジェクト指向について理解しよう!|基礎ガイド
- COBOL言語のディスプレイ出力とコンソール入力について|基礎ガイド
- COBOL言語が得意とする計算処理を体験してみよう!|基礎ガイド
- 一歩先を行くCOBOL言語のユーザ定義関数について|応用ガイド
- 初心者から中級者でも安心!理解できるCOBOL言語の勉強法|学習講座
- 初心者必見!COBOL言語を効率よくマスターする勉強法とは|学習講座
- COBOL初心者が犯しやすいミスとその対策について|学習講座
- COBOL初心者がやってはいけない勉強方法とは?|学習講座
- 一歩先へ行くCOBOLプログラマの知っておくべき4つのヒント|学習講座