Hitachi

TP1/COBOL adapter for Cosminexus ユーザーズガイド


付録H.1 TP1/Client/PおよびTP1/Client/W版

〈この項の構成〉

(1) COBOL引数の登録集原文とCOBOLプログラム例

入力用COBOL引数の登録集原文例
       01 PERSONAL-DATA-IN.
         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引数の登録集原文例
       01 PERSONAL-DATA-OUT.
         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(100).
COBOLプログラム例
      *>*************************************************
      *>    COBOL SPP(Search)                           *
      *>*************************************************
       IDENTIFICATION  DIVISION.
       PROGRAM-ID.  SEARCHTP1.
       DATA            DIVISION.
       LINKAGE SECTION.
         COPY SEARCHTP1COPYIN.
      *> 01 PERSONAL-DATA-IN.
      *>   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).
       77 IN-LEN PIC S9(9) USAGE COMP.
         COPY SEARCHTP1COPYOUT.
      *> 01 PERSONAL-DATA-OUT.
      *>   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(100).
       77 OUT-LEN PIC S9(9) USAGE COMP.
 
       PROCEDURE DIVISION USING PERSONAL-DATA-IN IN-LEN
                                PERSONAL-DATA-OUT OUT-LEN.
           MOVE P-NUMBER IN PERSONAL-DATA-IN TO P-NUMBER IN
                                        PERSONAL-DATA-OUT.
      *>  検索処理
           IF P-NUMBER IN PERSONAL-DATA-IN = 100001 THEN
             MOVE '日立 一郎' TO P-NAME IN PERSONAL-DATA-OUT
             MOVE '日立市' TO P-ADDRESS IN PERSONAL-DATA-OUT
             MOVE '/ICHIRO.GIF' TO P-GIF IN PERSONAL-DATA-OUT           
           ELSE
             IF P-NUMBER IN PERSONAL-DATA-IN = 100002 THEN
               MOVE '日立 二郎' TO P-NAME IN PERSONAL-DATA-OUT
               MOVE '久留米市' TO P-ADDRESS IN PERSONAL-DATA-OUT
               MOVE '/JIRO.GIF' TO P-GIF IN PERSONAL-DATA-OUT
             ELSE
               MOVE '登録されていません' TO P-NAME IN
                                           PERSONAL-DATA-OUT
               MOVE SPACE TO P-ADDRESS IN PERSONAL-DATA-OUT
               MOVE '/NOREGIST.GIF' TO P-GIF IN PERSONAL-DATA-OUT
             END-IF
           END-IF.
           EXIT  PROGRAM.
 
       END PROGRAM  SEARCHTP1.

(2) Java UAP(Servlet)例

package test;
 
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.beans.Beans;
import jp.co.hitachi_sk.j2cb.*;
//数字項目(外部10進項目,内部10進項目および小数けたを含む2進項目)を
//使用する場合は,以下のようにjava.math.BigDecimalをimportしてください。
//import java.math.BigDecimal;
 
public class SearchTP1Servlet 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");
 
    SearchTP1 bean = null;
    TP1Access baseBean = null;
      try {
        //Beanのインスタンス生成
        bean = (SearchTP1) Beans.instantiate(this.getClass().
                         getClassLoader(),"test.SearchTP1");
        baseBean = (TP1Access) Beans.instantiate(
                         this.getClass().getClassLoader(),
                        "jp.co.hitachi_sk.j2cb.TP1Access");
      } catch (ClassNotFoundException excp) {
        excp.printStackTrace();
        return;
      }
 
      try {
        int[] idArr = new int[1];
        String[] host = new String[8];
        baseBean.cltin(idArr,null, "Hostname", "guest",null, 
                                                  host, 0);
        baseBean.open(idArr[0], 0);
 
        /* Beanにパラメタを設定 */
        bean.setP_numberI(new Integer(number));
        bean.setP_nameI("");
        bean.setP_addressI("");
        bean.setP_gifI("");
        try {
          bean.call(idArr[0], "SAMPLE", "SEARCHTP1", 0);
        } catch (Exception e) {
          baseBean.close(idArr[0], 0);
          baseBean.cltout(idArr[0], 0);
          e.printStackTrace();
          return;
        }
 
        baseBean.close(idArr[0], 0);
        baseBean.cltout(idArr[0], 0);
 
        //JSP中で"bean"という名称でプロパティを参照できるようにする。
        req.setAttribute("bean",bean);
        //ここでJSPを呼びます
        javax.servlet.RequestDispatcher rd =
                  c.getRequestDispatcher("/SearchTP1.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>
SearchTP1
</TITLE>
</HEAD>
<BODY>
<h3><center>TP1/COBOL adapter for Cosminexus のサンプル</center></h3>
<center>100001 と 100002が登録されています。
<FORM  action=/servlet/test.SearchTP1Servlet method="POST">
Number:<input type="text" name="Number" value="100001">
<BR><BR> Submit を押すと servlet SearchTP1Servlet を実行
<BR><BR><input type=submit value="Submit"></form>
</center>
</BODY>
</HTML>

(4) JSPの作成例

<!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.SearchTP1" />
<html>
  <center>Result of Search.
    <table border="1">
      <tr><td colspan="2" align="center">
        <jsp:getProperty name="bean" property="p_numberO" />
      </td><tr><td>Name</td><td>
        <jsp:getProperty name="bean" property="p_nameO" />
      </td><tr><td>Address</td><td>
        <jsp:getProperty name="bean" property="p_addressO" />
      <tr><td colspan="2" align="center">
       <img src="../servlet<jsp:getProperty name="bean" property="p_gifO" />">
      </td></table>
  </center>
</html>