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);