COBOL2002 Javaプログラム呼び出し機能ガイド
プログラム作成支援ツールの-TypeオプションにGroupMapperを指定すると,次に示す二つのCOBOLソースファイルをJavaクラスごとに作成します。
生成されたCOBOLプログラムを呼び出すUAPを作成して,フィールドの値をCOBOL集団項目に一括して取得・設定するプログラムを完成させます。
cbl2kjgen -Type GroupMapper 〔オプション〕 Javaプログラム指定オプション |
集団項目データ交換プログラムの生成の概要を次の図に示します。
図7-7 集団項目データ交換プログラムの生成の概要
集団項目データ交換用データ定義は,Javaのフィールドに対応するCOBOLのデータ項目を集団項目で定義した登録集原文です。
対象とするフィールドについては,「7.2.1 プログラム作成支援ツールの機能範囲」の「(3) フィールドの設定と取得」を参照してください。
集団項目データ交換用データ定義の構造を次の図に示します。
図7-8 集団項目データ交換用データ定義の構造
プログラムの概要を先頭のコメントとして記載します。記載する内容を次に示します。
| 項番 | 項目 | 内容(引用符(")で囲んだ文字列は固定) |
|---|---|---|
| 1 | タイトル | 次の内容を記載します。 "COBOL2002 Javaプログラム呼び出し機能↓" "集団項目データ交換用データ定義" (凡例) ↓:改行 |
| 2 | 利用クラス | 対象のクラス名を記載します。 |
| 3 | cbl2kjgenのバージョン | cbl2kjgenのバージョンを記載します。 例:"03-02" |
| 4 | オプション | cbl2kjgenに指定されたオプションを記載します。1行につき1オプションを記載します。 |
| 5 | 生成日時 | 集団項目データ交換プログラムの生成日時を記載します。 形式はYYYY/mm/dd HH:MM:SSです。 |
Javaのフィールドと対応づけるCOBOLのデータ項目を定義します。記載内容については,「(3) データ項目のマッピング」を参照してください。
集団項目データ交換プログラムは,Javaのフィールドを,Javaプログラム呼び出し機能を使用して,一括して取得・設定するCOBOLプログラムです。各フィールドの値は集団項目データ交換用データ定義に定義したデータ項目にマッピングします。
一括取得するCOBOLプログラムと一括設定するCOBOLプログラムを一つのCOBOLソースファイルに生成します。
集団項目データ交換プログラムの構造を次の図に示します。
図7-9 集団項目データ交換プログラムの構造
プログラムの概要を先頭のコメントとして記載します。記載する内容を次に示します。
| 項番 | 項目 | 内容(引用符(")で囲んだ文字列は固定) |
|---|---|---|
| 1 | タイトル | 次の内容を記載します。 "COBOL2002 Javaプログラム呼び出し機能↓" "集団項目データ交換用データ定義" (凡例) ↓:改行 |
| 2 | 利用クラス | 対象のクラス名を記載します。 |
| 3 | cbl2kjgenのバージョン | cbl2kjgenのバージョンを記載します。 例:"03-02" |
| 4 | オプション | cbl2kjgenに指定されたオプションを記載します。1行につき1オプションを記載します。 |
| 5 | 生成日時 | 集団項目データ交換プログラムの生成日時を記載します。 形式はYYYY/mm/dd HH:MM:SSです。 |
各プログラム名を次に示します。
| 用途 | プログラム名※ |
|---|---|
| フィールドを一括取得する。 | CBLJGET_classname |
| フィールドを一括設定する。 | CBLJSET_classname |
動的長基本項目を使用するため,次に示すように構成節を記載します。
データ項目の定義とCOPY文による集団項目データ交換用データ定義の取り込みを行います。作業場所節および連絡節にデータ項目を定義します。ただし,使用しないデータ項目は定義しません。
作業場所節には次に示す順番でデータ項目を定義します。
連絡節には次に示す順番でデータ項目を定義します。
作業場所節に定義するデータ項目について説明します。データ項目のマッピングについては,「7.2.1 プログラム作成支援ツールの機能範囲」の「(2) データ項目のマッピング(共通)」および「7.2.2 Javaクラス利用サンプルの生成」の「(2) データ項目のマッピング」を参照してください。
連絡節に定義するデータ項目について説明します。
手続き部の内容について説明します。
各プログラムに次に示すような手続き部見出しを定義します。
プログラムを終了します。
集団項目データ交換用データ定義および集団項目データ交換プログラムに,各データ項目を定義する際に使用するルールを示します。
集団項目データ交換用データ定義に,各データ項目を定義する際に使用するルールを示します。
| 用途 | データ項目※ |
|---|---|
| JavaのフィールドをCOBOLの集団項目にマッピングする。 | 01 classname.
02 fieldname TYPE-DEF.
:
(これ以降は配列オブジェクトをマッピングするための定義) 02 fieldname.
03 fieldname-1-LEN PIC S9(9) USAGE COMP.
:
03 fieldname-m-LEN PIC S9(9) USAGE COMP.
03 fieldname-ROOT.
04 fieldname-1 OCCURS ARRAYMAXLEN TIMES.
:
10 fieldname-m OCCURS ARRAYMAXLEN TIMES.
11 fieldname-ELEM TYPE-DEF.
|
集団項目データ交換プログラムに,各データ項目を定義する際に使用するルールを示します。
| 用途 | データ項目 |
|---|---|
| Java VMに渡すオプションを1個受け取るCBLJENV集団項目を定義する。 | 01 CBLJENV.
02 CBLJENVCORE USAGE POINTER.
02 CBLJEXCEPTION USAGE POINTER.
02 CBLJFLAGS PIC 1(32) USAGE BIT.
02 CBLJSTRMAXLEN PIC S9(9) USAGE COMP.
02 CBLJVMOPTIONS.
03 CBLJOPTCOUNT PIC S9(9) USAGE COMP.
03 CBLJOPTION-1 PIC X.
|
| 項番 | 用途 | データ項目※ |
|---|---|---|
| 1 | クラス名を設定する。 | 01 CLASS-NAME PIC X DYNAMIC C-STRING VALUE 'classnameOrg'. |
| 2 | クラス参照のアドレスを受け取る。 | 01 CLASSREF USAGE POINTER. |
| 3 | オブジェクト参照のアドレスを受け取る。 | 01 OBJREF USAGE POINTER. |
| 4 | インスタンスを生成したことを記憶させる。 | 01 FLAG-NEW PIC S9(9) USAGE COMP VALUE 0. |
| 項番 | 用途 | データ項目※ |
|---|---|---|
| 1 | n番目のフィールドのgetterメソッド名を設定する。 | 01 FLDn-GETTER PIC X DYNAMIC C-STRING VALUE 'methodname'. |
| 2 | n番目のフィールドのsetterメソッド名を設定する。 | 01 FLDn-SETTER PIC X DYNAMIC C-STRING VALUE 'methodname'. |
| 3 | n番目のフィールドのsetterメソッドの第1引数を設定する。 または,n番目のフィールドのgetterメソッドの戻り値を設定する。 |
(基本型の場合)01 FLDn. 02 FLDn-TYPE PIC X(1) VALUE 'SIGNATURE'. 02 FILLER PIC X(7) VALUE ALL LOW-VALUE. 02 FLDn-AREA TYPE-DEF. (基本型以外の場合) 01 FLDn. 02 FLDn-TYPE PIC X(STRMAXLEN) VALUE 'SIGNATURE'. 02 FLDn-AREA TYPE-DEF. |
| 4 | n番目のフィールドがStringの場合,フィールドの長さを設定する。 | 01 FLDn-LEN PIC S9(9) USAGE COMP VALUE STRMAXLEN. |
| 項番 | 用途 | データ項目※ |
|---|---|---|
| 1 | n番目のフィールド名を設定する。 | 01 FLDn-NAME PIC X DYNAMIC C-STRING VALUE 'fieldname'. |
| 2 | 集団項目データ交換用データ定義を取り込む。 | COPY 'copyfilename'. |
| 3 | n番目のフィールドが配列オブジェクトの場合,その最下層要素とCOBOLの繰り返し項目をマッピングするための集団項目およびサイズを定義する。 | 01 TEMP-MAP-n-LEN PIC S9(9) USAGE COMP VALUE ARRAYMAXLEN.
01 TEMP-MAP-n ADDRESSED BY TEMP-MAP-n-P.
02 TEMP-MAP-n-ELEM TYPE-DEF OCCURS ARRAYMAXLEN TIMES
DEPENDING ON TEMP-MAP-n-LEN.
|
| 用途 | データ項目 |
|---|---|
| プログラムの戻り値を設定する。 | 01 CBLJ-RETURN-CODE PIC S9(9) USAGE COMP. |
集団項目データ交換プログラムを呼び出すCOBOLプログラムを作成します。
: WORKING-STORAGE SECTION. COPY '集団項目データ交換用データ定義のファイル名'. : |
集団項目データ交換用データ定義および集団項目データ交換プログラムのデータ項目名やデータ項目の長さは,用途に従って変更できます。
:
WORKING-STORAGE SECTION.
*>----------------------------------------------------------------
*> データ定義(mylib.sample.SampleClass)
*>----------------------------------------------------------------
COPY 'mylib.sample.SampleClass_Map_COPY.cbl'.
PROCEDURE DIVISION.
*> Javaプログラム呼び出し機能の実行環境を初期化
CALL 'CBLJINITIALIZE' USING CBLJENV.
:
*> クラス参照の取得
CALL 'CBLJNEW' USING CBLJENV
CLASSREF
NO-ARG
OBJECTREF.
*> フィールドデータの一括取得(mylib.sample.SampleClass)
CALL 'CBLJGET_SampleClass' USING CBLJENV
CLASSREF
OBJECTREF
SampleClass
RETURNING RETURN-VAL.
:
|
CALL 'CBLJGET_classname' USING 引数1 引数2 引数3 引数4
〔 RETURNING 返却項目 〕.
|
CALL 'CBLJSET_classname' USING 引数1 引数2 引数3 引数4
〔 RETURNING 返却項目 〕.
|
集団項目データ交換プログラムの例を次に示します。
cbl2kjgen -Type GroupMapper -StrMaxLen 256 -Class mylib.sample.SampleClass |
All Rights Reserved. Copyright (C) 2014, 2016, Hitachi, Ltd.