カテゴリ: COBOL 更新日: 2025/06/24

COBOLのエラーハンドリングをやさしく解説!ON SIZE ERRORの基本を理解しよう

エラーハンドリングの基本(ON SIZE ERRORなど)
エラーハンドリングの基本(ON SIZE ERRORなど)

先生と生徒の会話形式で理解しよう

生徒

「COBOLのプログラムでエラーが起きたときは、どうやって対処するんですか?」

先生

「COBOLでは、エラーが起こったときに特別な処理を行うための仕組みがあります。例えばON SIZE ERRORという構文を使って、安全に処理を続けることができるんです。」

生徒

「それを使うと、プログラムが止まったりしないんですか?」

先生

「そのとおりです。では、COBOLのエラーハンドリングの基本を一緒に学んでいきましょう!」

1. エラーハンドリングとは?

1. エラーハンドリングとは?
1. エラーハンドリングとは?

エラーハンドリングとは、プログラムを実行しているときに予期しない問題(エラー)が発生した場合、それに適切に対応するための処理のことです。

たとえば、100桁の数字を扱える場所に、101桁の数字を入れようとした場合、プログラムがエラーになります。このようなとき、何も対策をしていないと、プログラムは止まってしまいます。

しかし、COBOLではエラーが起きたときに特定の処理を行う方法が用意されており、そのひとつがON SIZE ERRORという構文です。

2. ON SIZE ERRORとは?

2. ON SIZE ERRORとは?
2. ON SIZE ERRORとは?

ON SIZE ERRORは、主にCOMPUTE(計算)やADD(加算)などの算術処理で使われます。計算の結果が、変数に収まらないサイズになってしまったときに実行される処理を指定できます。

例えるなら、「コップに水を入れていたら、あふれそうになったときにアラームを鳴らして水を止める」ようなイメージです。

これにより、予期しない計算結果による不具合を防ぎ、エラーが起きたことをユーザーに知らせたり、安全な代替処理を行ったりできます。

3. 基本的なON SIZE ERRORの書き方

3. 基本的なON SIZE ERRORの書き方
3. 基本的なON SIZE ERRORの書き方

まずはCOMPUTE文でON SIZE ERRORを使う基本的な書き方を見てみましょう。


WORKING-STORAGE SECTION.
01  NUM1         PIC 9(3) VALUE 999.
01  NUM2         PIC 9(3) VALUE 2.
01  RESULT       PIC 9(3).

PROCEDURE DIVISION.
    COMPUTE RESULT = NUM1 * NUM2
        ON SIZE ERROR
            DISPLAY "エラー発生:結果が大きすぎます。"
        NOT ON SIZE ERROR
            DISPLAY "計算結果:" RESULT
    END-COMPUTE.
    STOP RUN.

この例では、999 × 2 = 1998となり、RESULTには入りきりません(3桁まで)。そのため、ON SIZE ERRORが実行されて、エラーメッセージが表示されます。

実行結果:


エラー発生:結果が大きすぎます。

4. ON SIZE ERRORを使わないとどうなる?

4. ON SIZE ERRORを使わないとどうなる?
4. ON SIZE ERRORを使わないとどうなる?

ON SIZE ERRORを使わないと、エラーが起きたときにRESULTの中身が正しくないまま処理が続いてしまう可能性があります。これはとても危険です。

たとえば、銀行の口座残高を計算しているときに、正しくない金額が表示されたら大問題です。ですから、エラーハンドリングはCOBOLプログラムの安全性を高めるうえでとても大切なのです。

5. ADD文でもON SIZE ERRORは使える

5. ADD文でもON SIZE ERRORは使える
5. ADD文でもON SIZE ERRORは使える

ADD(足し算)でもON SIZE ERRORを使えます。以下の例をご覧ください。


WORKING-STORAGE SECTION.
01  A            PIC 9(3) VALUE 900.
01  B            PIC 9(3) VALUE 200.
01  TOTAL        PIC 9(3).

PROCEDURE DIVISION.
    ADD A TO B GIVING TOTAL
        ON SIZE ERROR
            DISPLAY "合計が大きすぎます。"
        NOT ON SIZE ERROR
            DISPLAY "合計は:" TOTAL
    END-ADD.
    STOP RUN.

900 + 200 = 1100で、3桁に収まりません。なので、エラーメッセージが表示されます。


合計が大きすぎます。

6. ON SIZE ERRORとNOT ON SIZE ERRORの使い分け

6. ON SIZE ERRORとNOT ON SIZE ERRORの使い分け
6. ON SIZE ERRORとNOT ON SIZE ERRORの使い分け

ON SIZE ERRORは「エラーが起きたとき」の処理、NOT ON SIZE ERRORは「エラーが起きなかったとき」の処理を記述します。

両方セットで書いておくと、安全かつ柔軟にプログラムの流れをコントロールできます。

7. 実用的な使い方の工夫

7. 実用的な使い方の工夫
7. 実用的な使い方の工夫

実際の業務プログラムでは、エラーが発生した場合、ログに記録したり、データベースに保存したりするケースもあります。最初はDISPLAYで画面に表示するだけでも十分ですが、ゆくゆくはエラー内容を別の変数に格納して、あとでまとめて出力するような仕組みに発展させることも可能です。

また、エラーを発生させないために、変数のサイズを適切に設計することも大切です。入力チェックや最大値チェックと組み合わせることで、より堅牢なプログラムが作れます。

8. ON SIZE ERRORを使うときの注意点

8. ON SIZE ERRORを使うときの注意点
8. ON SIZE ERRORを使うときの注意点
  • ON SIZE ERRORは数値演算専用であり、ファイル処理や文字列操作では使えません。
  • 必ず変数の桁数を意識してプログラムを書くようにしましょう。
  • END-COMPUTEEND-ADDなどの終端を忘れずに記述することが重要です。
カテゴリの一覧へ
新着記事
COBOLの変数名の付け方を解説!初心者でもわかる命名規則とコツ
C#のbreakとcontinueの使い方!ループ制御の基本テクニック
COBOLのFILLERの使い方とは?未使用領域を上手に管理する基本テクニック
C#のforeach文の基本!配列やコレクションを簡単に繰り返し処理する方法
人気記事
No.1
Java&Spring記事人気No1
COBOLのDISPLAY文の使い方を完全ガイド!初心者でもわかる出力方法
No.2
Java&Spring記事人気No2
C#のwhile文の使い方!条件付きループを基礎から学ぼう
No.3
Java&Spring記事人気No3
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.4
Java&Spring記事人気No4
COBOLのINDEXED BY句を使ったインデックス管理の基本をやさしく解説!