Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
|
目次
索引

|
8.9 OOCOBOLアプリケーション使用時の注意事項
“CORBAアプリケーション開発時の留意事項”についても参照してください。
関数名/変数名の扱い
- 関数名/変数名の長さは30文字までです。30文字を超える場合、マッピング情報ファイル(IDL.inf)を参照してください。
- 関数名/変数名の文字長が30文字を超える場合で、同一名になる場合、27文字目以降を数値に置き換えます。
予約語の扱い
- OOCOBOLの予約語の文字列がIDLファイルに記述されている場合、文字列の前に"IDL-"を付加します。予約語については、OOCOBOLのマニュアルを参照してください。
- 原則として、IDLの順番にコンパイルします。以下のIDLの場合、Sのコンパイル後にAをコンパイルします。
//idl
struct S { ... };
interface A { S op(); };
interfaceのforward_dclは上記規則に含みません。
forward_dcl
interface A;
interface A{}; // 中身が空
- 要素内に定義されているものは、先にコンパイルします。以下のIDLの場合、S1のコンパイル後にSをコンパイルします。
//idl
struct S {
struct S1 { ... } mem1;
};
- 1つの要素に複数のファイルが出力される場合は、以下の順番でコンパイルします。
- インタフェース以外の要素(登録集に定義されるものは除く)
要素本体のクラスファイル→Helperクラスファイル
- インタフェース(スタブ側)
インタフェースファイル→Helperクラスファイル→スタブクラスファイル→Narrowスタブファイル
- インタフェース(スケルトン側)
インタフェースファイル→Helperクラスファイル→tieクラスファイル/ユーザ定義クラス→インプリメンテーション登録ファイル
- 相互参照がある場合は、下の要素の本体クラスから"CREATE(REP)"オプションで翻訳します。以下のIDLのコンパイル順番は、A.cob("CREATE(REP)"オプション付き)→S.cob→S--HELPER.cob→A.cob....("CREATE(REP)"オプションなし)となります。
interface A;
struct S { A mem1; };
interface A { S op(); };
その他、IDLコンパイラが出力したクラスをリポジトリ宣言で使用しているファイルは上記の翻訳が終わった後に行います。
Windows(R)アプリケーションの作成 
Windows(R)でOOCOBOLアプリケーションを作成する場合の注意点を以下に示します。
備考
CORBAサービスのインストールフォルダを"C:\Interstage\ODWIN"として説明します。
クライアントアプリケーションの作成
クライアントアプリケーションを作成する場合の翻訳・リンク手順を以下に示します。OOCOBOLアプリケーションのビルドには"COBOLプロジェクトマネージャー"を使用します。
翻訳・リンク手順
- IDLコンパイルを実行します。
IDLc -oocob IDLファイル名
- 1で生成されたファイルをCOBOLソースファイルにデータ型、データ型ヘルパー、インタフェースクラス、インタフェースクラスヘルパー、スタブクラス、Narrowスタブ、クライアントmainの順に追加します。
- 「翻訳オプション」には以下の設定をします。
LIB、REPIN(“翻訳時のオプションの設定”参照)
- ライブラリファイルを設定します。
[UNICODE、UTF8以外の場合] C:\Interstage\ODWIN\LIB\ODOOCOB.LIB
C:\Interstage\ODWIN\LIB\ODCNOOCOB.LIB
[UNICODE、UTF8の場合] C:\Interstage\ODWIN\LIB\ODOOCOBUC.LIB
C:\Interstage\ODWIN\LIB\ODCNOOCOBUC.LIB
- 相互参照がある場合は、リポジトリファイルを作成します。「翻訳オプション」「その他の翻訳オプション」に"CREATE(REP)"として翻訳します。相互参照がない場合は、必要ありません。
リンク時に指定するライブラリ
リンク時に必ず指定するライブラリは以下のとおりです。
[UNICODE、UTF8以外の場合]C:\Interstage\ODWIN\LIB\ODOOCOB.LIB
[UNICODE、UTF8の場合] C:\Interstage\ODWIN\LIB\ODOOCOBUC.LIB
ネーミングサービスを利用するときは以下のライブラリを追加します。
[UNICODE、UTF8以外の場合]C:\Interstage\ODWIN\LIB\ODCNOOCOB.LIB
[UNICODE、UTF8の場合] C:\Interstage\ODWIN\LIB\ODCNOOCOBUC.LIB
サーバアプリケーションの作成
サーバアプリケーションを作成する場合の翻訳・リンク手順を以下に示します。OOCOBOLアプリケーションのビルドには"COBOLプロジェクトマネージャー"を使用します。
翻訳・リンク手順
- IDLコンパイルを実行します。
IDLc -oocob IDLファイル名
- 1で生成されたファイルを"インタフェース名.dll"のCOBOLソースファイルにデータ型、データ型ヘルパー、インタフェースクラス、インタフェースクラスヘルパー、ユーザ定義クラス、Tieクラス、Initプログラム、Newプログラム、Narrowスケルトンの順に追加します。
- "インタフェース名.dll"に以下のライブラリを設定します。
[UNICODE、UTF8以外の場合]C:\Interstage\ODWIN\LIB\ODOOCOBSV.LIB
[UNICODE、UTF8の場合]C:\Interstage\ODWIN\LIB\ODOOCOBSVUC.LIB
- 実行ファイルのCOBOLソースファイルにサーバmainを追加し、ライブラリファイルに以下のものを追加します。
[UNICODE、UTF8以外の場合]C:\Interstage\ODWIN\LIB\ODOOCOBSV.LIB
[UNICODE、UTF8の場合]C:\Interstage\ODWIN\LIB\ODOOCOBSVUC.LIB
- 相互参照がある場合は、リポジトリファイルを作成します。「翻訳オプション」「その他の翻訳オプション」に"CREATE(REP)"として翻訳します。相互参照がない場合は、必要ありません。
リンク時に指定するライブラリ
リンク時に必ず指定するライブラリは以下のとおりです。
[UNICODE、UTF8以外の場合]C:\Interstage\ODWIN\LIB\ODOOCOBSV.LIB
[UNICODE、UTF8の場合]C:\Interstage\ODWIN\LIB\ODOOCOBSVUC.LIB
ネーミングサービスを利用するときは以下のライブラリを追加します。
[UNICODE、UTF8以外の場合]C:\Interstage\ODWIN\LIB\ODCNSOOCOB.LIB
[UNICODE、UTF8の場合]C:\Interstage\ODWIN\LIB\ODCNSOOCOBUC.LIB
クライアント用とサーバ用のライブラリを同時に指定することはできません。サーバアプリケーションが別のサーバと通信する場合は、サーバ用のライブラリをリンクします。
翻訳時のオプションを設定します("プロジェクト"→"オプション"→"翻訳オプション")。
- LIB
- 登録集が格納されているフォルダを指定します。翻訳オプションの追加で"LIB"を選択し、登録集ファイルの入力先に"C:\Interstage\ODWIN\INCLUDE\OOCOB"を指定します。
- REPIN
- リポジトリファイルが格納されているフォルダを指定します。翻訳オプションの追加で"REPIN"を選択し、リポジトリファイルの入力先に"C:\Interstage\ODWIN\REP"を指定します。UNICODEを使用する場合は、"C:\Interstage\ODWIN\REP\UNICODE"を指定します。
- THREAD
- アプリケーションの動作モードを指定します。スレッドモードのアプリケーションを作成するときは、"マルチスレッドとする"を選択し、プロセスモードのアプリケーションを作成するときは"シングルスレッドとする"を選択します。
- RCS
- 実行時のコード系を設定します。翻訳オプションの追加で、UNICODEアプリケーション、またはUTF8アプリケーションを作成する場合は、"RCS"を選択し、"UCS2-UNICODE(UCS2)を使用する"を選択します。
- ALPHAL
- 英小文字を英大文字と等価に扱う(ALPHAL)か、扱わない(NOALPHAL)かを指定します。本オプションを指定する場合は、本製品が提供するOOCOBOLのAPI、ネーミングサービス、およびIDLコンパイラが出力したクラス、メソッドはすべて大文字で記述してください(IDLコンパイラが出力するOOCOBOLのファイルでは、コメント行以外はすべて大文字で記述されます)。
モジュールの単位
サーバアプリケーションは初期化する実行モジュール(EXE)と、オペレーションの実装部であるライブラリ(DLL)の2つを作成します。実行モジュール側では初期化(CORBA-ORB_INIT)を行い、サーバを活性化させる(CORBA-BOA-IMPL_IS_READYまたはCORBA-BOA-OBJ_IS_READY)ところまでの処理を行います。
ライブラリ側は、1つのライブラリに複数のインタフェースを実装することができます。インタフェースごとにライブラリを分ける場合は、データ型クラスファイルはインタフェースのライブラリとは別のライブラリ(DLL)にし、インタフェースクラスのライブラリからデータ型クラスのライブラリをリンクするようにします。
// IDL
module M {
struct S { string s; };
typedef long L;
interface I1 {
....
};
interface I2 {
...
};
};
上記IDLのサーバアプリケーションのライブラリをインタフェースごとに分けるときは、以下の構成にします。
M-I1のライブラリ→
(リンク)データ型のライブラリ
M-I2のライブラリ→
[M-I1のライブラリに含まれるファイル]
M-I1.COB
M-I1--HELPER.COB
M-I1--TIE.COB
M-I1--NARROWSKEL.COB
M-I1--NEW.COB
M-I1の実装クラスファイル
M-I1―INITの定義ファイル
[M-I2のライブラリに含まれるファイル]
M-I2.COB
M-I2--HELPER.COB
M-I2--TIE.COB
M-I2--NARROWSKEL.COB
M-I2--NEW.COB
M-I2の実装クラスファイル
M-I2―INITの定義ファイル
[データ型のライブラリに含まれるファイル]
M-S.COB
M-S--HELPER.COB
L--HELPER.COB
Solarisアプリケーションの作成 
SolarisでOOCOBOLアプリケーションを作成する場合の注意点を以下に示します。

開発環境として“NetCOBOL”を使用してUNICODEのアプリケーションを開発する場合、ソースファイルおよび登録集は、UNICODE(UTF-8)で作成してください。
また、翻訳/リンク/実行を行う場合、コート系には“UNICODE”を設定してください。

CORBAサービスのインストールディレクトリを"/opt/FSUNod"として説明します。
クライアントアプリケーションの作成
クライアントアプリケーションを作成する場合の翻訳・リンク手順を以下に示します。
翻訳・リンク手順
- CORBA-OOCOBOLマッピングを出力します。
[UNICODEモジュール以外の場合]
IDLc -oocob IDLファイル名
[UNICODEモジュール(NetCOBOL)の場合]
IDLc -oocob -unic IDLファイル名
- 相互参照がある場合は、リポジトリファイルを作成します(XXX.cob: 主プログラム名)。相互参照がない場合は、必要ありません。
cobol -WC,"CREATE(REP)" XXX.cob
- 主プログラム以外を翻訳し、オブジェクトを作成します(翻訳の順番は、“アプリケーションのビルド時の注意事項”参照)。
cobol -c -R/opt/FSUNod/rep -I/opt/FSUNod/include/oocob -WC,"THREAD(MULTI)" XXX.cob
- 主プログラムを作成します。-Mオプションを指定してオブジェクトを作成します。
cobol -c -M -R/opt/FSUNod/rep -I/opt/FSUNod/include/oocob -WC,"THREAD(MULTI)" XXX.cob
- ファイルをリンクし、実行ファイルを作成します。-Tmオプションを指定すると、マルチスレッドで結合します。
[UNICODEモジュール以外の場合]
cobol -Tm -lnsl -lsocket -L/opt/FSUNod/lib -lOMoocob -lOMcnoocob -lrcobol -o 実行ファイル名
[UNICODEモジュール(NetCOBOL)の場合]
cobol -Tm -lnsl -lsocket -L/opt/FSUNod/lib -lOMoocobUC -lOMcnoocobUC -lrcobol -o 実行ファイル名
サーバアプリケーションの作成
サーバアプリケーションを作成する場合の翻訳・リンク手順を以下に示します。
翻訳・リンク手順
- CORBA-OOCOBOLマッピングを出力します。
[UNICODEモジュール以外の場合]
IDLc -oocob IDLファイル名
[UNICODEモジュール(NetCOBOL)の場合]
IDLc -oocob -unic IDLファイル名
- 相互参照がある場合は、リポジトリファイルを作成します(XXX.cob: 主プログラム名)。相互参照がない場合は、必要ありません。
cobol -WC,"CREATE(REP)" XXX.cob
- 主プログラム以外を翻訳し、オブジェクトを作成します(翻訳の順番は、“アプリケーションのビルド時の注意事項”参照)。
cobol -c -R/opt/FSUNod/rep -I/opt/FSUNod/include/oocob -WC,"THREAD(MULTI)" XXX.cob
- 主プログラムを作成します。-Mオプションを指定してオブジェクトを作成します。
cobol -c -M -R/opt/FSUNod/rep -I/opt/FSUNod/include/oocob -WC,"THREAD(MULTI)" XXX.cob
- ファイルをリンクし、実行ファイルを作成します。-Tmオプションを指定すると、マルチスレッドで結合します。
[UNICODEモジュール以外の場合]
cobol -Tm -lnsl -lsocket -L/opt/FSUNod/lib -lOMoocob -lrcobol -o 実行ファイル名
[UNICODEモジュール(NetCOBOL)の場合]
cobol -Tm -lnsl -lsocket -L/opt/FSUNod/lib -lOMoocobUC -lrcobol -o 実行ファイル名
- 共用オブジェクトを作成します。
[UNICODEモジュール以外の場合]
cobol -G -Tm -lnsl -lsocket -L/opt/FSUNod/lib -lOMoocob -lrcobol -o 共用オブジェクト名
[UNICODEモジュール(NetCOBOL)の場合]
cobol -G -Tm -lnsl -lsocket -L/opt/FSUNod/lib -lOMoocobUC -lrcobol -o 共用オブジェクト名
リンク時に指定する共用オブジェクト(クライアントアプリケーション/サーバアプリケーション共通)
リンク時に必ず指定するライブラリは以下のとおりです。
[UNICODEモジュール以外の場合]
/opt/FSUNod/lib/libOMoocob.so
[UNICODEモジュール(NetCOBOL)の場合]
/opt/FSUNod/lib/libOMoocobUC.so
ネーミングサービスを利用するときは以下のライブラリを追加します。
[UNICODEモジュール以外の場合]
/opt/FSUNod/lib/libOMcnoocob.so
[UNICODEモジュール(NetCOBOL)の場合]
/opt/FSUNod/lib/libOMcnoocobUC.so
Linuxアプリケーションの作成 
LinuxでOOCOBOLアプリケーションを作成する場合の注意点を以下に示します。

UNICODEのアプリケーションを開発する場合、ソースファイルおよび登録集は、UNICODE(UTF-8)で作成してください。
また、翻訳/リンク/実行を行う場合、コード系には“UNICODE”を設定してください。

CORBAサービスのインストールディレクトリを"/opt/FJSVod"として説明します。
クライアントアプリケーションの作成
クライアントアプリケーションを作成する場合の翻訳・リンク手順を以下に示します。
翻訳・リンク手順
- CORBA-OOCOBOLマッピングを出力します。
IDLc -oocob IDLファイル名
- 相互参照がある場合は、リポジトリファイルを作成します(XXX.cob: 主プログラム名)。相互参照がない場合は、必要ありません。
cobol -WC,"CREATE(REP)" XXX.cob
- 主プログラム以外を翻訳し、オブジェクトを作成します(翻訳の順番は、“アプリケーションのビルド時の注意事項”参照)。
cobol -Tm -c -R/opt/FJSVod/rep -I/opt/FJSVod/include/oocob XXX.cob
- 主プログラムを作成します。-Mオプションを指定してオブジェクトを作成します。
cobol -Tm -c -M -R/opt/FJSVod/rep -I/opt/FJSVod/include/oocob XXX.cob
- ファイルをリンクし、実行ファイルを作成します。-Tmオプションを指定すると、マルチスレッドで結合します。
[UNICODEモジュール以外の場合]
cobol -Tm -lnsl -lsocket -L/opt/FJSVod/lib -lOMoocob -lOMcnoocob -lrcobol -o 実行ファイル名 XXX.o
[UNICODEモジュールの場合]
cobol -Tm -lnsl -lsocket -L/opt/FJSVod/lib -lOMoocobUC -lOMcnoocobUC -lrcobol -o 実行ファイル名 XXX.o
サーバアプリケーションの作成
サーバアプリケーションを作成する場合の翻訳・リンク手順を以下に示します。
翻訳・リンク手順
- CORBA-OOCOBOLマッピングを出力します。
IDLc -oocob IDLファイル名
- 相互参照がある場合は、リポジトリファイルを作成します(XXX.cob: 主プログラム名)。相互参照がない場合は、必要ありません。
cobol -WC,"CREATE(REP)" XXX.cob
- 主プログラム以外を翻訳し、オブジェクトを作成します(翻訳の順番は、“アプリケーションのビルド時の注意事項”参照)。
cobol -Tm -c -R/opt/FJSVod/rep -I/opt/FJSVod/include/oocob XXX.cob
- 主プログラムを作成します。-Mオプションを指定してオブジェクトを作成します。
cobol -Tm -c -M -R/opt/FJSVod/rep -I/opt/FJSVod/include/oocob XXX.cob
- ファイルをリンクし、実行ファイルを作成します。-Tmオプションを指定すると、マルチスレッドで結合します。
[UNICODEモジュール以外の場合]
cobol -Tm -lnsl -L/opt/FJSVod/lib -lOMoocob -lrcobol -o 実行ファイル名 XXX.o
[UNICODEモジュールの場合]
cobol -Tm -lnsl -L/opt/FJSVod/lib -lOMoocobUC -lrcobol -o 実行ファイル名 XXX.o
- 共用オブジェクトを作成します。
[UNICODEモジュール以外の場合]
cobol -G -Tm -lnsl -L/opt/FJSVod/lib -lOMoocob -lrcobol -o 共用オブジェクト名 XXX.o
[UNICODEモジュールの場合]
cobol -G -Tm -lnsl -L/opt/FJSVod/lib -lOMoocobUC -lrcobol -o 共用オブジェクト名 XXX.o
リンク時に指定する共用オブジェクト(クライアントアプリケーション/サーバアプリケーション共通)
リンク時に必ず指定するライブラリは以下のとおりです。
[UNICODEモジュール以外の場合]
/opt/FJSVod/lib/libOMoocob.so
[UNICODEモジュールの場合]
/opt/FJSVod/lib/libOMoocobUC.so
ネーミングサービスを利用するときは以下のライブラリを追加します。
[UNICODEモジュール以外の場合]
/opt/FJSVod/lib/libOMcnoocob.so
[UNICODEモジュールの場合]
/opt/FJSVod/lib/libOMcnoocobUC.so
All Rights Reserved, Copyright(C) 富士通株式会社 2006