ページの先頭行へ戻る
Interstage Business Application ServerV10.0.0 COBOLアプリケーション開発リファレンス
Interstage

第14章 CORBAクライアントアプリケーション開発

ここでは、CORBAサーバアプリケーションで説明した2項演算プログラムを呼び出すクライアントアプリケーションの作成手順について説明します。

1. プロジェクトの作成

2. COBOLソース生成ウィザードによるひな型作成

3. Interstage基盤サービスの起動

4. プログラムの編集

5. スタブの追加

6. 依存関係の解析

7. プロジェクトのビルド

8. 動作確認

1. プロジェクトの作成

ここでは、オブジェクト指向COBOL言語を使用してCORBAアプリケーションを呼び出す方法を説明します。オブジェクト指向COBOLのプログラミング方法の詳細は、Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)を参照してください。

COBOLパースペクティブを表示していない場合は、以下の手順でCOBOLパースペクティブを表示してください。

  1. メニューバーから[ウィンドウ] > [パースペクティブを開く] > [その他]を選択すると[パースペクティブを開く]ダイアログボックスが表示されます。

  2. [COBOL]を選択して[OK]ボタンをクリックします。

ワークベンチ のメニューバーから[ファイル] > [新規] > [COBOLプロジェクト]を選択すると、新規COBOLプロジェクトが表示されます。

[1枚目]

プロジェクト名と保存フォルダを入力します。

設定項目

設定内容

プロジェクト名

CALCCL

プロジェクトコンテンツ

[ワークスペース内に新規プロジェクトを作成]をチェック

[2枚目]

ターゲットに関する情報を指定する画面です。ここでは何も指定せずに次に進みます。

[3枚目]

ビルド環境を指定する画面です。[CORBAクライアントのビルド環境を設定]をチェックします。それ以外についてはデフォルトの指定のままとします。

[4枚目]

生成するコードを選択する画面です。コード生成ウィザードとして[COBOLソース]が選択されることを確認し、[終了]をクリックします。

2. COBOLソース生成ウィザードによるひな型作成

生成するコードを選択する画面です。コード生成ウィザードとして[COBOLソース]が選択されることを確認し、[終了]をクリックします。

[1枚目]

ここではCOBOLソースの情報を以下のように指定します。

設定項目

設定内容

プロジェクト名

CALCCL

ファイル名

CALCCL

PROGRAM-ID

CALCCL

ファイルコメント

(任意のコメントを記載してください)

[終了]ボタンを押すと、"CALCCL.cob"ファイルが作成されます。

3. Interstage基盤サービスの起動

テンプレートからCORBAサーバオブジェクト一覧を取得する場合や、CORBAスタブファイル生成ウィザードによってスタブファイルを作成する場合には、Interstage基盤サービス操作ツールによってJ2EE実行環境のためのサービスをあらかじめ起動しておく必要があります。デフォルトの状態では必要なサービスは起動されていないため、以下の手順でサービスを起動してください。

  1. スタートメニューから[Interstage] > [Studio] > [Interstage基盤サービス操作ツール]を選択します。

  2. Interstage基盤サービス操作ツールのウィンドウの[J2EE実行環境を使用する]チェックボックスをチェック状態にします。

  3. [必須サービスのみ起動状態にする]ボタンが有効の場合、ボタンをクリックしてサービスを起動します。ボタンが無効の場合は操作は不要です。

  4. <必要なサービス>が全て実行中となっていることを確認してから[閉じる]ボタンをクリックしてInterstage基盤サービス操作ツールを終了します。

4. プログラムの編集

ウィザードで生成されたCOBOLソースを修正します。

テンプレートビューを表示

ワークベンチ のメニューより[ウィンドウ] > [ビューの表示] > [その他]を選択すると[ビューの表示]が開きます。
[Interstage Studioテンプレート] > [テンプレート]を選択して[OK]ボタンを押してください。

開いたビューは任意の箇所に移動できます。以降では、タスクビューやコンソールビューと同じ場所に移動して利用しています。

CORBA初期化処理を追加

エディタ上で処理を追加する位置にカーソルを位置付けます。テンプレートビューから、[COBOL] > [CORBA] > [CORBAの初期化]を選択し、コンテキストメニューから[挿入]を選択して、処理を追加します。

この例では、CALCCL.cobの9行目(行番号90)に[CORBAの初期化]の処理を挿入します。

CORBAサーバオブジェクト検索処理を追加

エディタ上で処理を追加する位置にカーソルを位置付けます。テンプレートビューから、[COBOL] > [CORBA] > [CORBAサーバオブジェクトの検索]を選択し、コンテキストメニューから[引き数の入力]を選択します。

この例では、CALCCL.cobの19行目(行番号100)の下に空行を1行作成し、そこに[CORBAサーバオブジェクトの検索]の処理を挿入します。

表示された[入力支援]ダイアログボックスで、置換キーに対する値を以下のように指定し、[OK]ボタンを押して処理を追加します。

メソッド呼び出し処理の追加

エディタ上で処理を追加する位置にカーソルを位置付けます。テンプレートビューの[CORBAサーバオブジェクト一覧]から、[モジュール名] > [インタフェース名] > [メソッド]を選択し、コンテキストメニューから[引き数の入力]を選択します。

この例では、CALCCL.cobの37行目(行番号118)の下に空行を1行作成し、そこに[addop]メソッドの呼び出し処理を挿入します。

注意

テンプレートからCORBAサーバオブジェクト一覧を取得する場合は、InterstageおよびInterstageの管理に必要なサービス(基盤サービス)が起動している必要があります。
なお、基盤サービスの起動にはInterstage基盤サービス操作ツールを使用します。ツールを起動するには、スタートメニューから[Interstage] > [Studio] > [Interstage基盤サービス操作ツール]を選択してください。Interstageを起動する場合は、IJServerビューで右クリックし、[起動]を選択します。IJServerビューを表示する場合は、メニューバーから[ウィンドウ] > [ビューの表示] > [その他]を選択し、ビューの表示ダイアログで、[IJServer] > [IJServer]を選択して[OK]ボタンをクリックします。

置換キーに対応する値を設定し、[OK]ボタンを押して処理を追加します。

必要なデータ項目や処理記述を追加・修正し、以下のようなソースにします。

注意

最後に追加したメソッド呼び出し処理は、以下のソースでは修正して利用しています。ソースをコピーする場合は、あらかじめ追加したメソッド呼び出し処理を削除してください。

000010*>
000020 IDENTIFICATION DIVISION.
000030 PROGRAM-ID.   CALCCL.
000040 ENVIRONMENT    DIVISION.
000050 CONFIGURATION  SECTION.
000060   REPOSITORY.
000070* ObjectDirectorの標準登録集(リポジトリ宣言用)
000080     COPY CORBA--REP.
000090* ネーミングサービスの標準登録集(リポジトリ宣言用)
000100     COPY CosNaming--REP.
000110* IDLコンパイラが出力した登録集(リポジトリ宣言用)
000120     COPY USCALCSV--REP.
000130* COBOLプラグインが提供しているCORBAクライアント開発用クラス
000140     CLASS CDCORBA.
000150
000160  SPECIAL-NAMES.
000170     ARGUMENT-NUMBER IS 引数番号
000180     ARGUMENT-VALUE  IS 引数内容
000190     SYMBOLIC CONSTANT
000200* ObjectDirectorの標準登録集(定数宣言用)
000210     COPY CORBA--CONST.
000220* ネーミングサービスの標準登録集(定数宣言用)
000230     COPY COSNAMING--CONST.
000240* IDLコンパイラが出力した登録集(定数宣言用)
000250     COPY USCALCSV--CONST.
000260     .
000270 DATA DIVISION.
000280 WORKING-STORAGE SECTION.
000290 COPY CORBA--COPY.
000300 COPY USCALCSV--COPY.
000310 01 L-APL-NAME PIC X(50) VALUE "CALCCL".
000320 01 W-OBJECT OBJECT REFERENCE CORBA-OBJECT.
000330 01 W-TARGET OBJECT REFERENCE SAMPLE-CALCSV.
000340 01 STRUCT1  TYPE SAMPLE-S1.
000350 01 L-RETURN PIC S9(9) COMP-5.
000360 01 L-NAME PIC X(128) VALUE "SAMPLE::CALCSV".
000370 01 ERR-MSG PIC X(128).
000380 01 CDEXCEPTIONMSG OBJECT REFERENCE CORBA-STRING.
000390 01 CDEXCEPTIONCODE TYPE CORBA-LONG.
000400
000410 PROCEDURE DIVISION.
000420  DECLARATIVES.
000430   ERR SECTION.
000440     USE AFTER EXCEPTION SAMPLE-CDEXCEPTION.
000450     MOVE CDEXCEPTIONCODE OF EXCEPTION-OBJECT AS SAMPLE-CDEXCEPTION TO CDEXCEPTIONCODE.
000460     SET CDEXCEPTIONMSG TO CDEXCEPTIONMSG OF EXCEPTION-OBJECT AS SAMPLE-CDEXCEPTION.
000470     INVOKE CDEXCEPTIONMSG "GET-VALUE" RETURNING ERR-MSG.
000480     DISPLAY ERR-MSG.
000490  END DECLARATIVES.
000500     INVOKE CDCORBA "GET-ORB" USING L-APL-NAME RETURNING L-RETURN.
000510     IF L-RETURN NOT = 0 
000520     THEN
000530         DISPLAY "ERROR OCCURRED AT GET-ORB"
000540     END-IF
000550     INVOKE CDCORBA "GET-COSNAMING" RETURNING L-RETURN.
000560         IF L-RETURN NOT = 0
000570     THEN
000580          DISPLAY "ERROR OCCURRED AT GET-COSNAMING"
000590     END-IF
000600     
000610     MOVE "SAMPLE::CALCSV" TO L-NAME.
000620     INVOKE CDCORBA "GET-NAMEOBJ" USING L-NAME RETURNING L-RETURN.
000630     IF L-RETURN NOT = 0 
000640     THEN
000650        DISPLAY "ERROR OCCURRED AT GET-NAMEOBJ"
000660     END-IF
000670     INVOKE CDCORBA "GET-NAMEOBJR" RETURNING W-OBJECT.
000680     IF W-OBJECT = NULL
000690     THEN
000700        DISPLAY "ERROR OCCURRED AT GET-NAMEOBJR"
000710     END-IF
000720     
000730     SET W-TARGET TO NULL.
000740     INVOKE SAMPLE-CALCSV "NARROW" USING W-OBJECT RETURNING W-TARGET.
000750     IF W-TARGET = NULL
000760     THEN
000770        DISPLAY "ERROR OCCURRED AT NARROW"
000780     END-IF
000790
000800*    サーバアプリケーションのメソッドの呼出し
000810     DISPLAY "第一引数を入力してください:" WITH NO ADVANCING.
000820     ACCEPT  item1 OF STRUCT1.
000830     DISPLAY "第二引数を入力してください:" WITH NO ADVANCING.
000840     ACCEPT  item2 OF STRUCT1.
000850     
000860     INVOKE W-TARGET "addop" USING STRUCT1
000870     DISPLAY "加算結果:" result OF STRUCT1.
000880     
000890     INVOKE W-TARGET "subop" USING STRUCT1
000900     DISPLAY "減算結果:" result OF STRUCT1.
000910     
000920     MOVE 0 TO CDEXCEPTIONCODE.
000930     DISPLAY "乗算結果:" WITH NO ADVANCING.
000940     INVOKE W-TARGET "mltop" USING STRUCT1
000950     IF CDEXCEPTIONCODE NOT = -1 THEN
000960       DISPLAY result OF STRUCT1
000970     END-IF.
000980
000990     MOVE 0 TO CDEXCEPTIONCODE.
001000     DISPLAY "除算結果:" WITH NO ADVANCING.
001010     INVOKE W-TARGET "divop" USING STRUCT1
001020     IF CDEXCEPTIONCODE NOT = -1 THEN
001030       DISPLAY result OF STRUCT1
001040     END-IF.
001050      
001060 END PROGRAM CALCCL.

5. スタブの追加

CORBAサーバアプリケーションを呼び出すには、IDLファイルからCORBAクライアントに必要なスタブファイルおよびその他のファイルを生成し、プロジェクトに追加する必要があります。 CORBAスタブファイル生成ウィザードを利用してスタブファイルおよびその他のファイルを生成し、プロジェクトに追加してください。

ワークベンチ のメニューより[ファイル] > [新規] > [その他]を選択すると、新規ウィザードが表示されます。

[COBOL] > [ソース] > [CORBAスタブファイル]を選択します。

CORBAスタブファイル生成ウィザードが表示されます。

IDLファイルと登録先プロジェクト、および生成言語を入力します。

設定項目

設定内容

IDLファイル

CALCSVプロジェクトのUSCALCSV.idlを指定してください

登録先プロジェクト

CALCCL

生成言語

オブジェクト指向COBOL

[終了]ボタンを押すと、プロジェクトに以下のファイルが生成されます。

ファイル種別

ファイル名

リポジトリ段落宣言用登録集

USCALCSV--REP.cbl

定数宣言用登録集

USCALCSV--CONST.cbl

TYPEDEF型宣言用登録集

USCALCSV--COPY.cbl

インタフェースファイル

SAMPLE-CALCSV.cob

Helperクラスファイル

SAMPLE-CALCSV--HELPER.cob

スタブファイル

SAMPLE-CALCSV--STUB.cob

Narrowスタブファイル

SAMPLE-CALCSV_NARROW.cob

データ型クラスファイル

SAMPLE-CDEXCEPTION.cob

データ型Helperファイル

SAMPLE-S1--HELPER.cob

SAMPLE-CDEXCEPTION--HELPER.cob

生成されたファイルのうち、登録集以外のCOBOLソースが[依存]ビューにソースファイルとして登録されます。

6. 依存関係の解析

オブジェクト指向COBOLのソースファイルを含んだプロジェクトをビルドする場合、ビルドを行う前にCOBOLソースファイル間の依存関係を設定する必要があります。依存関係を設定することでCOBOLソースファイルが正しい順番でビルドされるようになります。依存関係が正しく設定されていないとビルド時に翻訳エラーが発生することがあります。

プロジェクトの新規作成時および[ソースフォルダ]にCOBOLソースファイルを追加した時には、追加されたソースファイルに対して依存関係が自動的に解析されて設定されます。しかし今回の例のようにCOBOLソースファイルのREPOSITORY段落を編集した場合には、ビルドを行う前に手動で依存関係の解析を実行する必要があります。

ワークベンチの依存ビューでプロジェクトを選択し、コンテキストメニューから [依存関係の解析] > [すべて]を選択して、依存関係の解析を行ってください。

注意

依存関係の解析を行うと、コンソールに“xxx.rep: は存在しません。”というメッセージが表示されます。プロジェクト内のオブジェクト指向COBOLソースファイルに対するリポジトリファイル(*.rep)はそのソースファイルを翻訳して初めて生成されるもののため、ビルドを行う前に依存関係の解析を行うとこのようなメッセージが表示されます。依存関係の解析自体は正しく行われていますので、そのままプロジェクトのビルドを行って構いません。

7. プロジェクトのビルド

ここまでの手順でCORBAクライアントアプリケーションのビルドは完了しています。
ただし、メニューの[プロジェクト] > [自動的にビルド]のチェックを解除している場合はビルドがされないため、チェックしなおしてください。チェックをするとにCORBAクライアントアプリケーションが自動的にビルドされます。

8. 動作確認

CORBAサーバアプリケーションを配備したワークユニットを起動後に、ワークベンチのビューでプロジェクトを選択して、メニューより[実行] > [実行] > [COBOLアプリケーション]を選択して、クライアントアプリケーションを実行します。