ここでは、アダプタクラスを使用したプログラムの実行時に出力するメッセージの内容および対処方法について説明します。
実行時のメッセージは、COBOLのUPON SYSERR指定のDISPLAY文と同じ出力先に出力されます。UPON SYSERR指定のDISPLAY文の出力先については、“NetCOBOL ユーザーズガイド”を参照してください。
アダプタクラスはメッセージを出力すると同時に例外オブジェクトを発生させます。アプリケーションで例外処理を記述しているなどの理由で実行時のメッセージを抑止したい場合は、環境変数COBJNI_NOMESSAGEに“YES”を設定することで、抑止することができます。
[参照]“Jアダプタクラスジェネレータ ユーザーズガイド”の“エラー処理”
メッセージの形式
クラス名情報 : メッセージ本文
内容
クラス名情報、エラーが発生したアダプタクラスを示します。クラス名情報の形式は、アダプタクラスの種別によって異なります。
アダプタクラス種別 | 形式 | 補足 | |
---|---|---|---|
クラス/インタフェース | パッケージ名/…/クラス名 | パッケージ名で完全修飾したクラス名です。パッケージ名、クラス名の間は “/”で区切ります。 | |
基本データ型の配列 | boolean | [Z | “[”の数は次元数を表します。たとえば2次元の配列の場合は“[[Z”になります。 |
byte | [B | “[”の数は次元数を表します。 | |
char | [C | “[”の数は次元数を表します。 | |
short | [S | “[”の数は次元数を表します。 | |
int | [I | “[”の数は次元数を表します。 | |
long | [J | “[”の数は次元数を表します。 | |
float | [F | “[”の数は次元数を表します。 | |
double | [D | “[”の数は次元数を表します。 | |
クラス/インタフェースの配列 | [Lパッケージ名/…/クラス名; | “[”の数は次元数を表します。パッケージ名で完全修飾したクラス名を、“L”と“;”ではさみます。 |
プログラマーの処置
JDKまたはJREの環境に誤りがあります。環境変数PATHおよびCOBJNI_CLASSPATHが正しいか、JDKまたはJREのインストールが正しく行われているか、確認してください。
[参照]“Jアダプタクラスジェネレータ ユーザーズガイド”の“JVM-INITメソッド”
または、同一プロセス内の異なるスレッドで、JVM-INITメソッドが複数回呼び出されました。JVM-INITメソッドの替わりにJVM-ATTACHメソッドを使用してください。
[参照]“Jアダプタクラスジェネレータ ユーザーズガイド”の“JVM-ATTACHメソッド”
プログラマーの処置
プログラムでJVM-INITメソッドまたはJVM-ATTACHメソッドを正しく呼び出しているか確認してください。
[参照]“Jアダプタクラスジェネレータ ユーザーズガイド”の“JVM-INITメソッド”および“JVM-ATTACHメソッド”参照)
プログラマーの処置
プログラムでJVM-TERMINATEメソッドまたはJVM-DETACHメソッドを正しく呼び出しているか確認してください。
[参照]“Jアダプタクラスジェネレータ ユーザーズガイド”の“JVM-TERMINATEメソッド”および“JVM-DETACHメソッド”
プログラマーの処置
Jアダプタクラスジェネレータの障害です。資料を採取して技術員(SE)に連絡してください。
プログラマーの処置
Javaのクラス/インタフェース定義に誤りがあります。Javaのクラス/インタフェースを見直してください。
プログラマーの処置
検索パス上で、Javaクラス/インタフェースが見つかりません。環境変数COBJNI_CLASSPATHの値が正しいか確認してください。
[参照]“Jアダプタクラスジェネレータ ユーザーズガイド”の“JVM-INITメソッド”
プログラマーの処置
Java VMでメモリ不足が発生しました。環境変数(COBJNI_MAX_NSTACK、COBJNI_JAVA_STACK、COBJNI_MIN_HEAP、COBJNI_MAX_HEAP)の値を変更して、Java VMに割り当てるメモリを増やしてください。
[参照]“Jアダプタクラスジェネレータ ユーザーズガイド”の“JVM-INITメソッド”
プログラマーの処置
抽象クラス上でコンストラクタを実行しました。アダプタクラス生成後にJavaクラス/インタフェースを変更した可能性があります。Javaのクラス/インタフェースを見直してください。
プログラマーの処置
パラメタに指定したオブジェクトが、そのクラスまたはサブクラスのオブジェクトではありません。J-NARROWメソッドのパラメタを確認してください。
[参照]“Jアダプタクラスジェネレータ ユーザーズガイド”の“J-NARROWメソッド”
プログラマーの処置
アダプタクラス生成後にJavaクラス/インタフェースを変更した可能性があります。Javaのクラス/インタフェースを見直してください。
プログラマーの処置
Jアダプタクラスジェネレータの障害です。資料を採取して技術員(SE)に連絡してください。
プログラマーの処置
アダプタクラス生成後にJavaクラス/インタフェースを変更した可能性があります。Javaのクラス/インタフェースを見直してください。
プログラマーの処置
Jアダプタクラスジェネレータの障害です。資料を採取して技術員(SE)に連絡してください。
プログラマーの処置
添字の値が 0 ~(要素数-1)の範囲にありません。正しい添字を指定してください。
プログラマーの処置
配列要素に、誤ったクラスのオブジェクトを設定しようとしました。正しいクラスのオブジェクトを設定してください。設定できるのは、配列要素クラスのオブジェクトまたはそのサブクラスのオブジェクトです。
[参照]“Jアダプタクラスジェネレータ ユーザーズガイド”の“配列クラス”
プログラマーの処置
Jアダプタクラスジェネレータの障害です。資料を採取して技術員(SE)に連絡してください。
プログラマーの処置
Java VMが実行時エラーを検出しました。例外名および補足情報からエラーの原因を特定し、原因を取り除いてください。
プログラマーの処置
Jアダプタクラスジェネレータの障害です。資料を採取して技術員(SE)に連絡してください。
対処
アダプタクラスのjava-lang-Stringクラスのメソッド(GET-STRING-X、GET-STRING-N、NEW-STRING-XまたはNEW-STRING-N)を使用したプログラム中で、データ項目のエンコード方式で文字として保証されている範囲外のデータが使用されました。
メッセージに表示されたエラー詳細値を“表6.1 文字コードの変換に失敗した場合のエラー詳細値”の説明を参考にエラーの原因を取り除いて、再度実行してください。
エラー詳細値 | エラーの意味 | 対処 |
---|---|---|
7 | 変換先コード列格納域が不足しました。 | 変換先のデータ項目の長さが十分であるか確認してください。 |
12 | 領域不足が発生しました。 | “付録D 注意事項”の“COBOLプログラムの実行時に仮想メモリ不足が発生する場合”を参照して対処してください。 |
22 | 変換元コード列の終りに、不完全なコードが現れました。 | 変換元の文字データが転記、部分参照などで不完全な状態になっていないか確認してください。 |
42 | 変換元コード列中に、変換元コード系に存在しないコードが現れました。 | 変換元のデータがエンコード方式の範囲外です。エンコード方式の異なるデータ項目を重ね合わせ(REDEFIENS句)で使用していないか、文字コード以外のバイナリデータを格納していないか確認してください。 |
コード変換にInterstage Charset Managerを使用している場合は、「Interstage Charset Manager 使用手引書標準コード変換機能編」を参照してエラーの原因を確認してください。
上記以外のエラーコードについては、システムのエラーコードを参照してください。
参照
“NetCOBOL ユーザーズガイド”の“付録A 翻訳オプション” - “CONVCHAR(コンパイラが使用するコード変換ライブラリ)”
“NetCOBOL ユーザーズガイド”の“付録C 環境変数情報” - “@CBR_CONVERT_CHARACTER(コード変換ライブラリの指定)”