この章では、Java プログラムと COBOL プログラムの間で、一方から他方を呼び出すための各種の方法を紹介します。
COBOL と Java は、いくつかの方法で連携させることができます。 1 つの方法として Interface Mapping Toolkit を使用することができます。 また、クラスウィザードやメソッドウィザードなどの Net Express の GUI ツールを使用して、作成したアプリケーションを UNIX システムにパブリッシュすることができます。 Java では RMI (Remote Method Invocation) や JNDI (Java Naming and Directory Interface) といった技術がサポートされており、これらの技術を利用して、さまざまな種類のマシンにオブジェクトを分散配置できます。
COBOL と Java を連携させる方法を次に示します。
Interface Mapping Toolkit を使用してエクスポーズした既存のプログラムの実行には Enterprise Server が必要です。ただし、その他の方法で COBOL と Java プログラムを連携させるアプリケーションでは、Enterprise Server または Application Server を使用できます。
Java 言語では、COBOL で使用されるデータ型とは異なる、Java 用のデータ型が定義されています。 COBOL から Java (または Java から COBOL) が呼び出されると、COBOL ランタイムシステムによって COBOL と Java 間でデータ型が自動的に変換されます。 直接変換できない COBOL データ型 (編集フィールドなど) は、環境によっては文字列型に変換されることがあります。詳細は『Java データ型』の章を参照してください。
Java アプリケーションを実行するマシンには、Java ランタイムシステムをインストールする必要があります。Java と COBOL の両方を使ってアプリケーションを開発する場合は、Java 開発環境も必要になります。開発環境としては、Sun が提供している Java SDK (Software Development Kit) のほか、Sun または Microsoft のランタイム環境に基づくあらゆる Java IDE が使用可能です。 開発環境とランタイム環境の両方を提供する JVM (Java Virtual Machine; Java 仮想マシン) を使用することもできます。
COBOL 開発システムは現在、いくつかの Java ランタイムシステムをサポートしています。
COBOL と Java のプログラムを連携させて作成する前に、COBOL 環境に Java のサポートを追加する必要があります。 これを行うには、次のように cobsje スクリプトを実行します。
.$COBDIR/bin/cobsje [-n|-v][-J java_home]
説明
-n | 環境設定は変更せずに、設定されている内容を表示します。 |
-v | 詳細モード。変更内容を適用し、新しい設定を表示します。 |
-J | Java_home 環境変数を設定します。 |
java_home | Java がインストールされているディレクトリの完全パス。 環境変数 $JAVA_HOME もこのパスに設定されます。 パスを指定しない場合、$JAVA_HOME 環境変数の値が cobsj に対して使用されます。 |
スクリプトでは、 次のように環境変数を設定します。
プラットフォームが複数の JVM をサポートする場合は、スクリプト java_setup を実行して Server Express をインストールしたときのデフォルトの JVM 設定を変更できます。 この方法は、デフォルトの JVM をほぼ永続的に変更する場合にのみ使用してください。このスクリプトの実行方法は、次のとおりです。
Java を呼び出す COBOL プログラムは、必ず次の指令を指定してコンパイルしてください。
ooctrl"+p-f"
この指令によって、次の 2 つの処理が行われます。
Java から CobolBean.cobcall*() メソッドで呼び出される COBOL プログラムは、必ず DATA-CONTEXT コンパイラ指令付きでコンパイルしてください。この指令を指定すると、作成された CobolBean のインスタンスごとに、ランタイムシステムが新しいアプリケーション記憶域を作成できるようになります。
COBOL および Java でコンポーネントを最も簡単に作成するには、Net Express でアプリケーションを開発してから、開発したアプリケーションをターゲットの UNIX システムにパブリッシュします。 この方法を使用すると、クラスウィザードやメソッドウィザードなどの Net Express の機能を利用できます。これらの機能を使うと、COBOL クラスを作成する手間を大幅に簡略化することができます。 このマニュアルでは、COBOL および Java のアプリケーションを、クラスウィザードとメソッドウィザードで開発してから、作成したアプリケーションを UNIX システムにパブリッシュする方法を実行することを前提にしています。
Net Express の詳細については、『入門書』の『ようこそ』の章にある『Net Express と Server Express』の項を参照してください。
Java/COBOL アプリケーションランチャは、COBOL 実行時環境から Java アプリケーションを起動するために使用します。 通常の Java アプリケーションランチャではなく、Java/COBOL アプリケーションランチャを使用する必要があります。Java/COBOL アプリケーションランチャを使うと COBOL ランタイムシステムと Java VM の両方を適切に管理する環境をセットアップすることができます。
Java/COBOL アプリケーションランチャは cobjrun です。cobjrun は、cobjrun32 および cobjrun64 のトリガです。
Java/COBOL アプリケーションランチャを呼び出すコマンドには、次の 2 種類の形式があります。
cobjrun [options] class [arguments]
または
cobjrun -jar [options] jarfile [arguments]
説明
options | Java アプリケーションランチャに標準で指定するオプション。 |
class | 呼び出すクラスの名前。 Java/COBOL アプリケーションランチャでこの名前の Java クラスが見つからない場合は、同じ名前の COBOL プログラムが検索されます。 COBOL プログラムが見つかった場合は、そのプログラムが実行されます。 |
arguments | メイン関数に渡される引数。 |
-jar | JAR ファイルに格納されているプログラムを実行することを指定します。 |
jarfile | 呼び出す Java アーカイブ(.jar) ファイルの名前。 |
注:
public static void main(String args[])
Object COBOL EJB (Enterprise JavaBean) を AIX プラットフォームの WebSphere にディプロイする場合は、COBMAINSTACK 環境変数を設定する必要があります。 Application Server 環境で Object COBOL コードを実行している場合に限り COBMAINSTACK を設定します。 Interface Mapping Toolkit を使用して EJB を作成し、Enterprise Server 環境で COBOL コードを実行している場合は、COBMAINSTACK を設定する必要はありません。
COBMAINSTACK を設定するのは、EJB サーバの起動プロセス中に WebSphere が大量のスタックスペースを必要とするからです。 AIX のデフォルトサイズは、COBOL および WebSphere アプリケーションサーバを共存させるには小さすぎます。 このサイズが小さすぎると問題が発生し、大きすぎるとリソースが大量に消費されてしまいます。 このサイズは 256 KB 以上に設定してください。 たとえば、次のように設定します。
COBMAINSTACK=256 export COBMAINSTACK
COBMAINSTACK の詳細については、『Server Express ユーザガイド』の付録『環境変数』を参照してください。
Java から呼び出す COBOL プログラムはすべて、マルチスレッドのランタイムシステムにリンクする必要があります。
これを行うには、-t cob フラグを使用します。 詳細については、『Server Express ユーザガイド』の『cob フラグの説明』の章の『マルチスレッドプログラムを作成する』を参照してください。 マルチスレッドの詳細については、『マルチスレッドプログラミング』マニュアルを参照してください。
Copyright © 2006 Micro Focus (IP) Ltd. All rights reserved.