COBOL2002　Cosminexus連携機能ガイド

手引・操作書

3021-3-606-50

前書き

対象製品

P-1M36-1241 COBOL2002 Net Server Suite(64) 04-70（適用OS：AIX V7.1，AIX V7.2，AIX 7.3）

P-1M36-2241 COBOL2002 Net Server Runtime(64) 04-70（適用OS：AIX V7.1，AIX V7.2，AIX 7.3）

P-2636-2344 COBOL2002 Net Developer 04-70（適用OS：Windows 7，Windows 8.1，Windows 10，Windows 11，Windows Server 2008 R2，Windows Server 2012，Windows Server 2012 R2，Windows Server 2016，Windows Server 2019，Windows Server 2022）

P-2436-5344 COBOL2002 Net Server Runtime 04-70（適用OS：Windows Server 2008 R2，Windows Server 2012，Windows Server 2012 R2，Windows Server 2016，Windows Server 2019，Windows Server 2022）

P-2436-6344 COBOL2002 Net Server Suite 04-70（適用OS：Windows Server 2008 R2，Windows Server 2012，Windows Server 2012 R2，Windows Server 2016，Windows Server 2019，Windows Server 2022）

P-2636-4344 COBOL2002 Net Client Suite 04-70（適用OS：Windows 7，Windows 8.1，Windows 10，Windows 11）

P-2936-2344 COBOL2002 Net Developer(64) 04-70（適用OS：Windows 7(x64)，Windows 8.1(x64)，Windows 10(x64)，Windows 11，Windows Server 2008 R2， Windows Server 2012，Windows Server 2012 R2，Windows Server 2016，Windows Server 2019，Windows Server 2022）

P-2936-5344 COBOL2002 Net Server Runtime(64) 04-70（適用OS：Windows Server 2008 R2，Windows Server 2012，Windows Server 2012 R2，Windows Server 2016，Windows Server 2019，Windows Server 2022）

P-2936-6344 COBOL2002 Net Server Suite(64) 04-70（適用OS：Windows Server 2008 R2，Windows Server 2012，Windows Server 2012 R2，Windows Server 2016，Windows Server 2019，Windows Server 2022）

P-9W36-1241 COBOL2002 Net Server Suite(64) 04-70（適用OS：Linux Server 7 (64-bit x86_64)，Linux Server 8 (64-bit x86_64)，Linux Server 9 (64-bit x86_64)）

P-9W36-2241 COBOL2002 Net Server Runtime(64) 04-70（適用OS：Linux Server 7 (64-bit x86_64)，Linux Server 8 (64-bit x86_64)，Linux Server 9 (64-bit x86_64)）

P-2636-7344 COBOL2002 Developer Professional 04-70（適用OS：Windows 7，Windows 8.1，Windows 10，Windows 11，Windows Server 2008 R2，Windows Server 2012，Windows Server 2012 R2，Windows Server 2016，Windows Server 2019，Windows Server 2022）

P-2936-7344 COBOL2002 Developer Professional(64) 04-70（適用OS：Windows 7(x64)，Windows 8.1(x64)，Windows 10(x64)，Windows 11，Windows Server 2008 R2，Windows Server 2012，Windows Server 2012 R2，Windows Server 2016，Windows Server 2019，Windows Server 2022）

これらのプログラムプロダクトのほかにもこのマニュアルをご利用になれる場合があります。詳細は「リリースノート」でご確認ください。

輸出時の注意

本製品を輸出される場合には、外国為替及び外国貿易法の規制並びに米国輸出管理規則など外国の輸出関連法規をご確認の上、必要な手続きをお取りください。

なお、不明な場合は、弊社担当営業にお問い合わせください。

商標類

HITACHI，Cosminexus，uCosminexusは，株式会社 日立製作所の商標または登録商標です。

AMDは，Advanced Micro Devices, Inc.の商標です。

IBMおよびAIXは，世界の多くの国で登録された International Business Machines Corporation の商標です。

Intelは，Intel Corporation またはその子会社の商標です。

Linuxは，Linus Torvalds氏の米国およびその他の国における登録商標です。

Microsoft，Windows，Windows Serverは，マイクロソフト 企業グループの商標です。

Oracle(R)，Java，MySQL及びNetSuiteは，Oracle，その子会社及び関連会社の米国及びその他の国における登録商標です。

Red Hat, and Red Hat Enterprise Linux are registered trademarks of Red Hat, Inc. in the United States and other countries. Linux(R) is the registered trademark of Linus Torvalds in the U.S. and other countries.

Red Hat，およびRed Hat Enterprise Linuxは，米国およびその他の国におけるRed Hat, Inc.の登録商標です。Linux(R)は，米国およびその他の国におけるLinus Torvalds氏の登録商標です。

UNIXは，The Open Groupの登録商標です。

その他記載の会社名，製品名などは，それぞれの会社の商標もしくは登録商標です。

発行

2024年4月　3021-3-606-50

著作権

All Rights Reserved. Copyright (C) 2017, 2024, Hitachi, Ltd.

変更内容

変更内容（3021-3-606-50）　COBOL2002 Net Server Suite(64) 04-70，COBOL2002 Net Server Runtime(64) 04-70

追加・変更内容

変更個所

次の製品の適用OSに「AIX 7.3」を追加した。

P-1M36-1241 COBOL2002 Net Server Suite(64)

P-1M36-2241 COBOL2002 Net Server Runtime(64)

−

単なる誤字・脱字などはお断りなく訂正しました。

はじめに

このマニュアルは，次に示すプログラムプロダクトのCosminexus連携機能について説明したものです。

P-1M36-1241 COBOL2002 Net Server Suite(64)

P-1M36-2241 COBOL2002 Net Server Runtime(64)

P-2636-2344 COBOL2002 Net Developer

P-2436-5344 COBOL2002 Net Server Runtime

P-2436-6344 COBOL2002 Net Server Suite

P-2636-4344 COBOL2002 Net Client Suite

P-2936-2344 COBOL2002 Net Developer(64)

P-2936-5344 COBOL2002 Net Server Runtime(64)

P-2936-6344 COBOL2002 Net Server Suite(64)

P-9W36-1241 COBOL2002 Net Server Suite(64)

P-9W36-2241 COBOL2002 Net Server Runtime(64)

P-2636-7344 COBOL2002 Developer Professional

P-2936-7344 COBOL2002 Developer Professional(64)

上記のプログラムプロダクトの適用OSと，COBOL2002 Cosminexus連携機能の適用OSには，一部相違点があります。

適用OSの相違点，および前提ソフトウェアの詳細については，「リリースノート」を参照してください。

このマニュアルでは，次に示す製品を総称して，Cosminexusと表記します。

Cosminexus Application Server

Cosminexus Developer

対象読者

Java言語とCOBOL言語について基本的な知識を持っていて，両言語の通信を簡単に実現したい方を対象としています。

このマニュアルで使用する記号

このマニュアルで使用する記号を次に示します。

記号

意味

…

記述が省略されていることを意味する。

この記号の直前に示された項目を繰り返して複数個指定できる。

下線

括弧で囲まれた複数の項目のうち1項目に対して使用され，括弧内のすべてを省略したときにシステムがとる標準値を意味する。

｜

横に並べられた複数の項目に対して項目間の区切りを示し，「または」を意味する。

［　］

ウィンドウのメニューバーから選択するメニュー，コマンド，またはボタンを意味する。

1　Cosminexus連携機能の概要

この章では，COBOLで作成したプログラム（以降，COBOL UAPと呼びます）をCosminexusアプリケーションサーバから利用する場合のCosminexus連携機能の特長と構成について説明します。

これ以降，Cosminexus連携機能をCOBOLアクセスと略名で表記しています。

1.1　Cosminexus連携機能とは

Cosminexus連携機能では，CosminexusのJavaプログラムから，COBOLで作成したプログラムを呼び出す機能を提供します。

Cosminexus連携機能で使用できるCosminexusの製品を次に示します。

Cosminexus Application Server

Cosminexus Developer

Cosminexus連携機能の特長を次に示します。

JavaアプリケーションプログラムとCOBOLで作成したUAPとで通信できるようになります。

COBOL UAPをJavaBeansとして動作させる機能とEnterprise Beanとして動作させる機能（ステートフルセッションBeanだけ対応）の二つを提供します。

Cosminexus連携機能が提供するライブラリ（以降，COBOLアクセス用ライブラリと呼びます）と開発ツールで作成したCOBOLアクセス用Beanを使用することで，既存のCOBOL UAPに修正を加えることなくServletやJSPなどのJavaプログラムから通信できます。

Cosminexusアプリケーションサーバ上で，COBOLで作成したUAPをEnterprise Beanとして通信できます。

注意事項

Javaプログラム呼び出し機能を使用して呼び出したJavaプログラムから，同じスレッド内でCOBOLプログラムを呼び出すことはできません。COBOLプログラムを別プロセスで呼び出すなどの対処をしてください。Javaプログラム呼び出し機能については，マニュアル「COBOL2002 Javaプログラム呼び出し機能ガイド」を参照してください。

1.2　Cosminexusでの位置づけ

CosminexusでのCOBOLプログラムの位置づけについて説明します。

1.2.1　JavaBeanの場合

Cosminexus連携機能は，JavaとNative環境をつなぐJNI （Java Native Interface）に特殊なラッピングをすることで，Java UAPからCOBOL UAPへの通信を実現します。

COBOLアクセス用Bean生成ツールは，開発環境でCOBOLアクセス用Beanを開発するときに，Java環境からJNIを経由してCOBOL UAPにアクセスするためのCOBOLアクセス用Beanを生成するウィザードを提供して，簡単に開発できるよう支援します。

COBOLアクセス用ライブラリは，Java UAPからCOBOL UAPへのリクエストをJNI経由で通信させるための実行環境です。

Java UAPの実際のユーザインタフェースは，直接JNIにアクセスするのではなくCOBOLアクセス用Beanのメソッドによるデータの受け渡しによってCOBOL UAPとの通信を実現します。

COBOL UAPをJavaBeansとして作成する場合のCosminexusでの位置づけを図1-1に示します。

図1‒1　JavaBeans対応COBOLアクセスのCosminexusでの位置づけ

開発環境でCOBOLアクセスBeanを生成し，その生成したCOBOLアクセスBeanをCosminexus実行環境に配置することで，COBOL UAPを呼び出すことができます。

開発環境はWindowsだけで，実行環境はWindowsおよびUNIXになります。

UNIXでCOBOLアクセス用Beanを実行させる場合でも，Windows上でCosminexus連携機能が提供するCOBOLアクセス用Bean生成ツールを使ってCOBOLアクセスBeanを生成する必要があります。生成後のCOBOLアクセスBeanをUNIXのCosminexus実行環境に配置することでCOBOL UAPを呼び出すことができます。COBOLアクセス用Bean生成ツールについては「2.　COBOLアクセスを使ったWebアプリケーションの開発」を参照してください。また，生成後のCOBOLアクセスBeanの配置については「6.　プログラムの実行」を参照してください。

1.2.2　EJBの場合

EJB対応のCOBOLアクセス機能は，COBOLアクセス用BeanをさらにEJBクラス群（ホームインタフェース，リモートインタフェース，Enterprise Bean）でラッピングすることで実現します。

COBOLプログラムとCOBOLアクセス用BeanおよびEJBクラス群は，J2EEサーバまたはJava EEサーバに配置します。

この機能は，COBOLアクセス用Bean，EJBクラス群およびデプロイ情報（DDファイル）を生成する開発環境とEJBを動作させるための実行環境を提供します。

COBOL UAPをEnterprise Beanとして作成する場合のCosminexusでの位置づけを図1-2に示します。

図1‒2　EJB対応COBOLアクセスのCosminexusでの位置づけ

開発環境でCOBOLアクセス用EJB（COBOLアクセス用Bean含む）を生成し，その生成したCOBOLアクセス用EJB（COBOLアクセス用Bean含む）をCosminexus実行環境に配置することで，COBOL UAPを呼び出すことができます。

開発環境はWindowsだけで，実行環境はWindowsおよびUNIXです。

UNIXでCOBOLアクセス用EJB（COBOLアクセス用Bean含む）を実行させる場合でも，Windows上でCosminexus連携機能が提供するCOBOLアクセス用Bean生成ツールを使ってCOBOLアクセス用EJB（COBOLアクセス用Bean含む）を生成する必要があります。生成後のCOBOLアクセス用EJB（COBOLアクセス用Bean含む）をUNIXのCosminexus実行環境に配置することでCOBOL UAPを呼び出すことができます。COBOLアクセス用EJBの生成については，「2.　COBOLアクセスを使ったWebアプリケーションの開発」を参照してください。また，生成後のCOBOLアクセスBeanの配置については「6.　プログラムの実行」を参照してください。

1.3　COBOLアクセスの概要

COBOLアクセスは，Cosminexus上のJavaアプリケーションオブジェクトとして動作します。

COBOLアクセスは，COBOL UAPとの通信を可能にするAPI（Application Program Interface）をCosminexus上のJava UAPのためにJavaBeansまたはEnterprise Beanとして提供します。

1.3.1　JavaBeans対応COBOLアクセス

JavaBeans対応COBOLアクセスでは，次の機能を提供します。

COBOLアクセス用Bean生成ツールの指定で，次のJavaプログラムを生成する開発環境

COBOLアクセス用Bean

JavaBeans対応COBOLアクセス機能を動作させるための実行環境

Javaクラスおよびライブラリを配置して実行

JavaBeans対応COBOLアクセスの処理概要を図1-3に示します。

図1‒3　JavaBeans対応COBOLアクセスの処理概要

Servlet（Java UAP）はCOBOLアクセス用Beanに対して次のようなリクエストを発行します。

入力データの設定のために，任意の基本項目に対して生成したCOBOLアクセス用Beanの各setterメソッドの呼び出し。

生成したCOBOLアクセス用BeanのCOBOL UAP呼び出しメソッドの実行。

生成したCOBOLアクセス用Beanのデータの参照は任意のgetterメソッドの呼び出し。

1.3.2　EJB対応COBOLアクセス

EJB対応COBOLアクセスでは，次の機能を提供します。

COBOLアクセス用Bean生成ツールの指定で，EJB対応の次のプログラムおよび各種ファイルを生成する開発環境

COBOLアクセス用Bean

ホームインタフェース

リモートインタフェース

Enterprise Bean

デプロイ情報（DDファイル）

EJB対応のCOBOLアクセス機能を動作させるための実行環境

Javaクラスおよびライブラリを配置して実行

EJB対応COBOLアクセスの処理概要を図1-4に示します。

図1‒4　EJB対応COBOLアクセスの処理概要

次にCOBOL UAPを起動するまでの流れを示します。

ServletからJNDI（Java Naming and Directory Interface）のlookupメソッドにEJBの名称（EJB配置時に指定する名称）を指定してホームインタフェースのインスタンスを取得する。

ホームインタフェースを経由してEnterprise Beanのcreateメソッドを実行してリモートインタフェースのインスタンスを取得する。

リモートインタフェースを経由してEnterprise BeanのCOBOLアクセス用Beanの各メソッドに対応するメソッドを呼び出す。

Enterprise BeanからCOBOLアクセス用Beanの該当メソッドを呼び出す。

COBOLアクセス用BeanからCOBOL UAPを呼び出す。

注意事項

COBOLアクセス用Beanは，JNIを使ってCOBOLのライブラリ※を呼び出します。このため，JavaのEJBからCOBOLアクセス用Beanを呼び出すことはできますが，COBOLのライブラリ※は，Cosminexusアプリケーションサーバで実行するトランザクション管理の対象外となりますので，注意してください。

注※

Windowsの場合：ダイナミックリンクライブラリ（*.dll）

AIXの場合：共用ライブラリ（*.a）

Linuxの場合：共用ライブラリ（*.so）

1.4　COBOLアクセス用Beanの役割と処理

COBOLアクセス用Beanは，ユーザのリクエストをCOBOL UAPのAPIに変換します。それらは，COBOLアクセス用Beanのメソッドとして提供されます。COBOL UAPの引数は，COBOLアクセスのプロパティとして提供され，プロパティアクセス（getterとsetter）でプロパティの参照や設定をして各関数の引数への参照および設定処理を実現します。

COBOLアクセス用Beanは，使用するCOBOL UAPごとに作成してください。作成するときは，COBOLアクセス用Bean生成ツールを使用します。

また，COBOLアクセスで提供するライブラリはスレッドセーフなので，Java UAPで複数のスレッドを実行してCOBOL UAPへのリクエストを制御できます。

2　COBOLアクセスを使ったWebアプリケーションの開発

この章では，COBOLアクセスを使ったWebアプリケーションの開発に必要な操作を説明します。

開発環境は，Windowsで提供しています。

2.1　Webアプリケーションの開発手順

2.1.1　JavaBeanの場合

JavaBeanとしてCOBOLアクセスを使ったアプリケーションの開発の流れは次のようになります。

COBOL UAPの作成

JavaBeans対応COBOLアクセス用Beanの作成

Servletの作成

入力用HTMLと結果出力用JSPの作成

2.1.2　EJBの場合

Enterprise BeanとしてCOBOL アクセスを使ったアプリケーションの開発の流れは次のようになります。

COBOL UAPの作成

EJB対応COBOLアクセス用Beanの作成

jarファイルの作成と配置

Servletの作成

入力用HTMLの作成

2.2　COBOL UAPの作成

COBOLアクセスを使用する場合に，COBOL UAPを作成する際の前提条件や注意事項について説明します。

2.2.1　COBOL UAPプログラムソースの構成

COBOL UAPを作成する場合，次の構成で作成することを推奨します。また，既存のCOBOL UAPがある場合，ここで説明している仕様に準拠していれば，そのままJavaのクライアントからCOBOLアクセスを経由して実行できるCOBOL UAPとして利用できます。

(1)　COBOLプログラムのソース構成

COBOLプログラムソース

COBOL-Java間で渡す引数の登録集原文

（COBOLアクセス用Bean生成時に，必要な登録集原文）

(2)　COBOLプログラムの作成例

COBOLプログラムの作成例を次に示します。

注※

LINKAGE SECTIONの各データ名定義は，登録集にすることを推奨します。

COBOLアクセス用Bean生成時に，この登録集を使用できます。

2.2.2　COBOLアクセスを使用するためのCOBOL UAPの引数の規則

COBOLアクセスを使用するためには，COBOL UAPの引数は次の規則に従っている必要があります。

【書き方】

注

【書き方】の規則（括弧や下線などの意味）は，マニュアル「COBOL2002　言語　標準仕様編」の「1．記述技法」に従っています。

【構文規則】

レベル番号，データ名，REDEFINES句，PICTURE句，USAGE句，OCCURS句，SIGN句だけが記述できます。

レベル番号は，1けたから2けたの符号なし整数で1から49までの範囲内，または77でなければなりません。

データ名を省略した場合は，FILLERを仮定します。

USAGE句は，【書き方】に記述しているものだけ使用できます。それ以外の属性は使用できません。

OCCURS句は，【書き方】に記述しているものだけ使用できます。整数の値は1以上でなければなりません。

PICTURE句の文字列にPを含んではなりません。

PICTURE句の小数点を表す文字は常にピリオドです。

レベル番号，データ名，REDEFINES句，PICTURE句，USAGE句，OCCURS句，SIGN句の構文規則で上記の構文規則で規定されている規則以外はマニュアル「COBOL2002　言語　標準仕様編」および「COBOL2002　言語　拡張仕様編」の構文規則に従ってください。

【一般規則】

REDEFINES句，USAGE句，OCCURS句，SIGN句は，【書き方】で記す表現形式の範囲では，マニュアル「COBOL2002　言語　標準仕様編」および「COBOL2002　言語　拡張仕様編」の一般規則に準拠します。

【使用上の注意事項】

SIGN句にSEPARATE CHARACTER指定を書かない場合は，符号の表現形式は処理系によって異なることがあります。

このシステムではマニュアル「COBOL2002　言語　標準仕様編」および「COBOL2002　言語　拡張仕様編」の表現形式を仮定します。

外部浮動小数点項目および外部ブール項目などは使用できません。使用できないCOBOL定義項目一覧については「付録A.1　COBOLアクセス用Bean生成時のCOBOL定義注意事項／制限事項」を参照してください。付録A.1では回避方法も記載しています。

REDEFINES句を使用して被再定義項目と異なるデータ属性で領域を再定義した場合，格納されているデータの形式にあったデータ項目のgetterを使用しなかった場合，データは正しく取得できません。

USAGE句にADDRESS，POINTERを指定した場合は，値渡し（BY VALUE指定）で受け取ってください。

2.2.3　COBOL UAPの引数を含む登録集原文の記述規則

COBOL UAPの引数の定義は構文的に正しいものでなければなりません。

COBOL UAPの引数の定義はすべての引数が一つの登録集原文中で完結していなければなりません（登録集原文中にCOPY文を記述できます。詳細は「2.2.5　COPY文」を参照してください）。

登録集原文の書式は固定形式を標準としています。

登録集原文の固定形式・自由形式の切り替えは入力ファイルの拡張子とします。

拡張子が「.cbf」および環境変数CBLFREEに設定した拡張子のファイルを自由形式，それ以外は固定形式として扱います。

次に固定形式と自由形式の記述規則を示します。

（固定形式規則）

1〜6カラム目および73カラム目以降の記述を無視します。

1〜6カラム目は行番号としては使用されません。また，エラー情報に出力される行番号としても使用されません。

7カラム目が「*」，「/」の行をコメント行として扱います。

デバッグ行（7カラム目が「D」，「d」の行）をコメント行として扱います。

コメント行以外の行の72／73カラム目に全角文字が記述された場合，解析エラーとなります（ただし，全角空白の場合を除く）。

7カラム目に「*」，「/」，空白，タブ，「D」，「d」以外の文字が書かれた場合，解析エラーとなります。

6／7カラム目，7／8カラム目に全角文字が記述された場合，解析エラーとなります（ただし，全角空白の場合を除く）。

（自由形式規則）

1文字目が「*」，「/」，「＊」（全角），「／」（全角）の行をコメントとして扱います。

1文字目が「D」，「d」，「Ｄ」（全角），「ｄ」（全角）で，かつ2文字目が半角空白，全角空白，改行（¥nまたは¥r¥n），タブ，EOFの行をコメントとします。

行内注記（「*>」）はサポートしていません（ただし，1文字目から書かれた場合コメント行扱い）。

（環境変数CBLFREEに設定する拡張子の規則）

設定する拡張子は，先頭のピリオド（．）と3文字以内の英数字で設定します。

複数の拡張子を設定する場合は，半角空白で区切ります。ただし，.cbfは環境変数に指定しなくても自由形式として扱います。

拡張子の3文字の英字は，大文字小文字等価とします。

環境変数内の値が，規則に反している場合，エラーになった個所以降の値は固定形式として扱われます。

コンマ（，）とセミコロン（；）は分離符として扱いません。

このシステムでは次の語だけを予約語とみなします。これらの予約語以外は利用者定義用語として扱います。

ADDRESS，BINARY，CHARACTER，COMP，COMP-1，COMP-2，COMP-3，COMP-4，COMP-5，COMPUTATIONAL，COMPUTATIONAL-1，COMPUTATIONAL-2，COMPUTATIONAL-3，COMPUTATIONAL-4，COMPUTATIONAL-5，COPY，DEPENDING，DISPLAY，IS，LEADING，NATIONAL，OCCURS，ON，PACKED-DECIMAL，PIC，PICTURE，POINTER，REDEFINES，SEPARATE，SIGN，TIMES，TRAILING，USAGE

タブ文字は1個の空白文字として扱います。

データ記述項の記述では全角文字と半角文字は非等価とします。

2.2.4　可変長データについて

Cosminexus連携機能で使用できる可変長データは，「OCCURS DEPENDING ON」で指定できる可変長とは異なります。

データの形式は次のようになります。

「長さ」：後続する「バイト配列データ」のデータ長（長さエリアは含まない）

COBOL UAPでは，次のような形式です。

 01  VARDATAS.
  02  VARDATALEN   PIC  S9(9)  USAGE COMP.
  02  VARDATAITEM  PIC  X(nn).

nn：データ長を指定します

COBOL UAPの引数の記述は，次の2とおりあります。

(1)　01および77レベルのアドレスデータ項目を使用した可変長データの指定

＜指定例＞

01    VARDATA  USAGE ADDRESS.

COBOL UAPには，上記データの先頭アドレスが渡されるので，BY VALUE指定で引数を受け取ります。

PROCEDURE DIVISION USING BY VALUE VARDATA.

受け取ったデータは「アドレス」なので，内容を参照するために「アドレス名にアドレスを設定して参照する」ことになります。

 ：
 WORKING-STORAGE SECTION.
  01  VARDATAS  ADDRESSED BY VARDATAS-ADDR.
   02  VARDATASLEN  PIC S9(9)  USAGE COMP.
   02  VARDATASITEM  PIC  X(10000).
 ：
 LINKAGE SECTION.
  01  VARDATA  USAGE ADDRESS.
 PROCEDURE DIVISION  USING BY VALUE VARDATA.
     COMPUTE VARDATAS-ADDR=VARDATA.
     IF VARDATASLEN=ZERO THEN
       ：

(2)　01および77レベルの英数字項目を使用した可変長データの指定

＜指定例＞

 01    VARDATA  PIC X(nn).         nn：データ長を指定します
 01    VARDATAS  REDEFINES VARDATA.
  02   VARDATASLEN  PIC S9(9)  USAGE COMP.
  02   VARDATASITEM PIC X(10000).

ただし，このままでは「英数字項目」として扱うため，COBOLアクセス用Bean生成ツールでデータ属性に「可変長データ(byte[])」を指定する必要があります。再定義項目は，COBOL UAPでだけ使用できます。引数は BY REFERENCE で受け取ります。

PROCEDURE DIVISION USING BY REFERENCE VARDATA.

受け取ったデータは再定義項目で参照してください。

 ：
LINKAGE SECTION.
  01  VARDATA   PIC  X(10000).
  01  VARDATAS  REDEFINES VARDATA..
   02  VARDATASLEN  PIC S9(9)  USAGE COMP.
   02  VARDATASITEM  PIC  X(10000).
 PROCEDURE DIVISION  USING BY REFERENCE VARDATA.
     IF VARDATASLEN=ZERO THEN
       ：

上記二つの指定方法の違いは，「可変長データの最大長をあらかじめ指定するかどうか」です。最大長がCOBOLプログラムで記述できる最大領域長を超える可能性がある場合は「アドレスデータ項目」を使用してください。最大長がCOBOLプログラムで記述できる最大領域長を超えない場合は「英数字項目」で指定することもできます。

可変長データに対するJavaプログラムでの操作は次のようになります。

setter
    setVardata(byte[] data, int len)
getter
    getVardata()

setterでは，データ自身をバイト配列データで指定します。このデータは，文字列データのような「文字コード変換」は行わない点に注意してください。また，データ長をlenで指定します。

getterでは，byte配列が取得されます。byte配列の長さはlengthプロパティで取得できます。

詳細の指定は，以降の章を参照してください。

2.2.5　COPY文

COBOLアクセスでのCOPY文の機能について説明します。

(1)　言語規則

(a)　形式

COPY文の指定形式は次のようになります。

(b)　機能

COPY文は，COBOL登録集原文の中へ別の原文を複写します。

(c)　構文規則

このシステムでは上記形式以外の構文はサポートしません。

COPY文は，空白のあとに続け，分離符の終止符でやめなければなりません。

COPY文を記述した行は，完結したCOPY文だけで構成されていなければなりません。

原文名を構成する文字は，すべて半角で英文字（A〜Z，a〜z），数字，ハイフン，および下線とし，先頭は英文字でなければなりません。また，全角文字は使用できません。

上記以外の構文規則は，「2.2.2　COBOLアクセスを使用するためのCOBOL UAPの引数の規則」に従ってください。

(d)　一般規則

COPY文を含む原文の解析は，論理的には，すべてのCOPY文を処理してから，原文の解析処理を行うことと同じです。

COPY文を処理すると，予約語COPYに始まり終止符で終わるCOPY文全体が，原文名または原文名定数に対する原文で論理的に置き換わり，元の原文中に複写されます。

登録集原文が文法規則に従っているかどうかは，原文だけでは決定できません。COPY文を除いて，COBOL登録集原文全体が文法規則に従っているかどうかは，すべてのCOPY文が完全に処理されるまで決定できません。

COPY文によって複写される原文の中にCOPY文がある場合，COPY文が入れ子（nest）になっているといいます。

COPY文の入れ子は19レベルまで許されます。

再起的な複写は直接的にも間接的にも行ってはなりません。

固定形式の原文と自由形式の原文を混在して使用してはなりません。

原文名には，登録集原文が登録されているファイルの名称を，拡張子を付けないで指定します。登録集原文の検索順序については「(2)　登録集原文の検索順序」を参照してください。

原文名定数は，登録集原文が登録されているファイルの絶対パス名を引用符（”）またはアポストロフィ（’）で囲んで指定します。このとき，ファイル名には拡張子も付けてください。絶対パス名に全角文字は使用できません。

(2)　登録集原文の検索順序

原文名で指定したファイルは，拡張子，フォルダの二つの条件で検索されます。それぞれの検索順序は次の順序であり，両者のうちでは拡張子による検索順序が優先します。

(a)　拡張子による検索順序

環境変数CBLFREEで設定した自由形式拡張子

.cbl

.cob

.cbf

(b)　フォルダによる検索順序

環境変数CBLLIBで指定したフォルダ

「COBOLアクセス用Bean生成ツール−ステップ1/3」画面で指定した原文が存在するフォルダ

例えば，原文名を"ARGUMENT_CPY"とした場合，環境変数CBLFREEが設定されていないとき，"ARGUMENT_CPY.cbl"で1.2.の順にフォルダを検索し，目的のファイルがなければ，次に"ARGUMENT_CPY.cob"で同様に検索します。

(3)　環境変数

COPY文では，環境変数CBLFREEとCBLLIBを使用します。

(a)　CBLFREE

自由形式正書法で書かれた原文として使用する登録集原文の拡張子を設定します。詳細は「2.2.3　COBOL UAPの引数を含む登録集原文の記述規則」を参照してください。

(b)　CBLLIB

登録集原文を格納するフォルダを設定します。フォルダを複数指定する場合は，セミコロン（；）で区切って指定してください。また，フォルダに全角文字は使用できません。

（例）

CBLLIB=c:¥copylib;c:¥test

2.3　COBOLアクセス用Beanの生成

ここでは，COBOLアクセス用BeanおよびEJBの作成方法について説明します。

COBOLアクセス用BeanおよびEJBは，COBOLアクセス用Bean生成ツールで生成します。COBOLアクセス用Bean生成ツールについては，「2.3.1　COBOLアクセス用Bean生成ツールによる生成」を参照してください。

生成されたBeanはJavadocに対応しています。

以降，COBOLアクセス用Bean生成ツールを「Bean生成ツール」と表記します。

2.3.1　COBOLアクセス用Bean生成ツールによる生成

「Bean生成ツール」を使用して，COBOL UAPを呼び出すロジックを組み込んだCOBOLアクセス用Beanを生成します。

(1)　起動方法

Windowsのプログラムを開始する操作で，［COBOL2002］−［Cosminexus連携機能］をポイントし，［COBOLアクセス用Bean生成ツール環境設定］をクリックします。「COBOLアクセス用Bean生成ツール環境設定」の画面が開いたら，その画面で環境設定を行います。

起動方法も同じように，Windowsのプログラムを開始する操作で［COBOL2002］−［Cosminexus連携機能］をポイントし，「COBOLアクセス用Bean生成ツール」をクリックすると起動できます。

Windows(x86) COBOL2002とWindows(x64) COBOL2002では，スタートメニューに表示されるメニュー名とウィンドウに表示されるタイトル名が異なります。ここでは，Windows(x86) COBOL2002のメニュー名とタイトル名を使用します。Windows(x64) COBOL2002を使用する場合は，次のように読み替えてください。

表2‒1　Windows(x86) COBOL2002とWindows(x64) COBOL2002のメニュー名とタイトル名

Windows(x86) COBOL2002

Windows(x64) COBOL2002

スタートメニューに表示されるメニュー名

ウィンドウに表示されるタイトル名

スタートメニューに表示されるメニュー名

ウィンドウに表示されるタイトル名

COBOLアクセス用Bean生成ツール環境設定

COBOLアクセス用Bean生成ツール

COBOLアクセス用Bean生成ツール環境設定 for COBOL2002 64bit

COBOLアクセス用Bean生成ツール for COBOL2002 64bit

COBOLアクセス用Bean生成ツール

COBOLアクセス用Bean生成ツール for COBOL2002 64bit

(2)　環境設定ダイアログ

VM Optionのチェックボックスをオンにすると最大メモリプールサイズを指定できるようになります。

指定がない場合は，Java VMの初期値となります。

また，VM Optionのチェックボックスがオンの状態で値を指定しない場合，または数値以外を指定した場合は設定エラーダイアログを出力します。

(3)　COBOLアクセス用Bean生成ツールの画面

(a)　ステップ1/3画面

この画面では，COBOLへの引数を定義した登録集原文ファイル，PICTURE句の通貨編集用文字，オプションおよび生成ファイルを出力するフォルダなどを指定します。オプションパネルはタブで切り替えることができます。指定が終了し，［次へ(N)>］ボタンを押すと「COBOLアクセス用Bean生成ツール − ステップ2/3」画面に進みます。

COBOLへの引数を定義した登録集原文の指定

COBOL UAPの引数を定義した登録集原文のファイル名※をフルパスで指定します。右側のボタンをクリックすると，参照ダイアログが表示されます。

注※

登録集原文のファイル名に全角文字は使用できません。

PICTURE句の通貨編集用文字の指定

必要に応じて，PICTURE句の通貨編集用文字を変更します。デフォルトでは，'¥'が指定されています。

生成ファイルを出力するフォルダの指定

ツールが生成するJavaソースファイルを出力するフォルダ名をフルパスで指定します。Javaソースファイルは次のフォルダ規則に従って生成されます。生成されるJavaソースファイル名は，ステップ3/3のクラス説明を参照してください。

＜生成ファイルのフォルダ規則＞

指定フォルダ¥パッケージ名¥

パッケージ名は，ステップ3/3で指定するパッケージ名を指します。

指定フォルダ¥META-INF¥

EJB対応機能を有効にした場合は，Javaソースファイル群に加え，このフォルダ下にejb_jar.xmlも生成されます。

「生成ファイルを出力するフォルダを入力してください。」の右側のボタンを押すと，参照ダイアログが表示されます。なお，指定したフォルダが存在しない場合は，そのフォルダを作成するかどうかのダイアログボックスが出力されます。「はい」を選んだ場合は，そのフォルダを作成し生成処理を続行します。「いいえ」を選んだ場合は，次の画面に移りません。再度，設定をやり直してください。

EJB対応機能

EJB対応COBOLアクセス用Beanとその他のEJB関連ファイルを出力する場合は，チェックボックスをオンにします。 デフォルトでは，JavaBeans対応COBOLアクセス用Beanだけを生成します。

別名の扱い

同じデータ名のデータ項目に対して別名を自動生成する場合は，チェックボックスをオンにします。デフォルトでは，別名は自動生成しません。

serialVersionUIDの生成

serialVersionUIDを生成する場合は，チェックボックスをオンにします。デフォルトでは，serialVersionUIDを生成します。

チェックボックスをオンにすると，COBOLアクセス用Beanのソース中に次の形式でserialVersionUIDを生成します。

（生成例）

private static final long serialVersionUID = 1153786720640L;

serialVersionUIDの値はBean生成時点での1970年1月1日00:00:00 GMTからの経過時間(ミリ秒)です。

日本語項目の扱い

日本語項目および日本語編集項目を日本語項目として扱いたい場合はチェックボックスをオフにします。デフォルトでは，日本語項目および日本語編集項目を英数字項目として扱います。

USAGE COMP-5の扱い

USAGE COMP-5を指定した2進項目をCOMP-5として扱いたい場合はチェックボックスをオフにします。デフォルトでは，USAGE COMP-5を指定した2進項目は，COMPとして扱います。

集団項目の扱い

集団項目に対するデータの設定および取得をする場合は，チェックボックスをオンにします。デフォルトでは，集団項目に対するデータの設定および取得はしません。

［次へ(N)>］ボタン

「COBOLアクセス用Bean生成ツール − ステップ2/3」画面に進みます。

［キャンセル］ボタン

COBOLアクセス用Beanの生成を取り消し，「Bean生成ツール」画面を消去します。

［ヘルプ］ボタン

この画面に対するヘルプを表示します。

次の「Bean生成ツール」画面についても，［キャンセル］ボタンおよび［ヘルプ］ボタンについての動作は同じです。

指定した登録集原文を正常に解析できなかった場合，エラーメッセージが表示されて処理が中止します。

(b)　ステップ2/3画面

「COBOLアクセス用Bean生成ツール−ステップ2/3」画面には，「COBOLアクセス用Bean生成ツール−ステップ1/3」画面で指定した登録集原文をCOBOLアクセスが解析した情報が引数ごとにテーブル表示されます（これ以降，このテーブルのことを「パラメタテーブル」とします）。

このパラメタテーブル中から，COBOL UAPで実際に使用する引数を選択します。選択したデータ項目に対してCOBOLアクセス用Beanの中に該当するデータ項目に対するアクセスメソッドが生成されます。

COBOL UAPで実際に使用するデータ項目だけを抽出することで，COBOLアクセス用BeanのサイズをCOBOL UAPのサービスを受け取れる必要なサイズに最適化でき，資源を有効に活用できます。

複数の引数がある場合，タブで表示する引数を切り替えます。

すべての引数の設定が完了したあと，［次へ(N)>］ボタンを押すと，「COBOLアクセス用Bean生成ツール−ステップ3/3」画面に進みます。

「COBOLアクセス用Bean生成ツール−ステップ2/3」画面に表示される表の各フィールドの編集方法について説明します。

レベルフィールド

指定された登録集原文に定義されたデータ名のレベル番号を表示します。

このレベルフィールドを編集することはできません。

データ名フィールド

指定された登録集原文に定義されたデータ名を表示します。

このとき，次の条件に該当するデータ項目名が変換されます。

Javaの言語仕様によって，ハイフン（−）をデータ名として使えないため，COBOLのデータ項目名にハイフン（−）が含まれる場合，自動的に下線（_）に変換して表示し，対応するソース生成時のプロパティ名も下線（_）で生成します。

「Bean生成ツール」ではプロパティを基本項目のデータ名から生成するため，基本項目のデータ名は修飾なしで一意でなければなりません。また，集団項目のバイト配列アクセスを使用する場合は，すべてのデータ名が修飾なしで一意でなければなりません。規則に反した場合，エラーとなります。

JavaBeansの命名規則によって，COBOLのデータ項目名に英大文字が含まれる場合，自動的に英小文字に変換して表示し，対応するソース生成時のプロパティも英小文字で生成します。ただし，メソッドの場合，先頭の1文字だけを英大文字にして生成します。

このデータ名フィールドを編集することはできません。

FILLERは，$00001，$00002…のように先頭1文字が"$"で残り5文字が昇順の番号という名称でデータ名フィールドに表示します。FILLER項目の最大数は65,535個で，65,535個を超えた場合はエラーメッセージを出力して処理を中止します。

データ属性フィールド

指定された登録集原文に定義されたデータ属性を表示します。

このデータ属性フィールドを編集することはできません。

各データ項目に対応する表示文字列を次の表に示します。

表2‒2　各データ項目に対応する表示文字列

データ項目

表示文字列（Javaでのデータ属性を表示）

英字項目

英数字項目

英数字編集項目

数字編集項目

文字列データ(String)

バイト配列データ(byte[])※1

可変長データ(byte[])※1，※2

日本語項目

日本語編集項目

文字列データ(String)

バイト配列データ(byte[])※1

可変長データ(byte[])※1，※2

日本語データ(String)※4

アドレスデータ項目

アドレスデータ(byte[])※1，※3

単精度内部浮動項目

単精度データ(Float)

倍精度内部浮動項目

倍精度データ(Double)

1〜4けたの小数を含まない2進項目

Shortデータ(Short)

1〜4けたの小数を含む2進項目

10進データ(BigDecimal)

5〜9けたの小数を含まない2進項目

Integerデータ(Integer)

5〜9けたの小数を含む2進項目

10進データ(BigDecimal)

10〜18けたの小数を含まない2進項目

Longデータ(Long)

10〜18けたの小数を含む2進項目

10進データ(BigDecimal)

外部10進

10進データ(BigDecimal)

内部10進

10進データ(BigDecimal)

集団項目

集団項目

集団項目(byte[])※5

注※1

バイト配列データ，可変長データおよびアドレスデータを指定した場合，COBOLプログラムと受け渡すデータは，文字列データ(String)指定時と同様のコード変換は行いません（無変換）。コード変換が必要な場合は，JavaプログラムまたはCOBOLプログラムで行ってください。

また，バイト配列データ，可変長データおよびアドレスデータを指定した場合のデータ属性フィールドの指定，およびデータ形式については，「2.3.2　COBOLアクセス用Bean生成ツールでのバイト配列指定」を参照してください。

注※2

REDEFINES句の指定のない01または77レベルで，長さが5バイト以上の英数字項目にだけ指定できます。また，可変長データを再定義することはできません。指定した場合，再定義項目は従属する下位項目も含めて無視されます。可変長データを指定したデータ項目は，データ長を表す4バイトの2進項目領域と，データを表す（全体の領域長−4）バイトのバイト配列領域と見なされます。この指定をすることで，COBOLに渡す領域長をデータ項目長よりも短くすることができます（使用例は「付録F　プログラム例」を参照してください）。

注※3

REDEFINES句の指定のない01または77レベルだけ指定できます。また，アドレスデータを再定義することはできません。指定した場合，再定義項目は従属する下位項目も含めて無視されます。アドレスデータを指定したデータ項目は，データ長を表す4バイトの2進項目領域とデータを表すバイト配列領域と見なされます。

注※4

「COBOLアクセス用Bean生成ツール−ステップ1/3」画面で「日本語項目を英数字項目として扱う。」チェックボックスをオフにした場合，「日本語項目(String)」と表示します。この場合，バイト配列データおよび可変長データへの変更はできません。

注※5

「COBOLアクセス用Bean生成ツール−ステップ1/3」画面で「集団項目のバイト配列アクセスを使用する。」チェックボックスをオンにした場合，「集団項目(byte[])」と表示します。

指定句フィールド

各データ項目に指定された句の情報を表示します。

次の内容が表示されます。

「R」：REDEFINES句の指定がある（再定義項目である）

なお，PICTURE句，USAGE句，およびOCCURS句の情報は，ほかのフィールドで表示しているので表示しません。

この指定句フィールドを編集することはできません。

回数フィールド

回数はOCCURS句がある場合，その回数を表示します。OCCURS句がない場合，0を表示します。

この回数フィールドを編集することはできません。

別名フィールド

日本語データ名，修飾なしで一意にならないデータ名に対する別名を入力する領域です。該当個所を選択すると，編集モードになります。 別名の編集を行った項目は，対応するソース生成時のプロパティ名が別名に置換されます。データ名と異なり，ハイフンのアンダーバーへの変換および英大文字の小文字への変換は行いません。別名の編集用途は，次のとおりです。

データ名が日本語（データ名に英小文字，数字，ハイフン（−），下線（＿）以外が含まれている場合。ただしFILLERの変換後の名称は除く）の場合は，必ず指定しなければなりません。これは，Javaで日本語メソッド名および変数名を使用するのを避けるために設けた規則です。別名は，半角英数字でなければなりません。規則に反した場合，エラーとなります。

「Bean生成ツール」ではプロパティ名を基本項目のデータ名から生成するため，基本項目のデータ名は修飾なしで一意でなければなりません。また，「COBOLアクセス用Bean生成ツール−ステップ1/3」画面で「集団項目のバイト配列アクセスを使用する。」のチェックボックスをオンにした場合は，すべてのデータ名が修飾なしで一意でなければなりません。規則に反した場合，エラーとなります。

なお，「COBOLアクセス用Bean生成ツール−ステップ1/3」画面で「別名を自動生成する。」チェックボックスをオンにした場合，すべてのデータ名に対して次の規則で別名を自動生成します。

引数ごとに同名チェックを行う。

同名のデータ名があった場合，1つ目のデータ名には別名を生成しない。

2つ目以降のデータ名に対し，「元のデータ名$1」，「元のデータ名$2」...の順で別名を生成する。

入力／出力フィールド

使用するCOBOLのデータ項目（すなわち，COBOLアクセス用Beanのプロパティ）を選択します。ただし，基本項目だけの指定であり，集団項目は「COBOLアクセス用Bean生成ツール−ステップ1/3」画面で「集団項目のバイト配列アクセスを使用する。」チェックボックスをオンにした場合だけ指定できます。デフォルトは，FILLER以外の基本項目の入力／出力フィールドはすべて選択（チェックボックスオン）の状態になります。不要なデータはチェックボックスをオフにしてください。

選択したデータ項目に対してCOBOLアクセス用Beanの中にsetter／getterが生成されます。COBOL UAPで実際に使用するデータ項目だけを抽出することで，COBOLアクセス用BeanのサイズをCOBOL UAPのサービスを受け取れる必要なサイズに最適化でき，資源を有効に活用できます。

引数順フィールド

PROCEDURE DIVISION USING の引数に指定した順に番号を設定します。

01，77レベルのデータ項目に対してだけ入力できます。該当個所を選択すると，編集モードになります。

入力は数字だけであり，同じ番号を指定してはなりません。

(c)　ステップ3/3画面

「COBOLアクセス用Bean生成ツール−ステップ3/3」画面には，COBOLアクセス用Beanを生成するためのパッケージ名などを指定する画面が現れます。ここでは，次の情報を入力します。

パッケージ名

プロジェクトファイルから派生したパッケージ名が表示されます。ほかのパッケージ名を付けるには，このフィールドをクリックして新規の名前を入力します。

クラス名

クラス名を入力します。

「COBOLアクセス用Bean生成ツール−ステップ1/3」画面で，「EJB対応機能を有効にする。」をチェックしていない場合は，「クラス名.java」が生成されるファイル名になります。

チェックした場合は，次の名称のファイルを生成します。

クラス名.java（COBOLアクセス用Beanプログラム）

クラス名EJBHome.java（ホームインタフェース）

クラス名EJB.java（リモートインタフェース）

クラス名EJBBean.java（Enterprise Bean）

ejb-jar.xml（デプロイ情報）

なお，EJB対応COBOLアクセス用Beanの場合，実行に際しjarファイルの作成／登録を行う必要があります。詳細は，「2.3.3　EJB用jarファイルの作成と登録」を参照してください。

ライブラリ名

（Windowsの場合）

COBOLで作成したDLL名を絶対パス名で指定します。

DLL名だけを指定することもできますが，DLL名だけを指定した場合には，実行時にdynamicpathオプションの指定が必要です。

セキュリティの理由から，絶対パス名で指定することを推奨します。

　（指定例）

　　C:¥user_path¥SEARCH.dll　‥‥　拡張子.dllは必須

（UNIXの場合）

Beanを生成する場合には，共用ライブラリ名に拡張子を付けて絶対パス名で指定します。

（AIXの例）

　/user_path/libSEARCH.a　‥‥　拡張子.aは必須

（Linuxの例）

　/user_path/libSEARCH.so　‥‥　拡張子.soは必須

dynamicpathオプションを使用する場合は，フォルダ名またはディレクトリ名，および拡張子を省略したライブラリ名を指定できます。

（Windowsの例）

　SEARCH　‥‥　拡張子.dllは指定しない

（AIXの例）

　libSEARCH　‥‥　拡張子.aは指定しない

（Linuxの例）

　libSEARCH　‥‥　拡張子.soは指定しない

呼び出すCOBOLプログラム名

COBOLプログラム名は，英大文字と英小文字を区別します。

以上のように画面に従って操作し，最後に［終了(F)］ボタンを押すと，Javaソースファイルが生成され，該当するCOBOLアクセス用Beanが自動生成されます（COBOLアクセス用Beanの自動生成ソースイメージは，「付録C　COBOLアクセス用Beanの自動生成ソースイメージ」を参照してください）。

自動生成したソースは編集しないでください。また，生成時は，作業用フォルダとして環境変数TEMPに指定されているフォルダ下にj2cbフォルダを作成します。

(4)　jarファイルの作成／登録

EJB対応COBOLアクセス用Beanの場合，実行に際しjarファイルの作成／登録を行う必要があります。詳細については，「2.3.3　EJB用jarファイルの作成と登録」を参照してください。

(5)　制限事項

「Bean生成ツール」を二つ以上起動できません。

2.3.2　COBOLアクセス用Bean生成ツールでのバイト配列指定

(1)　「バイト配列データ(byte[])」または「可変長データ(byte[])」を指定する場合

英数字項目で「バイト配列データ(byte[])」または「可変長データ(byte[])」は，「Bean生成ツール」に表示されるデータ属性の項目を変更して指定します。データ属性が「文字列データ(String)」でない場合，データ属性の項目はリスト表示されません。

「可変長データ(byte[])」が指定できないデータの場合は，[次へ(N)]ボタンを押す際にエラーダイアログを表示します。「バイト配列データ(byte[])」，「可変長データ(byte[])」は，次の条件を満たす場合に指定できます。

「バイト配列データ(byte[])」，「可変長データ(byte[])」が指定できるデータ項目

英数字項目

英字項目

英数字編集項目

数字編集項目

日本語項目

日本語編集項目

ただし，日本語項目および日本語編集項目は「COBOLアクセス用Bean生成ツール−ステップ1/3」画面で「日本語項目を英数字項目として扱う。」チェックボックスがオンの場合だけ指定できます。

「可変長データ(byte[])」が指定できるデータ項目

レベルフィールドは01または77レベル

指定句フィールドはREDEFINES句未指定

COBOL定義領域長は5バイト以上

(2)　「アドレスデータ項目(byte[])」を指定する場合

アドレスデータ項目を指定します。データ属性に「アドレスデータ(byte[])」と表示されます。

「アドレスデータ(byte[])」が指定できないデータの場合は，[次へ(N)]ボタンを押す際にエラーダイアログを表示します。「アドレスデータ(byte[])」は，次の条件を満たす場合に指定できます。

「アドレスデータ(byte[])」が指定できるデータ項目

レベルフィールドは01または77レベル

指定句フィールドはREDEFINES句未指定

(3)　「可変長データ(byte[])」および「アドレスデータ(byte[])」のデータ形式について

「可変長データ(byte[])」および「アドレスデータ(byte[])」を再定義することはできません。指定した場合，再定義項目は従属する下位項目も含めて無視されます。そのため，setter／getterも生成されません。

「可変長データ(byte[])」および「アドレスデータ(byte[])」は，ほかのデータ属性のように指定された領域長でデータアクセスをするのではなく，形式が異なります。形式は，下記のように分割されたデータ領域となります。

COBOLプログラムでは，上記形式でデータを扱ってください。

例1）

登録集原文に「01 V_DATA PIC X(100).」と記述されたデータ項目のデータ属性を，「可変長データ(byte[])」と指定した場合，長さを表す4バイトの2進項目と，96バイトのバイト配列データに分割されます。

したがって，バイト配列データがとりうる（最大データ長＋4）バイトの領域長で，データ項目を定義する必要があります。「可変長データ(byte[])」でデータを設定(setter)および取得(getter)する方法については，「8.　COBOLアクセス用Beanを呼び出すためのAPI」を参照してください。

例2）

登録集原文に「01 V_DATA USAGE ADDRESS.」と記述指定した場合，長さを表す4バイトの2進項目と，setterで指定された長さ分のバイト配列データの領域になります。

「アドレスデータ(byte[])」でデータを設定(setter)および取得(getter)する方法については，「8.　COBOLアクセス用Beanを呼び出すためのAPI」を参照してください。

2.3.3　EJB用jarファイルの作成と登録

「Bean生成ツール」で「EJB対応機能を有効にする。」にチェックしてBeanを生成した場合は，コンパイルしたclassファイルなどをEJBサーバへデプロイするためにjarファイルにする必要があります。

生成されるファイルは次のとおりです。

項番

生成プログラム名

生成ファイル名規則

備考

1

COBOLアクセス用Bean

クラス名.java

なし。

2

ホームインタフェース

クラス名EJBHome.java

なし。

3

リモートインタフェース

クラス名EJB.java

なし。

4

Enterprise Bean

クラス名EJBBean.java

なし。

5

デプロイ情報

（DDファイル）

ejb-jar.xml

META-INFフォルダが自動生成され，そのフォルダに格納されます。

(1)　jarファイルの作成

「Bean生成ツール」でのjarファイル作成手順を次に示します。

「Bean生成ツール」で生成されたファイルをコンパイルしてclassファイルを生成します。

コマンドプロンプトを開き，「Bean生成ツール」の「生成ファイルを出力するフォルダ」に移動し，次のようなjarコマンドでjarファイルを作成します。

jar  cvf  ¥temp¥xxxejb.jar META-INF

コマンドプロンプトを開き，classファイル出力フォルダに移動し，次のようなjarコマンドでjarファイルを作成します。

jar uvf ¥temp¥xxxejb.jar 「Bean生成ツール」で指定したパッケージ文字列の先頭パッケージ

(2)　jarファイルの登録方法

生成されたjarファイルをCosminexusに登録します。登録の方法は次のとおりです。

Cosminexus Component Container（J2EEサーバ）を起動します。

J2EEサーバ用のコマンドを使用してEJBのjarファイルを登録します。

cjimportresコマンドでEJB-JARファイルをインポートします。

cjaddappコマンドでインポート済みのEJB-JARファイルをJ2EEアプリケーションに追加します。

cjstartappコマンドでJ2EEアプリケーションを開始して，クライアントからのリクエストを受け取ることができるようにします。

Cosminexus Component Containerの起動やJ2EEサーバで使用するコマンドの詳細については，使用しているCosminexusのバージョンに対応した，マニュアル「Cosminexus　リファレンス　コマンド編」を参照してください。

2.4　Servletの作成

COBOLアクセスでのServletの作成方法について説明します。

2.4.1　COBOLアクセスでのServletの作成方法

生成したCOBOLアクセス用Beanを呼び出すServlet（Java UAP）を作成します。次のことに注意して作成してください。

(1)　setterの指定

一般のJavaBeansを利用したServletプログラムと同様に，自動生成されたCOBOLアクセス用Beanを参考にして，COBOL引数の設定を行います。設定時にはsetter（setXxx）を使用して引数領域をすべて設定しておかなければなりません。設定されていない領域の値は保証しません。

(a)　通常の例

（COBOL引数の登録集原文例）

01  PERSONAL-DATA.
  05  P-NUMBER   PIC  9(9)  USAGE COMP.
  05  P-NAME     PIC  X(50).
  05  P-ADDRESS  PIC  X(100).

（JavaBeansの場合の引数設定例）

bean.setP_number(new Integer(number));
bean.setP_name("");
bean.setP_address("");

（EJBの場合の引数設定例）

remoteobj.setP_number(new Integer(number));
remoteobj.setP_name("");
remoteobj.setP_address("");

(b)　OCCURS句を使った例

（COBOL引数の登録集原文例）

01  G1.
  02  G2 OCCURS 10.
    05  B1   PIC  X(50).

（JavaBeansの場合の引数設定例）

int i=0;
for (i=0; i<10 ; i++) {
    bean.setB1("XXXXX", i);
}

（EJBの場合の引数設定例）

int i=0;
for (i=0; i<10 ; i++) {
    remoteobj.setB1("XXXXX", i);
}

(c)　可変長データを指定した例

（COBOL引数の登録集原文例）

01 XML-DATA    PIC X(10000004).

（JavaBeansの場合の引数設定例）

byte[] sdata=new byte[10000000];
bean.setXml_data(sdata, 50);

（EJBの場合の引数設定例）

byte[] sdata=new byte[10000000];
remoteobj.setXml_data(sdata, 50);

(d)　アドレスデータを指定した例

setterの引数には，データ(バイト配列)とデータ長を指定します。

（COBOL引数の登録集原文例）

01 XML-DATA    USAGE ADDRESS.

（JavaBeansの場合の引数設定例）

byte[] sdata=new byte[20000000];
bean.setXml_data(sdata, 50);

（EJBの場合の引数設定例）

byte[] sdata=new byte[20000000];
remoteobj.setXml_data(sdata, 50);

(2)　callCOBOLメソッドの呼び出し

Beanのsetterを記述後にCOBOLアクセス用BeanのcallCOBOLメソッドを呼び出します。

（JavaBeansの場合）

bean.callCOBOL();

（EJBの場合）

remoteobj.callCOBOL();

(3)　getterの指定

Servletで使用する場合は，Beanのgetter（getXxx）を使用することでCOBOLの引数を取得できます。

(a)　通常の例

（COBOL引数の登録集原文例）

01  PERSONAL-DATA.
  05  P-NUMBER   PIC  9(9)  USAGE COMP.
  05  P-NAME     PIC  X(50).
  05  P-ADDRESS  PIC  X(100).

（JavaBeansの場合の引数取得指定例）

Integer wkint =bean.getP_number();
String  wkstr1=bean.getP_name();
String  wkstr2=bean.getP_address();

（EJBの場合の引数取得指定例）

Integer wkint =remoteobj.getP_number();
String  wkstr1=remoteobj.getP_name();
String  wkstr2=remoteobj.getP_address();

(b)　OCCURS句を使った例

（COBOL引数の登録集原文例）

01  G1.
  02  G2 OCCURS 10.
  05  B1   PIC  X(50).

（JavaBeansの場合の引数取得指定例）

String wkstr=bean.getB1(5);

（EJBの場合の引数取得指定例）

String wkstr=bean.getB1(5);

(c)　可変長データを指定した例

XML-DATAのデータ属性を「可変長データ(byte[])」にします。データ長は， データ(バイト配列)のlengthプロパティで取得します。

（COBOL引数の登録集原文例）

01 XML-DATA    PIC X(10000004).

（JavaBeansの場合の引数取得指定例）

byte[] rdata=bean.getXml_data();
int rlen=rdata.length;    // 長さを取得する

（EJBの場合の引数取得指定例）

byte[] rdata=remoteobj.getXml_data();
int rlen=rdata.length;    // 長さを取得する

(d)　アドレスデータを指定した例

データ長は，データ(バイト配列)のlengthプロパティで取得します。

（COBOL引数の登録集原文例）

01 XML-DATA    USAGE ADDRESS.

（JavaBeansの場合の引数取得指定例）

byte[] rdata=bean.getXml_data();
int rlen=rdata.length;   // 長さを取得する

（EJBの場合の引数取得指定例）

byte[] rdata=remoteobj.getXml_data();
int rlen=rdata.length;    // 長さを取得する

また，JSPでBeanを使用することもできます。

（例）ServletからJSP呼び出し指定例

javax.servlet.RequestDispatcher
rd=c.getRequestDispatcher("/Search.jsp");
rd.forward(req, res);

2.4.2　COBOL UAPの呼び出し

COBOL UAPはCOBOLアクセス用Beanを介して呼び出されます。COBOLアクセス用Beanは，COBOLアクセス用Bean生成ツールを使用して生成します。

COBOL UAPは Java UAPから次の手順を実行することで呼び出すことができます。

UAPの開始手続き

COBOL UAPに対応するCOBOLアクセス用Beanのインスタンスを生成します。

データの設定

COBOL UAPの引数をCOBOLアクセス用Beanの対応するsetterメソッドを発行して設定します。メソッド名は，「set + COBOLの基本項目名」となります。

例）COBOLの基本項目名が「ITEM01」の場合，「setItem01」となります。

COBOL UAPの呼び出し

COBOLアクセス用BeanのcallCOBOLメソッドを発行して，COBOL UAPを呼び出します。

データの取得

COBOL UAPの引数をCOBOLアクセス用Beanの対応するgetterメソッドを発行して取得します。メソッド名は，「get + COBOLの基本項目名」となります。

例）COBOLの基本項目名が「ITEM01」の場合，「getItem01」となります。

2.4.3　例外処理

COBOLアクセス用Beanでは，COBOL UAPでエラーが発生した場合またはCOBOLアクセス用Beanで異常が発生した場合，情報が取得可能なAPIを持つ例外を発生させます。

Servlet(Java UAP)で情報が取得可能なAPIを使用して例外処理を行う必要があります。

APIのリファレンスについては，「8.3　J2CBExceptionユーザインタフェースAPI」または「8.4　EJB用ExceptionユーザインタフェースAPI」を参照してください。

2.5　入力用HTMLと結果出力用JSPの作成

作成したServletを起動するための入力用HTMLと結果出力用JSPを作成します。

作成例は「付録F　プログラム例」のHTMLの作成例およびJSPの作成例を参照してください。JavaBean対応またはEJB対応でそれぞれ作成例が記載されています。

2.6　COBOLプログラム作成上の注意事項

COBOL UAPの作成上の注意事項について説明します。

2.6.1　文字コードについて

COBOL2002で決められた文字コードが使用できます。Windowsの場合は，シフトJISコードが使用できます。UNIXの場合は，マニュアル「COBOL2002　使用の手引　手引編」を参照してください。また，環境変数CBLJ2CBOPTのencode指定によって，エンコードに従った文字コード体系に変換することもできます。文字コードの設定方法については「5.4　COBOLアクセスの環境変数の設定」，encode指定については「5.4.4　encodeオプション」を参照してください。

また，unicode指定によってUnicodeを使用することもできます。unicode指定については「5.4.8　unicodeオプション」を参照してください。

2.6.2　COBOL2002コンパイラオプションについて

Javaアプリケーションプログラムとインタフェースを持つCOBOL UAPは，DLLまたは共用ライブラリ（AIXの場合：*.a，Linuxの場合：*.so）として作成してください。Javaアプリケーションプログラムとインタフェースを持つCOBOL UAPでは，設定が必要なオプション，設定してはいけないオプションは次のとおりです。

(1)　Windowsの場合

(a)　設定が必要なオプション

-MainNotCBL：副プログラムとしてコンパイルします。

-Dll,Stdcall：DLLの形式を指定します（Dllの属性をStdcallにします）。Windows(x86)だけで有効です。

-Dll：DLLの形式を指定します（Dllの属性をfastcallにします）。Windows(x64)だけで有効です。

-DllInit：呼び出し時にDLLを初期状態にします。

-MultiThread：マルチスレッド機能を使用します。

ただし，マルチスレッド機能を使用する場合，順ファイル，テキストファイルに対するファイル入出力は使用できないなど，幾つかの注意事項があります。詳細は，マニュアル「COBOL2002　ユーザーズガイド」を参照してください。

-Comp5：COMP-5を指定できるようにします。

(b)　設定してはいけないオプション

-Bin1Byte：1バイトの2進項目を有効にします。

-Dll,Cdecl： DLLの形式を指定します（Dllの属性をCdeclにします）。Windows(x86)だけで有効です。

そのほかのコンパイラオプションについては，必要に応じて設定してください。

(2)　UNIXの場合

(a)　設定が必要なオプション

-PIC,{Std｜Expand}：共用ライブラリに使う位置独立（PIC）コードを作成する場合に指定します。

-MultiThread：マルチスレッド機能を使用します。ただし，マルチスレッド機能を使用する場合，順ファイル，テキストファイルに対するファイル入出力は使用できないなど，幾つかの注意事項があります。詳細はマニュアル「COBOL2002　使用の手引　手引編」を参照してください。

-MainNotCBL：副プログラムとしてコンパイルします。

-Comp5：COMP-5を指定できるようにします。

(b)　設定してはいけないオプション

-Bin1Byte：1バイトの2進項目を有効にします。

そのほかのコンパイラオプションについては，必要に応じて設定してください。

2.6.3　指定してはいけない文と指定

PROCEDURE DIVISIONにRETURNINGは指定できません。

STOP RUN文は指定できません。

そのほかの注意事項および制限事項は「付録A　注意事項／制限事項」を参照してください。

2.6.4　引数の個数

Linux(x64)の場合，COBOLプログラムに指定できる引数の個数は，4,096個までです。

Windows(x86)の場合，COBOLプログラムに指定できる引数の個数に制限はありません。

Windows(x64)，AIX(64)の場合，COBOLプログラムに指定できる引数の個数は，1,024個までです。

そのほかの注意事項および制限事項は「付録A　注意事項／制限事項」を参照してください。

3　プログラムのコンパイル

この章では，作成したCOBOL UAPおよびJavaプログラムのコンパイルに関する操作を説明します。

3.1　COBOL UAPのコンパイル

COBOL UAPのコンパイル方法は，マニュアル「COBOL2002　操作ガイド」またはマニュアル「COBOL2002　使用の手引　手引編」を参照してください。

3.1.1　Windows(x86)の場合

COBOL UAPの開発は開発マネージャを用いて作成およびコンパイルすることができます。また，次の例のようにコマンドを入力してコンパイルとリンクを行うこともできます。

（例）

ccbl2002 -MainNotCBL -Dll,Stdcall -DllInit -MultiThread
         -Comp5 sample.cbl

3.1.2　Windows(x64)の場合

COBOL UAPの開発は開発マネージャを用いて作成およびコンパイルすることができます。また，次の例のようにコマンドを入力してコンパイルとリンクを行うこともできます。

（例）

ccbl2002 -MainNotCBL -Dll -DllInit -MultiThread -Comp5 sample.cbl

3.1.3　AIX(64)の場合

COBOL UAPのコンパイルおよびリンケージ例を次に示します。

コンパイルの例を次に示します。

ccbl2002 -MainNotCBL -PIC,Std -MultiThread -Comp5 sample.cbl
ld -o libsample.a sample.o -b64 -bpT:0x100000000 -bpD:0x110000000
   -bnoentry -bM:SRE -bexpall -L/opt/HILNGcbl2k64/lib -lcbl2k64
   -lcbl2kml64 -lcbl2kmp64 -lpthreads -lm

リンケージ時は，「-L/opt/HILNGcbl2k64/lib -lcbl2k64 -lcbl2kml64 -lcbl2kmp64 -lpthreads -lm」が必要です。

3.1.4　Linux(x64)の場合

COBOL UAPのコンパイルおよびリンケージ例を次に示します。

コンパイルの例を次に示します。

CBLSRCENCODING=SJIS
export CBLSRCENCODING
ccbl2002 -UniObjGen -MainNotCBL -PIC,Std -MultiThread -Comp5 sample.cbl
ld -shared -o libsample.so sample.o -L/opt/HILNGcbl2k64/lib -lcbl2k
   -lcbl2kmp -lpthread -lm -Bstatic -lcbl2kml

リンケージ時は，「-L/opt/HILNGcbl2k64/lib -lcbl2k -lcbl2kmp -lpthread -lm -Bstatic -lcbl2kml」が必要です。

COBOLソースは，シフトJISコードだけを対象としています。

3.2　Javaプログラムのコンパイル

Javaプログラムのコンパイル方法について説明します。

3.2.1　Windowsの場合

作成したJavaプログラム（ServletやBean）は，Cosminexusの開発環境を使用してコンパイルしclassファイルを生成します。ただし，次のことに注意してください。

(1)　JavaBeanの場合

クラスパスに”COBOL2002インストールフォルダ¥LIB¥j2cbrun.jar”を指定する必要があります。

(2)　EJBの場合

クラスパスに次の内容を指定する必要があります。

Cosminexus 09-80より前の場合

COBOL2002インストールフォルダ¥LIB¥j2cbrun.jar

Cosminexus 09-80以降の場合

COBOL2002インストールフォルダ¥LIB¥j2cbrun.jar

<Cosminexusインストールフォルダ>¥jdk¥lib¥hcompatlib¥hjdk.tpb.jar

この場合，javacコマンドで「--add-modules=java.corba」オプションを指定しないでください。

3.2.2　UNIXの場合

作成したJavaプログラム（ServletやBean）は，Windows環境のCosminexusの開発環境を使用してコンパイルし，classファイルをUNIX環境に移して（バイナリコードで転送する）使用してください。

4　アプリケーションサーバの環境整備

作成したCOBOL UAPとJavaプログラムを実行させるためには，まず実行環境を整えなくてはなりません。この章では，実行環境についてWebコンテナサーバを使用した場合，およびJ2EEサーバ（EJB対応）を使用した場合について説明します。

4.1　Cosminexusの環境について

COBOLプログラムを実行する前に，Cosminexusの動作に必要な定義と環境変数を設定してください。Cosminexusの環境定義については，使用しているCosminexusのバージョンに対応した，マニュアル「Cosminexus　システム構築・運用ガイド」，またはマニュアル「Cosminexus　システム構築ガイド」を参照してください。

これ以降の説明で使用するCosminexus Component Containerのインストールディレクトリ階層を次に示します。

注※

Windowsの場合：

これ以降 <Cosminexusインストールフォルダ>¥CCのことを省略して<CCインストール先>とします。例えば，serverディレクトリを表す場合，<CCインストール先>¥serverと表します。

UNIXの場合：

これ以降 <Cosminexusインストールディレクトリ>/CCのことを省略して<CCインストール先>とします。例えば，serverディレクトリを表す場合，<CCインストール先>/serverと表します。

4.2　Webコンテナサーバを使用した場合

Cosminexusの実行環境を使用する場合に必要なサービスが起動されているか確認してください。

JavaBeansの場合

Webサーバ

Webコンテナサーバ

EJBの場合

Webサーバ

Webコンテナサーバ

J2EEサーバ

Webサーバの設定については使用するWebサーバのマニュアルを参照してください。

4.2.1　Webコンテナサーバの環境変数の設定

WebコンテナサーバはJavaBeansおよびEJBで使用します。JavaBeansではCLASSPATHの設定およびLibrary Pathの設定，EJBではCLASSPATHの設定およびEJB呼び出し用の環境設定を行ってください。設定内容について次に説明します。

(1)　CLASSPATHの設定

(a)　Windowsの場合

次の手順でCLASSPATHに"COBOL2002インストールフォルダ¥LIB¥j2cbrun.jar"を設定します。

Webコンテナサーバのユーザ定義ファイル（usrconf.cfg）をテキストエディタで開きます。

＜格納フォルダ＞

< CCインストール先>¥web¥containers¥<サーバ名>¥usrconf

usrconf.cfgファイルに"web.add.class.path=追加するjarファイル"を指定します。

＜指定例＞

web.add.class.path=C:¥PROGRA~1¥Hitachi¥Cobol2~1¥LIB¥j2cbrun.jar

ファイルを保存し，Webコンテナサーバを再起動します。

(b)　AIX(64)またはLinux(x64)の場合

次の手順でCLASSPATHに"/opt/HILNGcbl2k64/lib/j2cbrun.jar"を設定します。

Webコンテナサーバのユーザ定義ファイル（usrconf.cfg）をテキストエディタで開きます。

＜格納ディレクトリ＞

< CCインストール先>/web/containers/<サーバ名>/usrconf

usrconf.cfgファイルに"web.add.class.path=追加するjarファイル"を指定します。

＜指定例＞

web.add.class.path=/opt/HILNGcbl2k64/lib/j2cbrun.jar

ファイルを保存し，Webコンテナサーバを再起動します。

(2)　Library Pathの設定

次の手順でLibrary Pathを設定します。

(a)　Windowsの場合

Windowsの［コントロールパネル］を開き，［システム］をダブルクリックします。

システムのプロパティウィンドウの詳細タグ中の環境変数をクリックします。

システム環境変数PATHに"COBOL2002インストールフォルダ¥BIN"を追加します。

設定の変更を適用するために，OKをクリックします。

設定後Webコンテナサーバを再起動します。

（Webコンテナサーバを起動するコマンドプロンプトも必ず再起動してください）。

(b)　AIX(64)の場合

システム環境変数LIBPATHに"/opt/HILNGcbl2k64/lib"を追加します。

設定後，Webコンテナサーバを再起動します。

(c)　Linux(x64)の場合

システム環境変数LD_LIBRARY_PATHに"/opt/HILNGcbl2k64/lib"を追加します。

設定後，Webコンテナサーバを再起動します。

(3)　EJB呼び出し用の環境設定(EJBだけ)

(a)　RMI-IIOPのスタブの取得

cjgetstubsjarコマンドでアプリケーションのRMI-IIOPスタブおよびインタフェースの取得を行います。

＜例＞

EJB Jar File-> 1.jar

Stubs Jar File-> stubs.jar

(b)　EJBクライアントJarファイルの取得

HiEJBClientStatic.jarファイルをEJBクライアントアプリケーション側にコピーします。

＜格納フォルダ＞

Windowsの場合

<CCインストール先>¥client¥lib¥HiEJBClientStatic.jar

UNIXの場合

<CCインストール先>/client/lib/HiEJBClientStatic.jar

(c)　usrconf.cfgファイルの変更

Webコンテナサーバのユーザ定義ファイル（usrconf.cfg）をテキストエディタで開きます。

＜格納フォルダ＞

Windowsの場合

<CCインストール先>¥web¥containers¥<サーバ名>¥usrconf

UNIXの場合

<CCインストール先>/web/containers/<サーバ名>/usrconf

usrconf.cfgファイルに"web.add.class.path=追加するjarファイル"を指定します。

ここでは，(a)，(b)で取得したファイルを指定します。

RMI-IIOPのスタブファイル（EJB Jar File，Stubs Jar File）

EJBクライアントJarファイル

4.2.2　J2EEサーバの設定（EJBだけ）

J2EEサーバはEJB対応で使用します。CLASSPATHおよびLibrary Pathの設定方法を次に説明します。

(1)　環境変数の設定

(a)　Windowsの場合

J2EEサーバのユーザ定義usrconf.cfg（<CCインストール先>¥server¥usrconf¥ejb¥<サーバ名称>¥usrconf.cfg）で次の設定を行う必要があります。

add.class.pathキーに”COBOL2002インストールフォルダ¥LIB¥j2cbrun.jar”を設定します。

add.library.pathキーに”COBOL2002インストールフォルダ¥BIN”を設定します。

＜設定例＞

add.class.path=E:¥PROGRA~1¥Hitachi¥Cobol2~1¥LIB¥j2cbrun.jar

add.library.path=E:¥PROGRA~1¥Hitachi¥Cobol2~1¥BIN

注意

パスに8文字を超えるファイル名または空白を含むファイル名を指定する場合，短いファイル名（PROGRA~1など）を指定してください。短いファイル名は，コマンドプロンプトで"dir /X"コマンドを指定して確認してください。

(b)　AIX(64)またはLinux(x64)の場合

J2EEサーバのユーザ定義usrconf.cfg（<CCインストール先>/server/usrconf/ejb/<サーバ名称>/usrconf.cfg）で次の設定を行ってください。

add.class.pathキーに「/opt/HILNGcbl/lib2k64/j2cbrun.jar」を設定します。

add.library.pathキーに「/opt/HILNGcbl2k64/lib」を設定します。

＜設定例＞

add.class.path=/opt/HILNGcbl2k64/lib/j2cbrun.jar

add.library.path=/opt/HILNGcbl2k64/lib

5　COBOLアクセスの実行環境の整備

この章では，COBOLアクセス環境下でCOBOLプログラムの実行環境を設定するための環境変数の指定方法について説明します。

5.1　COBOLアクセスでのCOBOL環境変数の設定

COBOLアクセス環境下のCOBOLプログラムは，マルチスレッド環境で動作しているため，COBOL環境変数が有効となる範囲は，指定方法によって次の2種類があります。

COBOLアクセス環境のプロセス空間に有効となる環境変数

COBOLアクセス環境で動作するスレッド単位に有効となる環境変数

なお，COBOLアクセス環境下では実行支援で生成する実行環境ファイルは使用できません。環境変数の有効範囲別に，COBOL環境変数の指定方法を次に示します。

5.1.1　COBOLアクセスプロセス空間に有効な環境変数

COBOLアクセスプロセス空間に有効となるCOBOL環境変数は，次に示す二つの方法で設定できます。

Cosminexus起動コマンド発行前にシェルなどで，COBOL2002が提供する実行時環境変数の設定で行います。※

実行時環境変数群が指定された環境設定ファイル名を「cobol.sysenvfile」に指定します。

環境設定ファイルに，環境変数CBL_SYSOUT，CBL_SYSPUNCH，CBL_SYSERR，CBLABNLST，CBLDDUMPを指定することで，指定した物理ファイル名に対して自動的にスレッド識別子が付加されたスレッドごとの固有のファイル出力ができます。また，Cosminexus起動コマンド発行前にシェルなどで環境変数CBL_SYSOUT，CBL_SYSPUNCH，CBL_SYSERR，CBLABNLST，CBLDDUMPの設定も行っている場合は，環境設定ファイルで設定したCOBOL環境変数設定が有効となります。

環境変数CBL_SYSOUT，CBL_SYSPUNCH，CBL_SYSERR，CBLABNLST，CBLDDUMPの詳細については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」を参照してください。

注※

COBOL2002が提供する実行時環境変数のうち，環境変数CBLEXCEPTは有効となりません。

(1)　環境設定ファイルに指定する内容

環境設定ファイル（sysenv.txt）に実行環境設定変数を次のように指定します。

Windowsの場合

CBL_SYSOUT=C:¥TEMP¥SYSOUTFILE
CBL_SYSERR=C:¥TEMP¥SYSERRFILE
CBLABNLST=C:¥TEMP¥ABENDLST
CBLDDUMP=C:¥TEMP¥DUMPLST

UNIXの場合

CBL_SYSOUT=/TEMP/SYSOUTFILE
CBL_SYSERR=/TEMP/SYSERRFILE
CBLABNLST=/TEMP/ABENDLST
CBLDDUMP=/TEMP/DUMPLST

5.1.2　COBOLアクセスでのCOBOL環境変数の設定

Webコンテナサーバで，COBOL環境変数を設定します。

usrconf.cfgファイルに"add.jvm.arg="に-Dオプションを先頭に付けて，cobol.sysenvfileを指定します。

(1)　設定例

環境設定ファイルをsysenv.txtとした場合の例を示します。

Windowsの場合

add.jvm.arg=-Dcobol.sysenvfile=E:¥work¥sysenv.txt

UNIXの場合

add.jvm.arg=-Dcobol.sysenvfile=/work/sysenv.txt

(2)　格納フォルダ

usrconf.cfgファイルが格納されているフォルダの場所を次に示します。

Windowsの場合

（JavaBeans版）

＜CCインストール先＞¥web¥containers¥サーバ名¥usrconf¥usrconf.cfg

（EJB版）

＜CCインストール先＞¥server¥usrconf¥ejb¥サーバ名¥usrconf.cfg

UNIXの場合

（JavaBeans版）

＜CCインストール先＞/web/containers/サーバ名/usrconf/usrconf.cfg

（EJB版）

＜CCインストール先＞/server/usrconf/ejb/サーバ名/usrconf.cfg

(3)　環境設定ファイル作成

環境設定ファイル（sysenv.txt）に実行環境設定変数を指定します。

(4)　Webコンテナサーバの再起動

環境設定ファイルを保存し，Webコンテナサーバを再起動します。

5.1.3　注意事項

環境設定ファイルでの実行時環境設定変数の設定は，J2EEサーバと同じプロセス空間で有効です。また全角文字を含む環境設定ファイル名は使用できません。

環境設定ファイルはテキスト形式のファイルで，1行に一つの実行時環境変数を1,024バイト以内で指定します。また，実行時環境変数を指定するそれぞれの行は，改行文字で終了していなければなりません。行始まりから"="の直前までを環境変数名，"="の直後から改行コードまたはEOFの直前までを環境変数の値とします。

環境変数の値に値を指定しない場合は，システム環境変数を無効にできます。指定した環境設定ファイルが存在しない場合，環境変数は設定されないで，そのまま処理を続行します。

5.2　スレッド単位の環境変数を設定する

COBOLプログラムの実行環境設定のため，さまざまな実行時オプションをプログラム別に設定する必要がある場合，ACCEPT，DISPLAY文による環境変数へのアクセス機能を利用して設定します。

この機能の詳細については，マニュアル「COBOL2002　ユーザーズガイド」またはマニュアル「COBOL2002　使用の手引　手引編」を参照してください。

5.3　COBOL UAPの検索順序

5.3.1　Windowsの場合

COBOLアクセス用Bean生成ツールで絶対パス名を指定した場合は，指定した絶対パス名を検索します。

dynamicpathオプションを指定した場合は，システム環境変数PATHの登録順となります。

5.3.2　UNIXの場合

COBOL UAPの検索は，「COBOLアクセス用Bean生成ツール−ステップ3/3」画面でライブラリ名に指定した絶対パス名を検索します。「COBOLアクセス用Bean生成ツール−ステップ3/3」画面については，「2.3.1　COBOLアクセス用Bean生成ツールによる生成」の「(3)　COBOLアクセス用Bean生成ツールの画面」の「(c)　ステップ3/3画面」を参照してください。

また，dynamicpathオプションを指定すると，ディレクトリ名を省略した共用ライブラリを，次の環境変数に指定された順に検索できます。

AIXの場合：システム環境変数LIBPATH

Linuxの場合：システム環境変数LD_LIBRARY_PATH

5.4　COBOLアクセスの環境変数の設定

COBOLアクセスの環境変数の設定について説明します。

5.4.1　環境変数CBLJ2CBOPT

COBOLアクセス実行環境変数CBLJ2CBOPTには，COBOLアクセス実行時ライブラリに渡すオプションを設定します。

設定方法は次のとおりです。設定に誤りがある場合は無効となります。

(1)　Windowsの場合

環境変数は，コマンドプロンプトまたはコントロールパネルの［システム］で設定します。

指定形式

set CBLJ2CBOPT=[OPTION] [: OPTION]...

[OPTION]

実行時ライブラリに渡すオプションを指定します。現在用意されているオプションはcomp5オプション，dynamicpathオプション，encodeオプション，endianオプション，japaneseオプション，loadingruleオプション，およびunicodeオプションです。

(2)　AIXの場合

AIXの環境変数に次の形式で指定します。

指定形式

CBLJ2CBOPT="[OPTION][: OPTION]..."
export CBLJ2CBOPT

[OPTION]

実行時ライブラリに渡すオプションを指定します。指定するときは引用符(")で囲んでください。現在用意されているオプションはcomp5オプション，dynamicpathオプション，encodeオプション，endianオプション，japaneseオプション，loadingruleオプション，およびunicodeオプションです。

(3)　Linux(x64)の場合

Linux(x64)の環境変数に次の形式で指定します。

指定形式

CBLJ2CBOPT="[OPTION][: OPTION]..."
export CBLJ2CBOPT

[OPTION]

実行時ライブラリに渡すオプションを指定します。指定するときは引用符(")で囲んでください。現在用意されているオプションはcomp5オプション，dynamicpathオプション，encodeオプション，endianオプション，japaneseオプション，loadingruleオプション，およびunicodeオプションです。

注

日本語項目および日本語編集項目を使用する場合は，unicodeオプションを必ず指定してください。詳細については，「付録A.5　Linuxで使用する場合の注意事項」を参照してください。

5.4.2　comp5オプション

(1)　機能

USAGE句にCOMPUTATIONAL-5またはCOMP-5を指定した2進項目のエンディアン形式を変更する場合に指定します。このオプションは，「COMP-5をCOMPとして扱う。」チェックボックスをオフにして生成したBeanに対してだけ有効です。

(2)　指定形式

Windowsの場合

SET CBLJ2CBOPT=comp5( little | big )

comp5オプション未指定時は，littleとして扱います。

AIXの場合

comp5オプションは引用符（"）で囲んで指定します。

CBLJ2CBOPT="comp5( little | big )"
export CBLJ2CBOPT

comp5オプション未指定時は，bigとして扱います。

Linuxの場合

comp5オプションは引用符（"）で囲んで指定します。

CBLJ2CBOPT="comp5( little | big )"
export CBLJ2CBOPT

comp5オプション未指定時は，littleとして扱います。

(3)　指定値の動作

comp5(little)：COMPUTATIONAL-5/COMP-5を指定した2進項目をリトルエンディアンで扱います。

comp5(big)：COMPUTATIONAL-5/COMP-5を指定した2進項目をビッグエンディアンで扱います。

(4)　注意事項

このオプションは，次のBeanで受け渡す，COMPUTATIONAL-5/COMP-5指定の2進項目に対して有効です。

COBOL adapter for Cosminexus Version 2 02-05以降で「COMP-5をCOMPとして扱う。」チェックボックスをオフにして生成したBean

Windows(x86) COBOL2002 Cosminexus連携機能 01-02以降の開発環境で，「COMP-5をCOMPとして扱う。」チェックボックスをオフにして生成したBean

5.4.3　dynamicpathオプション

(1)　機能

COBOLアクセス用Beanを生成する際に，呼び出すCOBOL UAPライブラリ名を絶対パス名指定でなくてもCOBOL UAPライブラリを呼び出すことができます。この機能は，オプションの指定と次の環境変数の指定によって有効となります。

Windowsの場合：システム環境変数PATH

AIXの場合：システム環境変数LIBPATH

Linuxの場合：システム環境変数LD_LIBRARY_PATH

(2)　指定形式

Windowsの場合

SET CBLJ2CBOPT=dynamicpath( yes | no )

UNIXの場合

CBLJ2CBOPT="dynamicpath( yes | no )"
export CBLJ2CBOPT

dynamicpathオプション未指定時は，noとして扱います（絶対パス名の指定が必要です）。

(3)　指定値の動作

Windowsの場合

yes指定時は，指定されたライブラリ名でローディングします。システム環境変数PATHにCOBOL UAPライブラリが格納されたフォルダ名を指定しておくと，COBOL UAPライブラリをローディングできます。

絶対パス名で指定された場合，指定された名称でローディングします。

dynamicpathオプション未指定時またはno指定時に，絶対パス名で指定されていない場合にはエラーとなります。

UNIXの場合

絶対パス名で指定されない（ / から始まらないファイル名）場合，指定されたライブラリ名でローディングします。ライブラリ名に拡張子がない場合は拡張子（AIXの場合：.a，Linuxの場合：.so）を付けたファイル名をライブラリ名とします。システム環境変数LIBPATH（AIXの場合）またはシステム環境変数LD_LIBRARY_PATH（Linuxの場合）にCOBOL UAPライブラリが格納されたディレクトリ名を指定しておくと，COBOL UAPライブラリをローディングできます。

絶対パス名で指定された場合，指定された名称でローディングします。

(4)　注意事項

UNIXの場合

指定されたライブラリ名にピリオド(.)がある場合，dynamicpathオプションでは拡張子（AIXの場合：.a，Linuxの場合：.so）は付加しません。

5.4.4　encodeオプション

(1)　機能

COBOLアクセスの文字列データ変換時のエンコードを変更します。

(2)　指定形式

エンコード名は任意のエンコードで指定します。

Windowsの場合

set CBLJ2CBOPT=encode(エンコード名)

encodeオプション未指定時は，次に記載するデフォルトエンコードとして扱います。

UNIXの場合

encodeオプションは引用符（"）で囲んで指定します。

CBLJ2CBOPT="encode(エンコード名)"
export CBLJ2CBOPT

encodeオプション未指定時は，次に記載するデフォルトエンコードとして扱います。

(3)　指定値の動作

指定されたエンコードで文字列変換のエンコードを行います。呼び出すCOBOLプログラムで使用する文字コードに対応したエンコードを指定してください。

(4)　注意事項

指定された文字列の値はチェックしません。指定時には大文字，小文字にご注意ください。また，サポートされていないエンコードを指定した場合の動作は保証しません。

(5)　デフォルトエンコード

文字列変換のエンコードはシステムに依存します。

encodeオプションを指定しない場合のデフォルトエンコードは「表5‒1　デフォルトエンコード一覧」を参照してください。

表5‒1　デフォルトエンコード一覧

OS

システム環境変数LANG

コード系

デフォルトエンコード

Windows

−

シフトJIS

MS932

AIX

Ja_JP

シフトJIS

Cp943C

ja_JP

日本語EUC

Cp33722C

Linux

ja_JP.UTF-8

UTF-8

UTF-8

(6)　エンコード対象となる項目

COBOLプログラムに渡す引数で次に示す項目が対象となります。

英字項目

英数字項目

英数字編集項目

日本語項目

日本語編集項目

5.4.5　endianオプション

(1)　機能

コンピュータで扱うバイナリデータ（2進項目および内部浮動小数点項目）の形式がWindows，AIX，またはLinuxで異なります。WindowsおよびLinuxではリトルエンディアン形式で，AIXではビッグエンディアン形式となります。

（例）

513（=X'00000201'）が4バイトの2進項目に配置された場合の違い

ビッグエンディアン形式（AIX）

リトルエンディアン形式（Windows，Linux）

WindowsまたはLinuxのCOBOLでは，通常リトルエンディアン形式でデータを扱いますが，COBOLプログラムのコンパイル時に-BigEndianオプションを指定すると，ビッグエンディアン形式でデータを扱うことができます。ビッグエンディアン形式でデータを扱うプログラムをJavaから呼び出して使用したい場合には，このオプションにbigを指定すると，ビッグエンディアン形式でデータを受け渡しすることができます。

(2)　指定形式

Windowsの場合

SET CBLJ2CBOPT=endian( little | big )

endianオプション未指定時は，littleとして扱います。

AIXの場合

endianオプションは引用符（"）で囲んで指定します。

CBLJ2CBOPT="endian( little | big )"
export CBLJ2CBOPT

endianオプション未指定時は，bigとして扱います。

Linuxの場合

endianオプションは引用符（"）で囲んで指定します。

CBLJ2CBOPT="endian( little | big )"
export CBLJ2CBOPT

endianオプション未指定時は，littleとして扱います。

(3)　指定値の動作

endian(little)： 2進項目をリトルエンディアンで扱います。

endian(big)： 2進項目をビッグエンディアンで扱います。

(4)　注意事項

このオプションは，次の項目に対して有効です。

浮動小数点項目

COMPUTATIONAL-5／COMP-5を除いた2進項目

次に示すBeanで受け渡す，COMPUTATIONAL-5／COMP-5指定の2進項目

COBOL adapter for Cosminexus Version 2 02-05未満で生成したBean

COBOL adapter for Cosminexus Version 2 02-05以降で「COMP-5をCOMPとして扱う。」チェックボックスをオンにして生成したBean

Windows(x86) COBOL2002 Cosminexus連携機能01-02未満の開発環境で生成したBean

Windows(x86) COBOL2002 Cosminexus連携機能01-02以降の開発環境で「COMP-5をCOMPとして扱う。」チェックボックスをオンにして生成したBean

WindowsまたはLinuxの場合COBOLアクセスで，このオプションにbigを指定する場合は，COBOLプログラムコンパイル時に-BigEndian,Binコンパイラオプションと-BigEndian,Floatコンパイラオプションを指定してください。

5.4.6　japaneseオプション

(1)　機能

日本語項目を扱う場合に指定します。このオプションは，「日本語項目を英数字項目として扱う。」チェックボックスをオフにして生成したBeanの日本語項目（日本語編集項目を含む）に対してだけ有効です。

(2)　指定形式

Windowsの場合

SET CBLJ2CBOPT=japanese( 1 | 2 )

japaneseオプション未指定時は，2として扱います。

UNIXの場合

japaneseオプションは引用符（"）で囲んで指定します。

CBLJ2CBOPT="japanese( 1 | 2 )"
export CBLJ2CBOPT

japaneseオプション未指定時は，2として扱います。

(3)　指定値の動作

japanese(1)：設定するデータの長さが項目長よりも短い場合，半角の空白を補います。

japanese(2)：設定するデータの長さが項目長よりも短い場合，全角の空白を補います。空白を補う領域長が奇数バイトの場合は，すべて半角の空白で補います。

(4)　注意事項

このオプションは，次のBeanで受け渡す日本語項目および日本語編集項目に対して有効です。

COBOL adapter for Cosminexus Version 2 02-05以降で「日本語項目を英数字項目として扱う。」チェックボックスをオフにして生成したBean

Windows(x86) COBOL2002 Cosminexus連携機能01-02以降で「日本語項目を英数字項目として扱う。」チェックボックスをオフにして生成したBean

5.4.7　loadingruleオプション

(1)　機能

COBOLアクセス用Beanから呼び出すCOBOL UAPライブラリのロード／アンロードを制御したい場合に指定します。

(2)　指定形式

Windowsの場合

SET CBLJ2CBOPT=loadingrule( resident | noresident )

UNIXの場合

loadingruleオプションは引用符（"）で囲んで指定します。

CBLJ2CBOPT="loadingrule( resident | noresident )"
export CBLJ2CBOPT

loadingruleオプション未指定時は，residentとして扱います。

(3)　指定値の動作

loadingrule(resident)：COBOLアクセス用Beanから呼び出されるすべてのCOBOL UAPライブラリをアンロードしません。

loadingrule(noresident)：COBOL UAPライブラリをアンロードします。ただし，環境変数CBLJ2CBSTAYLIBに指定があるCOBOL UAPライブラリはアンロードしません。

(4)　注意事項

Windowsの場合，COBOLアクセス用Beanから呼び出すCOBOL UAPライブラリをCOBOLダイナミックリンク機能のCOBOL UAPライブラリとしても使用する場合，必ず環境変数CBLJ2CBSTAYLIBに共用したいCOBOL UAPライブラリ名を指定する必要があります。UNIXの場合には，COBOLダイナミックリンク機能のCOBOL UAPライブラリがアンロードされないため該当しません。

COBOLアクセス用Beanから呼び出すCOBOL UAPライブラリがすでにロードされている場合，ローディングしません。そのため，COBOL UAPからさらに呼び出したC UAPなどで，COBOLアクセス用Beanから呼び出すCOBOL UAPライブラリのアンロードはしないでください。

5.4.8　unicodeオプション

(1)　機能

COBOL UAPと受け渡す引数の，文字列データ変換時のエンコードをUTF-8およびUTF-16で行うことを指定します。

(2)　指定形式

Windowsの場合

SET CBLJ2CBOPT=unicode( no | big | little )

unicodeオプション未指定時は，noとして扱います。

UNIXの場合

unicodeオプションは引用符（”）で囲んで指定します。

CBLJ2CBOPT="unicode( no | big | little )"
export CBLJ2CBOPT

unicodeオプション未指定時は，noとして扱います。

(3)　指定値の動作

unicode(no)：文字列データをencodeオプション指定に従ってエンコードします。encodeオプション未指定時は，デフォルトエンコードで変換します。デフォルトエンコードについては，「5.4.4　encodeオプション」の「(5)　デフォルトエンコード」の「表5‒1　デフォルトエンコード一覧」を参照してください。

unicode(big/little)：文字列データをUTF-8またはUTF-16でエンコードします。

英数字項目はUTF-8でエンコードします。

日本語項目は，big指定時はUTF-16BEで，little指定時はUTF-16LEでエンコードします。

(4)　注意事項

このオプションにbigまたはlittleを指定した場合，encodeオプションの指定は無効となります。

日本語項目として扱う場合は，「日本語項目を英数字項目として扱う。」チェックボックスをオフにして，COBOLアクセス用Beanを生成してください。

また，Linuxの場合は，unicodeオプションを必ず指定してください。詳細については，「付録A.5　Linuxで使用する場合の注意事項」を参照してください。

(5)　エンコード対象となる項目

COBOL UAPに受け渡す引数で次に示す項目が対象となります。

英字項目

英数字項目

英数字編集項目

日本語項目

日本語編集項目

(6)　設定するデータの長さが項目長よりも短い場合に補う文字

英数字項目はUTF-8の半角空白(0x20)を補います。

日本語項目はjapaneseオプションの指定によって，補う文字が異なります。big指定時は次に示す文字を補います。

japanese(1)：UTF-16の半角空白(0x0020)を補います。

japanese(2)：UTF-16の全角空白(0x3000)を補います。

5.5　環境変数CBLJ2CB_DDUMP

5.5.1　機能

COBOLアクセス用Beanのsetter／getter呼び出し時のデータ領域の情報を出力する機能です。環境変数またはJavaのシステムプロパティでフォルダ名が設定されない場合，ダンプファイル（引数情報を格納するファイル）は出力されません。機能の詳細については，「7.2　引数情報表示機能」を参照してください。

5.5.2　指定方法

ダンプファイル出力先フォルダ名とファイルサイズの上限を設定します。

Windowsの場合

Windowsの環境変数を設定します。

SET CBLJ2CB_DDUMP=フォルダ名[,filesize(nnnn)]

フォルダ名は，ダンプファイル出力先フォルダ名をドライブ名から指定します。

UNIXの場合

環境変数CBLJ2CB_DDUMPは引用符（"）で囲んで指定します。

CBLJ2CB_DDUMP="ディレクトリ名[,filesize(nnnn)]"
export CBLJ2CB_DDUMP

ディレクトリ名は，ダンプファイル出力先ディレクトリ名をルートディレクトリ（/）から指定します。

指定時の規則

filesize(nnnn)を指定する際は，コンマ(,)を付けて指定します。

nnnn：作成するダンプファイルのファイルサイズの上限をMB単位で指定します。

filesizeの指定がない場合，10(MB)を仮定します。

指定可能な範囲は，1〜2000です。範囲外の場合や指定がない場合は，10を仮定します。

5.5.3　指定例

Windowsの場合

ファイルサイズの上限を指定しない例
　　SET CBLJ2CB_DDUMP=c:¥users

ファイルサイズの上限に100MBを指定した例
　　SET CBLJ2CB_DDUMP=c:¥users,filesize(100)

UNIXの場合

ファイルサイズの上限を指定しない例
　　CBLJ2CB_DDUMP="/users"
　　export CBLJ2CB_DDUMP

ファイルサイズの上限に100MBを指定した例
　　CBLJ2CB_DDUMP="/users,filesize(100)"
　　export CBLJ2CB_DDUMP

5.6　環境変数CBLJ2CBSTAYLIB

5.6.1　機能

COBOLアクセス用Beanから呼び出すCOBOLプログラムのライブラリが，呼び出し後にアンロードされる場合，環境変数CBLJ2CBSTAYLIBを設定すると，アンロードしないで常駐化できます。

COBOLアクセス用Beanを生成する際に指定したライブラリ名称を環境変数CBLJ2CBSTAYLIBに指定しておくと，最初にライブラリを呼び出したときに常駐化されます。これ以降，常駐化されたライブラリを呼び出すようになります。

COBOLアクセス用Beanを生成する際に指定したライブラリ名称が環境変数CBLJ2CBSTAYLIBに指定されていない場合，AIXのCosminexus実行環境では，呼び出したライブラリはアンロードされます。Windows，またはLinuxのCosminexus実行環境では，呼び出したライブラリはアンロードされません。

5.6.2　指定形式

Windowsの場合

　SET CBLJ2CBSTAYLIB=libname[:libname]・・・

指定例

　SET CBLJ2CBSTAYLIB=sample1:sample2

UNIXの場合

環境変数CBLJ2CBSTAYLIBは引用符（"）で囲んで指定します。

　CBLJ2CBSTAYLIB="libname[:libname]・・・"
　export CBLJ2CBSTAYLIB

指定例（AIXの場合）

　CBLJ2CBSTAYLIB="/home/lib/libsample1.a:/home/lib/libsample2.a"
　export CBLJ2CBSTAYLIB

5.6.3　注意事項

Windowsの場合，dynamicpathオプションにyesを指定してください。 dynamicpathオプション未指定時またはno指定時には，環境変数CBLJ2CBSTAYLIBで指定したライブラリは常駐化対象になりません。

環境変数CBLJ2CBSTAYLIBに指定されたCOBOLプログラムのライブラリは，Cosminexus Application Serverが終了するまで常駐します。使用頻度の低いライブラリを指定すると，使用可能なメモリ量が少なくなりますので，使用頻度の高いライブラリを常駐化するようにしてください。

UNIXの場合，atexitシステム関数で，終了時処理を行う関数を登録したCOBOLプログラムのライブラリを呼び出して使用すると，Cosminexus Application Serverの停止時にシグナルSIGILL（無効な命令）エラーが発生し，異常終了することがあります。これは，atexitシステム関数で登録した関数が，COBOLプログラムのライブラリのアンロードと同時にアンロードされるために発生するものです。このような現象が発生する場合は，ライブラリを常駐化すると，この問題を発生しないようにすることができます。Windowsの場合には，該当しません。

UNIXの場合，dynamicpathオプションを指定して，環境変数CBLJ2CBSTAYLIBで呼び出すCOBOL共用ライブラリを常駐化させたいときは，ディレクトリ名や拡張子を付けないで，ライブラリ名だけを指定してください。

指定例

　CBLJ2CBSTAYLIB="libsample1:libsample2"
　export CBLJ2CBSTAYLIB

6　プログラムの実行

プログラムを実行するには，これまで作成してきたそれぞれのファイルを適切な場所に配置する必要があります。この章では，プログラムの実行方法をファイルの種類に分けて説明します。

6.1　プログラムの実行方法

次に示す手順を実行してください。

Webアプリケーションの配置

サーブレットの登録

プログラムの実行

6.1.1　Webアプリケーションの配置

アプリケーションを実行する前に，次に示すどちらかの手順を実行してください。

(1)　XMLファイルで配置する場合

次のディレクトリの下にWebアプリケーションを配置します。

Windowsの場合

<CCインストール先>¥web¥containers¥<サーバ名>¥webapps

UNIXの場合

<CCインストール先>/web/containers/<サーバ名>/webapps

Webアプリケーションに必要なディレクトリおよびxmlファイルの構成を次に示します。

構成の説明

[Web_application]：任意の名称

[WEB-INF]ディレクトリ：固定名称のディレクトリ

web.xmlファイル：webアプリケーションで使用する

[classes]ディレクトリ：クラスファイル格納ディレクトリ（固定名称）

パッケージの場合，classesの下にパッケージ名のディレクトリを作成し，このディレクトリにクラスファイル（servlet，bean）を配置します。

(2)　warファイルで配置する場合

次に示すコマンドでwarファイルを作成します。

　　jar  cvf  [Web_application].war  [Web_application]

構成の説明

[Web_application]は任意の名称

6.1.2　サーブレットの登録

(1)　サーブレットの登録方法

サーブレットを登録する場合，次のXMLファイルに設定します。

Windowsの場合

<CCインストール先>¥web¥containers¥
<サーバ名>¥webapps¥[Web_application]¥WEB-INF¥web.xml

UNIXの場合

<CCインストール先>/web/containers/
<サーバ名>/webapps/[Web_application]/WEB-INF/web.xml

web.xmlの記述は<web-app></web-app>がルートタグになります。

　サーバ名：Cosminexusがインストールされているマシン名

　[Web_application]：任意の名称

(2)　サーブレットの追加方法

サーブレットの追加方法は，<servlet></servlet>タグ内の<servlet-name></servlet-name>タグにサーブレットの名称を，<servlet-class></servlet-class>タグにサーブレットクラスをパッケージ.クラス名で指定します。この場合，.classの指定は必要ありません（web.xml内には複数のサーブレットを登録できます）。

(3)　別名でマッピングする場合

作成したサーブレットを別名でマッピングする場合は，<servlet></servlet>タグ内の<servlet-mapping></servlet-mapping>タグにサーブレット名称を指定し，<url-pattern></url-pattern>にマッピング名称を指定します。

(4)　web.xmlの作成例

次に示すWebアプリケーションを例にweb.xmlの作成例を示します。

(a)　Webアプリケーション構成

アプリケーション名:Sample

Servlet名称:SearchCBLServlet

Package名:test

Mapping名: /test.SearchCBLServlet

(b)　ディレクトリ構成

(c)　web.xmlソースコード例

<web-app>
     <servlet>
          <servlet-name>SearchCBLServlet</servlet-name>
          <servlet-class>
            test. SearchCBLServlet
          </servlet-class>
     </servlet>
     <servlet-mapping>
          <servlet-name>SearchCBLServlet</servlet-name>
          <url-pattern>
            /test.SearchCBLServlet
          </url-pattern>
     </servlet-mapping>
</web-app>

6.1.3　プログラムの実行

作成したそれぞれのプログラムをそれぞれが対応した場所に格納し，Webアプリケーションサーバを起動すれば，実行できます。なお，Webアプリケーションサーバ起動中に再作成したCOBOL DLLファイル（Windowsの場合），またはCOBOL共用ライブラリ（UNIXの場合）を入れ替えることはできません。COBOL DLLファイル（Windowsの場合），またはCOBOL共用ライブラリ（UNIXの場合）を再作成した場合は，Webアプリケーションサーバを停止後，再作成したCOBOL DLLファイル（Windowsの場合），またはCOBOL共用ライブラリ（UNIXの場合）を再配置し，Webアプリケーションサーバを再起動してください。

WebアプリケーションサーバにCosminexusのWebコンテナサーバを用いて説明します。J2EEサーバ上での実行については，使用しているCosminexusのバージョンに対応した，マニュアル「Cosminexus　アプリケーション開発ガイド」を参照してください。

(1)　WebコンテナサーバでJavaBeanを実行する場合

(a)　Windowsの場合

WebアプリケーションサーバにCosminexusのWebコンテナサーバを使用した場合の各プログラムの格納場所を次に示します。

表6‒1　JavaBeanを実行する場合のプログラムの格納場所例（Windowsの場合）

項番

作成したファイル

格納場所

1

Htmlファイル

¥Webコンテナサーバ¥サーバ名¥webapps¥アプリケーション名※1

2

JSPファイル

¥Webコンテナサーバ¥サーバ名¥webapps¥アプリケーション名※1

3

Servletクラスファイル

¥Webコンテナサーバ¥サーバ名¥webapps¥アプリケーション名¥WEB-INF¥classes¥パッケージ名※1

4

Beanクラスファイル

¥Webコンテナサーバ¥サーバ名¥webapps¥アプリケーション名¥WEB-INF¥classes¥パッケージ名※1

5

web.xmlファイル

¥Webコンテナサーバ¥サーバ名¥webapps¥アプリケーション名¥WEB-INF※1

6

COBOL DLLファイル

COBOLアクセス用Bean生成ツールで指定したCOBOLライブラリ格納フォルダ※2

注※1

¥Webコンテナサーバは<CCインストール先>¥web¥containersです。

注※2

Windowsの場合，dynamicpathオプション指定時は，システム環境変数PATHにCOBOL DLL格納フォルダを指定する必要があります。

(b)　UNIXの場合

WebアプリケーションサーバにCosminexusのWebコンテナサーバを使用した場合の各プログラムの格納場所を次に示します。

表6‒2　JavaBeanを実行する場合のプログラムの格納場所例（UNIXの場合）

項番

作成したファイル

格納場所

1

Htmlファイル

/opt/Hitachi/httpsd/htdocs

2

JSPファイル

/opt/Hitachi/httpsd/htdocs

3

Servletクラスファイル

/Webコンテナサーバ/サーバ名/webapps/アプリケーション名/WEB-INF/classes/パッケージ名※

4

Beanクラスファイル

/Webコンテナサーバ/サーバ名/webapps/アプリケーション名/WEB-INF/classes/パッケージ名※

5

web.xmlファイル

/Webコンテナサーバ/サーバ名/webapps/アプリケーション名/WEB-INF※

6

COBOL共用ライブラリ

COBOLアクセス用Bean生成ツールで指定したCOBOL共用ライブラリ格納ディレクトリ

注※

/Webコンテナサーバは<CCインストール先>/web/containersです。

(2)　WebコンテナサーバでEJBを実行する場合

(a)　Windowsの場合

WebアプリケーションサーバにCosminexusのWebコンテナサーバを使用した場合の各プログラムの格納場所を次に示します。

表6‒3　EJBを実行する場合のプログラムの格納場所例（Windowsの場合）

項番

作成したファイル

格納場所

1

Htmlファイル

¥Webコンテナサーバ¥サーバ名¥webapps¥アプリケーション名※

2

Servletクラスファイル

¥Webコンテナサーバ¥サーバ名¥webapps¥アプリケーション名¥WEB-INF¥classes¥パッケージ名※

注※

¥Webコンテナサーバは<CCインストール先>¥web¥containersです。

(b)　UNIXの場合

WebアプリケーションサーバにCosminexusのWebコンテナサーバを使用した場合の各プログラムの格納場所を次に示します。

表6‒4　EJBを実行する場合のプログラムの格納場所例（UNIXの場合）

項番

作成したファイル

格納場所

1

Htmlファイル

/opt/Hitachi/httpsd/htdocs

2

Servletクラスファイル

/Webコンテナサーバ/サーバ名/webapps/アプリケーション名/WEB-INF/classes/パッケージ名※

注※

/Webコンテナサーバは<CCインストール先>/web/containersです。

(3)　Cosminexus Component Container使用時の注意事項

Cosminexus Component Containerの「業務アプリケーションの実行監視機能」や「業務アプリケーションの強制停止機能」，「業務アプリケーションのリデプロイ機能」を利用する場合には，次の値をCosminexus Component Containerの提供する「保護区リストファイル」に追加してください。

【値】

jp.co.hitachi_sk.j2cb.*

「保護区リストファイル」の詳細は，使用しているCosminexusのバージョンに対応した，マニュアル「Cosminexus　リファレンス　定義編（サーバ定義）」を参照してください。

6.2　EJB対応COBOLアクセス使用時の注意事項

COBOLプログラム中のDBアクセスはJTS（Java Transaction Service）に連携できません。

7　プログラムのデバッグ

この章では，作成したCOBOL UAPとJavaプログラムのデバッグに関する操作を説明します。

7.1　プログラムのデバッグ

プログラムのデバッグについて説明します。COBOL UAPのデバッグ機能は，Linuxでは使用できません。

7.1.1　Servletのデバッグ

通常のServletと同様の手順でデバッグできます。

Servletのデバッグについては，使用しているCosminexusのバージョンに対応した，マニュアル「Cosminexus アプリケーション開発ガイド」を参照してください。

7.1.2　COBOL UAPのデバッグ（Windows，AIXの場合）

COBOLアクセス環境下では，テストデバッガを使用してデバッグできます。デバッグは，Webコンテナサーバを使用した開発環境で行うことができます。

COBOL2002ではコンパイル時に，デバッグオプション -TDInfを指定し，Cosminexus連携の実行時にCOBOL2002が提供する環境変数（CBLTDEXECなど）を設定することで，COBOL2002テストデバッガを使用してCOBOLプログラムのデバッグを行うことができます。

テストデバッガの使用方法については，マニュアル「COBOL2002　操作ガイド」またはマニュアル「COBOL2002　使用の手引　操作編」を参照してください。

(1)　Windowsの場合

コントロールパネルなどの環境変数設定画面で次の環境変数を設定すると，COBOLプログラムを連動して実行できます。

・CBLTDEXEC=TD
・CBLPIDIR=CBPファイルのパス名

(a)　WebコンテナサーバまたはJava EEサーバを使用する場合

ユーザ定義ファイルに「cobol.sysenvfile=環境設定ファイルの物理ファイル名」を設定します。詳細は，「5.1　COBOLアクセスでのCOBOL環境変数の設定」を参照してください。

また，Java UAPでCOBOL UAPの実行時エラーメッセージの内容を取得できます。取得のためのメソッドは「8.3　J2CBExceptionユーザインタフェースAPI」および「8.4　EJB用ExceptionユーザインタフェースAPI」を参照してください。

COBOL UAPの実行時エラーメッセージの内容を取得するためには，環境変数CBL_SYSERRで実行時エラーメッセージの出力先ファイルを指定する必要があります。環境変数CBL_SYSERRの詳細については，マニュアル「COBOL2002　ユーザーズガイド」を参照してください。

(2)　AIXの場合

次の環境変数を設定すると，ラインモードによるCOBOLプログラムを連動して実行できます。

・CBLTDEXEC=TL
　＜指定例＞
　　CBLTDEXEC="TL -Library COBOL共用ライブラリ名
　　　　　　　　　　　-Execute /opt/Cosminexus/CC/web/bin/cjstartweb"
・CBLPIDIR=CBPファイルのパス名
・CBLTDDISPLAY
　＜指定例＞
　　CBLTDDISPLAY=10.210.41.18:0.0
・CBLLPATH=COBOL共用ライブラリが格納されているパス名
　＜指定例＞
　　CBLLPATH=/javacobol/s93tpl/TD2002/tp/cobol
・CBLLSLIB=COBOL共用ライブラリ名
　環境変数CBLTDEXECでCOBOL共用ライブラリ名を指定しなかった場合，
　この環境変数でCOBOL共用ライブラリを指定する。

7.2　引数情報表示機能

COBOLアクセス用Beanのsetter／getter呼び出し時のデータ領域の情報を出力する機能です。環境変数CBLJ2CB_DDUMP※に出力先フォルダ名を指定することで，引数情報の表示内容をダンプファイル（表示した引数情報を格納するファイル）に出力します。

注※

指定方法については，「5.5　環境変数CBLJ2CB_DDUMP」を参照してください。

7.2.1　ダンプファイルの出力例

次に，ダンプファイルの出力例を示します。詳細な出力例は「7.2.4　出力フォーマット」を参照してください。

7.2.2　ダンプファイル

ダンプファイルは，環境変数CBLJ2CB_DDUMPで指定したフォルダに出力されます。出力するファイル名は，COBOLアクセス用Beanの種類によって，次のファイル名になります。

項番

対応するアクセス用Bean

ファイル名

1

JavaBean用のCOBOLアクセス用Beanの場合

J2cb_1.log , J2cb_2.log

2

EJB用のCOBOLアクセス用Beanの場合

J2cbe_1.log, J2cbe_2.log

引数情報表示機能では，二つのダンプファイルを切り替えながら出力します。切り替えは，ダンプファイルのファイルサイズが，指定されたファイルサイズの上限を超える場合に行います。ファイルサイズの上限値を指定しない場合のデフォルトサイズは，10MBです。ファイルサイズに指定できる値は，1〜2000で，単位はMBです。

指定したフォルダに上記ファイルが存在しない場合は，新規にファイルを作成します。すでにファイルが存在する場合は，ファイルの最後に追加書きします。ダンプファイル出力先フォルダの指定がない場合は，この機能は無効となり，ダンプファイルは出力しません。

すでに存在するファイルが読み取り専用の場合は，例外が発生します。

複数スレッドで実行する際も，上記ファイルに追加書きします。

7.2.3　制限事項

この機能は，Windows(x86) COBOL2002 Cosminexus連携機能またはCOBOL adapter for Cosminexus Version 2以降で生成したCOBOLアクセス用Beanで使用できます。COBOL adapter for Cosminexus （01-xx）で生成したCOBOLアクセス用Beanを実行した場合，引数情報は表示しません。

7.2.4　出力フォーマット

(1)　出力ファイルの概要

出力ファイルは，次のように出力されます。

(2)　識別情報

yyyy：年（西暦）　MM：月　dd：日

hh：時（1〜24）　mm：分　ss：秒

X：ローカル識別番号

Beanを呼び出すごとにローカルな番号が設定されます（番号は1〜2,147,483,647で，超えた場合は1となります）。

Bean名称：Beanのクラス名称

(3)　ヘッダ部

Windowsの場合

注※　Windows(x64)では，COBOL 拡張 Server Run Time System for Cosminexus Version 2(64)になります。

*** 1 *** ：Beanのパッケージ名称。パッケージがない場合は，”no-package”。

それぞれのヘッダ部には，識別情報が出力されます。

UNIXの場合

*** 1 *** ：Beanのパッケージ名称。パッケージがない場合は，”no-package”。

それぞれのヘッダ部には，識別情報が出力されます。

(4)　データ領域ダンプ

(a)　基本型setterの例

注

各行に識別情報が出力されます。

Beforeは変換前の情報を，Afterは変換後の情報をそれぞれ表します。setterの場合は，setterの引数に指定された値がBeforeに，引数領域に設定される値がAfterに表示されます。getterの場合は，引数領域の値がBeforeに，リターンする値がAfterに表示されます。

name：setter／getterのメソッド名を表します。

CBL-Type：

COBOLの定義を表します（詳細は「7.2.5　setter／getter引数情報表示時のデータ属性情報」を参照してください）。

J-Type：

Javaの定義を表します（詳細は「7.2.5　setter／getter引数情報表示時のデータ属性情報」を参照してください）。

size：該当する引数データの領域長を表します（バイト数）。

setterの場合

Beforeは，setterで指定したデータのデータ長を表します（バイト数）。

Afterは，COBOLデータ定義の領域長を表します（バイト数）。

getterの場合

Beforeは，COBOLデータ定義の領域長を表します（バイト数）。

Afterは，getterで取得するデータのデータ長を表します（バイト数）。

specified length：

可変長データおよびアドレスデータを指定した場合，SetterのBeforeにユーザが指定したデータ長を表示します。

データ長に0以下を指定した場合は，0を仮定し，表示します。

データ長が（全体長-4）を超える場合は，［全体長-4］を算出し，表示します。

そのほかのデータ項目には表示されません。

location：

引数領域先頭からの相対ロケーションを表します。COBOLデータ定義の場合に，表示します。

1.：表示するデータ先頭からの相対ロケーションを表します（16進表示）。

2.：データを16進表示します（16バイト分表示します）。

3.：データをそのまま表示します。表示できない文字は，”?”を表示します。

可変長データおよびアドレスデータ項目のダンプ表示でsetterのAfterとgetterのBeforeの先頭4バイトはデータ長を表します。

同一内容のダンプ表示が続く場合は，先頭行に続く行に，次を表示します。

同一内容の行が2行ある場合

同一内容の行が3行以上ある場合

(b)　基本型getterの例

注

各行に識別情報が出力されます。

OCCURS句が指定された場合は，指定された添字をsetter／getterのメソッド名に表示します。

OCCURS句が指定されたデータ項目に対するsetterの例

(5)　引数情報表示時のエラーケース

次に記載するエラーケースは，情報表示時のエラー表示です。例外は発生しません。

(a)　setterの引数に指定したObjectの型が誤っている場合

オブジェクト名：指定されたオブジェクト名を表示します。

(b)　変換時にエラーが発生した場合

(c)　COBOL adapter for Cosminexus 01-xxで作成したCOBOLアクセス用Beanの場合

Windowsの場合

注※　VV-RR(-ZZ)は流用元製品バージョン番号（例：02-13）を表します。

UNIXの場合

注※　VV-RR(-ZZ)は流用元製品バージョン番号（例：02-12）を表します。

(d)　getterで取得するデータが出力情報サイズに含まれない場合

(e)　getterで取得するデータの一部が出力情報サイズに含まれない場合

7.2.5　setter／getter引数情報表示時のデータ属性情報

ダンプファイルに出力されるデータ型を，表7-1に示します。

表7‒1　ダンプファイルに出力されるデータ型

項番

COBOLのデータ属性

COBOLのデータ定義※1

ダンプファイル出力時のデータ属性表示

CBL-Type※2

J-Type

1

英数字項目（文字列）

X　英数字項目※6

X(n)※5

String

N　日本語項目※7※10

X(n)※5

String

2

1〜4けたの小数を含まない符号付き2進項目

S9(4)

USAGE COMP※8

S9(4)※3

COMP

Short

S9(4)

USAGE COMP-5※12

S9(4)

COMP-5

3

1〜4けたの小数を含まない符号なし2進項目

9(4)

USAGE COMP※8

9(4)※3

COMP

Short

9(4)

USAGE COMP-5※12

9(4)

COMP-5

4

5〜9けたの小数を含まない符号付き2進項目

S9(9)

USAGE COMP※8

S9(9)※3

COMP

Integer

S9(9)

USAGE COMP-5※12

S9(9)

COMP-5

5

5〜9けたの小数を含まない符号なし2進項目

9(9)

USAGE COMP※8

9(9)※3

COMP

Integer

9(9)

USAGE COMP-5※12

9(9)

COMP-5

6

10〜18けたの小数を含まない符号付き2進項目

S9(18)

USAGE COMP※8

S9(18)※3

COMP

Long

S9(18)

USAGE COMP-5※12

S9(18)

COMP-5

7

10〜18けたの小数を含まない符号なし2進項目

9(18)

USAGE COMP※8

9(18)※3

COMP

Long

9(18)

USAGE COMP-5※12

9(18)

COMP-5

8

小数を含む符号付き2進項目

S9(17)V9(1)

USAGE COMP※8

S9(17)V9(1)※4

COMP

BigDecimal

S9(17)V9(1)USAGE COMP-5※12

S9(17)V9(1)

COMP-5

9

小数を含む符号なし2進項目

9(17)V9(1)

USAGE COMP※8

9(17)V9(1)※4

COMP

BigDecimal

9(17)V9(1)

USAGE COMP-5※12

9(17)V9(1)

COMP-5

10

左独立符号付き外部10進項目

S9(18)

SIGN LEADING

SEPARATE

S9(18)※4

LEADING

SEPARATE

BigDecimal

11

右独立符号付き外部10進項目

S9(18)

SIGN TRAILING

SEPARATE

S9(18)※4

TRAILING

SEPARATE

BigDecimal

12

符号なし外部10進項目

9(18)

9(18)※4

BigDecimal

13

左符号付き外部10進項目

S9(18)

SIGN LEADING

S9(18)※4

LEADING

BigDecimal

14

右符号付き外部10進項目

S9(18)

SIGN TRAILING

S9(18)※4

TRAILING

BigDecimal

15

単精度内部浮動小数点項目

USAGE COMP-1

COMP-1

Float

16

倍精度浮動小数点項目

USAGE COMP-2

COMP-2

Double

17

符号付き内部10進項目

S9(18)

USAGE COMP-3※9

S9(18)※4

COMP-3

BigDecimal

18

符号なし内部10進項目

9(18)

USAGE COMP-3※9

9(18)※4

COMP-3

BigDecimal

19

英数字項目（バイト配列）

X　英数字項目※6

X(n)※5

Byte

byte[]

N　日本語項目※7※10

X(n)※5

Byte

byte[]

20

日本語項目（文字列）

N　日本語項目※7※11

N(n)※4

String

21

先頭4バイトの2進形式

X(10)　(英数字項目)

X(10)

VARIABLE

byte[]V

22

アドレス項目

ADDRESS

ADDRESS

byte[]P

23

集団項目（バイト配列）

集団項目※13

G(n)※5

Byte

byte[]

注※1

指定例です。

注※2

表示例です。表示されるけた数は，COBOLのデータ定義によります。

注※3

COBOLのデータ定義で指定されたけた数にかかわらず，このけた数で表示されます（02-05未満で生成したBeanの場合）。

COBOLのデータ定義で指定されたけた数で表示されます(02-05以降)。

注※4

COBOLのデータ定義で指定されたけた数で表示されます。

注※5

バイト数で表示されます。

注※6

このほかに，英字項目，英数字編集項目，数字編集項目があります。

注※7

このほかに，日本語編集項目があります。

注※8

このほかに，COMP-4，BINARYがあります。

また，02-05未満で生成したBeanおよびCOBOLアクセス用Bean生成時にCOMP-5をCOMPとして扱うことを指定したCOMP-5も含みます。

注※9

このほかに，PACKED-DECIMALがあります。

注※10

COBOLアクセス用Bean生成時に，英数字項目として扱うことを指定した場合に，このような表示となります。CBL-Typeで表示される長さは，けた数を2倍した値となります。

注※11

COBOLアクセス用Bean生成時に，日本語項目として扱うことを指定した場合に，このような表示となります。

注※12

COBOLアクセス用Bean生成時に，COMP-5として扱うことを指定した2進項目の場合に，このような表示となります。

注※13

COBOLアクセス用Bean生成時に，集団項目のバイト配列アクセスをすることを指定した場合に，このような表示となります。

8　COBOLアクセス用Beanを呼び出すためのAPI

この章では，COBOLアクセス用Beanを呼び出すためのAPI（Application Programming Interface）について説明します。

8.1　提供クラス

COBOLアクセス用Beanで提供するクラスの一覧を表8-1に示します。

表8‒1　提供クラス一覧

項番

パッケージ名

クラス名

機能

1

jp.co.hitachi_sk.j2cb

CBLAccess

COBOL呼び出しクラス

2

J2CBException

COBOLプログラムで発生したエラー情報取得クラス（JavaBean用）

3

J2CBErrorUtil

COBOLプログラムで発生したエラー情報取得クラス（EJB用）

それぞれのクラスについては，「8.2　COBOLアクセス用BeanユーザインタフェースAPI」，「8.3　J2CBExceptionユーザインタフェースAPI」，および「8.4　EJB用ExceptionユーザインタフェースAPI」で説明します。

8.2　COBOLアクセス用BeanユーザインタフェースAPI

CBLAccessクラスで提供するメソッドの一覧を表8-2に示します。

表8‒2　CBLAccessクラスの提供メソッド一覧

項番

メソッド名

機能

1

callCOBOL

COBOL呼び出し

2

setXxx

引数データの設定

3

getXxx

引数データの取得

8.2.1　COBOLの各データ項目の設定方法と設定値

Javaのデータと受け渡しするCOBOLの各データ項目のsetter／getter規則を表8-3に示します。

表8‒3　各データ項目のsetter／getter規則

COBOLデータ項目

setter変換規則

getter変換規則

Javaデータ属性

英字項目

英数字項目

英数字編集項目

数字編集項目

日本語項目

日本語編集項目※4

1. String文字列をencodeオプション※1またはunicodeオプション※9に従って変換したバイト配列にする。

2. 1.の値の長さがCOBOLデータ項目長よりも長い場合は切り捨てられ，短い場合は半角空白が埋められる。

1. COBOLのデータ値をencodeオプション※1またはunicodeオプション※9に従って変換したStringオブジェクトを作成する。

文字列データ(String)

日本語項目

日本語編集項目※5

1. String文字列をencodeオプション※1またはunicodeオプション※9に従って変換したバイト配列にする。

2. 1.の値の長さがCOBOLデータ項目長よりも長い場合は切り捨てられ，短い場合はjapaneseオプション※3に従って全角空白または半角空白が埋められる。

1. COBOLのデータ値をencodeオプション※1またはunicodeオプション※9に従って変換したStringオブジェクトを作成する。

日本語データ(String)

英字項目

英数字項目

英数字編集項目

数字編集項目

日本語項目

日本語編集項目※4※6

集団項目※8

1. COBOLのデータ領域にbyte配列の値を無変換で設定する。Byte配列の長さが長い場合は切り捨てられ，短い場合はnull(0x00)が埋められる。

1. COBOLのデータ領域を無変換でbyte配列にする。

バイト配列データ(byte[])

英字項目

英数字項目

英数字編集項目

数字編集項目

日本語項目

日本語編集項目※4※6

次のデータに変換する。

全体長は可変で，

1. 長さを表すint(setterで指定された長さを設定)

2. データ自身を表すbyte配列

(配列長は，setterで指定された長さ)

(setterで指定されたデータを無変換で設定)

である。

1. 次に示すデータからbyte配列に変換する。

2. 先頭4バイトの長さ(1.)分のbyte配列に，データ自身(2.)を無変換でコピーする。

(*) 長さは，byte配列のlengthプロパティで取得する。

可変長データ(byte[])

アドレスデータ項目

次のデータに変換する。

全体長は可変で，

1. 長さを表すint(setterで指定された長さを設定)

2. データ自身を表すbyte配列

(配列長は，setterで指定された長さ)

(setterで指定されたデータを無変換で設定)

である。

1. 次に示すデータからbyte配列に変換する。

2. 先頭4バイトの長さ(1.)分のbyte配列に，データ自身(2.)を無変換でコピーする。

(*) 長さは，byte配列のlengthプロパティで取得する。

アドレスデータ(byte[])

単精度内部浮動項目

1. endianオプション※2に従ってデータの並び順を変更する。

1. endianオプション※2に従ってデータの並び順を変更する。

単精度データ(Float)

倍精度内部浮動項目

倍精度データ(Double)

1〜4けたの小数を含まない2進項目

1. endianオプション※2またはcomp5オプション※7に従ってデータの並び順を変更する。

1. endianオプション※2またはcomp5オプション※7に従ってデータの並び順を変更する。

Shortデータ(Short)

5〜9けたの小数を含まない2進項目

Integerデータ(Integer)

10〜18けたの小数を含まない2進項目

Longデータ(Long)

小数を含む2進項目

1. 小数点位置を合わせた2進データを作成する。

2. endianオプション※2に従ってデータの並び順を変更する。

1. endianオプション※2に従ってデータの並び順を変更する。

2. 小数点位置を合わせた数字データを作成する。

10進データ(BigDecimal)

外部10進

1. 符号を除いて，小数点位置を合わせた，数字データを作成する。

2. 独立符号であれば，空白／＋／−のどれかを文字データに付加する。そうでなければ，符号付きで負の値の場合は，符号を含むバイト位置の先頭4ビットを0x7Xとする。

(*) 数値のけた数が項目のけた数よりも大きい場合，けた落ちが発生する。整数けたでは左端の数値から，小数けたでは右端の数値からけた落ちが発生する。

1. 独立符号であれば，空白／＋／−のどれかから符号を決定する。そうでなければ，符号を含むバイト位置の先頭4ビットが0x3Xであれば正符号と，0x7Xであれば負符号とし，4ビットを0x3Xとする。

2. 符号も含めて，小数点位置を合わせた，数字データを作成する。

10進データ(BigDecimal)

内部10進

1. 符号を除いて，小数点位置を合わせた，内部10進項目の形式のデータを作成する。

(*) 数値のけた数が項目のけた数よりも大きい場合，けた落ちが発生する。整数けたでは左端の数値から，小数けたでは右端の数値からけた落ちが発生する。

(*) 内部10進項目は，1バイトで数字2けたを表現します。各けたは0〜9の数字で，最右端の4ビットで符号を表現する。

確保される領域長は，けた数から算出できる。

領域長=( けた数 / 2 ) + 1

（小数点以下は切り捨て）

偶数けた数の場合は，先頭の4ビットは0となる。

(*) 符号は次のように表現する。

正符号：0xC (ビット値=1100)

負符号：0xD (ビット値=1101)

符号無：0xF (ビット値=1111)

符号なし内部10進項目に負の値を設定しようとすると，エラーになる。

1. 符号部分を取り出し，符号を決定する。符号付き内部10進項目の場合は，符号部分が‘＋’／‘−’以外の場合はすべて‘＋’とし，符号なし内部10進項目の場合は，常に‘＋’とする。

2. 符号以外の数値を数字データにし，符号を付加する。

(*) 偶数けた数の場合は，先頭の4ビットは使用しない。

(*) 数字部分の値が0〜9以外の場合，値は保証しない。

10進データ(BigDecimal)

注※1

encodeオプションについては「5.4.4　encodeオプション」を参照してください。

注※2

endianオプションについては「5.4.5　endianオプション」を参照してください。

注※3

japaneseオプションについては「5.4.6　japaneseオプション」を参照してください。

注※4

「COBOLアクセス用Bean生成ツール−ステップ1/3」画面で「日本語項目を英数字項目として扱う」チェックボックスをオンにしてCOBOLアクセス用Beanを生成した場合，日本語項目および日本語編集項目は英数字項目と同じ扱いとなります。

注※5

「COBOLアクセス用Bean生成ツール−ステップ1/3」画面で「日本語項目を英数字項目として扱う。」チェックボックスをオフにしてCOBOLアクセス用Beanを生成した場合，日本語項目および日本語編集項目は日本語項目として扱います。

注※6

「COBOLアクセス用Bean生成ツール−ステップ2/3」画面でデータ属性フィールドを「バイト配列データ(byte[])」または「可変長データ(byte[])」に変更した場合，バイト配列データまたは可変長データとして扱います。

注※7

COBOLアクセス用Bean生成時にCOMP-5として扱うことを指定した2進項目の場合，comp5オプションに従います。comp5オプションについては，「5.4.2　comp5オプション」を参照してください。

注※8

COBOLアクセス用Bean生成時に「集団項目のバイト配列アクセスを使用する。」チェックボックスをオンにした場合，バイト配列データとして扱います。

注※9

unicodeオプションについては「5.4.8　unicodeオプション」を参照してください。

8.2.2　CBLAccessクラス

CBLAccessクラスのメソッドについて説明します。

(1)　COBOL呼び出し

(a)　JavaBean対応callCOBOLメソッド

[callCOBOLメソッド]

public int callCOBOL()
              throws J2CBException

パラメタ：なし

戻り値：COBOLエラーレベル

0：正常

-1：COBOLエラー以外

1：COBOL実行時エラー　Iレベルエラーメッセージ出力

2：COBOL実行時エラー　Wレベルエラーメッセージ出力

例外：J2CBException - 例外情報の取得

詳細は「8.3　J2CBExceptionユーザインタフェースAPI」を参照してください。

(b)　EJB対応callCOBOLメソッド

[callCOBOLメソッド]

public int callCOBOL()
            throws RemoteException,Exception

パラメタ：なし

戻り値：COBOLエラーレベル

0：正常

-1：COBOLエラー以外

1：COBOL実行時エラー　Iレベルエラーメッセージ出力

2：COBOL実行時エラー　Wレベルエラーメッセージ出力

例外：RemoteException，Exception - 例外情報の取得

詳細は，「8.4　EJB用ExceptionユーザインタフェースAPI」を参照してください。

(2)　引数データの設定

(a)　JavaBean対応setXxxメソッド

[setXxxメソッド]

public void setXxx(Object val [ , int dim1 { , int dim2 } ... ] )
            throws J2CBException

メソッド名setXxxのXxxは，設定するデータ項目のデータ名を表します。

例）02 WK-DATANAME PIC X(10). と定義されたデータが引数にある場合，

public void setWk_dataname(Object val) throws J2CBException

というsetterになります。

setterを呼び出してデータ項目に値を設定する場合，データ項目に対応するデータ属性のパラメタvalを指定してください。データ項目の対応は，「表2‒2　各データ項目に対応する表示文字列」を参照してください。

[ , int dim1 { , int dim2 } ... ]は，OCCURS句による繰り返しがあることを表します。

Dimは次元の個数分作成されます。

例）2次元の文字データが引数にある場合，

public void setWk_dataname(Object val, int dim1, int dim2)
                throws J2CBException

というsetterになります。

パラメタ：

val：設定するデータオブジェクト

dim1,dim2...：(添字が必要な場合の)各次元の添字

戻り値：なし

例外：J2CBException - 例外情報の取得

詳細は「8.3　J2CBExceptionユーザインタフェースAPI」を参照してください。

(b)　EJB対応setXxxメソッド

[setXxxメソッド]

public void setXxx(String※ val [ , int dim1 { , int dim2 } ... ] )
            throws RemoteException,Exception

注※　マッピングするJavaでのデータ属性で生成される。

メソッド名setXxxのXxxは，設定するデータ項目のデータ名を表します。また，[ , int dim1 { , int dim2 } ... ]は，OCCURS句による繰り返しがあることを表します（[setXxxメソッド]の例を参照してください）。

パラメタ：

val：設定するデータオブジェクト

dim1,dim2...：(添字が必要な場合の)各次元の添字

戻り値：なし

例外：RemoteException，Exception - 例外情報の取得

詳細は，「8.4　EJB用ExceptionユーザインタフェースAPI」を参照してください。

(c)　JavaBean対応setXxxメソッド(可変長データおよびアドレスデータ用)

[setXxxメソッド]

public void setXxx(Object val, int len)
            throws J2CBException

メソッド名setXxxのXxxは，設定するデータ項目のデータ名を表します（[setXxxメソッド]の例を参照してください）。

パラメタ：

val：設定するデータオブジェクト

len：データ長

（補足）

データ長lenに指定できる値は0以上です。0未満を指定した場合は，0を仮定します。さらに可変長データでデータ長lenが(全体長-4)を超える場合は，(全体長-4)を仮定します。

設定するデータvalの長さがデータ長lenより短い場合，データ項目にvalをすべて設定します（valの長さ以降の領域の値は不定です）。

設定するデータvalの長さがデータ長lenより長い場合，データ項目にvalをlenの長さ分だけ設定します。

戻り値：なし

例外：J2CBException - 例外情報の取得

詳細は「8.3　J2CBExceptionユーザインタフェースAPI」を参照してください。

(d)　EJB対応setXxxメソッド(可変長データおよびアドレスデータ)

[setXxxメソッド]

public void setXxx(byte[] val, int len)
            throws RemoteException,Exception

メソッド名setXxxのXxxは，設定するデータ項目のデータ名を表します（[setXxxメソッド]の例を参照してください）。

パラメタ：

val：設定するデータオブジェクト

len：データ長

（補足）

データ長lenに指定できる値は0以上です。0未満を指定した場合は，0を仮定します。さらに可変長データでデータ長lenが(全体長-4)を超える場合は，(全体長-4)を仮定します。

設定するデータvalの長さがデータ長lenより短い場合，データ項目にvalをすべて設定します（valの長さ以降の領域の値は不定です）。

設定するデータvalの長さがデータ長lenより長い場合，データ項目にvalをlenの長さ分だけ設定します。

戻り値：なし

例外：RemoteException，Exception - 例外情報の取得

詳細は，「8.4　EJB用ExceptionユーザインタフェースAPI」を参照してください。

(3)　引数データの取得

(a)　JavaBean対応getXxxメソッド

[getXxxメソッド]

public Object getXxx( [ int dim1 { , int dim2 } ... ] )
            throws J2CBException

メソッド名getXxxのXxxは，取得するデータ項目のデータ名を表します。また，[ int dim1 { , int dim2 } ... ]は，OCCURS句による繰り返しがあることを表します（[setXxxメソッド]の例を参照してください）。

パラメタ：

dim1,dim2...：(添字が必要な場合の)各次元の添字

戻り値：

取得したデータオブジェクト

例外：J2CBException - 例外情報の取得

詳細は「8.3　J2CBExceptionユーザインタフェースAPI」を参照してください。

(b)　EJB対応getXxxメソッド

[getXxxメソッド]

public String※ getXxx( [ int dim1 { , int dim2 } ... ] )
            throws RemoteException,Exception

注※　マッピングするJavaでのデータ属性で生成される。

メソッド名getXxxのXxxは，取得するデータ項目のデータ名を表します。また，[ int dim1 { , int dim2 } ... ]は，OCCURS句による繰り返しがあることを表します（[setXxxメソッド]の例を参照してください）。

パラメタ：

dim1,dim2...：(添字が必要な場合の)各次元の添字

戻り値：

取得したデータオブジェクト

例外：RemoteException，Exception - 例外情報の取得

詳細は，「8.4　EJB用ExceptionユーザインタフェースAPI」を参照してください。

8.3　J2CBExceptionユーザインタフェースAPI

J2CBExceptionユーザインタフェースのAPIについ説明します。

8.3.1　J2CBExceptionクラスのメソッド

J2CBExceptionクラスで提供するメソッドの一覧を表8-4に示します。

表8‒4　J2CBExceptionクラスの提供メソッド一覧

項番

メソッド名

機能

1

getCblErrorCode

COBOL UAPの呼び出しで発生した例外コードを取得する。

2

getCblMessageID

該当するCOBOL実行時エラーメッセージIDを取得する。

3

getDetailMessage

COBOL実行時エラーメッセージIDに対応するメッセージを取得する。

4

getErrorCode

COBOLアクセスで発生した例外情報コードを取得する。

5

getMessage

COBOLアクセスで発生した例外情報コードに対するメッセージ文字列を取得する。

6

getName

COBOLアクセスで発生した例外名を取得する。

J2CBExceptionクラスのメソッドについて説明します。

これらの例外用メソッドを使用して，COBOL側で発生したエラー情報などを取得します。プログラム中からこれらのメソッドを使用し，例外情報を参照できます。

(1)　例外コードの取得

[getCblErrorCodeメソッド]

public java.lang.String getCblErrorCode()

戻り値：null／x00002135（8501）／そのほかのコード（例外種別コード）

null：COBOLアクセスで異常終了した。

x00002135（8501）：実行時デバッグ機能オプション※1またはテストデバッグ機能オプション※2を指定したCOBOL UAPで異常終了した場合，またはCOBOL実行時エラーが発生して異常終了した場合，当コードを返します。getCblMessageID メソッドなどからエラー情報を取得して原因を調査してください。

そのほかのコード：実行時デバッグ機能オプション※1またはテストデバッグ機能オプション※2の指定がないCOBOL UAPで例外が発生した場合，システムの例外種別コード値を返します。

注※1　実行時デバッグ機能オプション

-DebugInf

-DebugInf,Trace

-DebugCompati

-DebugData

-DebugRange

注※2　テストデバッグ機能オプション

-TDInf

-CVInf

(2)　実行時エラーメッセージID取得

[getCblMessageIDメソッド]

public java.lang.String getCblMessageID()

戻り値：

KCCCのプリフィクスなしの番号の文字列

COBOL実行時エラーメッセージIDが存在しない場合は，null

(3)　該当エラーメッセージの取得

[getDetailMessageメソッド]

public java.lang.String getDetailMessage()

戻り値：該当するCOBOL実行時エラーメッセージ

環境変数CBL_SYSERRで指定したファイルに出力された実行時エラーメッセージの中から，該当する例外オブジェクトに格納されたCOBOL実行時エラーメッセージIDに対応するメッセージを取得します（COBOL実行時エラーメッセージIDが存在しない場合は，null）。

(4)　COBOLアクセスの例外情報コードの取得

[getErrorCodeメソッド]

public java.lang.String getErrorCode()

戻り値：例外情報コード

COBOLアクセスで発生した例外情報コードを取得します。

例外情報コードは，「付録E　例外情報コード一覧」の「表E‒1　例外名一覧（JavaBean/EJB共通）」と「表E‒2　JavaBean用エラー発生場所（メソッド）コード」を参考にしてください。また，これらのコードは16進コードです。

なお，例外情報コードは，先頭に"J2CB"が付加されて次のようになります。

（例）J2CB6052002の場合

J2CB　：プリフィクス

605　 ：エラー発生場所（メソッド）コード（3けた）

2002　：エラー要因コード（4けた）

(5)　COBOLアクセスのメッセージ取得

[getMessageメソッド]

public java.lang.String getMessage()

戻り値：メッセージ文字列

COBOLアクセスで発生したエラー発生場所（メソッド）とエラー要因をメッセージ文字列で返します。

null：情報なし

オーバーライド：クラス java.lang.Throwable 内のgetMessage

(6)　例外名の取得

[getNameメソッド]

public java.lang.String getName()

戻り値：発生した例外名を返します。

詳細は，「8.3.2　提供クラスのメソッドで発生する例外」の「表8‒5　ユーザがキャッチできる提供クラスのメソッドで発生する例外」に示すユーザがキャッチできる提供クラスのメソッドで発生する例外を参照してください。

8.3.2　提供クラスのメソッドで発生する例外

ユーザがキャッチできる提供クラスのメソッドで発生する例外を表8-5に示します。

表8‒5　ユーザがキャッチできる提供クラスのメソッドで発生する例外

例外名

意味

エラー要因コードの候補

SYS_ERR

システムエラーが発生しました。

0000番台

J_ENV_ERR

該当クラス，または，コンストラクタ，メソッドが見つかりません。

1000番台

INVALID_TYPE

型情報が不正です。型不正が発生したメソッド名を参照して型を確認してください。

1100番台

INVALID_ARG

引数が不正です。引数不正が発生したメソッド名を参照して引数を確認してください。

2000番台

UNRECOVERABLE

COBOLアクセス内で回復不能なエラーが発生しました。

4000番台

5000番台

UNKNOWN

予期しないエラーが発生しました。

9999

8.4　EJB用ExceptionユーザインタフェースAPI

EJB用ExceptionユーザインタフェースAPIについて説明します。

8.4.1　ユーザインタフェースAPI

Exceptionクラスについて説明します。

COBOLアクセスをEnterprise Beanとして使用する場合のエラーは，Exceptionクラスで取得してください。エラー情報を取得する場合，ExceptionクラスのメソッドgetMessage()に例外情報の文字列を返します。

COBOLアクセスでは，エラー情報を解析するためのクラス(J2CBErrorUtil)を用意しています。J2CBErrorUtilクラスのメソッドを使用して，COBOLで発生したエラー情報などを取得します。

プログラム中からこれらのメソッドを使用し，取得したい例外情報を参照できます。

[ J2CBErrorUtilクラス ]

public class J2CBErrorUtil implements java.io.Serializable

機能：エラー情報の解析

コンストラクタの詳細：public J2CBErrorUtil (String s)

パラメタ：s−例外情報の文字列

J2CBErrorUtilクラスを記述したServletの例を次に示します。

  try {
    remoteobj=homeobj.create();
  } catch (Exception e) {
    J2CBErrorUtil wkobj=new J2CBErrorUtil(e.getMessage());
    out.println("Create時エラー発生 :");
    out.println("<p>getEJBCblErrorCode=" + wkobj.getEJBCblErrorCode() + "</p>");
    out.println("<p>getEJBCblMessageID=" + wkobj.getEJBCblMessageID() + "</p>");
    out.println("<p>getEJBDetailMessage=" + wkobj.getEJBDetailMessage() + "</p>");
    out.println("<p>getEJBErrorCode=" + wkobj.getEJBErrorCode() + "</p>");
    out.println("<p>getEJBMessage=" + wkobj.getEJBMessage() + "</p>");
    out.println("<p>getEJBName=" + wkobj.getEJBName() + "</p>");
    e.printStackTrace();
    return;
  }

J2CBErrorUtilクラスで提供するメソッドの一覧を表8-6に示します。

表8‒6　J2CBErrorUtilクラスの提供メソッド一覧

項番

メソッド名

機能

1

getEJBCblErrorCode

COBOL UAPの呼び出しで発生した例外コードを取得する。

2

getEJBCblMessageID

該当するCOBOL実行時エラーメッセージIDを取得する。

3

getEJBDetailMessage

COBOL実行時エラーメッセージIDに対応するメッセージを取得する。

4

getEJBErrorCode

COBOLアクセスで発生した例外情報コードを取得する。

5

getEJBMessage

COBOLアクセスで発生した例外情報コードに対するメッセージ文字列を取得する。

6

getEJBName

COBOLアクセスで発生した例外名を取得する。

J2CBErrorUtilクラスのメソッドについて説明します。

(1)　例外コードの取得

[ getEJBCblErrorCode メソッド ]

public java.lang.String getEJBCblErrorCode()

戻り値：null／x00002135（8501）／そのほかのコード（例外種別コード）

null：COBOLアクセスで異常終了した。

x00002135（8501）：実行時デバッグ機能オプション※1またはテストデバッグ機能オプション※2を指定したCOBOL UAPで異常終了した場合，またはCOBOL実行時エラーが発生して異常終了した場合，当コードを返します。getCblMessageID メソッドなどからエラー情報を取得して原因を調査してください。

そのほかのコード：実行時デバッグ機能オプション※1またはテストデバッグ機能オプション※2の指定がないCOBOL UAPで例外が発生した場合，システムの例外種別コード値を返します。

注※1　実行時デバッグ機能オプション

-DebugInf

-DebugInf,Trace

-DebugCompati

-DebugData

-DebugRange

注※2　テストデバッグ機能オプション

-TDInf

-CVInf

(2)　実行時エラーメッセージID取得

[ getEJBCblMessageID メソッド ]

public java.lang.String getEJBCblMessageID()

戻り値：KCCCのプリフィクスなしの番号の文字列

null：情報なし

(3)　該当エラーメッセージの取得

[ getEJBDetailMessage メソッド ]

public java.lang.String getEJBDetailMessage()

戻り値：該当するCOBOL実行時エラーメッセージ

環境変数CBL_SYSERRで指定したファイルに出力された実行時エラーメッセージの中から，該当する例外オブジェクトに格納されたCOBOL実行時エラーメッセージIDに対応するメッセージを取得します。

null：情報なし

(4)　COBOLアクセスの例外情報コードの取得

[ getEJBErrorCode メソッド ]

public java.lang.String getEJBErrorCode()

戻り値：例外情報コード

COBOLアクセスで発生した例外情報コードを取得します。

例外情報コードは，先頭に”J2CB”が付加された11けたのコード値です。

例外情報コードは，「付録E　例外情報コード一覧」の「表E‒2　JavaBean用エラー発生場所（メソッド）コード」と「表E‒3　EJB用エラー発生場所（メソッド）コード」を参考にしてください。

また，COBOLアクセス以外で発生した例外情報コードは，先頭に"ETC:"が付加されます。

null：情報なし

(5)　COBOLアクセスのメッセージ取得

[ getEJBMessage メソッド ]

public java.lang.String getEJBMessage()

戻り値：メッセージ文字列

COBOLアクセスで発生したエラー発生場所（メソッド）とエラー要因をメッセージ文字列で返します。

null：情報なし

オーバーライド：クラス java.lang.Throwable 内のgetMessage

(6)　例外名の取得

[ getEJBName メソッド ]

public java.lang.String getEJBName()

戻り値：発生した例外名を返す。

null：情報なし

詳細は「表8‒7　ユーザがキャッチできる例外」を参照してください。

8.4.2　ユーザがキャッチできる例外

ユーザがキャッチできる例外を表8-7に示します。

表8‒7　ユーザがキャッチできる例外

例外名

意味

エラー要因コードの候補

SYS_ERR

システムエラーが発生しました。

0000番台

J_ENV_ERR

該当クラス，または，コンストラクタ，メソッドが見つかりません。

1000番台

INVALID_TYPE

型情報が不正です。型不正が発生したメソッド名を参照して型を確認してください。

1100番台

INVALID_ARG

引数が不正です。引数不正が発生したメソッド名を参照して引数を確認してください。

2000番台

UNRECOVERABLE

COBOLアクセス内で回復不能なエラーが発生しました。

4000番台

5000番台

UNKNOWN

予期しないエラーが発生しました。

9999

付録

付録A　注意事項／制限事項

Cosminexus連携機能を使用する際の注意事項，および制限事項について説明します。

付録A.1　COBOLアクセス用Bean生成時のCOBOL定義注意事項／制限事項

COBOLアクセス用Bean生成時は，COBOL UAP引数定義を別ファイルにして，COBOLデータ定義として指定する必要があります。このCOBOLデータ定義で，変更が必要な項目を表A-1に示します。

なお，表A-1には制限事項も含めて記述しています。制限事項に該当する場合は，COBOL UAPの引数を変更してください。

表A‒1　COBOLアクセス用Bean生成時のCOBOL定義注意事項／制限事項一覧

項番

COBOL定義

回避方法詳細

1

EXTERNAL句

(1)を参照

2

GLOBAL句

(2)を参照

3

BLANK WHEN ZERO句

(3)を参照

4

SYNCHRONIZED句

(4)を参照

5

JUSTIFIED句

(5)を参照

6

VALUE句

(6)を参照

7

RENAMES句

(7)を参照

8

条件名

(8)を参照

9

外部浮動小数点項目

(9)を参照

10

外部ブール項目

(10)を参照

11

内部ブール項目

(11)を参照

12

OCCURS句（OCCURS 整数 TIMES以外）

(12)を参照

ただし，反復回数が可変の場合，COBOLデータ定義によっては回避方法がありませんのでCOBOL UAP引数定義を変更してください。

13

位取り

(13)を参照

14

行内注記（*>）

(14)を参照

15

修飾

(15)を参照

16

登録集原文中のCOPY文(COPY { 原文名 | 原文名定数 } .以外)

(16)を参照

17

SAME AS句

(17)を参照

18

TYPE句およびTYPEDEF句

(18)を参照

19

翻訳指令

(19)を参照

20

PICTURE句（数字項目のけた拡張機能）

(20)を参照

21

動的長基本項目

(21)を参照

22

日本語集団項目

(22)を参照

(1)　EXTERNAL句

LINKAGE SECTIONで指定できないEXTERNAL句は削除してください。

Javaマッピングデータ属性は，EXTERNAL句の指定有無にかかわらず，EXTERNAL句がない場合と同じです。

(2)　GLOBAL句

GLOBAL句は削除してください。

Javaマッピングデータ属性は，GLOBAL句の指定有無にかかわらず，GLOBAL句がない場合と同じです。

(3)　BLANK WHEN ZERO句

数字項目の編集を指定するBLANK WHEN ZERO句は削除してください。

また，数字項目に指定されたBLANK WHEN ZERO句である場合は，同じ領域長の英数字項目に変更してください。

操作は数字編集項目と同様に，編集した値を設定し，受け取ったデータをJavaプログラムで数値に変換して使用します。

[ 例 ]

＜変更前＞

＜変更後＞

(4)　SYNCHRONIZED句

計算機記憶の固有の境界に従った，基本項目の配置を指定するSYNCHRONIZED句は削除してください。また，SYNCHRONIZED句によって確保されていた暗黙のFILLERを明示的に定義してください。暗黙のFILLERについては，マニュアル「COBOL2002　言語　標準仕様編」のSYNCHRONIZED句の記述個所を参照してください。

[ 例 ]

＜変更前＞

＜変更後＞

(5)　JUSTIFIED句

けた寄せを表すJUSTIFIED句は削除してください。

Javaマッピングデータ属性は，JUSTIFIED句の指定有無にかかわらず，JUSTIFIED句がない場合と同じです。

(6)　VALUE句

初期値や条件名に対応する値を指定するVALUE句は削除してください。

Javaマッピングデータ属性は，VALUE句の指定有無にかかわらず，VALUE句がない場合と同じです。

(7)　RENAMES句

基本項目を組み合わせて新たな集団を作る（再命名項目）RENAMES句は指定できないので，66レベル項目から削除してください。

[ 例 ]

＜変更前＞

＜変更後＞

(8)　条件名

条件名を指定する88レベルは指定できないので，88レベル項目を削除してください。Javaマッピングデータ属性は，条件名の指定有無にかかわらず，条件名がない場合と同じです。

(9)　外部浮動小数点項目

外部浮動小数点項目は，英数字項目に変更してください。英数字項目のけた数は，外部浮動小数点項目の形式から算出してください。Javaプログラムでは，Stringデータを浮動小数点データに変換して使用してください。

[ 例 ]

＜変更前＞

＜変更後＞

(10)　外部ブール項目

外部ブール項目は，英数字項目に変更してください。

外部ブール項目の場合，英数字項目のけた数は，ブール項目のけた数と同じです。

また，Javaプログラムでは，文字'0'と'1'を使用します。

[ 例 ]

＜変更前＞

＜変更後＞

(11)　内部ブール項目

内部ブール項目は，バイト配列にマッピングした英数字項目に変更してください。英数字項目のけた数は，内部ブール項目が占有するバイト数と同じです。また，Javaプログラムでは，バイト配列をビット操作して使用してください。なお，内部ブール項目で遊びビットが取られる場合は，Javaプログラムで遊びビットを考慮してください。

[ 例 ]

＜変更前＞

＜変更後＞

(12)　OCCURS句（OCCURS 整数 TIMES以外）

「OCCURS 整数 TIMES」以外の指定は，削除してください。

Javaマッピングデータ属性は，INDEXED指定，KEY指定の有無にかかわらず，INDEXED指定，KEY指定がない場合と同じです。

DEPENDING ON指定は繰り返し回数が可変であることを表します。

後続のデータ項目の開始位置が，繰り返し回数によって変わる場合は使用できません。項目の開始位置が，繰り返し回数に依存しない場合は，DEPENDING ON指定を削除して使用してください。

[ 例 ]

＜変更前＞

＜変更後＞

(13)　位取り

PICTURE文字列に指定した文字'P'を削除してください。Javaプログラムでは，想定した位取りを意識した演算を行う必要があります。

[ 例 ]

＜変更前＞

＜変更後＞

上記の例で，COBOLプログラムでHTC-OUTDATAに12300という値が入っている場合，Javaプログラムで見るHTC-OUTDATAは123という値になります。

したがって，Javaプログラムでこの値を使用する場合は，100倍した値を使用する必要があります。

(14)　行内注記（*>）

使用できません。削除してください。

(15)　修飾

基本項目のデータ名は，Beanのsetter／getterメソッド名称として使用されるので，修飾しなくても一意になっている必要があります。

一意となっていない場合は，「Bean生成ツール」で別名を指定して，一意の名称にしてください。

(16)　登録集原文中のCOPY文(COPY { 原文名 | 原文名定数 } .以外)

COPY文で指定されたCOPY原文を登録集原文に展開し，COPY文を削除してください。

(17)　SAME AS句

使用できません。削除してください。

(18)　TYPE句およびTYPEDEF句

使用できません。削除してください。

(19)　翻訳指令

使用できません。削除してください。

(20)　PICTURE句（数字項目のけた拡張機能）

数字項目のけた拡張機能は使用できません。PICTURE句に指定するけた数は18けた以下にしてください。

(21)　動的長基本項目

DYNAMIC LENGTH句による動的長基本項目は使用できません。削除してください。

(22)　日本語集団項目

GROUP-USAGE句による日本語集団項目は使用できません。削除してください。

付録A.2　COBOLアクセス用BeanおよびServlet作成時の留意する必要のある項目

COBOLアクセス用BeanおよびServletを作成するときの注意事項と制限事項を表A-2に示します。

表A‒2　COBOLアクセス用BeanおよびServlet作成時の注意事項／制限事項

項番

内容

1

COBOLのデータ名が日本語（データ名に英小文字，数字，ハイフン（−），下線（＿）以外が含まれている場合。ただしFILLERの変換後の名称は除く）の場合，半角英数字の別名を必ず指定しなければならない。Javaプログラム中には日本語のデータ名ではなく，指定した別名を記述する。

2

COBOLプログラム名称は大文字，小文字を非等価として扱われる。同じプログラム名やデータ名は大文字，小文字が正しく一致していなければ実行時にエラーとなる。

3

COBOLのデータ項目名にハイフン（−）が含まれる場合，自動的に下線（_）に変換して表示され，対応するソース生成時のプロパティ名も下線（_）で生成される。

4

COBOLのデータ項目名に英大文字が含まれる場合，自動的に英小文字に変換して表示され，対応するソース生成時のプロパティも英小文字で生成される。ただし，メソッドの場合，先頭の1文字だけを英大文字にして生成される。

5

Servletプログラムには，setterを使用してすべての引数の値を必ず設定しておかなければならない。

付録A.3　COBOLプログラム作成時の注意事項（ライブラリファイル名）

COBOLプログラムをコンパイルしてライブラリファイルを作成する際には，提供しているライブラリとは異なるファイル名にしてください。

表A‒3　ライブラリファイル名の一覧

OS

開発環境で使用しているファイル

実行環境で使用しているファイル

Windows

j2cb2kpars.dll

j2cb2kwJNI.dll

j2cb2krt.dll

Linux

−

libj2cb2krt.so

AIX(64)

−

libj2cb2krt64.a

（凡例）

−：該当しない

付録A.4　Windows OS固有の注意事項

Cosminexus連携機能の開発環境は標準権限で実行してください。

なお，プログラムを管理者権限で実行する場合の一般的な注意事項の詳細については，マニュアル「COBOL2002　ユーザーズガイド」を参照してください。

フォルダ名，ファイル名，プログラムへの入力文字列，および環境変数に指定できる文字は，シフトJISの範囲だけです。JIS X0213の第3水準漢字，および第4水準漢字を含むUnicodeの文字は使用できません。

COBOLアクセス用Bean生成ツールで生成ファイルの出力先として，Windowsリソース保護（WRP）対象のフォルダを指定しないでください。指定した場合，意図しないフォルダにリダイレクトされるか，または出力できません。WRPについては，各OSのヘルプなどを参照してください。

COBOLアクセス用Bean生成ツールでは，設定されたJavaルートフォルダ情報およびJava VMメモリサイズ情報を，COBOLアクセス用Bean生成ツール環境設定ファイル（j2cb2kw.ini）に格納しています。

COBOLアクセス用Bean生成ツール環境設定ファイル（j2cb2kw.ini）の保存先は次のとおりです。

Windows(x86)の場合

環境変数ALLUSERSPROFILEが示すフォルダ¥Hitachi¥COBOL2002¥bin

Windows(x64)の場合

環境変数ALLUSERSPROFILEが示すフォルダ¥Hitachi¥COBOL2002 64bit¥bin

環境変数ALLUSERSPROFILEで指定されたフォルダに作成するファイルは，デフォルトではファイルを作成したユーザだけが更新できます。複数のユーザで更新したい場合は，該当ファイルごとにアクセス権限を設定する，管理者権限で更新するなど，対処してください。

付録A.5　Linuxで使用する場合の注意事項

Linuxでは，UTF-8環境で使用してください。

日本語項目および日本語編集項目を使用する場合は，unicodeオプションを必ず指定してください。

unicodeオプション未指定時には，日本語項目データはデフォルトロケールであるUTF-8に変換されるため，JavaとCOBOL間で日本語項目データを正しく変換できません。

日本語項目データを受け渡したい場合は，unicodeオプションにbig※1またはlittle※2を指定してください。unicodeオプションにbigまたはlittleを指定する場合は，COBOL2002の実行時環境変数である環境変数CBLUNIENDIANの指定と合わせてください。環境変数CBLUNIENDIANの指定と合っていない場合には，JavaとCOBOL間で日本語項目データを正しく変換できません。

注※1

UTF-16BE変換することを意味します。

注※2

UTF-16LE変換することを意味します。

日本語項目および日本語編集項目を使用する場合は，COBOLアクセス用Beanを生成する際に，「日本語項目を英数字項目として扱う。」チェックボックスをオフにしてください。

チェックボックスをオンにした場合には，日本語項目データは英数字項目として扱われUTF-8変換されるため，COBOL2002での格納データ形式UTF-16と異なり，JavaとCOBOL間で日本語項目データを正しく変換できません。

付録B　Cosminexus連携機能，Cosminexus連携機能の実行ライブラリで使用するファイル

Cosminexus連携機能およびCosminexus連携機能の実行ライブラリで使用するファイルの一覧を表B-1に示します。

表B‒1　Cosminexus連携機能，Cosminexus連携機能の実行ライブラリで使用するファイル

ファイル種別

拡張子

内容

出力元

入力先

UAP引数定義ファイル

.cblほか※1

Cosminexus連携機能から呼び出したいCOBOL UAP引数を定義したファイル。

−

Cosminexus連携機能

COBOLソースファイル

.cblほか※2

COBOL原始プログラムを格納するファイル。

−

コンパイラ

Cosminexus上Java実行ファイル

.class

Cosminexus連携機能を呼び出すJava実行ファイル。

−

Cosminexus連携機能

DLLファイル

.dll

DLL（ダイナミックリンクライブラリ）を格納するファイル。

リンカ

−

共用ライブラリ

.a

または

.so※3

共用ライブラリを格納するファイル。

COBOLアクセス用Bean（Javaソースファイル）

.java

Cosminexus連携機能が出力するCOBOLアクセス用Beanを格納するファイル。

Cosminexus連携機能

−

EJB関連Javaソースファイル

.java

Cosminexus連携機能が出力するEJB用ホームインタフェース，リモートインタフェース，Enterprise Beanを格納するファイル。

Cosminexus連携機能

−

ライブラリファイル（Windowsの場合）

.lib

ライブラリを格納するファイル。ライブラリには，オブジェクトプログラムのライブラリである標準ライブラリと，DLLの関数情報を保持するインポートライブラリがある。

リンカ，LIBコマンド※4

−

オブジェクトファイル

.obj

または

.o※5

コンパイルの結果であるオブジェクトプログラムを格納するファイル。

コンパイラ

リンカ

デプロイ情報

（DDファイル）

.xml

Cosminexus連携機能が出力するEJB用デプロイ情報を格納するファイル。

Cosminexus連携機能

−

（凡例）

−：該当しない

注※1

目的に応じて次の拡張子を使用します。

固定形式正書法で書かれたCOBOL引数定義ファイルの場合

.cbf，または環境変数CBLFREEで指定した拡張子を除く，すべての拡張子

自由形式正書法で書かれたCOBOL引数定義ファイルの場合

.cbf，または環境変数CBLFREEで指定した拡張子

注※2

目的に応じて次の拡張子を使用します。

固定形式正書法で書かれた原始プログラムをコンパイルする場合

.cbl，.cob，.ocb，または環境変数CBLFIXで指定した拡張子

自由形式正書法で書かれた原始プログラムをコンパイルする場合

.cbf，.ocf，または環境変数CBLFREEで指定した拡張子

注※3

OSに応じて次の拡張子を使用します。

AIXの場合：.a

Linuxの場合：.so

注※4

LIBコマンドとは，ライブラリ管理ツールLIBの意味です。

注※5

OSに応じて次の拡張子を使用します。

Windowsの場合：.obj

UNIXの場合：.o

付録C　COBOLアクセス用Beanの自動生成ソースイメージ

COBOLアクセス用Bean自動生成ソースイメージを登録集原文と対応させて説明します。

また，「Bean生成ツール」で生成されたBeanはJavadocに対応しています。

付録C.1　ソースイメージの生成例

(1)　COBOLアクセス用Beanの生成例

「Bean生成ツール」で，「EJB対応機能を有効にする。」にチェックしない場合の生成例です（そのほかのチェックボックスはデフォルト指定です）。

なお，Windows(x64)では，コメント行個所の「COBOL adapter for Cosminexus Version 2」は，「COBOL adapter for Cosminexus Version 2(64)」となります。

(a)　OCCURS句がない場合

COBOL UAPの引数にOCCURS句がない場合の例を次に示します。

01 DATAA  PIC X(10).
01 DATAB.
 05 DATAB1 PIC S9(9).
 05 DATAB2.
  10 DATAB21 USAGE COMP-1.
  10 DATAB22 PIC S9(9)  USAGE COMP.
77 DATAC  USAGE COMP-2.

太字（色付き）は条件によって生成文字列が異なります。

また，太字（色付き）の変数名は「Bean生成ツール」で別名を指定した場合，別名になります。

package パッケージ名;

import jp.co.hitachi_sk.j2cb.*;

public class クラス名 extends CBLAccess {
/*
 *Generated by COBOL adapter for Cosminexus Version 2 02-13
 *DO NOT EDIT THIS FILE
 *2013/09/30
 */
  //インデックスを定義
  private static final long serialVersionUID = 1347585438734L;
  private static final int dataaIndex=0;
  private static final int databIndex=1;
  private static final int datacIndex=2;
  private static boolean noload=true;
  private static int[] mySize=null;
  private static GroupAccess[] myGroupAccess=null;
  private static String[] myTypeInfo=null;
  private static int myLength=0;
/**
 *コンストラクタ
 */
  public クラス名() throws J2CBException {
    super();
    init();
    initialData();
    //データアクセスのための情報を設定
    setDllName("呼び出すライブラリ名");
    setFunctionName("呼び出すプログラム名");
  }
/**
 *初期化処理
 */
  private void init( ) throws J2CBException {
    //初期ロードだけ実行する
    if (noload) {
      init2();
    }
    else {
      setInformation(mySize, myGroupAccess, myTypeInfo, myLength);
    }
  }
/**
 *初期化処理2
 */
  private synchronized void init2( ) throws J2CBException {
    if (noload) {
      String[] typeTmp={
       "C(10)",
       "G,CT0900,G,F,SI0900",
       "D" };
      String[] sizeTmp={
       "10",
       "17",
       "8" };
      setType(typeTmp, sizeTmp);
      makeGroupAccess(dataaIndex,
       "01",
       "dataa",
       "0");
      makeGroupAccess(databIndex,
       "01,05,05,10,10",
       "datab,datab1,datab2,datab21,datab22",
       "0,0,9,9,13");
      makeGroupAccess(datacIndex,
       "77",
       "datac",
       "0");
      mySize=size;
      myGroupAccess=groupAccess;
      myTypeInfo=typeInfo;
      myLength=length;
      noload=false;
    }
    else {
      setInformation(mySize, myGroupAccess, myTypeInfo, myLength);
    }
  }
/**
 *dataa設定メソッド
 *@param data Stringオブジェクト
 */
  public void setDataa( Object data) throws J2CBException {
    setData(dataaIndex, "dataa", data);
  }
/**
 *datab1設定メソッド
 *@param data BigDecimalオブジェクト
 */
  public void setDatab1( Object data) throws J2CBException {
    setData(databIndex, "datab.datab1", data);
  }
/**
 *datab21設定メソッド
 *@param data Floatオブジェクト
 */
  public void setDatab21( Object data) throws J2CBException {
    setData(databIndex, "datab.datab2.datab21", data);
  }
/**
 *datab22設定メソッド
 *@param data Integerオブジェクト
 */
  public void setDatab22( Object data) throws J2CBException {
    setData(databIndex, "datab.datab2.datab22", data);
  }
/**
 *datac設定メソッド
 *@param data Doubleオブジェクト
 */
  public void setDatac( Object data) throws J2CBException {
    setData(datacIndex, "datac", data);
  }
/**
 *dataa取得メソッド
 *@return Stringオブジェクト
 */
  public Object getDataa( ) throws J2CBException {
    return getData(dataaIndex, "dataa");
  }
/**
 *datab1取得メソッド
 *@return BigDecimalオブジェクト
 */
  public Object getDatab1( ) throws J2CBException {
    return getData(databIndex, "datab.datab1");
  }
/**
 *datab21取得メソッド
 *@return Floatオブジェクト
 */
  public Object getDatab21( ) throws J2CBException {
    return getData(databIndex, "datab.datab2.datab21");
  }
/**
 *datab22取得メソッド
 *@return Integerオブジェクト
 */
  public Object getDatab22( ) throws J2CBException {
    return getData(databIndex, "datab.datab2.datab22");
  }
/**
 *datac取得メソッド
 *@return Doubleオブジェクト
 */
  public Object getDatac( ) throws J2CBException {
    return getData(datacIndex, "datac");
  }
}

(b)　OCCURS句がある場合

COBOL UAPの引数にOCCURS句がある場合の例を次に示します。

01 G1.
 02 G2 OCCURS 10.
  03 B1 PIC X(50).

OCCURSありの基本項目参照メソッド

/**
 *b1設定メソッド
 *@param data Stringオブジェクト
 *@param dim1 int
 */
  public void setB1( Object data, int dim1) throws J2CBException {
    String acsstr1="g1.g2[";
    String acsstr2="].b1";
    StringBuffer wkbuf;
    wkbuf=new StringBuffer( acsstr1 );
    wkbuf.append( dim1 );
    wkbuf.append( acsstr2 );
    setData( g1Index, wkbuf.toString(), data );
  }
/**
 *b1取得メソッド
 *@param dim1 int
 *@return Stringオブジェクト
 */
  public Object getB1( int dim1) throws J2CBException {
    String acsstr1="g1.g2[";
    String acsstr2="].b1";
    StringBuffer wkbuf;
    wkbuf=new StringBuffer( acsstr1 );
    wkbuf.append( dim1 );
    wkbuf.append( acsstr2 );
    return getData(g1Index, wkbuf.toString());
  }

(2)　EJB対応COBOLアクセス用Beanの生成例

「Bean生成ツール」で，「EJB対応機能を有効にする。」にチェックした場合の例を次に示します（そのほかのチェックボックスはデフォルト指定です）。

太字（色付き）は条件によって生成文字列が異なります。

なお，Windows(x64)では，コメント行個所の「COBOL adapter for Cosminexus Version 2」は，「COBOL adapter for Cosminexus Version 2(64)」となります。

(a)　基本部分の生成例

package パッケージ名;

import jp.co.hitachi_sk.j2cb.*;

public class クラス名 extends CBLEJBAccess {
/*
 *Generated by COBOL adapter for Cosminexus Version 2 02-13
 *DO NOT EDIT THIS FILE
 *2013/09/30
 */
  //インデックスを定義
  private static final long serialVersionUID = 1347585448203L;
  private static final int personal_dataIndex=0;
  private boolean noload=true;
  private int[] mySize=null;
  private GroupAccess[] myGroupAccess=null;
  private String[] myTypeInfo=null;
  private int myLength=0;
/**
 *コンストラクタ
 */
  public クラス名() throws J2CBException {
    super();
    init();
    initialData();
    //データアクセスのための情報を設定
    setDllName("呼び出すライブラリ名");
    setFunctionName("呼び出すプログラム名");
  }
/**
 *初期化処理
 */
  private void init( ) throws J2CBException {
    //初期ロードだけ実行する
    if (noload) {
      String[] typeTmp={
       "G,UI0900,C(50),C(100),C(50)" };
      String[] sizeTmp={
       "204" };
      setType(typeTmp, sizeTmp);
      makeGroupAccess(personal_dataIndex,
       "01,05,05,05,05",
       "personal_data,p_number,p_name,p_address,p_gif",
       "0,0,4,54,154");
      mySize=size;
      myGroupAccess=groupAccess;
      myTypeInfo=typeInfo;
      myLength=length;
      noload=false;
    }
    else {
      setInformation(mySize, myGroupAccess, myTypeInfo, myLength);
    }
  }
/**
 *p_number設定メソッド
 *@param data Integerオブジェクト
 */
  public void setP_number( Object data) throws J2CBException {
    setData(personal_dataIndex, "personal_data.p_number", data);
  }
/**
 *p_name設定メソッド
 *@param data Stringオブジェクト
 */
  public void setP_name( Object data) throws J2CBException {
    setData(personal_dataIndex, "personal_data.p_name", data);
  }
/**
 *p_address設定メソッド
 *@param data Stringオブジェクト
 */
  public void setP_address( Object data) throws J2CBException {
    setData(personal_dataIndex, "personal_data.p_address", data);
  }
/**
 *p_gif設定メソッド
 *@param data Stringオブジェクト
 */
  public void setP_gif( Object data) throws J2CBException {
    setData(personal_dataIndex, "personal_data.p_gif", data);
  }
/**
 *p_number取得メソッド
 *@return Integerオブジェクト
 */
  public Object getP_number( ) throws J2CBException {
    return getData(personal_dataIndex, "personal_data.p_number");
  }
/**
 *p_name取得メソッド
 *@return Stringオブジェクト
 */
  public Object getP_name( ) throws J2CBException {
    return getData(personal_dataIndex, "personal_data.p_name");
  }
/**
 *p_address取得メソッド
 *@return Stringオブジェクト
 */
  public Object getP_address( ) throws J2CBException {
    return getData(personal_dataIndex, "personal_data.p_address");
  }
/**
 *p_gif取得メソッド
 *@return Stringオブジェクト
 */
  public Object getP_gif( ) throws J2CBException {
    return getData(personal_dataIndex, "personal_data.p_gif");
  }
}

(b)　ホームインタフェースの生成例

package パッケージ名;

import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;

public interface クラス名EJBHome extends EJBHome {
/*
 *Generated by COBOL adapter for Cosminexus Version 2 02-13
 *DO NOT EDIT THIS FILE
 *2013/09/30
 */
/*
 *EJBのインスタンスの作成，除去のためのホームインタフェースを定義
 */
/**
 *createメソッド<BR>
 *ホームインタフェースは，createメソッドを一つ以上サポートし，
 *EJBean内で「ejbCreate」と呼ばれるメソッドに対応していなければ
 *なりません。<BR>
 *この二つのメソッドのパラメタ設定は同じです。
 */
  クラス名EJB create( ) throws CreateException ,RemoteException ,Exception ;
}

(c)　リモートインタフェースの生成例

package パッケージ名;

import javax.ejb.EJBObject;
import java.rmi.RemoteException;

public interface クラス名EJB extends EJBObject {
/*
 *Generated by COBOL adapter for Cosminexus Version 2 02-13
 *DO NOT EDIT THIS FILE
 *2013/09/30
 */
/*
 *EJBのビジネスメソッドのためのリモートインタフェースを定義
 */
  public int callCOBOL( ) throws RemoteException,Exception;
  public void setP_number( Integer val) throws
         RemoteException,Exception;
  public void setP_name( String val) throws
         RemoteException,Exception;
  public void setP_address( String val) throws
         RemoteException,Exception;
  public void setP_gif( String val) throws
         RemoteException,Exception;
  public Integer getP_number( ) throws RemoteException,Exception;
  public String getP_name( ) throws RemoteException,Exception;
  public String getP_address( ) throws RemoteException,Exception;
  public String getP_gif( ) throws RemoteException,Exception;
}

(d)　Enterprise Beanの生成例

package パッケージ名;

import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import jp.co.hitachi_sk.j2cb.*;

public class クラス名EJBBean implements SessionBean {
/*
 *Generated by COBOL adapter for Cosminexus Version 2 02-13
 *DO NOT EDIT THIS FILE
 *2013/09/30
 */
/*
 *EJBのビジネスメソッドを実装する
 */
  //クラスの変数
  private static final long serialVersionUID = 1153786720297L;
  private クラス名 gEntity=null;
/**
 *COBOL呼び出し
 */
  public int callCOBOL( ) throws RemoteException,Exception{
    int rtn=0;
    try {
      rtn=gEntity.callCOBOL();
    } catch(J2CBException wkexp) {
      throw new Exception(wkexp.getRemoteEJBMessage());
    } catch(Exception ee) {
      String wkmsg=null;
      wkmsg=ee.getMessage();
      ee.printStackTrace();
      throw new RemoteException(wkmsg);
    }
    return rtn;
  }
/**
 *p_number設定メソッド
 */
  public void setP_number( Integer val) throws RemoteException,Exception{
    try {
      gEntity.setP_number(val);
    } catch(J2CBException wkexp) {
      throw new Exception(wkexp.getRemoteEJBMessage());
    } catch(Exception ee) {
      String wkmsg=null;
      wkmsg=ee.getMessage();
      ee.printStackTrace();
      throw new RemoteException(wkmsg);
    }
  }
/**
 *p_name設定メソッド
 */
  public void setP_name( String val) throws RemoteException,Exception{
    try {
      gEntity.setP_name(val);
    } catch(J2CBException wkexp) {
      throw new Exception(wkexp.getRemoteEJBMessage());
    } catch(Exception ee) {
      String wkmsg=null;
      wkmsg=ee.getMessage();
      ee.printStackTrace();
      throw new RemoteException(wkmsg);
    }
  }
/**
 *p_address設定メソッド
 */
  public void setP_address( String val) throws RemoteException,Exception{
    try {
      gEntity.setP_address(val);
    } catch(J2CBException wkexp) {
      throw new Exception(wkexp.getRemoteEJBMessage());
    } catch(Exception ee) {
      String wkmsg=null;
      wkmsg=ee.getMessage();
      ee.printStackTrace();
      throw new RemoteException(wkmsg);
    }
  }
/**
 *p_gif設定メソッド
 */
  public void setP_gif( String val) throws RemoteException,Exception{
    try {
      gEntity.setP_gif(val);
    } catch(J2CBException wkexp) {
      throw new Exception(wkexp.getRemoteEJBMessage());
    } catch(Exception ee) {
      String wkmsg=null;
      wkmsg=ee.getMessage();
      ee.printStackTrace();
      throw new RemoteException(wkmsg);
    }
  }
/**
 *p_number取得メソッド
 */
  public Integer getP_number( ) throws RemoteException,Exception{
    Integer rtn=null;
    try {
      rtn=(Integer)gEntity.getP_number();
    } catch(J2CBException wkexp) {
      throw new Exception(wkexp.getRemoteEJBMessage());
    } catch(Exception ee) {
      String wkmsg=null;
      wkmsg=ee.getMessage();
      ee.printStackTrace();
      throw new RemoteException(wkmsg);
    }
    return rtn;
  }
/**
 *p_name取得メソッド
 */
  public String getP_name( ) throws RemoteException,Exception{
    String rtn=null;
    try {
      rtn=(String)gEntity.getP_name();
    } catch(J2CBException wkexp) {
      throw new Exception(wkexp.getRemoteEJBMessage());
    } catch(Exception ee) {
      String wkmsg=null;
      wkmsg=ee.getMessage();
      ee.printStackTrace();
      throw new RemoteException(wkmsg);
    }
    return rtn;
  }
/**
 *p_address取得メソッド
 */
  public String getP_address( ) throws RemoteException,Exception{
    String rtn=null;
    try {
      rtn=(String)gEntity.getP_address();
    } catch(J2CBException wkexp) {
      throw new Exception(wkexp.getRemoteEJBMessage());
    } catch(Exception ee) {
      String wkmsg=null;
      wkmsg=ee.getMessage();
      ee.printStackTrace();
      throw new RemoteException(wkmsg);
    }
    return rtn;
  }
/**
 *p_gif取得メソッド
 */
  public String getP_gif( ) throws RemoteException,Exception{
    String rtn=null;
    try {
      rtn=(String)gEntity.getP_gif();
    } catch(J2CBException wkexp) {
      throw new Exception(wkexp.getRemoteEJBMessage());
    } catch(Exception ee) {
      String wkmsg=null;
      wkmsg=ee.getMessage();
      ee.printStackTrace();
      throw new RemoteException(wkmsg);
    }
    return rtn;
  }
/**
 *ejbCreate()の呼び出し
 */
  public void ejbCreate( ) throws CreateException,RemoteException,Exception{
    try {
      gEntity=new クラス名();
    } catch(J2CBException wkexp) {
      throw new CreateException(wkexp.getRemoteEJBMessage());
    } catch(Exception ee) {
      String wkmsg=null;
      wkmsg=ee.getMessage();
      ee.printStackTrace();
      throw new CreateException(wkmsg);
    }
  }
/**
 *関連するセッションコンテキストの設定
 */
  public void setSessionContext( SessionContext ctx) {
  }
/**
 *終了前処理
 */
  public void ejbRemove( ) {
    gEntity=null;
  }
/**
 *活性化メソッド
 */
  public void ejbActivate( ) {
  }
/**
 *非活性化メソッド
 */
  public void ejbPassivate( ) {
  }
}

(e)　デプロイ情報（DDファイル）の生成例

<?xml version="1.0" encoding="MS932"?>
<!--
Generated by COBOL adapter for Cosminexus Version 2 02-13
DO NOT EDIT THIS FILE
2013/09/30
-->
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd">
<ejb-jar>
  <display-name>クラス名EJBBean</display-name>
  <enterprise-beans>
    <session>
      <ejb-name>クラス名EJB.クラス名EJBHome</ejb-name>
      <home>パッケージ名.クラス名EJBHome</home>
      <remote>パッケージ名.クラス名EJB</remote>
      <ejb-class>パッケージ名.クラス名EJBBean</ejb-class>
      <session-type>Stateful</session-type>
      <transaction-type>Container</transaction-type>
    </session>
  </enterprise-beans>
  <assembly-descriptor>
  <container-transaction>
    <method>
      <ejb-name>クラス名EJB.クラス名EJBHome</ejb-name>
      <method-intf>Home</method-intf>
      <method-name>create</method-name>
    </method>
    <method>
      <ejb-name>クラス名EJB.クラス名EJBHome</ejb-name>
      <method-intf>Remote</method-intf>
      <method-name>callCOBOL</method-name>
    </method>
    <method>
      <ejb-name>クラス名EJB.クラス名EJBHome</ejb-name>
      <method-intf>Remote</method-intf>
      <method-name>setP_number</method-name>
    </method>
    <method>
      <ejb-name>クラス名EJB.クラス名EJBHome</ejb-name>
      <method-intf>Remote</method-intf>
      <method-name>setP_name</method-name>
    </method>
    <method>
      <ejb-name>クラス名EJB.クラス名EJBHome</ejb-name>
      <method-intf>Remote</method-intf>
      <method-name>setP_address</method-name>
    </method>
    <method>
      <ejb-name>クラス名EJB.クラス名EJBHome</ejb-name>
      <method-intf>Remote</method-intf>
      <method-name>setP_gif</method-name>
    </method>
    <method>
      <ejb-name>クラス名EJB.クラス名EJBHome</ejb-name>
      <method-intf>Remote</method-intf>
      <method-name>getP_number</method-name>
    </method>
    <method>
      <ejb-name>クラス名EJB.クラス名EJBHome</ejb-name>
      <method-intf>Remote</method-intf>
      <method-name>getP_name</method-name>
    </method>
    <method>
      <ejb-name>クラス名EJB.クラス名EJBHome</ejb-name>
      <method-intf>Remote</method-intf>
      <method-name>getP_address</method-name>
    </method>
    <method>
      <ejb-name>クラス名EJB.クラス名EJBHome</ejb-name>
      <method-intf>Remote</method-intf>
      <method-name>getP_gif</method-name>
    </method>
    <trans-attribute>Required</trans-attribute>
  </container-transaction>
  </assembly-descriptor>
</ejb-jar>

付録D　COBOLアクセス用Bean生成時に出力するメッセージ

Cosminexus連携機能が出力するメッセージ内容について説明します。

付録D.1　メッセージの形式

Cosminexus連携機能が出力するメッセージは，次の形式です。

KCCCnnnnJ-x
メッセージテキスト
追加メッセージ

KCCC：プリフィクス

nnnn：メッセージ番号

J：Cosminexus連携機能のエラーであることを示す。

x：メッセージレベル

E重大エラー

W:警告エラー

I：エラーではないメッセージ

追加メッセージ：入力した登録集原文にエラーがある場合，次のメッセージを表示します。

ｎ[,n]…行目付近を見直してください。

ｎはエラーが発生した行番号（相対行番号）を示します。

ただし，厳密な行番号が出力できない場合があるため，該当行またはその前後の行番号となります。

特定の行に関連しないエラーの場合，追加メッセージは表示されません。

付録D.2　メッセージ一覧

(1)　COBOLアクセス用Bean生成ツールが出力するメッセージ

メッセージID

メッセージテキスト

KCCC1001J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

予期しないエラーが発生しました。

KCCC1002J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

予期しないエラーが発生しました。

KCCC1003J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

メモリ不足が発生しました。

KCCC1004J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

I/Oエラーが発生しました。

KCCC1005J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

メモリ不足が発生しました。

KCCC1006J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

COPY文の解析処理で予期しないエラーが発生しました。

KCCC1007J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

解析情報を格納する一時ファイルを作成できませんでした。

KCCC1008J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

指定された通貨記号が不当です。

KCCC1009J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

I/Oエラーが発生しました。

KCCC1011J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

本製品で許していない語が現れました。

または書き方に誤りがあります。

KCCC1012J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

1行の文字数が255文字を超えています。

KCCC1013J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

入力行数が32,760行を超えました。

KCCC1014J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

FILLER項目の数が65,535個を超えました。

KCCC1015J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

語，またはPICTURE文字列の長さが30字を超えています。

KCCC1016J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

数字の桁数が18桁を超えています。

KCCC1017J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

終止符の直後には空白が必要です。

KCCC1018J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

最初のデータ定義のレベル番号が01/77以外です。

KCCC1019J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

レベル番号は先に出た基本項目の属する集団のうちの

どれかのレベル番号と同じでなければなりません。

KCCC1020J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

レベル番号の指定に誤りがあります。

KCCC1021J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

PICTURE句が2重に定義されています。

KCCC1022J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

PICTURE句の書き方に誤りがあります。

KCCC1023J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

USAGE句が2重に定義されています。

KCCC1024J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

OCCURS句が2重に定義されています。

KCCC1025J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

OCCURS句に指定した反復回数の値が正しくありません。

KCCC1026J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

SIGN句が2重に定義されています。

KCCC1027J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

REDEFINES句が2重に定義されています。

KCCC1028J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

01/77レベルのデータ項目にOCCURS句を指定することはできません。

KCCC1029J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

集団項目にPICTURE句を指定することはできません。

KCCC1030J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

PICTURE句とUSAGE句の指定が矛盾しています。

KCCC1031J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

PICTURE句あるいはUSAGE句とSIGN句の指定が矛盾しています。

KCCC1032J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

基本項目にUSAGE句もPICTURE句も指定されていません。

KCCC1033J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

01/77レベル以外にUSAGE ADDRESS/POINTERは指定できません。

KCCC1034J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

USAGE POINTER/ADDRESSは指定できません。

KCCC1035J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

日本語文字が72カラムと73カラムにまたがっています。

KCCC1036J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

7カラム目に不当な文字が指定されています。

KCCC1041J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

プログラム論理エラーが発生しました。

KCCC1042J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

パーサエンジンがスタックオーバーフローしました。

KCCC1043J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

データ記述項の書き方に誤りがあるか，サポートされていない構文です。

KCCC1044J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

パーサエンジンがエラー終了しました。

KCCC1051J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

登録集原文ファイルが開けません。

KCCC1052J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

COPY文の解析処理でI/Oエラーが発生しました。

KCCC1053J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

1行の文字数が255文字を超えています。

KCCC1054J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

入力行数が32,760行を超えました。

KCCC1055J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

COPY文のネストレベルが19を超えました。

KCCC1056J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

登録集原文ファイルが開けません。

KCCC1057J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

COPY文の解析処理でI/Oエラーが発生しました。

KCCC1058J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

COPY文の書き方に誤りがあります。またはサポートされていない構文です。

KCCC1059J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

原文名に誤りがあります。

KCCC1060J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

登録集原文ファイルが見つかりません。

KCCC1061J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

フリー形式の原文と固定形式の原文は混在できません。

KCCC1071J-E

OCCURS句の書き方に誤りがあります。

KCCC1072J-E

OCCURS句の書き方に誤りがあります。

KCCC1099J-E

COBOLへの引数を定義した登録集原文の構文解析処理でエラーが発生しました。

解析処理中に例外が発生しました。

KCCC1101J-W

COBOLへの引数を定義した登録集原文の構文解析処理で警告エラーが発生しました。

REDEFINES句がデータ名の後ろにありません。

直前にあるものと仮定します。

KCCC1102J-W

COBOLへの引数を定義した登録集原文の構文解析処理で警告エラーが発生しました。

REDEFINES句のあるデータ項目のレベル番号と等しいレベル番号が見つかりません。

またはREDEFINES句で指定されたデータ名が定義されていません。

REDEFINES句を無視します。

KCCC1103J-W

COBOLへの引数を定義した登録集原文の構文解析処理で警告エラーが発生しました。

再定義項目と被再定義項目の大きさを同じにするか，

または再定義項目を小さくする必要があります。

再定義項目の大きさを採用します。

KCCC1301J-E

TEMPフォルダを作成できません。

KCCC1302J-E

通貨編集文字の指定がありません。または指定に誤りがあります。

KCCC1303J-E

生成ファイルを出力するフォルダの指定がありません。

KCCC1305J-W

フォルダ(*** 5 ***)が見つかりません。作成しますか？

KCCC1306J-E

フォルダを作成できませんでした。

KCCC1307J-E

生成ファイルを出力するフォルダに指定された値はフォルダ名ではありません。

KCCC1308J-E

j2cb2kpars.dllをローディングできません。

KCCC1311J-E

COBOLへの引数を定義した登録集原文のファイルの指定がありません。

KCCC1312J-E

COBOLへの引数を定義した登録集原文のファイルが見つかりません。

KCCC1313J-E

登録集原文に指定された値はファイル名ではありません。

KCCC1361J-E

OCCURS句のDEPENDING ON指定はサポートされていません。

KCCC1391J-I

生成ファイルの出力が完了しました。生成ツールを終了しますか？

KCCC1401J-E

引数*** 1 ***の別名にJavaの変数名規則として不当な文字が含まれています。

文字: "*** 3 ***"

KCCC1403J-E

引数*** 1 ***の別名(*** 2 ***)に英文字,数字,アンダーバー,ドル記号以外が含まれています。

別名を再設定してください。

すべての別名に対してチェック処理をスキップしますか？

KCCC1405J-E

引数*** 1 ***のデータ名(*** 2 ***)に

英文字,数字,アンダーバー,ドル記号以外が含まれています。

別名を設定してください。

すべてのデータ名に対してチェック処理をスキップしますか？

KCCC1406J-E

データ名(*** 2 ***)を使用して生成するソースでは変数名が一意になりません。

別名を設定してください。

KCCC1407J-E

別名(*** 2 ***)を使用して生成するソースでは変数名が一意になりません。

別名を再設定してください。

KCCC1408J-E

データ名(*** 2 ***)を使用して生成するソースではメソッド名が一意になりません。

別名を設定してください。

KCCC1409J-E

別名(*** 2 ***)を使用して生成するソースではメソッド名が一意になりません。

別名を再設定してください。

KCCC1441J-E

再定義項目は可変長データとして指定できません。

KCCC1442J-E

長さが5バイト未満の項目は可変長データとして指定できません。

KCCC1443J-W

可変長データを再定義しています。

再定義項目および従属する項目に対するsetter/getterは生成されません。

KCCC1444J-E

01/77レベル以外の項目は可変長データとして指定できません。

KCCC1445J-E

再定義項目はアドレスデータとして指定できません。

KCCC1446J-W

アドレスデータを再定義しています。

再定義項目および従属する項目に対するsetter/getterは生成されません。

KCCC1447J-E

引数*** 1 ***の引数順の指定がありません。

KCCC1448J-E

引数*** 1 ***の引数順の値が不正です。

KCCC1449J-E

引数*** 1 ***の引数順に0以下の値が指定されています。

KCCC1450J-E

引数*** 1 ***の引数順の値が項目数を超えています。

KCCC1451J-E

同じ引数順の値(*** 1 ***)が重複して指定されています。

KCCC1471J-E

パッケージ名の指定がありません。

KCCC1472J-E

パッケージ名として正しくありません。

KCCC1473J-E

クラス名の指定がありません。

KCCC1474J-E

クラス名として正しくありません。

KCCC1475J-E

ライブラリ名の指定がありません。

KCCC1476J-E

プログラム名の指定がありません。

KCCC1501J-W

ファイルはパッケージに既に存在します。

上書きしますか？ファイル名：*** 4 ***

KCCC1502J-E

生成ソースを格納するファイルが作成できませんでした。

KCCC1504J-E

生成ソースを格納するフォルダが作成できませんでした。

KCCC1505J-E

ファイルを作成できませんでした。またはファイルにアクセスできませんでした。

KCCC1506J-E

クラスを生成できませんでした。

KCCC1511J-W

ファイルはパッケージに既に存在します。上書きしますか？

KCCC1512J-E

生成ソースを格納するファイルが作成できませんでした。

KCCC1514J-E

生成ソースを格納するフォルダが作成できませんでした。

KCCC1515J-E

ファイルを作成できませんでした。またはファイルにアクセスできませんでした。

KCCC1516J-E

クラスを生成できませんでした。

KCCC1517J-E

クラスを生成できませんでした。

KCCC1518J-E

クラスを生成できませんでした。

KCCC1519J-E

クラスを生成できませんでした。

KCCC1520J-E

生成ソースを格納するフォルダが作成できませんでした。

KCCC1601J-E

解析処理中に例外が発生しました。

KCCC1602J-E

COBOLアクセス用Bean生成処理が異常終了しました。

KCCC1651J-E

テーブルの初期化処理中に例外が発生しました。

KCCC1661J-E

メモリ不足が発生しました。

KCCC1801J-E

2重起動しました。終了します。

KCCC1802J-E

内部エラー : *** 6 ***

KCCC1811J-E

内部エラー : *** 6 ***

KCCC1812J-E

フォルダとして有効でありません。

KCCC1813J-E

最後に '¥' を付加した状態で260バイト以内にしてください。

KCCC1814J-E

設定したフォルダは不当です。再設定してください。

KCCC1815J-E

ドライブ指定が必要です。再設定してください。

KCCC1816J-E

固定ドライブでなければなりません。再設定してください。

KCCC1817J-E

J2SEのルートフォルダを正しく設定してください。

KCCC1818J-E

設定した値は処理上使用できません。再設定してください。

KCCC1819J-E

J2SEのルートフォルダを設定してください。

KCCC1820J-E

最大メモリプールサイズに整数以外が指定されています。

KCCC1821J-E

最大メモリプールサイズの値が指定されていません。

KCCC1822J-E

設定ファイルの出力処理でエラーが発生しました。

KCCC1831J-E

初期化処理中にエラーが発生しました。

KCCC1832J-E

J2SEのルートフォルダが見つかりません。

ルートフォルダを再設定してください。

KCCC1833J-E

生成ツールを起動できませんでした。

ファイルが見つかりません。

J2SEのルートフォルダを再設定してください。

KCCC1834J-E

生成ツールを起動できませんでした。

ファイルにアクセスできません。

J2SEのルートフォルダ下のアクセス権を見直してください。

KCCC1835J-E

生成ツールを起動できませんでした。メモリ不足です。

KCCC1836J-E

生成ツールを起動できませんでした。*** 6 ***

KCCC1837J-E

生成ツール実行時にエラーが発生しました。

実行環境を見直してください。

KCCC1841J-E

2重起動しました。終了します。

KCCC1842J-E

内部エラー : *** 6 ***

KCCC1843J-E

初期処理時にエラーが発生しました。

KCCC1851J-E

ヘルプを起動できません。*** 6 ***

KCCC1852J-E

ヘルプファイルが見つかりません。

KCCC1853J-E

ヘルプ起動時にエラーが発生しました。

KCCC1854J-E

ヘルプ起動時にエラーが発生しました。

KCCC1855J-E

内部エラー : *** 6 ***

KCCC1861J-E

終了処理時にエラーが発生しました。

KCCC1862J-E

終了処理時にエラーが発生しました。

KCCC1871J-E

j2cb2kwJNI.dllをローディングできません。

KCCC1872J-E

ヘルプ起動時にエラーが発生しました。

KCCC1873J-E

終了処理時にエラーが発生しました。

KCCC1881J-E

初期処理時にエラーが発生しました。

KCCC5001J-I

本当に終了してよろしいですか？

注　表中の *** n *** は，次のとおりです。

*** 1 ***：引数の順番を示す数字

*** 2 ***：データ名または別名

*** 3 ***：Javaの変数名規則として不当な文字

*** 4 ***：ファイル名

*** 5 ***：フォルダ名

*** 6 ***：詳細メッセージ

付録E　例外情報コード一覧

例外情報コードとメッセージ内容，エラー発生要因，システムの処理およびプログラマの対策について説明します。

付録E.1　例外情報コードの形式

getErrorCodeおよびgetEJBErrorCodeで取得する例外情報コードは，次の形式です。

J2CByyynnnn

J2CB：プリフィクス

COBOLアクセス以外で発生した例外情報コードの場合は，”ETC:”となることもあります。

yyy：

エラー発生場所（メソッド）コード：表F-2および表F-3を参照してください。

nnnn：

エラー要因コード：表F-1のように分類されます。

表E‒1　例外名一覧（JavaBean/EJB共通）

エラー要因コード

例外名

意　味

0000〜0FFF

SYS_ERR

システムエラー

1000〜10FF

J_ENV_ERR

実行環境エラー

1100〜1FFF

INVALID_TYPE

データ項目属性エラー

2000〜2FFF

INVALID_ARG

引数指定エラー

4000〜5FFF

UNRECOVERABLE

回復不能エラー

9999

UNKNOWN

予期しないエラー

(1)　JavaBean用エラー発生場所（メソッド）コード

表E‒2　JavaBean用エラー発生場所（メソッド）コード

コード(16進)

場所

001

getData

010

setData

050

init()

101

callCOBOL

500

GroupAccess

601

CBLAccess.getData(int)

602

CBLAccess.setData(int，Object)

603

CBLAccess.getData(int，String)

604

CBLAccess.setData(int，String，Object)

605

CBLAccess.callCOBOL

606

CBLAccess.makeGroupAccess

607

CBLAccess.initialData

608

CBLAccess.makeVarData

800

getEnv

801

getOption

999

不明

(2)　EJB用エラー発生場所（メソッド）コード

表E‒3　EJB用エラー発生場所（メソッド）コード

コード(16進)

場所

001

getData

010

setData

050

init()

101

CallCOBOL

651

CBLEJBAccess.getData(int)

652

CBLEJBAccess.setData(int，Object)

653

CBLEJBAccess.getData(int，String)

654

CBLEJBAccess.setData(int，String，Object)

655

CBLEJBAccess.callCOBOL

656

CBLEJBAccess.makeGroupAccess

657

CBLEJBAccess.initialData

658

CBLEJBAccess.makeVarData

800

getEnv

801

getOption

999

不明

付録E.2　メッセージ文字列の形式

getMessageで取得するメッセージ文字列は，次の形式です。

例外情報コード: YYY 実行中にエラーが発生しました。 MSG

例外情報コード：付録F.1を参照してください。

YYY：エラー発生場所（メソッド）名称（表F-2または表F-3参照を参照してください）。

MSG：エラー要因コード別のメッセージ内容

また，メッセージ一覧は，メッセージ文字列を次の形式で記載しています。

例外情報コード

MSG

要因

メッセージの説明を示す。

（Ｓ）

システムの処置を示す。

（Ｐ）

プログラム作成者の処置を示す。

付録E.3　メッセージ文字列の取得方法

メッセージ文字列は，J2CBExceptionクラスのgetMessageまたはgetEJBMessageメソッドで取得できます。

例：

：
try {
 ：（引数設定，プログラム呼び出しなど）
} catch ( J2CBException e ) {
 String msg=e.getMessage();
 System.out.println("Message=[" + msg + "]");
}
 ：

また，Javaプログラムのどこでエラーとなったかがわからない場合は，printStackTraceで表示することもできます。

例：

：
try {
 ：（引数設定，プログラム呼び出しなど）
} catch ( J2CBException e ) {
 e.printStackTrace();
}
：

上記の例で標準出力に出力した場合の出力先は次のようになります。

(1)　Webコンテナ使用した場合の出力先

通常は，「Webコンテナを起動したコンソール画面」となります。

付録E.4　メッセージ一覧

J2CByyy0001

COBOLで作成したプログラムでエラーが発生しました。

プログラム名称=*** 1 ***[，シグナル種別=*** 2 ***]

要因

COBOLで作成したプログラムでエラーが発生した。考えられる要因は次のどちらかである。

COBOLプログラム実行中に異常終了した。

COBOLプログラム実行中にSTOP RUNが実行された。

*** 1 ***：プログラム名称

（Windows(x86)の場合）

プログラム名称は， _プログラム名@n の形式です（stdcall呼び出し規約に準拠した名称です）。

ｎ：次の計算式で求められる値を指定します。

　　n=引数の数 × 4

例：プログラム名がSUB1で，2個の引数がある場合のプログラム名称は「_SUB1@8」となります。

（Windows(x64)，UNIXの場合）

プログラム名称は，プログラム名そのままです。

*** 2 ***：シグナル種別

4 ： SIGILL

6 ： SIGIOT（AIXの場合だけ）

7 ： SIGEMT（AIXの場合），SIGBUS（Linuxの場合）

8 ： SIGFPE

10： SIGBUS（AIXの場合※）

11： SIGSEGV

注※　Linuxの場合，シグナル種別番号10はありません。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

異常終了時要約情報リストが出力されていれば，このリストを基に，COBOLで作成したプログラムのエラー原因を修正して再実行する。異常終了時要約情報リスト※1が未出力であれば，「実行時デバッグ機能オプション※2またはテストデバッグ機能オプション※3指定でコンパイルして作成したプログラム」で，環境変数CBLABNLSTを指定して実行する。出力された異常終了時要約情報リストを基に，調査・修正する。

STOP RUN文を探し，EXIT PROGRAMに変更する。

注※1　異常終了時要約情報リストは，COBOLで作成したプログラムが異常終了した際に出力されるリストで，「実行時デバッグ機能オプション※2またはテストデバッグ機能オプション※3指定でコンパイルして作成したプログラム」で「環境変数CBLABNLSTが設定されている」場合に出力されます。

注※2　実行時デバッグ機能オプション

-DebugInf

-DebugInf,Trace

-DebugCompati

-DebugData

-DebugRange

注※3　テストデバッグ機能オプション

-TDInf

-CVInf

J2CByyy0002

予期しないエラーが発生しました。[コード値=*** 9 ***]

要因

予期しないエラーが発生した。

*** 9 ***：「例外の種類を識別する」値

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

エラー発生場所（メソッド）コードと「例外の種類を識別する」値を控えて，保守員に連絡する。

J2CByyy0003

指定されたライブラリがロードできませんでした。ライブラリ名称=*** 2 ***,エラー番号=*** 3 ***

要因

「COBOLで作成したライブラリ」がロードできない。考えられる要因は次のどれかである。

「COBOLで作成したライブラリ」のロード時に下記[2]以外のエラーが発生した。

COBOLアクセス用Bean生成時に指定した「ライブラリ名」が誤っている。

*** 2 ***：ロードしようとした「COBOLで作成したライブラリ」名称。

*** 3 ***：エラー番号（詳細は下記参照）

（Windowsの場合）

Microsoft C++(JNI部分)の関数(LoadLibrary)で発生したエラーの詳細情報を表します。エラー番号の形式は，次のようになります。

エラー番号=Windows APIが返すエラーコード

主なエラーコードとエラーの内容を次に示します。

表E‒4　実行時の主なエラーコードとエラーの内容

エラーコード

エラーの内容

126

指定されたライブラリが見つからない。

193

有効なWindowsアプリケーションではない。

（UNIXの場合）

C++(JNI部分)の関数で発生したエラーの詳細情報を表します。エラー番号の形式は，次のようになります。

error = errno

errnoについては，man機能のerrno(2)で参照できます。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

表示された「COBOLで作成したライブラリ」が存在し，実行可能であることを確認後，再実行する。

「ライブラリ名」を正しく設定してCOBOLアクセス用Beanを再作成し，再実行する。

J2CByyy0004

指定されたライブラリ内のプログラム名称が見つかりませんでした。プログラム名称=*** 1 ***

要因

「COBOLで作成したライブラリ」中に，COBOLアクセス用Bean生成時に指定した「呼び出すCOBOLプログラム名」が見つからない。「ライブラリ名」と「呼び出すCOBOLプログラム名」のどちらかが誤っていることが考えられる。

*** 1 ***：プログラム名称（上記J2CByyy0001を参照してください）

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

「ライブラリ名」と「呼び出すCOBOLプログラム名」を正しく設定してCOBOLアクセス用Beanを再作成し，再実行する。

J2CByyy0005

COBOLの実行時ライブラリまたは関数が見つかりませんでした。

要因

COBOL2002がインストールされていないか，環境設定が正しく行われていない。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

COBOL2002をインストールし，環境設定を見直して，再実行する。

J2CByyy0008

引数のデータ領域が確保できませんでした。

要因

「COBOLで作成したプログラム」と受け渡す引数データ領域を作成しようとしたが，作成できなかった。要因として，メモリ不足が考えられる。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

十分な空きメモリ領域を確保して，再実行する。

J2CByyy0009

データ変換時に必要な作業領域が確保できませんでした。

要因

setter/getterで行うデータ変換中にメモリ不足が発生した。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

十分な空きメモリ領域を確保して，再実行する。

J2CByyy0010

領域が確保できませんでした。領域種別=*** 1 ***

要因

領域種別*** 1 ***に示す領域を作成しようとしたが，作成できなかった。要因として，メモリ不足が考えられる。

*** 1 ***：領域種別

シグナル連鎖機能

COBOL環境変数

COBOLサービスルーチン

COBOLプログラム名称

COBOLライブラリ名称

COBOLアクセス実行環境変数

スレッド初期設定処理

環境設定ファイル

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

十分な空きメモリ領域を確保して，再実行する。

J2CByyy0011

ライブラリの指定が絶対パスでありません。

要因

COBOLアクセス用Bean生成時に指定したライブラリ名が絶対パス指定になっていない。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

COBOLアクセス用Bean生成時に指定するライブラリ名を絶対パス指定に変更して再生成後，再実行する。または，dynamicpathオプションでyesを指定し，再実行する。

J2CByyy0013

既にCOBOLプログラムからJavaプログラムを呼び出しているため，そのJavaプログラムからCOBOLプログラムを呼び出せません。

要因

Javaプログラム呼び出し機能が実行中である。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

COBOLプログラムを別プロセスで呼び出すなどで対処する。

J2CByyy1001

java/lang/Stringクラス，コンストラクタまたはメソッドが見つかりません。

要因

利用可能なメモリが不足している。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

十分な空きメモリ領域を確保して，再実行する。

J2CByyy1011

java/math/BigDecimalクラス，コンストラクタまたはメソッドが見つかりません。

要因

利用可能なメモリが不足している。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

十分な空きメモリ領域を確保して，再実行する。

J2CByyy1021

java/lang/Integerクラス，コンストラクタまたはメソッドが見つかりません。

要因

利用可能なメモリが不足している。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

十分な空きメモリ領域を確保して，再実行する。

J2CByyy1031

java/lang/Shortクラス，コンストラクタまたはメソッドが見つかりません。

要因

利用可能なメモリが不足している。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

十分な空きメモリ領域を確保して，再実行する。

J2CByyy1041

java/lang/Longクラス，コンストラクタまたはメソッドが見つかりません。

要因

利用可能なメモリが不足している。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

十分な空きメモリ領域を確保して，再実行する。

J2CByyy1051

java/lang/Floatクラス，コンストラクタまたはメソッドが見つかりません。

要因

利用可能なメモリが不足している。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

十分な空きメモリ領域を確保して，再実行する。

J2CByyy1061

java/lang/Doubleクラス，コンストラクタまたはメソッドが見つかりません。

要因

利用可能なメモリが不足している。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

十分な空きメモリ領域を確保して，再実行する。

J2CByyy10A1

jp/co/hitachi_sk/j2cb/J2CBExceptionクラス，コンストラクタまたはメソッドが見つかりません。

要因

利用可能なメモリが不足している。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

十分な空きメモリ領域を確保して，再実行する。

J2CByyy1101

符号なし数字項目に格納するデータに，符号が設定されています。

要因

符号なし数字項目に対して，符号付きの数値を設定しようとした。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

符号なし数字項目に設定しているデータに符号が付いたデータが設定されていないかを見直して，再実行する。

J2CByyy1102

予期しない型情報です。*** 4 ***

要因

Cosminexus連携機能でサポートしていないデータ項目属性を，COBOLアクセス用Beanで指定した。考えられる要因は次のどちらかである。

Cosminexus連携機能でサポートしていないデータ項目を記述したCOBOLプログラムから生成したCOBOLアクセス用Beanを実行した。

生成したCOBOLアクセス用Beanを変更した。

*** 4 ***：エラーとなった型情報文字列

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

Cosminexus連携機能でサポートされていないデータ項目を取り除いてCOBOLアクセス用Beanを作成し，再実行する。または，Cosminexus連携機能を，データ項目がサポートされたバージョンにバージョンアップして，再実行する。

COBOLアクセス用Beanに加えた変更を戻してJavaプログラムを作成し，再実行する。

J2CByyy1103

型情報からデータ長を特定できませんでした。*** 4 ***

要因

Cosminexus連携機能でサポートしていないデータ項目属性を，COBOLアクセス用Beanで指定した。考えられる要因は次のどちらかである。

Cosminexus連携機能でサポートしていないデータ項目を記述したCOBOLプログラムから生成したCOBOLアクセス用Beanを実行した。

生成したCOBOLアクセス用Beanを変更した。

*** 4 ***：エラーとなった型情報文字列

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

Cosminexus連携機能でサポートされていないデータ項目を取り除いてCOBOLアクセス用Beanを作成し，再実行する。または，Cosminexus連携機能を，データ項目がサポートされたバージョンにバージョンアップして，再実行する。

COBOLアクセス用Beanに加えた変更を戻してJavaプログラムを作成し，再実行する。

J2CByyy1104

型情報から全桁数を特定できませんでした。*** 4 ***

要因

Cosminexus連携機能でサポートしていないデータ項目属性を，COBOLアクセス用Beanで指定した。考えられる要因は次のどちらかである。

Cosminexus連携機能でサポートしていないデータ項目を記述したCOBOLプログラムから生成したCOBOLアクセス用Beanを実行した。

生成したCOBOLアクセス用Beanを変更した。

*** 4 ***：エラーとなった型情報文字列

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

Cosminexus連携機能でサポートされていないデータ項目を取り除いてCOBOLアクセス用Beanを作成し，再実行する。または，Cosminexus連携機能を，データ項目がサポートされたバージョンにバージョンアップして，再実行する。

COBOLアクセス用Beanに加えた変更を戻してJavaプログラムを作成し，再実行する。

J2CByyy1105

型情報から小数桁数を特定できませんでした。*** 4 ***

要因

Cosminexus連携機能でサポートしていないデータ項目属性を，COBOLアクセス用Beanで指定した。考えられる要因は次のどちらかである。

Cosminexus連携機能でサポートしていないデータ項目を記述したCOBOLプログラムから生成したCOBOLアクセス用Beanを実行した。

生成したCOBOLアクセス用Beanを変更した。

*** 4 ***：エラーとなった型情報文字列

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

Cosminexus連携機能でサポートされていないデータ項目を取り除いてCOBOLアクセス用Beanを作成し，再実行する。または，Cosminexus連携機能を，データ項目がサポートされたバージョンにバージョンアップして，再実行する。

COBOLアクセス用Beanに加えた変更を戻してJavaプログラムを作成し，再実行する。

J2CByyy1106

型情報の小数桁数が全桁数を超えています。*** 4 ***

要因

Cosminexus連携機能でサポートしていないデータ項目属性を，COBOLアクセス用Beanで指定した。考えられる要因は次のどちらかである。

Cosminexus連携機能でサポートしていないデータ項目を記述したCOBOLプログラムから生成したCOBOLアクセス用Beanを実行した。

生成したCOBOLアクセス用Beanを変更した。

*** 4 ***：エラーとなった型情報文字列

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

Cosminexus連携機能でサポートされていないデータ項目を取り除いてCOBOLアクセス用Beanを作成し，再実行する。または，Cosminexus連携機能を，データ項目がサポートされたバージョンにバージョンアップして，再実行する。

COBOLアクセス用Beanに加えた変更を戻してJavaプログラムを作成し，再実行する。

J2CByyy2001

アクセス文字列から項目を特定できませんでした。

アクセス文字列:*** 5 ***

要因

COBOLアクセス用Beanの初期処理で指定するデータ名称と異なるデータ名称を，setter/getterで指定した。

考えられる要因は次のどちらかである。

指定した添字の値が範囲外である。

生成したCOBOLアクセス用Beanを変更した。

*** 5 ***：アクセス文字列

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

添字の値を正しい値に変更し，再実行する。

COBOLアクセス用Beanに加えた変更を戻してJavaプログラムを作成し，再実行する。または，Cosminexus連携機能で生成したCOBOLアクセス用BeanでJavaプログラムを作成し，再実行する。

J2CByyy2002

レベル番号，型または識別文字列が不正です。

level:*** 6 *** name:*** 7 *** type:*** 4 ***

要因

Cosminexus連携機能でサポートしていないデータ項目属性を，COBOLアクセス用Beanで指定した。考えられる要因は次のどちらかである。

Cosminexus連携機能でサポートしていないデータ項目を記述したCOBOLプログラムから生成したCOBOLアクセス用Beanを実行した。

生成したCOBOLアクセス用Beanを変更した。

*** 4 ***：型情報文字列

*** 6 ***：レベル番号文字列

*** 7 ***：識別文字列

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

Cosminexus連携機能でサポートされていないデータ項目を取り除いてCOBOLアクセス用Beanを作成し，再実行する。または，Cosminexus連携機能を，データ項目がサポートされたバージョンにバージョンアップして，再実行する。

COBOLアクセス用Beanに加えた変更を戻してJavaプログラムを作成し，再実行する。

J2CByyy2003

識別子の配列情報が不正です。識別子:*** 7 ***

要因

Cosminexus連携機能でサポートしていないデータ項目属性を，COBOLアクセス用Beanで指定した。生成したCOBOLアクセス用Beanを変更したことが考えられる。

*** 7 ***：識別文字列

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

COBOLアクセス用Beanに加えた変更を戻してJavaプログラムを作成し，再実行する。または，Cosminexus連携機能で生成したCOBOLアクセス用BeanでJavaプログラムを作成し，再実行する。

J2CByyy2004

入力の引数が設定されていません。

要因

予期しないエラーが発生した。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

エラー発生場所（メソッド）コードを控え，保守員に連絡する。

J2CByyy2005

入力のアドレスが設定されていません。

要因

予期しないエラーが発生した。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

エラー発生場所（メソッド）コードを控え，保守員に連絡する。

J2CByyy2006

入力の型情報が設定されていません。

要因

予期しないエラーが発生した。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

エラー発生場所（メソッド）コードを控え，保守員に連絡する。

J2CByyy2007

型情報にNULLが設定されています。

要因

内部情報作成時に使用するデータ型情報が不当である。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

COBOLアクセス用Beanを書き換えている場合は元に戻してJavaアプリケーションを作成し，再実行する。Cosminexus連携機能で生成したCOBOLアクセス用Beanでもこのエラーとなる場合は，COBOLアクセス用Beanを控えて，保守員に連絡する。

J2CByyy2008

不正なインデックス情報を得ました。index=*** 8 ***

要因

内部情報の作成，参照時に使用するインデックス値が不当である。生成したCOBOLアクセス用Beanを変更したことが考えられる。

*** 8 ***：インデックス値

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

COBOLアクセス用Beanを書き換えている場合は元に戻してJavaアプリケーションを作成し，再実行する。Cosminexus連携機能で生成したCOBOLアクセス用Beanでもこのエラーとなる場合は，COBOLアクセス用Beanを控えて，保守員に連絡する。

J2CByyy2009

アクセス文字列にNULLが設定されています。

要因

COBOLアクセス用Beanの初期処理で指定するデータ名称と異なるデータ名称を，getterで指定した。生成したCOBOLアクセス用Beanを変更したことが考えられる。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

COBOLアクセス用Beanに加えた変更を戻してJavaプログラムを作成し，再実行する。または，Cosminexus連携機能で生成したCOBOLアクセス用BeanでJavaプログラムを作成し，再実行する。Cosminexus連携機能で生成したCOBOLアクセス用Beanでもこのエラーとなる場合は，COBOLアクセス用Beanを控えて，保守員に連絡する。

J2CByyy2011

サーバからJavaオブジェクトに変換できない数値データを得ました。

*** 9 ***

要因

「COBOLで作成したプログラム」で設定された数値データ値が不当である。

*** 9 ***：エラーとなった数値データ

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

「COBOLで作成したプログラム」で数値データを設定する個所を調査・修正して，再実行する。

J2CByyy2012

サーバからJavaオブジェクトに変換できない文字データを得ました。

要因

「COBOLで作成したプログラム」で設定された文字列データ値が不当である。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

「COBOLで作成したプログラム」で文字列データを設定する個所を調査・修正して，再実行する。

J2CByyy2013

引数の数が4096個を超えています。

引数の数が1024個を超えています。

Windows(x64)，AIX(64)の場合は「引数の数が1024個を超えています。」，Linuxの場合は「引数の数が4096個を超えています。」が出力されます。

要因

引数の個数が，指定可能な個数（4,096個または1,024個）を超えている。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

引数の個数を，指定可能な個数（4,096個または1,024個）以下にする。

J2CByyy2014

setterで設定したデータの属性が，データ項目に対応するデータ属性と異なっています。

要因

setXxxの引数に指定したオブジェクトが，設定しようとするデータ項目に対応するデータ属性ではない。

例：

小数桁のない2進データ項目のsetterの引数にStringを指定した

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

setterの引数を，データ項目に対応するデータ属性に合わせたJavaプログラムを作成し，再実行する。

J2CByyy4001

文字列をネイティブ文字列に変換できません。*** 9 ***

要因

「COBOLで作成したプログラム」に渡す引数情報作成時に，不当な文字データ（数字を設定する必要がある個所が数字でない）があるか，ライブラリ名称，プログラム名称に変換できない不当な文字データがある。もしくは，「COBOLで作成したプログラム」で設定された引数に，変換できない文字データがある。

*** 9 ***：補足情報で，次の形式である。

　　(name)　　name=ライブラリ名称またはプログラム名称

　　(type)　　type=変換時のデータ項目属性

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

Javaプログラムで設定している数字データおよびライブラリ名称，プログラム名称を見直して，再実行する。または，「COBOLで作成したプログラム」で設定しているデータを見直して，再実行する。

J2CByyy4003

Java配列が生成できませんでした。

要因

「COBOLで作成したプログラム」で設定された引数データを参照するために，Java配列を作成しようとしたが，作成できなかった。要因として，メモリ不足が考えられる。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

十分な空きメモリ領域を確保して，再実行する。

J2CByyy4010

Java提供する関数で例外が発生しました。メモリ不足が考えられます。*** 1 ***

要因

Javaが提供する関数で例外が発生した。メモリ不足が考えられる。

*** 1 ***：発生場所を示す内部情報

(Ｓ)

プログラムの実行を中止し，例外を発生させる。

(Ｐ)

十分な空きメモリ領域を確保して，再実行する。

J2CByyy4100

不正なエンコードが指定されています。

要因

encodeで不当な指定をした。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

正しいencode指定をして，再実行する。

J2CByyy4101

IOエラーが発生しました。

要因

ワークストリームアクセス時にエラーとなった。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

エラー発生場所（メソッド）コードを控えて，保守員に連絡する。

J2CByyy5001

引数情報出力処理中にメモリ不足が発生しました。

要因

使用可能なメモリが不足している。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

十分な空きメモリ領域を確保して，再実行する。

J2CByyy5002

引数情報出力ファイル作成時にエラーが発生しました。*** 1 ***

*** 1 ***:例外情報

要因

引数情報出力ファイル作成時にエラーが発生した。読み込み権限がないことが考えられる。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

例外情報を基に，ファイルの書き込み権限などを見直して再実行する。

J2CByyy5003

引数情報出力処理中にI/Oエラーが発生しました。*** 1 ***

*** 1 ***:例外情報

要因

引数情報出力処理中に例外が発生した。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

例外情報を基にエラー原因を修正して再実行する。

J2CByyy5004

引数情報出力処理中にエラーが発生しました。*** 1 ***

*** 1 ***:例外情報

要因

引数情報出力処理中に例外が発生した。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

例外情報を基にエラー原因を修正して再実行する。

J2CByyy9999

予期しないエラーが発生しました。*** 9 ***

要因

予期しないエラーが発生した。

*** 9 ***：「例外の種類を識別する」値

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

エラー発生場所（メソッド）コードと「例外の種類を識別する」値を控えて，保守員に連絡する。

J2CByyynnnn（上記一覧にない番号）

メッセージ取得中にエラーが発生しました。

要因

メッセージ取得中にエラーが発生した。「Cosminexus連携機能の実行時ライブラリ」と「TP1/COBOL 拡張 Server Run Time System for Cosminexus Version 2」が一つのコンピュータにインストールされているが，バージョンが異なっている。

（Ｓ）

プログラムの実行を中止し，例外を発生させる。

（Ｐ）

上記2製品で提供しているjarファイル（j2cbrun.jarとj2tp1run.jar）の指定を，バージョンが新しいものから指定する。または，上記2製品のバージョンを合わせる。

付録F　プログラム例

COBOLアクセスを使用した場合の基本的なプログラム例を示します（COBOL引数の登録集原文から生成したBeanの生成例は，「付録C　COBOLアクセス用Beanの自動生成ソースイメージ」を参照してください）。

付録F.1　JavaBean版

(1)　COBOL引数の登録集原文とCOBOLプログラム例

COBOL引数の登録集原文例
       01 PERSONAL-DATA.
         05 P-NUMBER   PIC 9(9) USAGE COMP.
         05 P-NAME     PIC X(50).
         05 P-ADDRESS  PIC X(100).
         05 P-GIF      PIC X(50).

COBOLプログラム例
      *>****************************************************
      *>    COBOLサンプルプログラム(Search)                *
      *>****************************************************
       IDENTIFICATION  DIVISION.
       PROGRAM-ID.     SEARCHCBL.
       DATA            DIVISION.
       LINKAGE SECTION.
         COPY SEARCHCBLCOPY.
      *>  01 PERSONAL-DATA.
      *>    05 P-NUMBER   PIC 9(9) USAGE COMP.
      *>    05 P-NAME     PIC X(50).
      *>    05 P-ADDRESS  PIC X(100).
      *>    05 P-GIF      PIC X(50).

       PROCEDURE DIVISION USING PERSONAL-DATA.

      *>   検索処理
           IF P-NUMBER=100001 THEN
             MOVE '日立 一郎' TO P-NAME
             MOVE '日立市' TO P-ADDRESS
             MOVE '/ICHIRO.GIF' TO P-GIF
           ELSE
             IF P-NUMBER=100002 THEN
               MOVE '日立 二郎' TO P-NAME
               MOVE '久留米市' TO P-ADDRESS
               MOVE '/JIRO.GIF' TO P-GIF
             ELSE
               MOVE '登録されていません' TO P-NAME
               MOVE SPACE TO P-ADDRESS
               MOVE '/NOREGIST.GIF' TO P-GIF
             END-IF
           END-IF.
           EXIT  PROGRAM.

       END PROGRAM  SEARCHCBL.

(2)　Servlet(Java UAP)例

package test;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.beans.Beans;
import jp.co.hitachi_sk.j2cb.*;

public class SearchCBLServlet extends HttpServlet {
  private static final long serialVersionUID = 0L;
  ServletContext c;

  //グローバル変数の初期化
  public void init(ServletConfig config) throws ServletException {
    super.init(config);
    c=config.getServletContext();
  }

  //HTTP Get リクエストの処理
  public void doGet(HttpServletRequest req, HttpServletResponse res)
                         throws ServletException, IOException {
    String number="";
    try {
      number=req.getParameter("Number");
    } catch (Exception e) {
      e.printStackTrace();
    }

    res.setContentType("text/html; charset=shift_jis");

    SearchCBL bean=null;
    try {
      //Beanのインスタンス生成
      bean=(SearchCBL) Beans.instantiate(
                            this.getClass().getClassLoader(),
                            "test.SearchCBL");
    } catch (ClassNotFoundException excp) {
      excp.printStackTrace();
      return;
    }

    try {

      /* Beanにパラメタを設定 */
      try {
        bean.setP_number(new Integer(number));
      } catch (NumberFormatException e) {
        bean.setP_number(new Integer(0));
      }
      bean.setP_name("");
      bean.setP_address("");
      bean.setP_gif("");

      bean.callCOBOL();

      //JSP中で"bean"という名称でプロパティを参照できるようにする。
      req.setAttribute("bean",bean);
      //ここでJSPを呼びます
      javax.servlet.RequestDispatcher rd =
                c.getRequestDispatcher("/SearchCBL.jsp");
      rd.forward(req, res);

    } catch (J2CBException e) {
      e.printStackTrace();
      return;

    }
}

  //HTTP Post リクエストの処理
  public void doPost(HttpServletRequest request, HttpServletResponse response)
                                        throws ServletException, IOException {
    doGet(request, response);
  }

}

(3)　HTMLの作成例

<HTML>
  <HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=shift_jis">
    <TITLE>
      Search
    </TITLE>
  </HEAD>
  <BODY>
    <h3><center>COBOL adapter for Cosminexusのサンプル</center></h3>
    <center>100001 と 100002が登録されています。
      <FORM  action=/servlet/test.SearchCBLServlet method="POST">
        Number：<input type="text" name="Number" value="100001">
        <BR><BR> Submit を押すと servlet SearchCBLServlet を実行
        <BR><BR><input type=submit value="Submit"></form>
    </center>
  </BODY>
</HTML>

(4)　JSPの作成例

<%-- This is a JSP of the SEARCH CBL sample. --%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<%@ page contentType="text/html; charset=shift_jis"
                    import="jp.co.hitachi_sk.j2cb.J2CBException" %>
<jsp:useBean id="bean" scope="request" class="test.SearchCBL" />
<html>
<center>Result of Search.
<table border="1">
<tr><td colspan="2" align="center">
     <jsp:getProperty name="bean" property="p_number" />
</td><tr><td>Name</td><td>
     <jsp:getProperty name="bean" property="p_name" />
</td><tr><td>Address</td><td>
     <jsp:getProperty name="bean" property="p_address" />
<tr><td colspan="2" align="center">
<img src="../servlet<jsp:getProperty name="bean" property="p_gif" />">
</td></table>
</center>
</html>

付録F.2　EJB対応版

(1)　COBOL引数の登録集原文とCOBOLプログラム例

前述のJavaBean版と同じです。「付録F.1　JavaBean版」を参照してください。

(2)　Servlet(Java UAP)例

package testejb;

// import定義
import javax.servlet.*;
import javax.servlet.http.*;
import javax.naming.*;
import javax.rmi.*;
import java.io.*;
import java.util.*;
import javax.transaction.UserTransaction;
import javax.ejb.CreateException;
import java.rmi.*;
import java.lang.RuntimeException.*;
import jp.co.hitachi_sk.j2cb.*;

//* EJB パッケージ名 *
import testejb.*;

public class SearchEJBServlet extends HttpServlet {

  // *******************************
  // *  ホームインタフェース定義
  // *******************************
  private static final long serialVersionUID = 0L;
  SearchEJBHome   homeobj;

  String wkstr;
  boolean flgget=true;
  ServletContext  gservCont=null;
  UserTransaction tx;

  public void init(ServletConfig config) throws ServletException {
    Context context;
    try {
      gservCont=config.getServletContext();
      java.util.Properties prop=new java.util.Properties();
      prop.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY,
                      "com.hitachi.software.ejb.jndi.InsContextFactory");
      prop.setProperty(javax.naming.Context.OBJECT_FACTORIES,
                      "com.hitachi.software.ejb.jndi.InsNamingFactory");
      prop.setProperty(javax.naming.Context.STATE_FACTORIES,
                      "com.hitachi.software.ejb.jndi.InsNamingFactory");
      prop.setProperty(javax.naming.Context.PROVIDER_URL, "iiopname://localhost:900");
      javax.naming.Context ctx=new javax.naming.InitialContext(prop);

  //  *************************************************
  //  * ctx.lookup("HITACHI_EJB//SERVERS//**1**//EJB//**2**//**3**.**4**");
  //  * **1** : サーバ名(servername)
  //  * **2** : アプリケーション名
  //  * **3** : リモート名
  //  * **4** : ホーム名
  //  *
  //  * homeobj=(**5**)PortableRemoteObject.narrow(objref,**5**.class);
  //  * **5** : ホーム名
  //  *
  //  *************************************************
  //  * 注意 ： lookupの**1**(servername)は環境に合わせて変更してください
  //  *************************************************

      Object objref =
       ctx.lookup("HITACHI_EJB/SERVERS/servername/EJB/SearchEJBBean/SearchEJB.SearchEJBHome");
      homeobj=(SearchEJBHome)PortableRemoteObject.narrow(objref,SearchEJBHome.class);

    } catch(Exception e) {
      e.printStackTrace();
      return;
    }
}

  // Post の処理
  public void doPost(HttpServletRequest req,
                  HttpServletResponse res)
                  throws ServletException, IOException {
    flgget=false;
    doGetPost(req,res);
  }

  // Get の処理
  public void doGet(HttpServletRequest req,
                  HttpServletResponse res)
                  throws ServletException, IOException {
    flgget=true;
    doGetPost(req,res);
  }

  // GetPost の処理
  public void doGetPost(HttpServletRequest req,
                  HttpServletResponse res)
                  throws ServletException, IOException {

  // ********************************
  // *  リモートインタフェース定義
  // ********************************

    SearchEJB       remoteobj;

    // Htmからのデータ取得
    String number="";
    try {
      number=req.getParameter("Number");
    } catch (Exception e) {
      System.out.println("htm入力データエラー発生 :");
      e.printStackTrace();
      return;
    }

    // ****************************************************
    // * 文字エンコーディングの設定とそのライタの取得
    // ****************************************************

    res.setContentType("text/html; charset=shift_jis");
    PrintWriter out=res.getWriter();
    // HTMLを書き出す
    out.println("<html><head>");
   out.println("<meta http-equiv=¥"Content-Type¥" content=¥"text/html; charset=ISO-2022-JP¥">");
    out.println("<title>Test- (EJB呼び出し)-</title></head>");
    out.println("<body><center><h1>EJB動作確認</h1><br>");

    // EJBをCreate
    try {
      remoteobj=homeobj.create();
    } catch (Exception e) {
      J2CBErrorUtil wkobj=new J2CBErrorUtil(e.getMessage());
      out.println("Create時エラー発生 :");
      out.println("<p>getEJBCblErrorCode=" + wkobj.getEJBCblErrorCode() + "</p>");
      out.println("<p>getEJBCblMessageID=" + wkobj.getEJBCblMessageID() + "</p>");
      out.println("<p>getEJBDetailMessage=" + wkobj.getEJBDetailMessage() + "</p>");
      out.println("<p>getEJBErrorCode=" + wkobj.getEJBErrorCode() + "</p>");
      out.println("<p>getEJBMessage=" + wkobj.getEJBMessage() + "</p>");
      out.println("<p>getEJBName=" + wkobj.getEJBName() + "</p>");
      e.printStackTrace();
      return;
    }

    try {
      // Beanにパラメタを設定
      try {
        remoteobj.setP_number(new Integer(number));
      } catch (NumberFormatException e) {
        out.println("入力データエラー発生 :" + e.getMessage());
        e.printStackTrace();
        return;
      }
      remoteobj.setP_name("");
      remoteobj.setP_address("");
      remoteobj.setP_gif("");
    } catch(Exception e) {
      out.println("setBean エラー発生");
      out.println("Error MSG : " + e.getMessage());
      return;
    }

    // COBOLプログラムの呼び出し
    try {
      remoteobj.callCOBOL();
    } catch (Exception e) {
     out.println("COBOLプログラム呼び出し時 エラー発生 :");
      J2CBErrorUtil wkobj=new J2CBErrorUtil(e.getMessage());
      out.println("<p>getEJBCblErrorCode=" + wkobj.getEJBCblErrorCode() + "</p>");
      out.println("<p>getEJBCblMessageID=" + wkobj.getEJBCblMessageID() + "</p>");
      out.println("<p>getEJBDetailMessage=" + wkobj.getEJBDetailMessage() + "</p>");
     out.println("<p>getEJBErrorCode=" + wkobj.getEJBErrorCode() + "</p>");
      out.println("<p>getEJBMessage=" + wkobj.getEJBMessage() + "</p>");
      out.println("<p>getEJBName=" + wkobj.getEJBName() + "</p>");
      e.printStackTrace();
      return;
    }
    // データの出力
    try {
      out.println("<center>Result of Search.");
     out.println("<table border='1'>");
      out.println("<tr><td colspan='2' align='center'>");
      out.println( remoteobj.getP_number() );
      out.println("</td><tr><td>Name</td><td>");
      out.println( remoteobj.getP_name() );
     out.println("</td><tr><td>Address</td><td>");
      out.println( remoteobj.getP_address() );
      out.println("<tr><td colspan='2' align='center'><img src='../servlet");
     out.println(remoteobj.getP_gif());
      out.println("'>");
      out.println("<tr>");
      out.println("</table>");
      out.println("</center>");
    } catch(Exception e) {
      out.println("getBean時 エラー発生");
     J2CBErrorUtil wkobj=new J2CBErrorUtil(e.getMessage());
      out.println("<p>getEJBCblErrorCode=" + wkobj.getEJBCblErrorCode() + "</p>");
      out.println("<p>getEJBCblMessageID=" + wkobj.getEJBCblMessageID() + "</p>");
      out.println("<p>getEJBDetailMessage=" + wkobj.getEJBDetailMessage() + "</p>");
      out.println("<p>getEJBErrorCode=" + wkobj.getEJBErrorCode() + "</p>");
     out.println("<p>getEJBMessage=" + wkobj.getEJBMessage() + "</p>");
      out.println("<p>getEJBName=" + wkobj.getEJBName() + "</p>");
      e.printStackTrace();
      return;
    }

    out.println("</body></html>");
    out.close();
  }

}

(3)　HTMLの作成例

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=shift_jis">
<TITLE>
SearchEJB
</TITLE>
</HEAD>
<BODY>
<h3><center>COBOL adapter for Cosminexusのサンプル<BR>（EJB版）</center></h3>
<hr><br>
<center>100001 と 100002が登録されています。
<FORM  action=/servlet/testejb.SearchEJBServlet method="POST">
Number：<input type="text" name="Number" value="100001">
<BR><BR> Submit を押すと servlet SearchEJBServlet を実行
<BR><BR><input type=submit value="Submit"></form>
</center>
</BODY>
</HTML>

付録F.3　OCCURS句を使用した例

JavaBean版とEJB対応版で共通なOCCURS句指定時の例を該当部分だけ抜き出して記載します。

(1)　COBOL引数の登録集原文とCOBOLプログラム例

COBOL引数の登録集原文例
       01 G1.
        02 G2  OCCURS 10.
         03 B1         PIC X(50).
COBOLプログラム例
        ：
       PROCEDURE DIVISION USING ...

      *> 検索処理
           IF B1(1)=SPACE THEN
             ：
           END-IF
             ：
           MOVE 'TEST OK' TO B1(10).
             ：

(2)　Servlet(Java UAP)例

    ：
    int i=0;
    for ( i=0; i < 10; i++ ) {           [B1(0)〜B1(9)へ"XXXXX"を設定]
      bean.setB1("XXXXX", i);              [JavaBean版]
      remoteobj.setB1("XXXXX", i);         [EJB対応版]
    }
    ：                                     [B1(5)を取得]
    String wkstr=bean.getB1(5);          [JavaBean版]
    String wkstr=remoteobj.getB1(5);     [EJB対応版]
    ：

付録F.4　可変長データを使用した例

JavaBean版とEJB対応版で共通なOCCURS句指定時の例を該当部分だけ抜き出して記載します。

(1)　COBOL引数の登録集原文とCOBOLプログラム例

COBOL引数の登録集原文例
       01 XML-DATA     PIC X(10000004).
       01 XML-DATA-R   REDEFINES XML-DATA.
         05 XML-LEN    PIC S9(9) USAGE COMP.     [可変長データの長さ部分]
         05 XML-ITEM   PIC X(10000000).     [可変長データ自身]

COBOLプログラム例
        ：
       PROCEDURE DIVISION USING ...

      *> 検索処理
           IF XML-LEN > ZERO THEN
             MOVE XML-ITEM(1:XML-LEN) TO WK
             ：
           END-IF

(2)　Servlet(Java UAP)例

：
byte[] sdata=new byte[10000000];
：  (sdataにバイト配列データを設定)       [50バイトのデータを設定]
bean.setXml_data(sdata, 50);              [JavaBean版]
remoteobj.setXml_data(sdata, 50);         [EJB対応版]
}
：                                        [データを取得する]
byte[] rdata=bean.getXml_data();        [JavaBean版]
byte[] rdata=remoteobj.getXml_data();   [EJB対応版]
：

付録F.5　アドレスデータを使用した例

JavaBean版とEJB対応版で共通なアドレスデータ指定時の例を，該当部分だけ抜き出して記載します。

(1)　COBOL引数の登録集原文とCOBOLプログラム例

COBOL引数の登録集原文例
       01 XML-POINTER     USAGE ADDRESS.

COBOLプログラム例
        ：
       WORKING-STORAGE SECTION.
       01 XML-DATA   ADDRESSED BY XML-DATA-ADDR.
         05 XML-LEN    PIC S9(9)  USAGE COMP.     [可変長データの長さ部分]
         05 XML-ITEM   PIC X(10000000).     [可変長データ自身]
         ：
       PROCEDURE DIVISION USING BY VALUE XML-POINTER.
         ：
       COMPUTE XML-DATA-ADDR=XML-POINTER.   [受け取ったアドレスを設定]
           IF XML-LEN > ZERO THEN
             MOVE XML-ITEM(1:XML-LEN) TO WK
             ：
           END-IF

(2)　Java UAP(Servlet)例

：
byte[] sdata=new byte[20000000];
：  (sdataにバイト配列データを設定)       [50バイトのデータを設定]
bean.setXml_pointer(sdata, 50);                [JavaBean版]
    remoteobj.setXml_pointer(sdata, 50);       [EJB対応版]
    }
    ：                                     [データを取得する]
    byte[] rdata=bean.getXml_pointer();      [JavaBean版]
    byte[] rdata=remoteobj.getXml_pointer();  [EJB対応版]
    ：

付録G　各バージョンの変更内容

各バージョンの変更内容を示します。

変更内容（3021-3-606-40）　COBOL2002 Net Developer 04-30，COBOL2002 Net Server Runtime 04-30，COBOL2002 Net Server Suite 04-30，COBOL2002 Net Client Suite 04-30，COBOL2002 Net Developer(64) 04-30，COBOL2002 Net Server Runtime(64) 04-30，COBOL2002 Net Server Suite(64) 04-30，COBOL2002 Developer Professional 04-30，COBOL2002 Developer Professional(64) 04-30

追加・変更内容

リリースノートのマニュアル訂正を反映した。

変更内容（3021-3-606-30）　COBOL2002 Net Developer 04-20，COBOL2002 Net Server Runtime 04-20，COBOL2002 Net Server Suite 04-20，COBOL2002 Net Client Suite 04-20，COBOL2002 Net Developer(64) 04-20，COBOL2002 Net Server Runtime(64) 04-20，COBOL2002 Net Server Suite(64) 04-20，COBOL2002 Developer Professional 04-20，COBOL2002 Developer Professional(64) 04-20

追加・変更内容

Cosminexus Version 11に対応した。

変更内容（3021-3-606-20）　COBOL2002 Net Developer 04-10，COBOL2002 Net Server Runtime 04-10，COBOL2002 Net Server Suite 04-10，COBOL2002 Net Client Suite 04-10，COBOL2002 Net Developer(64) 04-10，COBOL2002 Net Server Runtime(64) 04-10，COBOL2002 Net Server Suite(64) 04-10，COBOL2002 Developer Professional 04-10，COBOL2002 Developer Professional(64) 04-10

追加・変更内容

次の製品の適用OSに「Windows Server 2019」を追加した。

P-2636-2344 COBOL2002 Net Developer

P-2436-5344 COBOL2002 Net Server Runtime

P-2436-6344 COBOL2002 Net Server Suite

P-2936-2344 COBOL2002 Net Developer(64)

P-2936-5344 COBOL2002 Net Server Runtime(64)

P-2936-6344 COBOL2002 Net Server Suite(64)

P-2636-7344 COBOL2002 Developer Professional

P-2936-7344 COBOL2002 Developer Professional(64)

変更内容（3021-3-606-10）　COBOL2002 Net Server Suite(64) 04-00，COBOL2002 Net Server Runtime(64) 04-00

追加・変更内容

次に示す適用OSがサポート対象外となった。

AIX V6.1

Red Hat Enterprise Linux 5 (AMD/Intel 64)

Red Hat Enterprise Linux 5 Advanced Platform (AMD/Intel 64)

Red Hat Enterprise Linux Server 6 (64-bit x86_64)

付録H　このマニュアルの参考情報

このマニュアルを読むに当たっての参考情報を示します。

付録H.1　関連マニュアル

このマニュアルは次のマニュアルと関連があります。必要に応じてお読みください。

COBOL2002　ユーザーズガイド　（3021-3-600）

COBOL2002　操作ガイド　（3021-3-601）

COBOL2002　使用の手引　手引編　（3021-3-602）

COBOL2002　使用の手引　操作編　（3021-3-603）

COBOL2002　言語　標準仕様編　（3021-3-604）

COBOL2002　言語　拡張仕様編　（3021-3-605）

COBOL2002　Javaプログラム呼び出し機能ガイド　（3021-3-607）

COBOL2002　メッセージ　（3021-3-609）

日立コード変換ユーザーズガイド　（3000-7-415）

日立コード変換ユーザーズガイド　（3020-7-351）

日立コード変換ユーザーズガイド　（3020-7-355）

Cosminexus V9 アプリケーションサーバ　システム構築・運用ガイド　（3020-3-Y02）

Cosminexus V9 アプリケーションサーバ　リファレンス　コマンド編　（3020-3-Y15）

Cosminexus V9 アプリケーションサーバ　リファレンス　定義編（サーバ定義）　（3020-3-Y16）

Cosminexus V9 アプリケーションサーバ　アプリケーション開発ガイド　（3020-3-Y20）

Cosminexus V11 アプリケーションサーバ　システム構築・運用ガイド　（3021-3-J02）

Cosminexus V11 アプリケーションサーバ　リファレンス　コマンド編　（3021-3-J15）

Cosminexus V11 アプリケーションサーバ　リファレンス　定義編（サーバ定義）　（3021-3-J16）

Cosminexus V11 アプリケーションサーバ　アプリケーション開発ガイド　（3021-3-J20）

なお，このマニュアルでは，Cosminexus Version 9，Cosminexus Version 11を前提に記述しています。

このマニュアルでのマニュアル名の表記

このマニュアルでは，Cosminexusのマニュアルを次のように表記しています。

表記

マニュアル名

Cosminexus　システム構築・運用ガイド

Cosminexus V9 アプリケーションサーバ　システム構築・運用ガイド

Cosminexus　リファレンス　コマンド編

Cosminexus V9 アプリケーションサーバ　リファレンス　コマンド編

Cosminexus　リファレンス　定義編（サーバ定義）

Cosminexus V9 アプリケーションサーバ　リファレンス　定義編（サーバ定義）

Cosminexus　アプリケーション開発ガイド

Cosminexus V9 アプリケーションサーバ　アプリケーション開発ガイド

付録H.2　このマニュアルでの表記

このマニュアルでは，マイクロソフト製品の名称を次のように表記しています。

マニュアルでの表記

製品名

Windows

Windows 7

Windows 7(x86)

Microsoft Windows 7 Professional 日本語版(32ビット版)

Microsoft Windows 7 Enterprise 日本語版(32ビット版)

Microsoft Windows 7 Ultimate 日本語版(32ビット版)

Windows 7(x64)

Microsoft Windows 7 Professional 日本語版(64ビット版)

Microsoft Windows 7 Enterprise 日本語版(64ビット版)

Microsoft Windows 7 Ultimate 日本語版(64ビット版)

Windows 8.1

Windows 8.1(x86)

Windows 8.1 Pro 日本語版(32ビット版)

Windows 8.1 Enterprise 日本語版(32ビット版)

Windows 8.1(x64)

Windows 8.1 Pro 日本語版(64ビット版)

Windows 8.1 Enterprise 日本語版(64ビット版)

Windows 10

Windows 10(x86)

Windows 10 Pro 日本語版(32ビット版)

Windows 10 Enterprise 日本語版(32ビット版)

Windows 10(x64)

Windows 10 Pro 日本語版(64ビット版)

Windows 10 Enterprise 日本語版(64ビット版)

Windows 11

Windows 11 Pro 日本語版

Windows 11 Enterprise 日本語版

Windows Server 2008 R2

Microsoft Windows Server 2008 R2 Standard 日本語版

Microsoft Windows Server 2008 R2 Enterprise 日本語版

Microsoft Windows Server 2008 R2 Datacenter 日本語版

Windows Server 2012

Microsoft Windows Server 2012 Standard 日本語版

Microsoft Windows Server 2012 Datacenter 日本語版

Windows Server 2012 R2

Microsoft Windows Server 2012 R2 Standard 日本語版

Microsoft Windows Server 2012 R2 Datacenter 日本語版

Windows Server 2016

Microsoft Windows Server 2016 Standard 日本語版

Microsoft Windows Server 2016 Datacenter 日本語版

Windows Server 2019

Windows Server 2019 Standard 日本語版

Windows Server 2019 Datacenter 日本語版

Windows Server 2022

Windows Server 2022 Standard 日本語版

Windows Server 2022 Datacenter 日本語版

このマニュアル中では，「COBOL2002 Cosminexus連携機能」を「このシステム」または「COBOLアクセス」と表記しています。また，「Windows」と表現している場合は「Windows COBOL2002 Cosminexus連携機能」を，「UNIX」と表現している場合は「AIX COBOL2002 Cosminexus連携機能」，「Linux COBOL2002 Cosminexus連携機能」を示しています。

また，このマニュアルは，製品種別によって相違点があります。本文中での製品種別ごとの表記を次に示します。

マニュアルでの表記

該当する製品の形名

Windows

Windows(x86)

P-2636-2344

P-2436-5344

P-2436-6344

P-2636-4344

P-2636-7344

Windows(x64)

P-2936-2344

P-2936-5344

P-2936-6344

P-2936-7344

UNIX

AIX

AIX(64)

P-1M36-1241

P-1M36-2241

Linux

Linux(x64)

P-9W36-1241

P-9W36-2241

また，このマニュアルでは各製品を次のように表記しています。

マニュアルでの表記

製品名

Cosminexus

Cosminexus Version 9またはCosminexus Version 11

Cosminexus Application Server

uCosminexus Application Server

uCosminexus Service Platform

Cosminexus Developer

uCosminexus Developer

uCosminexus Service Architect

UNIX

AIX

AIX V7.1

AIX V7.2

AIX 7.3

Linux

Linux Server 7 (64-bit x86_64)

Red Hat Enterprise Linux Server 7 (64-bit x86_64)

Linux Server 8 (64-bit x86_64)

Red Hat Enterprise Linux Server 8 (64-bit x86_64)

Linux Server 9 (64-bit x86_64)

Red Hat Enterprise Linux Server 9 (64-bit x86_64)

このマニュアルで使用している表記と，対応するJava関連用語を次に示します。

マニュアルでの表記

Java関連用語

Enterprise JavaBeansまたはEJB

Enterprise JavaBeans

Java EE

Java Platform, Enterprise Edition

J2EE

Java 2 Platform, Enterprise Edition

J2SE

Java 2 Platform, Standard Edition

JAR

Java Archive

Java VM

Java Virtual Machine

JNDI

Java Naming and Directory Interface

JNI

Java Native Interface

JSP

JavaServer Pages

Servletまたはサーブレット

Java Servlet

WAR

Web ARchive

Cosminexus Component Containerでは，J2EEコンテナを生成・実行する環境をJ2EEサーバと表記しています。

Cosminexus Component ContainerのWebコンテナの動作モードがサーブレットエンジンモードの場合を，Webコンテナサーバと表記しています。

コンパイラオプションの説明では，次の表記を使用します。

「XXXオプション」，または単に「XXX」とオプション名が表記されている場合

XXXオプションについて，サブオプションの組み合わせを含む，すべての場合を意味します。

「XXX,YYYオプション」，または単に「XXX,YYY」とサブオプションを含めたオプション名が表記されている場合

XXX,YYYオプションだけの場合を意味します。

「XXXコンパイラオプション」と表記されている場合

リンカオプションなど，ほかのオプションと明確に区別する必要がある場合を意味します。

（例1）

「-Compileオプション」または「-Compile」と記載している場合，-Compileオプションのサブオプションの組み合わせすべて（-Compile,CheckOnly／-Compile,NoLink）を意味します。

（例2）

「-Compile,CheckOnlyオプション」または「-Compile,CheckOnly」と記載している場合，-Compile,CheckOnlyだけを意味します。

付録H.3　KB（キロバイト）などの単位表記について

1KB（キロバイト），1MB（メガバイト），1GB（ギガバイト），1TB（テラバイト）はそれぞれ1,024バイト，1,024²バイト，1,024³バイト，1,024⁴バイトです。

付録I　用語解説

（英字）

BOM（バイトオーダマーク）

ファイルの先頭に付加された，Unicodeの表現形式を表す情報。COBOL2002では，テキスト編成ファイルに対してこの情報を付加します。本文中では，Unicodeシグニチャと表記します。

DD（Deployment Descriptor）

Enterprise Bean作成に関する属性およびアプリケーション構築に関する属性をXML形式で記述したものです。

Entity Bean

永続的オブジェクトのことです。

getter

プロパティから値を取得するメソッドです。

IVS

漢字を表すUnicodeの直後にVariation Selectorと呼ばれるコードを付加し，漢字の「異体字」を表現する方法のことです。

COBOL2002では，用途がDISPLAYおよびNATIONALの項目で使用します。

RMI-IIOP（Remote Method Invocation over Internet Inter-ORB Protocol）

JavaRMIとJavaIDLを統合したAPIです。EJBコンポーネントとそれぞれのコンテナは，Remote Method Invocation（RMI）テクノロジを使って，分散オブジェクト間のメソッド呼び出しを実装します。

Servlet

サーバ・サイド・プログラムとして稼働するJavaプログラムです。

Session Bean

ユーザとのセッションごとに生成，消滅するオブジェクトです。

setter

プロパティに値を設定するメソッドです。

UCS-2（Universal multi-octet Character Set 2）

符号化文字集合の一つの形式です。1文字を2バイトで表現します。

COBOL2002では，用途がDISPLAYおよびNATIONALの項目でサポートします。

UCS-4（Universal multi-octet Character Set 4）

符号化文字集合の一つの形式です。1文字を4バイトで表現します。

COBOL2002では，用途がDISPLAYおよびNATIONALの項目でUCS-4の範囲をサポートします。

Unicode

1バイトでは表現できない文字セットを含めあらゆる文字セットをサポートした文字コードです。代表的な符号化文字集合としてUCS-2，UCS-4があります。代表的なエンコーディングスキーマとしてUTF-8，UTF-16があります。

COBOL2002では，UCS-4の範囲（UCS-2の範囲を含む）をサポートします。

本文中では，符号化文字集合，およびエンコーディングスキーマを文字コードと表記します。

UTF-16(16-bit UCS Transformation Format)

エンコーディングスキーマの一つの形式です。1つのコード単位を2バイトとし，1文字を1コード単位（2バイト），または2コード単位（4バイト）で表現します。UTF-16では2バイトのコード単位の1バイト目を先に書くビッグエンディアン形式（UTF-16BE）と1バイト目を後に書くリトルエンディアン形式（UTF-16LE）があります。

COBOL2002では，用途がNATIONALの項目でUCS-4の範囲（UCS-2の範囲を含む）をサポートします。

UTF-8（8-bit UCS Transformation Format）

エンコーディングスキーマの一つの形式です。ASCII文字を1バイト，日本語文字を3〜8バイト，半角かたかなは3バイトで表現します。

COBOL2002では，用途がDISPLAYの項目で使用します。

WRP（Windows Resource Protection）

Windowsシステムの安定性，および信頼性を向上させるための機能です。特定のOSファイル，フォルダ，レジストリ キーなど，Windowsの読み取り専用リソースを保護します。

（ア行）

アプリケーションサーバ

Webでの業務開発のためのアプリケーション基盤機能を提供する製品です。日立アプリケーションサーバCosminexusは，ブラウザなどのフロントエンド層とDBや既存システムなどのバックエンド層の間に位置づけられ，業務の開発から運用までに一貫した環境を提供します。

ウィザード

パッケージ・ソフト製品に組み込まれるヘルプ機能の一種です。設定作業を支援する対話型のナビゲータ機能を一般にウィザードと呼びます。表や文書の書式設定やクロス集計表の作成など，細かなノウハウが求められる複雑なパラメタ設定作業を対話形式で誘導（ナビゲーション）します。

（カ行）

管理者権限

管理者ユーザに与えられる権限です。製品のインストールなどに関する権限までは持ちますが，システムファイルの書き替えまでの権限は持ちません。

管理者ユーザ

WindowsのAdministratorsグループに属するアカウントです。ビルトイン管理者（Administratorアカウント）とは区別されます。

（サ行）

サロゲート

UTF-16の拡張で，2つのコード単位（4バイト）で1文字を表す機能です。この2つのコード単位の組み合わせのことをサロゲートペアと呼びます。

COBOL2002では，用途がNATIONALの項目で使用します。

（タ行）

登録集原文

COBOLアクセス用Beanを生成するための入力情報です。COBOLアクセスのCOBOLデータ定義規則に従って作成したCOBOL UAPのパラメタの情報です。

（ハ行）

バイトオーダ

2バイト以上のデータの記録を行なう順序のことです。例えば，0x1234のデータを0x1234のように最上位のバイトから順番に記録する方式をビッグエンディアン，0x3412のように最下位のバイトから順番に記録する方式をリトルエンディアンといいます。2バイトのUTF-16は，バイトオーダを意識します。

標準権限

標準ユーザに与えられる権限です。故意に，または誤ってシステムに変更を加える許可を持ちません。

標準ユーザ

WindowsのUsersグループに属するアカウントです。

（マ行）

見た目幅

Unicode機能の組み込み関数で使用します，文字の見た目の幅です。半角文字の幅は1，全角文字の幅は2として扱います。

Unicode機能の組み込み関数で，文字を見た目幅で数える場合に使用します。

索引

記号

.cbf[1]、[2]、[3]

.cbl[1]

.cob[1]、[2]

.ocb[1]

.ocf[1]

-Bin1Byte[1]、[2]

-Comp5[1]、[2]

-Dll[1]

-Dll,Cdecl[1]

-Dll,Stdcall[1]

-DllInit[1]

-MainNotCBL[1]、[2]

-MultiThread[1]、[2]

-PIC,{Std｜Expand}[1]

-TDInf[1]

数字

10進データ(BigDecimal)[1]、[2]

A

API[1]、[2]

B

BLANK WHEN ZERO句[1]

BOM[1]

C

callCOBOLメソッド[1]、[2]

CBL_SYSERR[1]

CBLFREE[1]、[2]

CBLJ2CB_DDUMP〔環境変数〕[1]

CBLJ2CBOPT〔環境変数〕[1]

CBLJ2CBSTAYLIB〔環境変数〕[1]

CBLLIB[1]

CBLTDEXEC[1]

CBL-Type[1]

CLASSPATH[1]

cobol.sysenvfile[1]

COBOLアクセス用Bean[1]、[2]

COBOLアクセス用Beanの生成[1]

comp5オプション[1]

COPY文[1]

D

DD[1]

dynamicpathオプション[1]

E

encodeオプション[1]

endianオプション[1]

Enterprise Bean[1]

Entity Bean[1]

EXTERNAL句[1]

G

getter[1]、[2]、[3]

GLOBAL句[1]

I

IVS[1]

J

J2EEサーバ[1]

japaneseオプション[1]

Javadoc[1]、[2]

Javaクラスおよびライブラリを配置して実行[1]

JNI[1]

JUSTIFIED句[1]

J-Type[1]

L

loadingruleオプション[1]

location[1]

O

OCCURS句[1]

P

PICTURE句（数字項目のけた拡張機能）[1]

R

RENAMES句[1]

RMI-IIOP[1]、[2]

S

SAME AS句[1]

Servlet[1]、[2]

Session Bean[1]

setter[1]、[2]、[3]

size[1]

specified length[1]

SYNCHRONIZED句[1]

T

TYPEDEF句[1]

TYPE句[1]

U

UCS-2[1]

UCS-4[1]

Unicode[1]

unicodeオプション[1]

usrconf.cfg[1]、[2]

UTF-16[1]

UTF-8[1]

V

VALUE句[1]

W

warファイル[1]

Windows OS固有の注意事項[1]

Windowsリソース保護[1]

WRP[1]、[2]

X

XMLファイル[1]

あ

アドレスデータ[1]

アドレスデータ(byte[])[1]

アドレスデータ項目[1]、[2]、[3]、[4]

アプリケーションサーバ[1]、[2]

う

ウィザード[1]

え

英字項目[1]

英数字項目[1]

英数字編集項目[1]

か

回数フィールド[1]

外部10進[1]

外部ブール項目[1]

外部浮動小数点項目[1]、[2]

可変長データ[1]、[2]、[3]、[4]

可変長データ(byte[])[1]、[2]

環境設定ファイル[1]

環境変数[1]、[2]

環境変数の設定[1]

管理者権限[1]、[2]

管理者ユーザ[1]

き

行内注記[1]

く

クライアント[1]

位取り[1]

クラス名[1]

こ

コンパイラオプション[1]

さ

サロゲート[1]

し

指定句フィールド[1]

修飾[1]

集団項目[1]、[2]

出力先フォルダ名[1]

条件名[1]

す

数字編集項目[1]

スレッドセーフ[1]

せ

全角空白[1]

全角文字[1]

た

タブ[1]

単精度データ(Float)[1]

単精度内部浮動項目[1]

て

デバッグ[1]、[2]

デバッグオプション[1]

デプロイ情報（DDファイル）[1]

と

動的長基本項目[1]

登録集原文[1]、[2]

な

内部10進[1]

内部ブール項目[1]

に

日本語項目[1]

日本語集団項目[1]

日本語データ(String)[1]

日本語編集項目[1]

入力／出力フィールド[1]

は

倍精度データ(Double)[1]

倍精度内部浮動項目[1]

バイトオーダ[1]

バイトオーダマーク[1]

バイト配列データ[1]、[2]

バイト配列データ(byte[])[1]、[2]

パッケージ名[1]

半角文字[1]

ひ

引数順フィールド[1]

引数情報表示機能[1]

標準権限[1]、[2]

標準ユーザ[1]

ふ

プログラムの実行方法[1]

へ

別名フィールド[1]

ほ

ホームインタフェース[1]

翻訳指令[1]

み

見た目幅[1]

も

文字列データ(String)[1]、[2]

よ

呼び出すCOBOLプログラム名[1]

ら

ライブラリ名[1]

り

リモートインタフェース[1]

れ

例外処理[1]