COBOL製品技術情報(FAQ)


数字フィールドに数値以外が転記された場合にエラーにする方法

【事象】
メインフレーム上の COBOL では、X タイプ定義から 9 タイプ定義に移送する処理で、誤って数値以外が移送元に設定されていた場合、0C7 で ABEND します。
同じようにエラーにする方法を教えて欲しい。

【対応方法】
Visual COBOL のデフォルト設定ではエラーになりませんが、コンパイラ指令 CHECKNUM を指定することでランタイムエラー 163 を発生させることができます。
詳細は、オンラインマニュアル「CHECKNUM」をご参照ください。

【確認方法】

サンプルプログラム

       WORKING-STORAGE SECTION.
       01  WK-DATA.
           03  WK-XX    PIC XX.
           03  WK-99    PIC 99.
       PROCEDURE DIVISION.
       MAIN.
           MOVE  SPACE  TO  WK-XX
           MOVE  WK-XX  TO  WK-99
           STOP RUN.
  • Windows での例

    コンパイルを行う cobol コマンドに CHECKNUM 指令を追加してコンパイルし、実行します。

     c:\work>cobol XXXXX.cbl GNT CHECKNUM;
     c:\work>run XXXXX.gnt
     目的コード エラー: ファイル 'C:\Work\XXXXXX.gnt'
     エラーコード: 163, pc=0, call=1, seg=0
     163 数字項目に不正な文字がある (C:\Work\XXXXX.cbl 内, 8 行)
  • Linux での例

    コンパイルを行う cob コマンドの -N フラグに CHECKNUM 指令を追加してコンパイルし、実行します。

     $ cob -u XXXXX.cbl -N CHECKNUM
     $ cobrun XXXXX.gnt
     目的コード エラー: ファイル '/home/foo/XXXXX.gnt'
     エラーコード: 163, pc=0, call=1, seg=0
     163  数字項目に不正な文字がある (/home/foo/XXXXX.cbl 内, 8 行)