COBOL2002 Javaプログラム呼び出し機能ガイド
Javaプログラム呼び出し機能で出力するデバッグ情報の種類と出力フォーマットについて説明します。
ここでは,出力フォーマットに次の表記を使用します。
デバッグ情報ファイルには,出力日時とデバッグ情報を1レコードとするデバッグ情報レコードが出力されます。
Javaプログラムを呼び出すCOBOLプログラムとデバッグ情報ファイルの出力例を次に示します。
*> Javaのsampleクラスのクラス参照を取得する --------------------- CALL 'CBLJGETCLASS' USING CBLJENV sample CLASSREF. *> Javaのsampleクラスのインスタンスを生成する ------------------- CALL 'CBLJNEW' USING CBLJENV CLASSREF NO-ARG OBJREF. *> SampleFieldに値を設定する ------------------------------------ MOVE 333 TO ARG1-01-AREA. CALL 'CBLJSETFIELD' USING CBLJENV OBJREF SampleField ARG1-01. *> SampleMethodメソッドを呼び出す ------------------------------- MOVE 4 TO ARG1-01-AREA. MOVE 'サンプル' TO WORK. CALL 'CBLJXTOSTRING' USING CBLJENV WORK WORK-L ARG1-02-AREA. COMPUTE ARGPTR(1) = FUNCTION ADDR( ARG1-01 ). COMPUTE ARGPTR(2) = FUNCTION ADDR( ARG1-02 ). COMPUTE ARGPTR(3) = ZERO. CALL 'CBLJINVOKE' USING CBLJENV OBJREF SampleMethod ARG-LIST RTN1. CALL 'CBLJDISPLAY' USING CBLJENV RTN1-AREA. *> Javaのインスタンスを解放する --------------------------------- CALL 'CBLJRELEASE' USING CBLJENV OBJREF. *> Javaの実行環境を削除する ------------------------------------- CALL 'CBLJFINALIZE' USING CBLJENV. |
ここでは,デバッグ情報ファイルに出力されるデバッグ情報の種類と出力フォーマットについて説明します。
デバッグ情報ファイルには,デバッグ情報がデバッグ情報レコードとして出力されます。
出力されるデバッグ情報を次の表に示します。
表5-1 出力されるデバッグ情報
項番 | デバッグ情報 | 出力情報 |
---|---|---|
1 | サービスルーチン呼び出し情報 | サービスルーチンを呼び出したCOBOLプログラムの情報と指定した引数の内容が出力されます。 |
2 | サービスルーチン返却値情報 | サービスルーチンの戻り値と更新した引数の内容が出力されます。 |
3 | オブジェクト参照解放漏れ情報 | オブジェクト参照の解放漏れが通知されます。 |
4 | Java例外情報 | Java例外発生時の詳細情報が出力されます。 |
5 | 実行時エラー情報 | 実行時エラー発生時の詳細情報が出力されます。 |
6 | ユーザデバッグ情報(文字列) | プログラムで指定したデバッグ情報(文字列)が出力されます。 |
7 | ユーザデバッグ情報(メモリ) | プログラムで指定したデバッグ情報(メモリ領域の内容)が出力されます。 |
8 | 実行環境情報 | Javaプログラム呼び出し機能の実行環境情報が出力されます。 |
デバッグ情報レコードのフォーマットを次の図に示します。
図5-1 デバッグ情報レコードのフォーマット
デバッグ情報レコードヘッダとして出力される情報を次に示します。
それぞれのデバッグ情報で出力される情報について説明します。
各項に示すフォーマットは,デバッグ情報レコードのデバッグ情報部分だけを示します。一つのデバッグ情報で2レコード以上のレコードが出力される場合があります。この場合,それぞれの行にデバッグ情報レコードヘッダが出力されます。
また,デバッグ情報にはメモリ領域の内容が領域のダンプリストのフォーマットで出力されることがあります。出力フォーマットについては,「(3) データの種類と出力フォーマット」の「(l) 領域のダンプリストの出力フォーマット」を参照してください。
サービスルーチンが呼び出されたとき,サービスルーチンを呼び出したCOBOLプログラムの情報と指定した引数の内容が出力されます。
#△COBOLプログラム名△(行番号/カラム位置) argument-1(引数1のデータ型):△引数1の内容 : argument-n(引数nのデータ型):△引数nの内容 |
サービスルーチンの処理が終了するとき,サービスルーチンの戻り値とサービスルーチンが更新した引数の内容が出力されます。
#△return(戻り値) argument-x(引数xのデータ型):△引数xの内容 : |
CBLJFINALIZEサービスルーチン実行時,オブジェクト参照の解放漏れがある場合,解放されていないオブジェクト参照のアドレスが通知されます。解放漏れの個数だけレコードが出力されます。
Unreleased△object△reference△アドレス |
Java例外発生時の詳細情報が出力されます。
Handled△Java△Exception: CBLJEXCEPTION=例外オブジェクトのアドレス Java例外の説明 JNI関数名(引数情報) |
実行時エラー発生時の詳細情報が出力されます。
KCCCnnnnR-x△詳細メッセージ |
CBLJDEBUGSTRINGサービスルーチンを呼び出したとき,ユーザデバッグ情報として,指定された文字列がデバッグ情報ファイルに出力されます。
#△COBOLプログラム名△(行番号/カラム位置) ユーザデバッグ情報 |
CBLJMEMDUMPサービスルーチンを呼び出したとき,指定されたメモリ領域のダンプリストがデバッグ情報ファイルに出力されます。
#△COBOLプログラム名△(行番号/カラム位置) 領域のダンプリスト |
Javaプログラム呼び出し機能の実行環境情報が出力されます。CBLJINITIALIZEサービスルーチンで実行環境が構築されたあとに出力されます。
Environment:△環境変数名=環境変数の値 : |
ここでは,デバッグ情報で出力される引数などのデータの種類の出力フォーマットについて説明します。
データの内容は,出力されるデータの種類(データ型)によって出力フォーマットが異なります。
デバッグ情報に出力されるデータの種類を次の表に示します。
表5-2 デバッグ情報に出力されるデータの種類
項番 | データの種類(データ型) | 「データ型」として出力される文字列 |
---|---|---|
1 | CBLJENV集団項目 | CBLJENV |
2 | 動的長基本項目/名前型集団項目 | CBLJNAME |
3 | パラメタ型集団項目 | CBLJPARAM |
4 | 引数リスト型集団項目 | CBLJLIST |
5 | クラス参照 | CLASSREF |
6 | オブジェクト参照 | OBJECTREF |
7 | 英数字項目 | ALNUM |
8 | 日本語項目 | JPN |
9 | 数字項目(4バイト2進形式) | BIN4 |
10 | Java型名 | JAVATYPE |
11 | ポインタ項目(配列アドレス) | ADDR |
CBLJENV集団項目は次のフォーマットで出力されます。
領域のダンプリスト ▽option-1:△Java VM起動オプション1 : ▽option-n:△Java VM起動オプションn |
名前型集団項目は次のフォーマットで出力されます。
'名前文字列' |
パラメタ型集団項目は,パラメタ型集団項目中のJavaの型を表す文字に従ってデータの内容が出力されます。
Javaの型:△データの内容 |
表5-3 パラメタ型集団項目中のJavaの型とデータの内容
項番 | Javaの型を表す文字とJavaの型 | 「データの内容」に出力される内容 |
---|---|---|
1 | V (void) | (出力しない) |
2 | B (byte) | 領域(1バイト)の内容(16進形式)△(値) |
3 | C (char) | 領域(2バイト)の内容(16進形式)△(値) |
4 | S (short) | 領域(2バイト)の内容(16進形式)△(値) |
5 | I (int) | 領域(4バイト)の内容(16進形式)△(値) |
6 | J (long) | 領域(8バイト)の内容(16進形式)△(値) |
7 | F (float) | 領域(4バイト)の内容(16進形式)△(値)※ |
8 | D (double) | 領域(8バイト)の内容(16進形式)△(値)※ |
9 | Z (boolean) | 領域(1バイト)の内容(16進形式)△(値) |
10 | T (クラス参照) | 「(f) クラス参照のポインタ項目」を参照してください。 |
11 | L (オブジェクト参照) | 「(g) オブジェクト参照のポインタ項目」を参照してください。 |
12 | [ (配列オブジェクト) |
引数リスト型集団項目は,パラメタ型集団項目を指すアドレス値の配列です。配列の終端まで出現順序で配列の要素(パラメタ型集団項目)のデータの内容が出力されます。
[出現順序]△パラメタ型集団項目で出力する内容 |
クラス参照を示すポインタ項目は,アドレスとクラス名が出力されます。
アドレス[クラス名] |
オブジェクト参照を示すポインタ項目は,アドレスが出力されます。
アドレス[クラス名] |
英数字項目および日本語項目は,サービスルーチンに同時に指定した文字数(数字項目の値)分の領域のダンプリストが出力されます。
領域のダンプリスト |
数字項目(2進形式)は,指定した数字項目の値とメモリ領域の内容(16進形式)が出力されます。
領域の内容(16進形式)△(値) |
Java型名は,指定されたJava型名が出力されます。フォーマットについては,「(d) パラメタ型集団項目」のJavaの型を参照してください。
ポインタ項目は,アドレス値が出力されます。
アドレス |
領域のダンプリストを出力する場合,該当するデータが示すメモリ領域の内容が16進形式で出力されます。
△△アドレス:△メモリ領域の内容(16進形式)△'メモリの内容(文字列)' |
メモリ領域の内容は1レコードに16バイトずつ出力されます。出力されるサイズが16バイトを超える領域の場合は,16バイトごとに複数のレコードが出力されます。
また,16バイトに満たない場合,メモリ領域の内容(16進形式)の残りの領域には半角空白が出力され,メモリ領域の内容(文字列)には領域の終端の位置に「'」が出力されます。
All Rights Reserved. Copyright (C) 2014, 2016, Hitachi, Ltd.