OFCOBOLランタイムエラー

本章では、OFCOBOLで発生するランタイムエラーについて説明します。

1. 概要

OFCOBOLコンパイラーによってコンパイルされたファイルは、実行ファイルや共有ライブラリ・ファイルとして使用されます。

そのとき、OFCOBOLランタイム・ライブラリによって実行されたCOBOLファイルは、ランタイム例外に対するエラーメッセージを出力します。

2. ランタイムエラー

以下は、OFCOBOLで発生するランタイムエラーと説明です。

エラーメッセージ 説明

TEXTCON is not linked

TEXTCONをリンクせずに実行する場合に発生します。

openframe_date invalid

OpenFrameから取得した日付形式が無効な場合に発生します。

clock_gettime() failed

clock_gettime()を使用してOpenFrameからOPENFRAME_TIMEを取得できなかった場合に発生します。

Packed decimal data’s hexa value is [HEXA]

Usage COMP-3(Packed Decimal)にパック10進数以外の値が存在する場合、値を取得すると発生します。

以下のようにパック10進数形式でない値をCOMP-3にMOVEした場合、その値をアクセスする際にアサーションが発生します。

01 VAR.

05 VAR-2 PIC 9999 COMP-3.

01 VAR-3 PIC 9999 COMP.

MOVE X'AAAAAA' TO VAR.

VE VAR-2 TO VAR-3.

--enable-hexa-packedと—​expandedオプションを使用する場合は、パック10進数のテーブルが異なるため、アサーションが発生しません。

" [NAME]'s index is over than max min range (index : [NUM] )

OCCURS DEPENDING ON文の使用時に最大値・最小値の範囲外のインデックス値が与えられた場合に発生します。

インデックス・チェックは、OFCOBOLのコンパイル時に—​check-indexオプションを使用した場合にのみアサーションが発生し、オプションを使用しなかった場合は警告メッセージのみ出力されます。

コンパイル時に—​check-indexオプションを使用した場合、以下のようなコードはアサーションが発生します。

01 VA PIC 9(4) OCCURS 2 TIMES.

MOVE 123 TO VA(3).

Reference-modifier’s count is bigger than taget size

参照修飾子の数がターゲットのサイズよりも大きい場合に発生します。オーバーフローが発生する可能性があることを警告するメッセージです。

--check-indexオプションを使用した場合にのみアサーションが発生します。

01 VAR PIC XXXX.

MOVE "TEST" TO VAR(1:7).

Can’t find $OPENFRAME_HOME

環境変数にOPENFRAME_HOMEが指定されていない場合に発生します。

Can’t find libofdebug.so

ofdebugライブラリが見つからない場合に発生します。

Divisor is zero

Divisor(除数)が0の場合に発生します。

--expandedオプションを使用した場合は、0で割り算しても正常に動作します。結果値は、0で割り当てます。

01  A PIC 9999 VALUE 0.

01  B PIC 9999 VALUE 10.

01  C PIC 9999 VALUE 0.

COMPUTE A = B / C.

OFCOBOL PERFORM OVERFLOW ERROR

PERFORM文の使用時にPERFORMを終了(exit)せずにネストして継続使用する場合に発生します。(デフォルトの最大スタック: 32)

EntryPoint [NAME] is not Found

CALL文の実行時に呼び出し先のプログラムが見つからない場合に発生します。

Can’t find PROSORT_HOME

環境変数にPROSORT_HOMEが指定されていない場合に発生します。