付録B.3 COBOL85版Cosminexus連携の移行性と互換性
COBOL85版Cosminexus連携の移行性と互換性について説明します。
-
COBOL2002 Cosminexus連携機能で生成したCOBOLアクセス用Bean(.java)は,COBOL85版Cosminexus連携で使用できません。
-
COBOL85版Cosminexus連携で生成したCOBOLアクセス用BeanをCOBOL2002 Cosminexus連携機能向けに再生成する場合,COBOLアクセス用Beanを使用しているJavaプログラムも再コンパイルしてください。
-
COBOL2002 Cosminexus連携機能では,setterで不当データを設定した際に発生する例外の発生個所が変わります。例外の発生個所を次に示します。
-
COBOL85版Cosminexus連携:callメソッド
-
COBOL2002 Cosminexus連携機能:setterメソッド
setterとcallCOBOLを同じtry-catchでキャッチしている場合,COBOL85版Cosminexus連携では,setterで発生したエラーかcallCOBOLで発生したエラーか区別できませんが,COBOL2002 Cosminexus連携機能では区別できます。
Javaプログラムの変更例を次に示します。
(変更前)
: try { bean.setP_name(""); bean.setP_address(""); callCOBOL(); } catch ( J2CBException e ) { : /* setter,callCOBOLどちらかで発生したエラー */ }
(変更後)
: try { bean.setP_name(""); bean.setP_address(""); } catch ( J2CBException e ) { : /* setterで発生したエラー */ } try { callCOBOL(); } catch ( J2CBException e ) { : /* callCOBOLで発生したエラー */ }
-
-
setterの引数にCOBOL引数定義と対応しないオブジェクトを指定した場合※1,COBOL85版Cosminexus連携とCOBOL2002 Cosminexus連携機能で動作が異なります。
-
COBOL85版Cosminexus連携:callCOBOLメソッドで予期しないエラーとなるか,例外にならないで続行※2することがあります。
-
COBOL2002 Cosminexus連携機能:setterメソッドで例外となります。「J2CByyy2014」のメッセージが出力されます。メッセージの詳細については,マニュアル「COBOL2002 Cosminexus連携機能ガイド」を参照してください。
COBOL85版Cosminexus連携で稼働済みのJavaプログラムをCOBOL2002環境に移行する場合,このケースに該当しないか確認してください。該当する場合は,COBOLで定義した属性に対応するオブジェクトを,setterの引数に指定してください。
- 注※1
-
USAGE COMP-1(単精度浮動小数点項目)で定義した引数に,Stringオブジェクトで値を設定しようとした場合などです。
COBOLで定義した属性に対応するオブジェクトの一覧については,COBOLアクセス用Bean生成ツールの「ステップ2/3画面」を参照してください。COBOLアクセス用Bean生成ツールについては,マニュアル「COBOL2002 Cosminexus連携機能ガイド」を参照してください。
- 注※2
-
例えば,小数点のない2進2バイトのデータ項目にsetterで値を設定する場合,setterの引数には通常Shortオブジェクトを指定します。しかし,setterの引数にIntegerオブジェクトを指定すると,誤った値が設定されることがあります。
-
-
例外発生時の例外情報コードで,COBOL85版Cosminexus連携と異なるコードがあります。