COBOL2002 Cosminexus連携機能ガイド


付録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>