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

|
7.11 COBOLアプリケーション使用時の注意事項
“CORBAアプリケーション開発時の留意事項”についても参照してください。
メッセージについて
- COBOLアプリケーション実行時に、COBOLランタイムライブラリからメッセージが表示される場合があります。JMPではじまるメッセージが出力されていた場合は、COBOL使用手引書(実行時のメッセージ)を参照してください。
関数名/変数名の扱い
- 関数名/変数名の長さは30文字までです。30文字を超える場合、30文字以降を切り捨てます。
- 関数名/変数名の文字長が30文字を超える場合で、同一名になる場合、27文字目以降を数値に置き換えます。
- アンダースコア("_")は、COBOLで使用できないため、ハイフン("-")に置換します。ただし、オペレーション名、インタフェース名で使用されているアンダースコア("_")はそのまま使用します。
- IDLファイルからクラス名と変数名の関係で、同じ名称に変換される場合、以下のケースで変数の型等が不明になるため、使用してはいけません。
typedef long foo_bar;
interface foo { typedef short bar; };
予約語の扱い
- COBOLの予約語の文字列がIDLファイルに記述されている場合、文字列の前に"IDL-"を付加します。予約語については、COBOLのマニュアルを参照してください。
- const宣言は、COBOLの"SYMBOLIC CONSTANT"になります。OMG規定では">>CONSTANT"文節に対応しますが、COBOLで未サポートのため"SYMBOLIC CONSTANT"になります。
NVList使用方法
- COBOLでのNVListは、NamedValue構造体(登録集NAMEDVALUE.cbl)の配列を指すアドレスを格納するポインタです。
- パラメタの設定は、CORBA-NVLIST-ADD-ITEMで行います。その際、以下の点に注意が必要です。
- LIST
- 初期化(CORBA-ORB-CREATE-LIST使用)が必要です。
- ITEM−NAME
- CORBA-STRING-SETで値を設定されたポインタを指定し、省略時にはNULLを指定してください。
- ITEM−TYPE
- CORBA-TYPECODE-FROM-CGEN-TCで作成されたTYPECODEを指定します。省略不可。
注) CORBA-ORB-TYPECODE-FROM-CGEN-TCに指定できるパラメタは、登録集CONST.cblに記載されている基本型のTC-XXX、登録集で頭にTCのつくもの、または、IDLコンパイルで作成されるIDLファイル名_h.cblに定義されている、TC-XXX-IMPL-SEQを使用します。
- VALUE
- パラメタの値のアドレスを設定します。(注意、STRINGやOBJECTのようなポインタで扱われるデータも、FUNCTION ADDRでアドレスを取り出して設定します。)ITEM-FLAGにCORBA-ARG-OUTなどを指定するときは、NULLを設定します(要)。
- VALUE-LEN
- VALUEの領域の長さを指定します。省略時は、0を指定します。
- ITEM-FLAGS
- 登録集FLAGS.cblを使用します。省略不可。
- 領域の解放
NVList自体を解放するときは、CORBA-NVLIST-FREE、NVListに設定された値だけを解放したいときは、CORBA-NVLIST-FREE-MEMBERを使用します。
文字列の設定について
- サーバアプリケーションは、動的リンク構造(主プログラムのロード時に、呼び出される関数すべてをロードする)で作成する必要があります。
動的プログラム構造(ロードが関数の呼出し時に行われる)では、作成しないでください。
このため、アプリケーションの翻訳時は、翻訳オプションとしてDLOADオプションは指定しないでください。
- サーバアプリケーションのメソッド部では、DISPLAY文を使用しないでください。
- サーバアプリケーションで各インタフェース使用時にオブジェクトへのポインタが渡された場合、ユーザ例外を返すことがあります(例外コード:"BAD PARAM")。ENVIRONMENTをパラメタに持つ場合には、例外情報を参照してください。
- サーバアプリケーションをshared、unsharedタイプとしてインプリメンテーションリポジトリに登録する場合は、以下の設定を行ってください。また、インプリメンテーションリポジトリの登録では、設定項目envは使用しないでください。
- システムの環境変数に次の設定を追加してください。
@EnvSetWindow=UNUSE
- システムの環境変数PATHに、アプリケーションのメソッド実装部であるDLLファイルのパスを追加してください。
- クライアントアプリケーションでは、BOA、ServerRequestインタフェースは使用できません。
- 使用するCOBOL製品により、アプリケーションの運用前に以下の環境変数を設定する必要があります。
- COBOL97 V40/PowerCOBOL97 V4.0の場合
@EnvSetWindow=UNUSE
@MessOutFile=出力メッセージのファイル名
@WinCloseMsg=OFF
- COBOL97 V50/PowerCOBOL97 V5.0以降の場合
@WinCloseMsg=OFF
- クライアントアプリケーションとサーバアプリケーションを同一フォルダで作成しないでください。クライアントアプリケーションとサーバアプリケーションとで同名のオブジェクトファイルが生成され、アプリケーションが異常な動作をする可能性があります。
Solaris OE/Linuxアプリケーション作成時/運用時の注意事項

- Shift JIS環境でアプリケーションを運用する場合は、CBR_CODE_CHECK=noを設定してください。
- クライアントアプリケーションでは、BOA, ServerRequestインタフェースは使用できません。
- サーバアプリケーションは、動的リンク構造(主プログラムのロード時に、呼び出される関数すべてをロードする)で作成する必要があります。
動的プログラム構造(ロードが関数の呼出し時に行われる)では、作成しないでください。
このため、アプリケーションの翻訳時は、翻訳オプションとしてDLOADオプションは指定しないでください。
Windows(R)アプリケーションの作成 
Windows(R)でCOBOLアプリケーションを作成する場合の注意点を以下に示します。
備考
CORBAサービスのインストールフォルダを"C:\Interstage\ODWIN"として説明します。
クライアントアプリケーションの作成
クライアントアプリケーションを作成する場合の翻訳・リンク手順を以下に示します。
翻訳・リンク手順
- IDLコンパイルを実行します。
IDLc -cobol IDLファイル名
- 1.で生成されたスタブ、CDRソースをCOBOLソースファイルに登録し、主プログラムと合わせて翻訳します。翻訳時に「翻訳オプション」として以下のフォルダ配下の登録集を指定します。
CORBA=C:\Interstage\ODWIN\INCLUDE\COBOL
- 「翻訳オプション」には以下のファイルを指定します。
[プロセスモードの場合]
C:\Interstage\ODWIN\LIB\ODCOBCBL.LIB
[スレッドモードの場合]
C:\Interstage\ODWIN\LIB\ODCOBCBLMT.LIB
[UNICODEの場合]
C:\Interstage\ODWIN\LIB\ODCOBCBLUC.LIB
サーバアプリケーションの翻訳・リンク
サーバアプリケーション作成時の翻訳・リンク手順と指定するファイル・オプションを以下に示します。
翻訳・リンク手順
- IDLコンパイルを実行します。
IDLc -cobol IDLファイル名
- 1で生成されたスケルトン、CDRソースを翻訳し、オブジェクトファイル(*.obj)を作成します。プロジェクトマネージャを起動し、「ツール」の「翻訳」を選択して「翻訳時の指定」のファイル・オプションを指定します。
- サーバアプリケーションのメソッド部(サーバの実処理)を、同様の手順で翻訳します。(Windows(R)アプリケーション作成時/運用時の注意事項を参照)
- 翻訳したオブジェクトを結合し、DLLファイルを作成します。DLLファイル名は、モジュール名-インタフェース名.DLLです。「ツール」の「リンク」を選択し、以下のファイルと共に指定します。
[プロセスモードの場合]
C:\Interstage\ODWIN\LIB\ODCOBCBLSV.LIB
[スレッドモードの場合]
C:\Interstage\ODWIN\LIB\ODCOBCBLMTSV.LIB
[UNICODEの場合]
C:\Interstage\ODWIN\LIB\ODCOBCBLSVUC.LIB
- サーバアプリケーションのメイン処理を主プログラムとして、実行プログラムを作成します。この際以下のファイルと共に指定します。
[プロセスモードの場合]
C:\Interstage\ODWIN\LIB\ODCOBCBLSV.LIB
[スレッドモードの場合]
C:\Interstage\ODWIN\LIB\ODCOBCBLMTSV.LIB
[UNICODEの場合]
C:\Interstage\ODWIN\LIB\ODCOBCBLSVUC.LIB
- OD_impl_instコマンドでサーバアプリケーションを登録します。実行時に指定する定義ファイルは、サンプルプログラムの以下のファイルを参照してください。
C:\Interstage\ODWIN\SRC\SAMPLE\COMPLEX\SAMPLELIST.COBOL\DATA\*\*.DEF
注)modeは、SYNC_ENDを設定してください。
DLLは、DLL名のみを設定し、環境変数PATHにDLLのパスを追加してください。
翻訳対象ファイル
IDLファイル名_インタフェース名_SKEL.CBL
IDLファイル名_CDR.CBL
IDLファイル名_SKEL.CBL
(IDL定義により生成されないこともあります。)
翻訳オプション
[共通]
- NAMEオプションを指定してください。
- DLOADオプションは指定しないでください。
[スレッドモードの場合]
- THREAD(MULTI)オプションを指定してください。
[UNICODEの場合]
- RCSオプション(UCS2-Unicode(UCS2)を使用する)を指定してください。
登録集の指定
CORBA=C:\Interstage\ODWIN\INCLUDE\COBOL
生成ファイル
モジュール名-インタフェース名-オペレーション名.OBJ
スケルトン、CDRソースで定義された目的オブジェクト
Solaris OEアプリケーションの作成
Solaris OEでCOBOLアプリケーションを作成する場合の注意点を以下に示します。

開発環境として“Sun日本語COBOL”を使用している場合、スレッドプログラムの作成には“COBOL拡張オプション2.0”が必要です。
また、cobolコマンドでスレッドプログラムのファイルは作成できませんので、ldコマンドで作成してください。詳細は“COBOL拡張オプション2.0 インストールガイド”を参照してください。
開発環境として“NetCOBOL”を使用してUNICODEのアプリケーションを開発する場合、ソースファイルおよび登録集は、UNICODE(UTF-8)で作成してください。
また、翻訳/リンク/実行を行う場合、コート系には“UNICODE”を設定してください。

CORBAサービスのインストールディレクトリを"/opt/FSUNod"として説明します。
クライアントアプリケーションの作成
クライアントアプリケーションを作成する場合の翻訳・リンク手順を以下に示します。
翻訳・リンク手順
- IDLコンパイルを実行します。
IDLc -cobol IDLファイル名
- 登録集を指定します。環境変数CORBAに以下のディレクトリを指定してください。
CORBA=/opt/FSUNod/include/COBOL
- 主プログラムを翻訳します。コンパイル方法を以下に示します(XXX_c.cbl: 主プログラムファイル名)。
[プロセスモードの場合/スレッドモード(Sun 日本語COBOL)の場合]
cobol -M -c XXX_c.cbl
[スレッドモード(PowerCOBOL97)の場合/UNICODEモジュール(NetCOBOL)の場合]
cobol -Tm -M -c XXX_c.cbl
- 1で生成されたスタブ、CDRソースを翻訳します。コンパイル方法を以下に示します(A_cdr.cbl: CDRソースファイル名、B_stub.cbl: スタブファイル名)。
[プロセスモードの場合/スレッドモード(Sun 日本語COBOL)の場合]
cobol -G -o libA_cdr.so A_cdr.cbl
cobol -G -o libB_stub.so -lA_cdr B_stub.cbl
[スレッドモード(PowerCOBOL97)の場合/UNICODEモジュール(NetCOBOL)の場合]
cobol -G -Tm -o libA_cdr.so A_cdr.cbl
cobol -G -Tm -o libB_stub.so -lA_cdr B_stub.cbl
- COBOLライブラリをリンクしてクライアントアプリケーションを作成します(CAP_c:作成するクライアントアプリケーション名)。
[プロセスモードの場合] /opt/FSUNod/lib/libOMcbl.soをリンクします。
cobol -L/opt/FSUNod/lib -lOMcbl -o CAP_c -lB_stub -lA_cdr XXX_c.o
[スレッドモード(Sun 日本語COBOL)の場合] /opt/FSUNod/lib/libOMcbl.soをリンクします。
ld /opt/SUNWnsun/lib/crti.o /opt/SUNWnsun/lib/crt1.o /opt/SUNWnsun/lib/crtn.o /opt/SUNWnsun/lib/cblstr.o
-L/opt/FSUNod/lib -lOMcbl -lB_stub -lA_cdr XXX_c.o -o CAP_c -lrFJBASE
-L/opt/FJSVCOBop/lib -lrcobol -lthread -lc -ldl
[スレッドモード(PowerCOBOL97)の場合] /opt/FSUNod/lib/libOMcblMT.soをリンクします。
cobol -L/opt/FSUNod/lib -lOMcblMT -Tm -o CAP_c -lB_stub -lA_cdr XXX_c.o
[UNICODEモジュール(NetCOBOL)の場合] /opt/FSUNod/lib/libOMcblUC.soをリンクします。
cobol -L/opt/FSUNod/lib -lOMcblUC -Tm -o CAP_c -lB_stub -lA_cdr XXX_c.o
サーバアプリケーションの作成
サーバアプリケーションを作成する場合の翻訳・リンク手順を以下に示します。
翻訳・リンク手順
- IDLコンパイルを実行します。
IDLc -cobol IDLファイル名
- 登録集を指定します。環境変数CORBAに以下のディレクトリを指定してください。
CORBA=/opt/FSUNod/include/COBOL
- 主プログラムを翻訳します。コンパイル方法を以下に示します(XXX_s.cbl: 主プログラムファイル名)。
[プロセスモードの場合/スレッドモード(Sun 日本語COBOL)の場合]
cobol -M -c XXX_s.cbl
[スレッドモード(PowerCOBOL97)の場合/UNICODEモジュール(NetCOBOL)の場合]
cobol -Tm -M -c XXX_s.cbl
- サーバアプリケーション(初期化処理部)を作成します(SAP_s: サーバアプリケーション名)。
[プロセスモードの場合] /opt/FSUNod/lib/libOMcbl.soをリンクします。
cobol -lOMcbl -o SAP_s XXX_s.o
[スレッドモード(Sun 日本語COBOL)の場合] /opt/FSUNod/lib/libOMcbl.soをリンクします。
ld /opt/SUNWnsun/lib/crti.o /opt/SUNWnsun/lib/crt1.o /opt/SUNWnsun/lib/crtn.o /opt/SUNWnsun/lib/cblstr.o
-L/opt/FSUNod/lib -lOMcbl XXX_s.o -o SAP_s -lFJBASE
-L/opt/FJSVCOBop/lib -lrcobol -lthread -lc -ldl
[スレッドモード(PowerCOBOL97)の場合] /opt/FSUNod/lib/libOMcblMT.soをリンクします。
cobol -lOMcblMT -Tm -o SAP_s XXX_s.o
[UNICODEモジュール(NetCOBOL)の場合] /opt/FSUNod/lib/libOMcblUC.soをリンクします。
cobol -lOMcblUC -Tm -o SAP_s XXX_s.o
- 1で生成されたスケルトン、CDRソースを翻訳します。コンパイル方法を以下に示します(A_cdr.cbl: CDRソースファイル名、B_skel.cbl: スタブファイル名)。
[プロセスモードの場合/スレッドモード(Sun 日本語COBOL)の場合]
cobol -G -o libA_cdr.so A_cdr.cbl
cobol -G -o libB_skel.so B_skel.cbl
[スレッドモード(PowerCOBOL97)の場合/UNICODEモジュール(NetCOBOL)の場合]
cobol -G -Tm -o libA_cdr.so A_cdr.cbl
cobol -G -Tm -o libB_skel.so B_skel.cbl
- COBOLライブラリをリンクしてサーバアプリケーション(インタフェース実装部分)を作成します(D_sa.cbl: COBOLファイル名、libD.so: ライブラリファイル名)。
[プロセスモードの場合] /opt/FSUNod/lib/libOMcbl.soをリンクします。
cobol -G -lcobol -lOMcbl -o libD.so -lA_cdr -lB_skel D_sa.cbl
[スレッドモード(Sun 日本語COBOL)の場合] /opt/FSUNod/lib/libOMcbl.soをリンクします。
cobol -G -lrcobol -lOMcbl -o libD.so -lA_cdr -lB_skel D_sa.cbl
[スレッドモード(PowerCOBOL97)の場合] /opt/FSUNod/lib/libOMcblMT.soをリンクします。
cobol -G -Tm -lrcobol -lOMcblMT -o libD.so -lA_cdr -lB_skel D_sa.cbl
[UNICODEモジュール(NetCOBOL)の場合] /opt/FSUNod/lib/libOMcblUC.soをリンクします。
cobol -G -Tm -lrcobol -lOMcblUC -o libD.so -lA_cdr -lB_skel D_sa.cbl
Linuxアプリケーションの作成
LinuxでCOBOLアプリケーションを作成する場合の注意点を以下に示します。

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

CORBAサービスのインストールディレクトリを"/opt/FJSVod"として説明します。
クライアントアプリケーションの作成
クライアントアプリケーションを作成する場合の翻訳・リンク手順を以下に示します。
翻訳・リンク手順
- IDLコンパイルを実行します。
IDLc -cobol IDLファイル名
- 登録集を指定します。環境変数CORBAに以下のディレクトリを指定してください。
CORBA=/opt/FJSVod/include/COBOL
- 主プログラムを翻訳します。コンパイル方法を以下に示します(XXX_c.cbl: 主プログラムファイル名)。
[プロセスモードの場合]
cobol -M -c XXX_c.cbl
[スレッドモードの場合/UNICODEモジュールの場合]
cobol -Tm -M -c XXX_c.cbl
- 1で生成されたスタブ、CDRソースを翻訳します。コンパイル方法を以下に示します(A_cdr.cbl: CDRソースファイル名、B_stub.cbl: スタブファイル名)。
[プロセスモードの場合]
cobol -G -o libA_cdr.so A_cdr.cbl
cobol -G -o libB_stub.so -L. -lA_cdr B_stub.cbl
[スレッドモードの場合/UNICODEモジュールの場合]
cobol -G -Tm -o libA_cdr.so A_cdr.cbl
cobol -G -Tm -o libB_stub.so -L. -lA_cdr B_stub.cbl
- COBOLライブラリをリンクしてクライアントアプリケーションを作成します(CAP_c:作成するクライアントアプリケーション名)。
[プロセスモードの場合] /opt/FJSVod/lib/libOMcbl.soをリンクします。
cobol -L/opt/FJSVod/lib -lOMcbl -o CAP_c -L. -lB_stub -lA_cdr XXX_c.o
[スレッドモードの場合] /opt/FJSVod/lib/libOMcblMT.soをリンクします。
cobol -L/opt/FJSVod/lib -lOMcblMT -Tm -o CAP_c -L. -lB_stub -lA_cdr XXX_c.o
[UNICODEモジュールの場合] /opt/FJSVod/lib/libOMcblUC.soをリンクします。
cobol -L/opt/FJSVod/lib -lOMcblUC -Tm -o CAP_c -L. -lB_stub -lA_cdr XXX_c.o
サーバアプリケーションの作成
サーバアプリケーションを作成する場合の翻訳・リンク手順を以下に示します。
翻訳・リンク手順
- IDLコンパイルを実行します。
IDLc -cobol IDLファイル名
- 登録集を指定します。環境変数CORBAに以下のディレクトリを指定してください。
CORBA=/opt/FJSVod/include/COBOL
- 主プログラムを翻訳します。コンパイル方法を以下に示します(XXX_s.cbl: 主プログラムファイル名)。
[プロセスモードの場合]
cobol -M -c XXX_s.cbl
[スレッドモードの場合/UNICODEモジュールの場合]
cobol -Tm -M -c XXX_s.cbl
- サーバアプリケーション(初期化処理部)を作成します(SAP_s: サーバアプリケーション名)。
[プロセスモードの場合] /opt/FJSVod/lib/libOMcbl.soをリンクします。
cobol -L/opt/FJSVod/lib -lOMcbl -o SAP_s XXX_s.o
[スレッドモードの場合] /opt/FJSVod/lib/libOMcblMT.soをリンクします。
cobol -L/opt/FJSVod/lib -lOMcblMT -Tm -o SAP_s XXX_s.o
[UNICODEモジュールの場合] /opt/FJSVod/lib/libOMcblUC.soをリンクします。
cobol -L/opt/FJSVod/lib -lOMcblUC -Tm -o SAP_s XXX_s.o
- 1で生成されたスケルトン、CDRソースを翻訳します。コンパイル方法を以下に示します(A_cdr.cbl: CDRソースファイル名、B_skel.cbl: スタブファイル名)。
[プロセスモードの場合の場合]
cobol -G -o libA_cdr.so A_cdr.cbl
cobol -G -o libB_skel.so B_skel.cbl
[スレッドモードの場合/UNICODEモジュールの場合]
cobol -G -Tm -o libA_cdr.so A_cdr.cbl
cobol -G -Tm -o libB_skel.so B_skel.cbl
- COBOLライブラリをリンクしてサーバアプリケーション(インタフェース実装部分)を作成します(D_sa.cbl: COBOLファイル名、libD.so: ライブラリファイル名)。
[プロセスモードの場合] /opt/FJSVod/lib/libOMcbl.soをリンクします。
cobol -G -L/opt/FJSVod/lib -lOMcbl -o libD.so -L. -lA_cdr -lB_skel D_sa.cbl
[スレッドモードの場合] /opt/FSUNod/lib/libOMcblMT.soをリンクします。
cobol -G -Tm -L/opt/FJSVod/lib -lOMcblMT -o libD.so -L. -lA_cdr -lB_skel D_sa.cbl
[UNICODEモジュールの場合] /opt/FJSVod/lib/libOMcblUC.soをリンクします。
cobol -G -Tm -L/opt/FJSVod/lib -lOMcblUC -o libD.so -L. -lA_cdr -lB_skel D_sa.cbl
Copyright 2006 FUJITSU LIMITED