COBOL言語のテストとデバッグモードを理解しよう!|基礎ガイド
COBOL(コボル)言語のテストための、デバッグモードとその使い方とは
COBOL(コボル)言語のテストに有効なデバッグモードの使用方法とは?
プログラムが正常に動作するか確認するテストでは、プログラムに実装した計算処理や条件判断が設計通りに正しく動作するか、実際にデータを作成し、データを流す事によって確認していきます。
テストを行う中で、思った通りの処理結果にならなかった場合には、デバッグという不具合(バグ)を取り除く作業を行う事になりますが、その際に有効なのがCOBOL(コボル)言語が持つデバッグモードという機能です。デバッグモードを利用する事でデータをトレースして確認する事ができるため、記述したプログラムのどこに問題があるか、ある程度絞り込んで確認する事ができるようになります。
ここでは、まず画面にメッセージを表示する簡単なプログラムを利用して、デバッグモードの処理結果と、通常の処理結果の違いをご紹介しますので、しっかりその書き方や使用方法、違いについて理解しましょう。
書き方:
D 処理
使用例:
使用例は、画面にメッセージを表示する簡単なプログラムになりますが、デバッグ行(D DISPLAY "デバッグモード時のみ表示")は、デバッグモードでしか処理が実行されない事がおわかりいただけるかと思います。
実行結果(通常):
実行結果(デバッグモード):
COBOL(コボル)言語のデバッグモードの主な利用シーン
COBOL(コボル)言語の基本的なテストとデバッグモードの使い方について理解いただけたところで、次は具体的な利用シーンについてご紹介したいと思います。
デバッグモードは先ほどご紹介したデータの流れや内容を追いやすくするためにDISPLAY文と組み合わせて利用する事が多いですが、主な利用シーンは以下①~⑤のようになります。
①プログラムの開始・終了時
・どのプログラムで問題が起きているかの切り分けに利用します。特にサブプログラムやパラメタの引き渡し内容の確認に利用する事が多いです。
②条件分岐、繰り返し処理の直前、直後
・条件分岐や繰り返し処理はデータを加工、編集する処理が組み込まれている事が多いことから、その直前直後のデータの値を取得し、その変化が正しいか確認するために利用します。
③レコード件数の確認
・ファイルから情報を1レコードずつ読込み処理する場合に、何件が処理の対象になっているか、また、何件目の処理結果に問題があるのかを確認する際に利用します。
④処理時間の計測
・プログラムの中でどの処理が全体の処理時間に影響を及ぼしているのか確認する際に利用します。プログラム単位で処理時間を比較する際にも利用します。
⑤異常処理の確認
・異常処理は通常発生しないデータが来た場合を想定した処理になっている事が多いため、意図的に異常値を作り出し、処理を流す際に利用します。
では、今回は繰り返し処理にデバッグ用の処理を記述する方法について見ていきましょう。
使用例:
使用例は、WK-SUJIを1ずつ加算していきWK-SUJIが5よりも大きくなった場合に、繰り返し処理を抜け、結果を画面に表示するというプログラムです。通常の処理結果が最後の値しかわからないのに対して、デバッグモードでは値がどのように変化していくか、その流れがよくわかるかと思います。
実行結果(通常):
実行結果(デバッグモード):
COBOL(コボル)言語のデバッグモードを利用する際の基本事項や注意事項
- デバッグ行は正書法(固定形式)の標識領域(7桁目)に「D」を記述して宣言します。
- デバッグ行はデバッグモード時のみ有効です。
- デバッグモードを有効にするためには、コンパイル時にデバッグ用のコンパイラオプションを利用します。
- プログラムの記述方法は、デバッグ行も通常の処理行も違いはありません。
デバッグモードのCOBOL(コボル)プログラム活用法
COBOL(コボル)言語のテストにおけるデバッグモードの基本的な書き方や主な利用シーンについて理解いただけたでしょうか?
最後に活用法として、プログラムの処理時間を計測する処理をご紹介します。この例のようにどのプログラムでも利用できるような共通の処理を予め用意しておく事は、プログラムのテストにおいても生産性と品質の向上につながりますので、しっかり内容を理解して実際のプログラム作成時に活用いただければと思います。
サンプルプログラム:
- IDENTIFICATION DIVISION.
- PROGRAM-ID. DEBUG_SAMPLE03.
- ENVIRONMENT DIVISION.
- DATA DIVISION.
- WORKING-STORAGE SECTION.
- D 01 WK-TIME.
- D 03 HH PIC 9(02).
- D 03 MM PIC 9(02).
- D 03 SS PIC 9(02).
- D 01 START-TIME PIC 9(06) VALUE ZERO.
- D 01 END-TIME PIC 9(06) VALUE ZERO.
- D 01 WK-TIME-9 PIC 9(06) VALUE ZERO.
- PROCEDURE DIVISION.
- D ACCEPT WK-TIME FROM TIME.
- D COMPUTE START-TIME = (HH*3600)+(MM*60)+SS.
- PERFORM 10000 TIMES
- PERFORM 60000 TIMES
- END-PERFORM
- END-PERFORM.
- DISPLAY "処理終了".
- D ACCEPT WK-TIME FROM TIME.
- D COMPUTE END-TIME = (HH*3600)+(MM*60)+SS.
- D COMPUTE WK-TIME-9 = END-TIME - START-TIME.
- D COMPUTE HH = WK-TIME-9/3600.
- D COMPUTE WK-TIME-9 = WK-TIME-9-(HH*3600).
- D COMPUTE MM = WK-TIME-9/60.
- D COMPUTE SS = WK-TIME-9-(MM*60).
- D DISPLAY "処理時間:" HH ":" MM ":" SS.
- STOP RUN.
- END PROGRAM DEBUG_SAMPLE03.
実行結果(通常):
実行結果(デバッグモード):
いかがでしたでしょうか?どんなに注意してプログラムを記述しても、プログラムの中には不具合が潜んでいるものです。
また、それらの不具合を洗い出すためにテストを行いますが、複雑な処理になればなるほど、プログラムソースのチェックや実際の処理の結果を見るだけでは、問題の特定は難しいです。
そういった場合に有効なのが、今回ご紹介したデバッグモードです。デバッグモードを利用する事で、実際のデータの変化を視覚的に確認できるため、不具合の解消に大いに役立ちます。
プログラミング言語の学習を進める際は、実際の処理の書き方だけでなく、このようなテストを効率的に進めるために用意されている機能についても是非学習し、理解を深めていっていただければと思います。
この記事を読んだ人は、こちらの記事も読んでいます
あなたの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句」は便利?使用方法を学びましょう|用語辞典