Apcoordinator ユーザーズガイド
目次 前ページ次ページ

第6部 電子フォームアプリケーションの開発

第33章 COBOLとの連携

電子フォームとCOBOLで作成したアプリケーションを連携させることができます。ここでは、その方法を説明します。

サーブレットクラス、ファクトリクラスは以下のクラスをそのまま使用します。

コマンドスクリプティングを作成し、電子フォーム名、ボタン名と実行するCOBOLアプリケーション名を対応付けます。対応付けはentryタグとinvokeCobolタグで以下のように記述します。


   <entry bean="/[電子フォーム名]" verb="[ボタン名]">
      <invokeCobol library="[COBOLアプリケーションのライブラリ名]" program="[COBOLアプリケーションのプログラム名]"/>
   </entry>

最初に実行されるアプリケーションでは電子フォーム名とボタン名の両方を省略します。 以下は、コマンドスクリプティングの記述例です。


<?xml version = "1.0" encoding = "iso-2022-jp"?>
<commandMap
    xmlns="http://interstage.fujitsu.com/schemas/uji/commandMap"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://interstage.fujitsu.com/schemas/uji/commandMap
                        http://interstage.fujitsu.com/schemas/uji/commandmap.xsd">
  <config>
    <version>5.0</version>
  </config>
  <entry>
    <invokeCobol library="startup.dll" program="STARTUP"/>
  </entry>
  <entry bean="/SampleData" verb="send">
    <invokeCobol library="onsend.dll" program="ONSEND"/>
  </entry>
</commandMap>

コマンドスクリプティングの詳細は コマンドスクリプティングを参照してください。 また、コマンドスクリプティングの各タグの詳細については、コマンドスクリプティングリファレンスを参照してください。

コマンドマップをcommands.mapというファイル名で作成し、上記で作成したコマンドスクリプティングのファイルが読み込まれるように指定します。以下は、コマンドスクリプティングのファイル名がcommand.xmlの場合のコマンドマップです。


+command.xml

COBOLのアプリケーションでは、入力の電子フォームをREADし、出力の電子フォームをWRITEします。


 IDENTIFICATION  DIVISION.
 PROGRAM-ID.     ONSEND.
 ENVIRONMENT     DIVISION.
 INPUT-OUTPUT    SECTION.
 FILE-CONTROL.
     SELECT FORMFILE ASSIGN TO GS-FORMFILE
                     FORMAT IS FORM-NAME
                     GROUP  IS PARTITION-NAME
                     SESSION CONTROL IS SESSTION-INFO
                     FILE STATUS IS FS-DATA DETAIL-DATA.
   ...
 DATA            DIVISION.
 FILE            SECTION.
 FD FORMFILE.
     COPY SampleData     OF XMDLIB.
     COPY NextSampleData OF XMDLIB.
 WORKING-STORAGE SECTION.
    ...
 PROCEDURE       DIVISION.
     OPEN I-O FORMFILE.
* FORMから入力データを読み込む
     MOVE "SampleData" TO FORM-NAME.
     MOVE "PAGE" TO PARTITION-NAME.
     READ FORMFILE.
* 入力データを使用した処理を行う
    ...
* FORMに出力データを書き込む
     MOVE SPACE TO NextSampleData.
    ...
     MOVE "NextSampleData" TO FORM-NAME.
     MOVE "PAGE" TO PARTITION-NAME.
     WRITE NextSampleData.
    ...
     CLOSE FORMFILE.
     EXIT PROGRAM.

終了画面(画面内にボタン等がない画面)を表示する場合は、コマンドスクリプティングのinvokeCobolタグでアトリビュートにrelease="true"と記述すると、画面表示後に不要なリソースを解放します。


<commandMap>
...
   <entry bean="/SampleData" verb="exit">
      <invokeCobol library="endproc.dll" program="ENDPROC" release="true"/>
   </entry>
</commandMap>

セションタイムアウト発生時にCOBOLプログラムを実行したい場合は次のようにコマンドスクリプティングを作成します。


<commandMap>
...
  <entry verb="uji.timeout">
    <invokeCobol type="TIMEOUT" library="apcocobol.dll" program="TIMEOUT" release="true"/>
  </entry>
</commandMap>

エラー発生時にCOBOLプログラムを実行したい場合は次のようにコマンドスクリプティングを作成します。


<commandMap>
...
  <entry verb="uji.error">
    <invokeCobol type="ERROR" library="apcocobol.dll" program="ERROR" release="true"/>
  </entry>
</commandMap>

Webアプリケーション環境定義ファイル (web.xml) を書き換えると、サーブレット名とサーブレットのURLを変更することができます。また、エラーページのJSPを指定することで、エラー発生時の画面を変更できます。 Webアプリケーション環境定義ファイルの記述については、 電子フォームの表示を参照してください。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
     PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <!-- ファクトリクラスにはCOBOLFactoryクラスを使用します。-->
  <context-param>
    <param-name>factory</param-name>
    <param-value>com.fujitsu.uji.cobol.COBOLFactory</param-value>
  </context-param>
  <!-- エラーページを指定します。-->
  <context-param>
    <param-name>uji.servlet.defaultErrorPage</param-name>
    <param-value>formError.jsp</param-value>
  </context-param>
  <context-param>
    <param-name>uji.defaultEncoding</param-name>
    <param-value>none</param-value>
  </context-param>
  <!-- サーブレットクラスにはCOBOLServletクラスを使用します。-->
  <servlet>
    <servlet-name>formservlet</servlet-name>
    <servlet-class>com.fujitsu.uji.cobol.COBOLServlet</servlet-class>
  </servlet>
  <!-- サーブレットのURLを指定します。-->
  <servlet-mapping>
    <servlet-name>formservlet</servlet-name>
    <url-pattern>/formservlet</url-pattern>
  </servlet-mapping>
</web-app>


目次 前ページ次ページ

All Rights Reserved, Copyright © 富士通株式会社 2000-2005