徹底解説!COBOL言語のプログラムと処理速度について | 応用ガイド
COBOL(コボル)言語のプログラムの処理速度は早いのか?
COBOL(コボル)言語の主な特徴
COBOLは事務処理用に開発されたプログラミング言語で、1959年に登場してから既に半世紀以上経ちますが、未だに多くのシステムで使用されています。
その理由としては、生産性の高さや計算の正確さ、そして処理速度の速さが挙げられます。
COBOLは、Cやjavaに比べてかなり制約の多い言語ですが、記述方法がある程度決められているため、可読性が高いということが挙げられます。
また、何十年も使われ続けている実績から信頼性も高く、規模の大きなシステムでも長期間安定して稼働していることも他の言語には無い大きな特徴と言えるでしょう。
後述する計算処理についても、誤差がなく高速に処理を実行することが可能です。
このような特徴から、COBOLは今でもさまざまなシステム開発の現場で使われています。
COBOL(コボル)言語の処理速度が早い理由
COBOLは事務作業の効率化を目的に開発された言語ですので、大量のデータを高速で処理することが可能です。とくに浮動小数点型まで桁数を開発者が決める事が可能で、正確に計算処理を行うことができます。
COBOLは演算処理が正確で高速であることが知られていますが、その理由の1つとして1行ずつレコードを取得する単純な順ファイルはもちろん相対ファイル・牽引ファイルなどの特殊なファイルを使用することが挙げられます。相対ファイル・牽引ファイルの特性を活かして、大量のデータのソートやマージ(整列併合)なども高速で行うことができます。
また、COBOLは10進数の演算をそのまま行えるという特徴があります。これはCOBOLのコンパイラが10進演算を直接機械語に落としこむことで可能となります。
他のプログラム言語では2進数を10進数に変換して処理を行う際、ライブラリの呼出しなどの手間が発生し、その過程で誤差が生じてしまうこともあります。
COBOLは2進化10進法と呼ばれる方法で0から9までを表す2進数を4桁で表現することにより、誤差が発生せず、正確に演算を行うことができます。
そのため、大量のデータを処理する場合は、上述した相対ファイル・牽引ファイルなどの特殊なファイルを使用して高速でデータの処理が可能であること、10進演算を使用できることから、COBOLで記述したプログラムは処理速度が早いと言われています。特に金融系のシステムではCOBOLは処理速度や計算処理の正確性から、未だに必要不可欠な言語となっています。
実際の処理速度は?
ここでは、実際にCOBOLの処理速度がどれだけ早いのか?単純な繰り返し処理を行うプログラムを作成して、Javaプログラムとの処理速度と比較してみましょう。
比較するプログラムはそれぞれ100回繰り返し処理を行い、繰り返し処理の中で値を1ずつ加算してコンソールに出力します。
処理時間の計測は処理実行前と実行後でシステム時刻をミリ秒単位(100分の1秒)で取得し、差分を比較してみます。
Javaプログラム:
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
- public class Main {
- public static void main(String[] args) throws Exception {
- int i = 0;
- // 開始時刻を取得
- Date sDate = new Date();
- SimpleDateFormat format =
- new SimpleDateFormat("hhmmssSS");
- String sTime = format.format(sDate);
- // 1000回に達するまでループ
- while (i < 1000)
- {
- i = i + 1;
- System.out.println(i + "回目の処理です。");
- }
- // 終了時刻を取得
- Date eDate = new Date();
- SimpleDateFormat formatA =
- new SimpleDateFormat("hhmmssSS");
- String eTime = formatA.format(eDate);
- // 処理時間
- int res = Integer.parseInt(eTime) - Integer.parseInt(sTime);
- System.out.println("処理時間(mm):" + res);
- }
- }
実行結果:
- 1回目の処理です。
- 2回目の処理です。
- ・・・省略・・・
- 997回目の処理です。
- 998回目の処理です。
- 999回目の処理です。
- 1000回目の処理です。
- 処理時間(mm):186
COBOLプログラム:
- IDENTIFICATION DIVISION.
- PROGRAM-ID. CNT002.
- DATA DIVISION.
- WORKING-STORAGE SECTION.
- 01 CNT PIC 9(04) VALUE 0.
- 01 STIME PIC 9(08).
- 01 ETIME PIC 9(08).
- 01 RESULT PIC 9(03).
- PROCEDURE DIVISION.
- *> 開始時刻を取得
- ACCEPT STIME FROM TIME
- *> 1000回に達するまでループ
- PERFORM UNTIL CNT = 1000
- ADD 1 TO CNT
- DISPLAY CNT"回目の処理です。"
- END-PERFORM
- *> 終了時刻を取得
- ACCEPT ETIME FROM TIME
- *> 処理時間
- COMPUTE RESULT = STIME - ETIME
- DISPLAY "処理時間(mm):"RESULT.
- STOP RUN.
実行結果:
- 0001回目の処理です。
- 0002回目の処理です。
- ・・・省略・・・
- 0997回目の処理です。
- 0998回目の処理です。
- 0999回目の処理です。
- 1000回目の処理です。
- 処理時間(mm):001
実行結果のとおりJavaプログラムの場合は処理に186ミリ秒掛かり、COBOLプログラムの場合は1ミリ秒掛かることが分かりました。
COBOLでシステムの現在時刻を取得するには、「ACCEPT [時刻を取得する項目] FROM TIME」を指定します。
時刻を取得する項目には、10進数8桁の整数で、時(0~23)・分(0~59)・秒(0~59)・mm:(0~99)となります。
Javaは現在の時刻を取得するために日付・カレンダークラスのライブラリを呼び出すため、若干の誤差はあると思われますが、それでも検証結果から圧倒的にCOBOLが早いことが分かります。
練習問題
ここでは練習問題にチャレンジしてみましょう。
問)
COBOLの処理速度が優れている理由は何か?
答え)
COBOLの演算処理は10進数演算をコンパイラが直接機械語に落とし込むため、処理速度が早いと言われています。
Javaなどの言語はライブラリ関数を呼出して2進から10進への変換が必要なため、その分処理が遅くなります。
ここではCOBOLの特徴やCOBOLの処理速度が早い理由などについて解説しました。
COBOLは事務処理を目的に開発された言語のため、大量のデータを高速に、そして正確に処理を実行するのに非常に優れた言語です。
このような特性から半世紀以上経った今でもCOBOLは現役として使われ続けていますし、今後も規模の大きな基幹系システムや金融系のシステムでは使われ続けていくことは間違いないでしょう。
この記事を読んだ人は、こちらの記事も読んでいます
あなたの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句」は便利?使用方法を学びましょう|用語辞典