COBOL言語で計算処理をするなら「COMPUTE文」 | 用語辞典
COBOL(コボル)言語の予約語COMPUTE文を使った命令文の書き方とは
COBOL(コボル)言語のCOMPUTE文とは?
COBOLでは、計算処理を行う場合はCOMPUTE文で計算式を用いて計算を行う処理と、四則演算の命令文を用いて、値が設定されているデータ項目に対して計算する処理があります。
本記事では、COBOLにおけるCOMPUTE文について基本的な使い方やルール、注意点などをご紹介します。
COMPUTE文はCOBOLを扱う上で基本的な処理となりますので、使い方をしっかりと覚えておきましょう。
書き方1:
COMPUTE [結果保存用データ項目] = [計算式].
書き方2:
COMPUTE [結果保存用データ項目] ROUNDED = [計算式]
ON SIZE ERROR 無条件文
NOT ON SIZE ERROR 無条件文
END-COMPUTE.
計算式で使用可能な記号:
使用例:
計算を行う命令文はADD文(加算)、SUBTRACT文(減算)、MULTIPLY文(乗算)、DIVIDE文(除算)がありますが、COMPUTE文は計算式を用いて複雑な計算を一度に処理したい場合に使用します。
以下にCOMPUTE文を使用して、簡単な四則演算を行うサンプルプログラムを紹介します。
実行結果:
サンプルでは、COMPUTE文を用いて値を設定したデータ項目に対して、四則演算をそれぞれ行い、結果保存用データ項目WORK-SUMに計算結果を格納しています。
最後に実施している加算・除算処理のように、COMPUTE文を使用すれば一度に複数の計算処理が可能なことがわかります。
なお、単純な計算を行う場合は、ADD文やSUBTRACT文のような四則演算の命令文を使用したほうが、処理が明確になることもありますので、COMPUTE文とうまく使い分けるようにしましょう。
COMPUTE文のCOBOL(コボル)言語におけるルール
1.COMPUTE、ROUNDED、データ項目などの各要素間の改行有無は自由に設定できます。
2.COMPUTE文は右辺の計算式の結果が、左辺の結果保存用データ項目に保存されます。
3.ROUNDEDを指定すると、計算結果が四捨五入されます。四捨五入は指定した有効桁数未満で行います。
4.計算結果が結果保存項目の桁数を超える(オーバーフロー)場合は、ON SIZE ERRORに記述された無条件文が実行されます。
5.計算結果が結果保存項目の桁数の範囲内の場合は、NOT ON SIZE ERRORに記述された無条件文が実行されます。
6.COMPUTE文で四則演算をまとめて行うときは、通常の計算と同様にべき乗、乗算、除算を先に計算し、次に加算、減算を行います。
7.先に計算したい式をカッコで括れば、計算式の順番を指定できます。
COBOL(コボル)言語のCOMPUTE文を扱う上での注意点
1.ON SIZE ERROR〜NOT ON SIZE ERROR〜END-COMPUTEは、エラー処理を記述するときに使用しますが、通常使用することはありません。
2.通常の計算同様、先に計算したい部分はカッコで括らないと計算結果が変わってしまいますので注意しましょう。
例えば以下のように同じ計算式でもカッコを含む、含まないで計算結果が異なります。
COMPUTE WORK-SUM = 2 * 5 / 5 – 2 * 5 * 2.
DISPLAY “計算結果:”WORK-SUM.
COMPUTE WORK-SUM = 2 * 5 / (5 – 2) * 5 * 2.
DISPLAY “計算結果:”WORK-SUM.
3.COMPUTE文で計算式を記述する場合は、データ項目や定数、演算子は空白で区切らなければいけません。以下のように指定するとコンパイルエラーになります。
COMPUTE文を使ったCOBOLプログラムの活用法
COMPUTE文を使用すれば一度に複数の計算が実行できますが、計算式の結果を四捨五入して小数点以下の値を繰り上げたい場合は、結果保存データ項目の後にROUNDEDを指定します。
以下のサンプルではCOMPUTE文を使用して、円周の長さを求める簡単なサンプルを紹介します。
- IDENTIFICATION DIVISION.
- PROGRAM-ID. COMPUTE_SAMPLE02.
- ENVIRONMENT DIVISION.
- CONFIGURATION SECTION.
- DATA DIVISION.
- WORKING-STORAGE SECTION.
- 01 WORK-AREA.
- 03 WORK-NUM PIC 9(3) VALUE 2.
- 03 WORK-PI PIC 9(3)V99999 VALUE 3.14159.
- 03 WORK-RADIUS PIC 9(3).
- 03 WORK-SUM PIC 9(3).
- PROCEDURE DIVISION.
- MAIN SECTION.
- *>値を設定する
- MOVE 60 TO WORK-RADIUS.
- *>円周の長さを求める
- COMPUTE WORK-SUM ROUNDED =
- (WORK-NUM * WORK-RADIUS) * WORK-PI.
- DISPLAY "円周率の長さ:" WORK-SUM.
- STOP RUN.
サンプルでは、2 * 半径 * 円周率で円周の長さを計算しています。円周率は3.14159…と続き、計算結果が小数点を含めた値となりますので、ROUNDEDを使用して小数点以下を四捨五入しています。
そのため、結果保存用データ項目WORK-SUMには小数点を四捨五入して、繰り上げた計算結果377が格納されます。
結果保存用データ項目自体を、PIC 9(3)V99999のように小数点以下まで指定すると、有効少数桁数未満までは四捨五入されませんので注意しましょう。
たとえば、結果保存用データ項目をPIC 9(3)V99999で指定すると、実行結果は376.99080となります。ROUNDEDを指定しても、小数点以下が四捨五入されるわけではありません。
この記事を読んだ人は、こちらの記事も読んでいます
あなたの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句」は便利?使用方法を学びましょう|用語辞典