“第2章 CORBAアプリケーション開発時の留意事項”についても参照してください。
メッセージについて
COBOLアプリケーション実行時に、COBOLランタイムライブラリからメッセージが表示される場合があります。JMPではじまるメッセージが出力されていた場合は、COBOL使用手引書(実行時のメッセージ)を参照してください。
関数名/変数名の扱い
関数名の長さは60文字までです。60文字を超える場合、COBOLコンパイラにてコンパイルエラーとなりますので注意してください。IDLファイルを定義する場合、module名、interface名、オペレーション名を合わせた長さが55文字以上になると、各生成するファイルの関数名が60文字を超える場合がありますので注意してください。
変数名の長さは30文字までです。30文字を超える場合、30文字以降を切り捨てます。
変数名の文字長が30文字を超える場合で、同一名になる場合、27文字目以降を数値に置き換えます。
アンダースコア(“_”)は、COBOLで使用できないため、ハイフン(“-”)に置換します。ただし、オペレーション名、インタフェース名で使用されているアンダースコア(“_”)はそのまま使用します。
IDLファイルからクラス名と変数名の関係で、同じ名称に変換される場合、以下のケースで変数の型等が不明になるため、使用してはいけません。
typedef long foo_bar;
interface foo { typedef short bar; };
COBOLの予約語の文字列がIDLファイルに記述されている場合、対応可能な予約語については文字列の前に“IDL-”を付加します。対応していない予約語の文字列はIDLファイルに記述できません。予約語については、COBOLのマニュアルを参照してください。
対応可能な予約語については対応可能な予約語の一覧を参照してください。
const宣言は、COBOLの“SYMBOLIC CONSTANT”になります。OMG規定では“>>CONSTANT”文節に対応しますが、COBOLで未サポートのため“SYMBOLIC CONSTANT”になります。
COBOLでのNVListは、NamedValue構造体(登録集NAMEDVALUE.cbl)の配列を指すアドレスを格納するポインタです。
パラメタの設定は、CORBA-NVLIST-ADD-ITEMで行います。その際、以下の点に注意が必要です。
初期化(CORBA-ORB-CREATE-LIST使用)が必要です。
CORBA-STRING-SETで値を設定されたポインタを指定し、省略時にはNULLを指定してください。
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を使用します。
パラメタの値のアドレスを設定します。(注意、STRINGやOBJECTのようなポインタで扱われるデータも、FUNCTION ADDRでアドレスを取り出して設定します。)ITEM-FLAGにCORBA-ARG-OUTなどを指定するときは、NULLを設定します(要)。
VALUEの領域の長さを指定します。省略時は、0を指定します。
登録集FLAGS.cblを使用します。省略不可。
領域の解放
NVList自体を解放するときは、CORBA-NVLIST-FREE、NVListに設定された値だけを解放したいときは、CORBA-NVLIST-FREE-MEMBERを使用します。
文字列の設定について
関数で文字列をパラメタに持つ場合、文字列をCORBA-STRING-SET関数で設定する必要があります。以下に例を示します。
*文字列の長さを求めます MOVE FUNCTION LENG (CORBA-ORB-OBJECTID-IMPLREP) TO STRING-LENGTH. *文字列を作業用のTEMP-BUFに格納します CALL "CORBA-STRING-SET" USING TEMP-BUF STRING-LENGTH CORBA-ORB-OBJECTID-IMPLREP. *関数を呼び出します CALL "CORBA-ORB-RESOLVE-INITIAL-REFERENCES" USING ORB TEMP-BUF ENV IMPL-REP.
PIC X(m)で宣言されたin,out,inoutの各文字型への代入は、MOVE命令で行います。ただし、COBOL以外にマッピングされたアプリケーションで扱える文字列長は'\0'を含みます。
日本語文字列を扱う場合、COBOLの日本語項目N(またはNC)から文字項目Xに直接代入することはできません。CORBA-STRING-SET関数またはCORBA-WSTRING-SET関数でNULL文字を設定したうえで使用してください。なお、文字列の取出しはCORBA-STRING-GET関数またはCORBA-WSTRING-GET関数を使用します。
Windows(R)アプリケーション作成時/運用時の注意事項
サーバアプリケーションは、動的リンク構造(主プログラムのロード時に、呼び出される関数すべてをロードする)で作成する必要があります。
動的プログラム構造(ロードが関数の呼出し時に行われる)では、作成しないでください。
このため、アプリケーションの翻訳時は、翻訳オプションとしてDLOADオプションは指定しないでください。
サーバアプリケーションのメソッド部では、DISPLAY文を使用しないでください。
サーバアプリケーションで各インタフェース使用時にオブジェクトへのポインタが渡された場合、ユーザ例外を返すことがあります(例外コード:“BAD PARAM”)。ENVIRONMENTをパラメタに持つ場合には、例外情報を参照してください。
サーバアプリケーションをshared、unsharedタイプとしてインプリメンテーションリポジトリに登録する場合は、以下の設定を行ってください。また、インプリメンテーションリポジトリの登録では、設定項目envは使用しないでください。
システムの環境変数に次の設定を追加してください。
@EnvSetWindow=UNUSE
システムの環境変数PATHに、アプリケーションのメソッド実装部であるDLLファイルのパスを追加してください。
CORBAワークユニット運用で翻訳オプション“SSOUT(環境変数情報名) ”および環境変数情報“@MessOutFile”を指定せずに、標準出力、標準エラー出力にデータを出力する場合、主プログラムの翻訳オプションに“MAIN(MAIN) ”を指定してください。
クライアントアプリケーションでは、BOA、ServerRequestインタフェースは使用できません。
アプリケーションの運用前に以下の環境変数を設定する必要があります。
@WinCloseMsg=OFF
クライアントアプリケーションとサーバアプリケーションを同一フォルダで作成しないでください。クライアントアプリケーションとサーバアプリケーションとで同名のオブジェクトファイルが生成され、アプリケーションが異常な動作をする可能性があります。
Windows Server(R) for Itanium-based SystemsまたはWindows Server(R) x64 Editionsの場合、UNION型のマッピングが32bit版から変更されます。Windows Server(R) for Itanium-based SystemsまたはWindows Server(R) x64 Editions環境にて再度IDLコンパイラを実施し、ソースファイルを再作成してください。
COBOLサーバアプリケーションで使用するダイナミックリンクライブラリの名称は、サーバアプリケーションのインタフェース宣言と合わせる必要があります。以下に例を示します。
モジュール名:oddemo インタフェース名:calculator
ダイナミックリンクライブラリ名:ODDEMO-CALCULATOR.DLL
Solaris/Linuxアプリケーション作成時/運用時の注意事項
Shift JIS環境でアプリケーションを運用する場合は、CBR_CODE_CHECK=noを設定してください。
クライアントアプリケーションでは、BOA, ServerRequestインタフェースは使用できません。
サーバアプリケーションは、動的リンク構造(主プログラムのロード時に、呼び出される関数すべてをロードする)で作成する必要があります。
動的プログラム構造(ロードが関数の呼出し時に行われる)では、作成しないでください。
このため、アプリケーションの翻訳時は、翻訳オプションとしてDLOADオプションは指定しないでください。
COBOLサーバアプリケーションで使用するライブラリの名称は、サーバアプリケーションのインタフェース宣言と合わせる必要があります。以下に例を示します。
モジュール名:oddemo インタフェース名:calculator
ライブラリ名:libODDEMO-CALCULATOR.so
Windows(R)アプリケーションの作成
Windows(R)でCOBOLアプリケーションを作成する場合の注意点を以下に示します。なお、詳細な翻訳・リンク方法に関しては、NetCOBOLのマニュアルを参照してください。
CORBAサービスのインストールフォルダを“C:\Interstage\ODWIN”として説明します。
クライアントアプリケーションの作成
クライアントアプリケーションを作成する場合の翻訳・リンク手順を以下に示します。
IDLコンパイルを実行します。
IDLc -cobol IDLファイル名
1.で生成されたスタブ、CDRソースをCOBOLソースファイルに登録し、主プログラムと合わせて翻訳します。翻訳時に「翻訳オプション」と環境変数CORBAに登録集のディレクトリを指定してください。
リンクするライブラリには以下のファイルを指定します。
[プロセスモードの場合]
C:\Interstage\ODWIN\LIB\ODCOBCBL.LIB
[スレッドモードの場合]
C:\Interstage\ODWIN\LIB\ODCOBCBLMT.LIB
[プロセスモード/スレッドモード(UNICODE、UTF8モジュール)の場合]
C:\Interstage\ODWIN\LIB\ODCOBCBLUC.LIB
IDLコンパイルを実行します。
IDLc -cobol IDLファイル名
1.で生成されたスタブ、CDRソースを、主プログラムと合わせて翻訳します。翻訳時に「翻訳オプション」と環境変数COB_CORBAに登録集のディレクトリを指定してください。(XXX_C.cbl: 主プログラムファイル名)
set COB_CORBA=C:\Interstage\ODWIN\INCLUDE\COBOL
COBOL.EXE -NM "IDLファイル名_STUB.cbl"
COBOL.EXE -NM "IDLファイル名_CDR.cbl"
COBOL.EXE -M "XXX_C.cbl"
翻訳したオブジェクトを結合し、クライアントアプリケーションを作成します。「リンクオプション」には以下のファイルを指定します。
Windows Server(R) for Itanium-based Systemsの場合
[共通(NetCOBOL V9.0の場合)]
F6AGCIMP.LIB
libcmt.lib
bufferoverflowU.lib
kernel32.lib
[共通(NetCOBOL V10.0以降の場合)]
F6AGCIMP.LIB
libcmt.lib
kernel32.lib
[プロセスモードの場合]
C:\Interstage\ODWIN\LIB\ia64\ODCOBCBL.LIB
[スレッドモードの場合]
C:\Interstage\ODWIN\LIB\ia64\ODCOBCBLMT.LIB
[プロセスモード/スレッドモード(UNICODE、UTF8モジュール)の場合]
C:\Interstage\ODWIN\LIB\ia64\ODCOBCBLUC.LIB
Windows Server(R) x64 Editionsの場合
[共通]
F4AGCIMP.LIB
libcmt.lib
kernel32.lib
[プロセスモードの場合]
C:\Interstage\ODWIN\LIB\x64\ODCOBCBL.LIB
[スレッドモードの場合]
C:\Interstage\ODWIN\LIB\x64\ODCOBCBLMT.LIB
[プロセスモード/スレッドモード(UNICODE、UTF8モジュール)の場合]
C:\Interstage\ODWIN\LIB\x64\ODCOBCBLUC.LIB
IDLファイル名_STUB.CBL
IDLファイル名_CDR.CBL
[共通]
NAMEオプションを指定してください。
[スレッドモードの場合]
THREAD(MULTI)オプションを指定してください。
[プロセスモード/スレッドモード(UNICODE、UTF8モジュール)の場合]
RCSオプション(UCS2-Unicode(UCS2)を使用する)を指定してください。
スレッドモードの場合、THREAD(MULTI)オプションを指定してください。
翻訳時の「翻訳オプション」に関しては、NetCOBOLのマニュアルを参照してください。
以下の環境変数を設定してください。
64bitアプリケーション
COB_CORBA=C:\Interstage\ODWIN\INCLUDE\COBOL
32bitアプリケーション
CORBA=C:\Interstage\ODWIN\INCLUDE\COBOL
スタブ、CDRソースで定義された目的オブジェクト
サーバアプリケーションの翻訳・リンク
サーバアプリケーション作成時の翻訳・リンク手順と指定するファイル・オプションを以下に示します。なお、詳細な翻訳・リンク方法に関しては、NetCOBOLのマニュアルを参照してください。
IDLコンパイルを実行します。
IDLc -cobol IDLファイル名
1.で生成されたスケルトン、CDRソースを翻訳し、サーバアプリケーション(インタフェース実装部分)を翻訳し、オブジェクトファイル(*.obj)を作成します。翻訳時に「翻訳オプション」と、環境変数COB_CORBAに登録集のディレクトリを指定してください。(XXX_SA.cbl: インタフェース実装プログラムファイル名)
COBOL.EXE -NM "IDLファイル名_インタフェース名_SKEL.CBL"
COBOL.EXE -NM "IDLファイル名_SKEL.cbl"
COBOL.EXE -NM "IDLファイル名_CDR.cbl"
COBOL.EXE -NM "XXX_SA.cbl"
サーバアプリケーション(初期化処理部)を、同様の手順で翻訳します。(Windows(R)アプリケーション作成時/運用時の注意事項 を参照)(XXX_S.cbl: 主プログラムファイル名)
COBOL.EXE -M "XXX_S.cbl
翻訳したオブジェクトを結合し、DLLファイルを作成します。DLLファイル名は、モジュール名-インタフェース名.DLLです。「リンクオプション」には以下のファイルを指定します。
Windows Server(R) for Itanium-based Systemsの場合
[共通(NetCOBOL V9.0の場合)]
F6AGCIMP.LIB
libcmt.lib
bufferoverflowU.lib
kernel32.lib
[共通(NetCOBOL V10.0以降の場合)]
F6AGCIMP.LIB
libcmt.lib
kernel32.lib
[プロセスモードの場合]
C:\Interstage\ODWIN\LIB\ia64\ODCOBCBLSV.LIB
[スレッドモードの場合]
C:\Interstage\ODWIN\LIB\ia64\ODCOBCBLMTSV.LIB
[プロセスモード/スレッドモード(UNICODE、UTF8モジュール)の場合]
C:\Interstage\ODWIN\LIB\ia64\ODCOBCBLSVUC.LIB
Windows Server(R) x64 Editionsの場合
[共通]
F4AGCIMP.LIB
libcmt.lib
kernel32.lib
[プロセスモードの場合]
C:\Interstage\ODWIN\LIB\x64\ODCOBCBLSV.LIB
[スレッドモードの場合]
C:\Interstage\ODWIN\LIB\x64\ODCOBCBLMTSV.LIB
[プロセスモード/スレッドモード(UNICODE、UTF8モジュール)の場合]
C:\Interstage\ODWIN\LIB\x64\ODCOBCBLSVUC.LIB
サーバアプリケーションのメイン処理を主プログラムとして、実行プログラムを作成します。この際「リンクオプション」には以下のファイルを指定します。
Windows Server(R) for Itanium-based Systemsの場合
[共通(NetCOBOL V9.0の場合)]
F6AGCIMP.LIB
libcmt.lib
bufferoverflowU.lib
kernel32.lib
[共通(NetCOBOL V10.0以降の場合)]
F6AGCIMP.LIB
libcmt.lib
kernel32.lib
[プロセスモードの場合]
C:\Interstage\ODWIN\LIB\ia64\ODCOBCBLSV.LIB
[スレッドモードの場合]
C:\Interstage\ODWIN\LIB\ia64\ODCOBCBLMTSV.LIB
[プロセスモード/スレッドモード(UNICODE、UTF8モジュール)の場合]
C:\Interstage\ODWIN\LIB\ia64\ODCOBCBLSVUC.LIB
Windows Server(R) x64 Editionsの場合
[共通]
F4AGCIMP.LIB
libcmt.lib
kernel32.lib
[プロセスモードの場合]
C:\Interstage\ODWIN\LIB\x64\ODCOBCBLSV.LIB
[スレッドモードの場合]
C:\Interstage\ODWIN\LIB\x64\ODCOBCBLMTSV.LIB
[プロセスモード/スレッドモード(UNICODE、UTF8モジュール)の場合]
C:\Interstage\ODWIN\LIB\x64\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、UTF8モジュール)の場合]
RCSオプション(UCS2-Unicode(UCS2)を使用する)を指定してください。
スレッドモードの場合、THREAD(MULTI)オプションを指定してください。
翻訳時の「翻訳オプション」に関しては、NetCOBOLのマニュアルを参照してください。
以下の環境変数を設定してください。
COB_CORBA=C:\Interstage\ODWIN\INCLUDE\COBOL
モジュール名-インタフェース名-オペレーション名.OBJ スケルトン、CDRソースで定義された目的オブジェクト
Solarisアプリケーションの作成
SolarisでCOBOLアプリケーションを作成する場合の注意点を以下に示します。
開発環境として“NetCOBOL”を使用してUNICODEのアプリケーションを開発する場合、ソースファイルおよび登録集は、UNICODE(UTF-8)で作成してください。
また、翻訳/リンク/実行を行う場合、コード系には“UNICODE”を設定してください。
CORBAサービスのインストールディレクトリを“/opt/FSUNod”として説明します。
クライアントアプリケーションの作成
クライアントアプリケーションを作成する場合の翻訳・リンク手順を以下に示します。
IDLコンパイルを実行します。
IDLc -cobol IDLファイル名
登録集を指定します。環境変数CORBAに以下のディレクトリを指定してください。
CORBA=/opt/FSUNod/include/COBOL
主プログラムを翻訳します。コンパイル方法を以下に示します(XXX_c.cbl: 主プログラムファイル名)。
[プロセスモードの場合]
cobol -M -c XXX_c.cbl
[スレッドモードの場合]
cobol -Tm -M -c XXX_c.cbl
[プロセスモード(UNICODE、UTF8モジュール)の場合]
cobol -M -c XXX_c.cbl
[スレッドモード(UNICODE、UTF8モジュール)の場合]
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 -lA_cdr B_stub.cbl
[スレッドモードの場合]
cobol -G -Tm -o libA_cdr.so A_cdr.cbl
cobol -G -Tm -o libB_stub.so -lA_cdr B_stub.cbl
[プロセスモード/スレッドモード(UNICODE、UTF8モジュール)の場合]
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
[スレッドモードの場合] /opt/FSUNod/lib/libOMcblMT.soをリンクします。
cobol -L/opt/FSUNod/lib -lOMcblMT -Tm -o CAP_c -lB_stub -lA_cdr XXX_c.o
[プロセスモード/スレッドモード(UNICODE、UTF8モジュール)の場合] /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: 主プログラムファイル名)。
[プロセスモードの場合]
cobol -M -c XXX_s.cbl
[スレッドモードの場合]
cobol -Tm -M -c XXX_s.cbl
[プロセスモード(UNICODE、UTF8モジュール)の場合]
cobol -M -c XXX_s.cbl
[スレッドモード(UNICODE、UTF8モジュール)の場合]
cobol -Tm -M -c XXX_s.cbl
サーバアプリケーション(初期化処理部)を作成します(SAP_s: サーバアプリケーション名)。
[プロセスモードの場合] /opt/FSUNod/lib/libOMcbl.soをリンクします。
cobol -lOMcbl -o SAP_s XXX_s.o
[スレッドモードの場合] /opt/FSUNod/lib/libOMcblMT.soをリンクします。
cobol -lOMcblMT -Tm -o SAP_s XXX_s.o
[プロセスモード/スレッドモード(UNICODE、UTF8モジュール)の場合] /opt/FSUNod/lib/libOMcblUC.soをリンクします。
cobol -lOMcblUC -Tm -o SAP_s XXX_s.o
1.で生成されたスケルトン、CDRソースを翻訳します。コンパイル方法を以下に示します(A_cdr.cbl: CDRソースファイル名、B_skel.cbl: スケルトンファイル名)。
なお、IDL定義に基本データ型以外が含まれる場合、領域獲得用スケルトンファイルのコンパイルおよびリンクも必要です。
[プロセスモードの場合]
cobol -G -o libA_cdr.so A_cdr.cbl
cobol -G -o libB_skel.so B_skel.cbl
[スレッドモードの場合]
cobol -G -Tm -o libA_cdr.so A_cdr.cbl
cobol -G -Tm -o libB_skel.so B_skel.cbl
[プロセスモード/スレッドモード(UNICODE、UTF8モジュール)の場合]
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
[スレッドモードの場合] /opt/FSUNod/lib/libOMcblMT.soをリンクします。
cobol -G -Tm -lrcobol -lOMcblMT -o libD.so -lA_cdr -lB_skel D_sa.cbl
[プロセスモード/スレッドモード(UNICODE、UTF8モジュール)の場合] /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”を設定してください。
UNICODE でCOBOL翻訳を行う場合、RCSオプションで“UCS2”を指定してください。このときエンディアンが選択可能でビッグエンディアン(BE)、リトルエンディアン(LE)のいずれかを指定します。
CORBAサービスのインストールディレクトリを“/opt/FJSVod”として説明します。
クライアントアプリケーションの作成
クライアントアプリケーションを作成する場合の翻訳・リンク手順を以下に示します。
IDLコンパイルを実行します。
IDLc -cobol IDLファイル名
登録集を指定します。環境変数CORBAに以下のディレクトリを指定してください。
CORBA=/opt/FJSVod/include/COBOL
主プログラムを翻訳します。コンパイル方法を以下に示します(XXX_c.cbl: 主プログラムファイル名)。
[プロセスモードの場合]
cobol -M -c XXX_c.cbl
[スレッドモードの場合]
cobol -Tm -M -c XXX_c.cbl
[プロセスモード(UNICODE、UTF8モジュール)の場合]
cobol -M -c XXX_c.cbl
[スレッドモード(UNICODE、UTF8モジュール)の場合]
cobol -Tm -M -c XXX_c.cbl
[プロセスモード(UNICODE、UTF8モジュールでビッグエンディアンを指定)の場合]
cobol -WC,"RCS(UCS2,BE)" -M -c XXX_c.cbl
[スレッドモード(UNICODE、UTF8モジュールでビッグエンディアンを指定)の場合]
cobol -Tm -WC,"RCS(UCS2,BE)" -M -c XXX_c.cbl
[プロセスモード(UNICODE、UTF8モジュールでリトルエンディアンを指定)の場合]
cobol -WC,"RCS(UCS2,LE)" -M -c XXX_c.cbl
[スレッドモード(UNICODE、UTF8モジュールでリトルエンディアンを指定)の場合]
cobol -Tm -WC,"RCS(UCS2,LE)" -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
[スレッドモードの場合]
cobol -G -Tm -o libA_cdr.so A_cdr.cbl
cobol -G -Tm -o libB_stub.so -L. -lA_cdr B_stub.cbl
[プロセスモード/スレッドモード(UNICODE、UTF8モジュール)の場合]
cobol -G -Tm -o libA_cdr.so A_cdr.cbl
cobol -G -Tm -o libB_stub.so -L. -lA_cdr B_stub.cbl
[プロセスモード/スレッドモード(UNICODE、UTF8モジュールでビッグエンディアンを指定)の場合]
cobol -G -Tm -WC,"RCS(UCS2,BE)" -o libA_cdr.so A_cdr.cbl
cobol -G -Tm -WC,"RCS(UCS2,BE)" -o libB_stub.so -L. -lA_cdr B_stub.cbl
[プロセスモード/スレッドモード(UNICODE、UTF8モジュールでリトルエンディアンを指定)の場合]
cobol -G -Tm -WC,"RCS(UCS2,LE)" -o libA_cdr.so A_cdr.cbl
cobol -G -Tm -WC,"RCS(UCS2,LE)" -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、UTF8モジュール)の場合] /opt/FJSVod/lib/libOMcblUC.soをリンクします。
cobol -L/opt/FJSVod/lib -lOMcblUC -Tm -o CAP_c -L. -lB_stub -lA_cdr XXX_c.o
[プロセスモード/スレッドモード(UNICODE、UTF8モジュールでビッグエンディアンを指定)の場合]
/opt/FJSVod/lib/libOMcblUCBE.soをリンクします。
cobol -L/opt/FJSVod/lib -lOMcblUCBE -Tm -o CAP_c -L. -lB_stub -lA_cdr XXX_c.o
[プロセスモード/スレッドモード(UNICODE、UTF8モジュールでリトルエンディアンを指定)の場合]
/opt/FJSVod/lib/libOMcblUCLE.soをリンクします。
cobol -L/opt/FJSVod/lib -lOMcblUCLE -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
[スレッドモードの場合]
cobol -Tm -M -c XXX_s.cbl
[プロセスモード(UNICODE、UTF8モジュール)の場合]
cobol -M -c XXX_s.cbl
[スレッドモード(UNICODE、UTF8モジュール)の場合]
cobol -Tm -M -c XXX_s.cbl
[プロセスモード(UNICODE、UTF8モジュールでビッグエンディアンを指定)の場合]
cobol -WC,"RCS(UCS2,BE)" -M -c XXX_s.cbl
[スレッドモード(UNICODE、UTF8モジュールでビッグエンディアンを指定)の場合]
cobol -Tm -WC,"RCS(UCS2,BE)" -M -c XXX_s.cbl
[プロセスモード (UNICODE、UTF8モジュールでリトルエンディアンを指定)の場合]
cobol -WC,"RCS(UCS2,LE)" -M -c XXX_s.cbl
[スレッドモード(UNICODE、UTF8モジュールでリトルエンディアンを指定)の場合]
cobol -Tm -WC,"RCS(UCS2,LE)" -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、UTF8モジュール)の場合] /opt/FJSVod/lib/libOMcblUC.soをリンクします。
cobol -L/opt/FJSVod/lib -lOMcblUC -Tm -o SAP_s XXX_s.o
[プロセスモード/スレッドモード(UNICODE、UTF8モジュールでビッグエンディアンを指定)の場合]
/opt/FJSVod/lib/libOMcblUCBE.soをリンクします。
cobol -L/opt/FJSVod/lib -lOMcblUCBE -Tm -o SAP_s XXX_s.o
[プロセスモード/スレッドモード(UNICODE、UTF8モジュールでリトルエンディアンを指定)の場合]
/opt/FJSVod/lib/libOMcblUCLE.soをリンクします。
cobol -L/opt/FJSVod/lib -lOMcblUCLE -Tm -o SAP_s XXX_s.o
1で生成されたスケルトン、CDRソースを翻訳します。コンパイル方法を以下に示します(A_cdr.cbl: CDRソースファイル名、B_skel.cbl: スケルトンファイル名)。
なお、IDL定義に基本データ型以外が含まれる場合、領域獲得用スケルトンファイルのコンパイルおよびリンクも必要です。
[プロセスモードの場合の場合]
cobol -G -o libA_cdr.so A_cdr.cbl
cobol -G -o libB_skel.so B_skel.cbl
[スレッドモードの場合]
cobol -G -Tm -o libA_cdr.so A_cdr.cbl
cobol -G -Tm -o libB_skel.so B_skel.cbl
[プロセスモード/スレッドモード(UNICODE、UTF8モジュール)の場合]
cobol -G -Tm -o libA_cdr.so A_cdr.cbl
cobol -G -Tm -o libB_skel.so B_skel.cbl
[プロセスモード/スレッドモード(UNICODE、UTF8モジュールでビッグエンディアンを指定)の場合]
cobol -G -Tm -WC,"RCS(UCS2,BE)" -o libA_cdr.so A_cdr.cbl
cobol -G -Tm -WC,"RCS(UCS2,BE)" -o libB_skel.so B_skel.cbl
[プロセスモード/スレッドモード(UNICODE、UTF8モジュールでリトルエンディアンを指定)の場合]
cobol -G -Tm -WC,"RCS(UCS2,LE)" -o libA_cdr.so A_cdr.cbl
cobol -G -Tm -WC,"RCS(UCS2,LE)" -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、UTF8モジュール)の場合] /opt/FJSVod/lib/libOMcblUC.soをリンクします。
cobol -G -Tm -L/opt/FJSVod/lib -lOMcblUC -o libD.so -L. -lA_cdr -lB_skel D_sa.cbl
[プロセスモード/スレッドモード(UNICODE、UTF8モジュールでビッグエンディアンを指定)の場合]
/opt/FJSVod/lib/libOMcblUCBE.soをリンクします。
cobol -G -Tm -WC,"RCS(UCS2,BE)" -L/opt/FJSVod/lib -lOMcblUCBE -o libD.so -L. -lA_cdr -lB_skel D_sa.cbl
[プロセスモード/スレッドモード(UNICODE、UTF8モジュールでリトルエンディアンを指定)の場合]
/opt/FJSVod/lib/libOMcblUCLE.soをリンクします。
cobol -G -Tm -WC,"RCS(UCS2,LE)" -L/opt/FJSVod/lib -lOMcblUCLE -o libD.so -L. -lA_cdr -lB_skel D_sa.cbl
対応可能な予約語の一覧
以下に対応可能な予約語を示します。
"ACCEPT"、 "ACCESS"、 "ACTUAL"、 "ADD"、 "ADDRESS"、 "ADVANCING"、 "AFTER"、 "ALL"、 "ALPHABET"、 "ALPHABETIC"、 "ALPHANUMERIC"、 "ALSO"、 "ALTER"、 "ALTERNATE"、 "AND"、 "ANY"、 "APPLY"、 "ARE"、 "AREA"、 "AREAS"、 "ARITHMETIC"、 "AS"、 "ASCENDING"、 "ASSIGN"、 "AT"、 "AUTHOR"、 "AUTO"、 "AUTOMATIC"、 "BASED"、 "BEFORE"、 "BEGINNING"、 "BELL"、 "BINARY"、 "BIT"、 "BITS"、 "BLANK"、 "BLINK"、 "BLOCK"、 "BOTTOM"、 "BY"、 "CALL"、 "CANCEL"、 "CBL"、 "CD"、 "CF"、 "CH"、 "CHANGED"、 "CHARACTER"、 "CHARACTERS"、 "CLASS"、 "CLOSE"、 "COBOL"、 "CODE"、 "COLLATING"、 "COLUMN"、 "COMMA"、 "COMMAND"、 "COMMIT"、 "COMMON"、 "COMMUNICATION"、 "COMP"、 "COMPLEX"、 "COMPUTATIONAL"、 "COMPUTE"、 "CONFIGURATION"、 "CONNECT"、 "CONSTANT"、 "CONTAINED"、 "CONTAINS"、 "CONTENT"、 "CONTINUE"、 "CONTROL"、 "CONTROLS"、 "CONVERTING"、 "COPY"、 "CORR"、 "CORRESPONDING"、 "COUNT"、 "CRP"、 "CRT"、 "CURRENCY"、 "CURRENT"、 "CURSOR"、 "DATA"、 "DATE"、 "DAY"、 "DB"、 "DE"、 "DEBUGGING"、 "DEFAULT"、 "DELETE"、 "DELIMITED"、 "DELIMITER"、 "DEPENDING"、 "DESCENDING"、 "DESTINATION"、 "DETAIL"、 "DEVICE"、 "DIRECT"、 "DISABLE"、 "DISCONNECT"、 "DISJOINING"、 "DISPLAY"、 "DIVIDE"、 "DIVISION"、 "DOWN"、 "DUPLICATE"、 "DUPLICATES"、 "DYNAMIC"、 "EGCS"、 "EGI"、 "EJECT"、 "ELSE"、 "EMI"、 "EMPTY"、 "ENABLE"、 "END"、 "ENDCOBOL"、 "ENDING"、 "ENTER"、 "ENTRY"、 "ENVIRONMENT"、 "EOL"、 "EOP"、 "EOS"、 "EQUAL"、 "EQUALS"、 "ERASE"、 "ERROR"、 "ESI"、 "EVALUATE"、 "EVERY"、 "EXACT"、 "EXAMINE"、 "EXCEEDS"、 "EXCEPTION"、 "EXCLUSIVE"、 "EXEC"、 "EXIT"、 "EXOR"、 "EXTEND"、 "EXTERNAL"、 "FD"、 "FETCH"、 "FILE"、 "FILES"、 "FILLER"、 "FINAL"、 "FIND"、 "FINISH"、 "FIRST"、 "FLADD"、 "FOOTING"、 "FOR"、 "FORM"、 "FORMAT"、 "FORMATTED"、 "FREE"、 "FROM"、 "FULL"、 "FUNCTION"、 "GENERATE"、 "GET"、 "GIVING"、 "GLOBAL"、 "GO"、 "GOBACK"、 "GREATER"、 "GRID"、 "GROUP"、 "HEADING"、 "HIGHLIGHT"、 "ID"、 "IDENTIFICATION"、 "IF"、 "IN"、 "INCLUDE"、 "INDEX"、 "INDEXED"、 "INDICATE"、 "INITIAL"、 "INITIALIZE"、 "INITIATE"、 "INPUT"、 "INSPECT"、 "INSTALLATION"、 "INTO"、 "INVALID"、 "IS"、 "JAPANESE"、 "JOB"、 "JOINING"、 "JUST"、 "JUSTIFIED"、 "KANJI"、 "KEEP"、 "KEY"、 "LABEL"、 "LAST"、 "LD"、 "LEADING"、 "LEFT"、 "LEFTLINE"、 "LENGTH"、 "LESS"、 "LIMIT"、 "LIMITED"、 "LIMITS"、 "LINAGE"、 "LINE"、 "LINES"、 "LINKAGE"、 "LOCALLY"、 "LOCK"、 "LOWLIGHT"、 "MANUAL"、 "MEMBER"、 "MEMORY"、 "MERGE"、 "MESSAGE"、 "MODE"、 "MODIFY"、 "MODULES"、 "MOVE"、 "MULTICON"、 "MULTIPLE"、 "MULTIPLY"、 "NAMED"、 "NATIONAL"、 "NATIVE"、 "NEGATIVE"、 "NEXT"、 "NO"、 "NOMINAL"、 "NONE"、 "NOT"、 "NOTE"、 "NULL"、 "NULLS"、 "NUMBER"、 "NUMERIC"、 "OCCURS"、 "OF"、 "OFF"、 "OMITTED"、 "ON"、 "ONLY"、 "OPEN"、 "OPTIONAL"、 "OR"、 "ORDER"、 "ORGANIZATION"、 "OTHER"、 "OTHERWISE"、 "OUTPUT"、 "OVERFLOW"、 "OVERLINE"、 "OWNER"、 "PADDING"、 "PAGE"、 "PASSWORD"、 "PERFORM"、 "PF"、 "PH"、 "PIC"、 "PICTURE"、 "PLUS"、 "POINTER"、 "POSITION"、 "POSITIONING"、 "POSITIVE"、 "PREFIX"、 "PRESENT"、 "PREVIOUS"、 "PRINTING"、 "PRIOR"、 "PROCEDURE"、 "PROCEDURES"、 "PROCEED"、 "PROCESSING"、 "PROGRAM"、 "PROMPT"、 "PROTECTED"、 "PURGE"、 "QUEUE"、 "QUOTE"、 "QUOTES"、 "RANDOM"、 "RANGE"、 "RD"、 "READ"、 "READY"、 "REALM"、 "RECEIVE"、 "RECONNECT"、 "RECORD"、 "RECORDING"、 "RECORDS"、 "REDEFINES"、 "REEL"、 "REFERENCE"、 "REFERENCES"、 "RELATION"、 "RELATIVE"、 "RELEASE"、 "RELOAD"、 "REMAINDER"、 "REMARKS"、 "REMOVAL"、 "RENAMES"、 "REPEATED"、 "REPLACE"、 "REPLACING"、 "REPORT"、 "REPORTING"、 "REPORTS"、 "RERUN"、 "REQUIRED"、 "RESERVE"、 "RESET"、 "RETAINING"、 "RETRIEVAL"、 "RETURN"、 "REVERSED"、 "REWIND"、 "REWRITE"、 "RF"、 "RH"、 "RIGHT"、 "ROLLBACK"、 "ROUNDED"、 "RUN"、 "SA"、 "SAME"、 "SCREEN"、 "SD"、 "SEARCH"、 "SECTION"、 "SECURITY"、 "SECURE"、 "SEEK"、 "SEGMENT"、 "SELECT"、 "SELECTED"、 "SELECTIVE"、 "SEND"、 "SENTENCE"、 "SEPARATE"、 "SEQUENCE"、 "SEQUENTIAL"、 "SERVICE"、 "SESSION"、 "SET"、 "SHARED"、 "SIGN"、 "SIMPLE"、 "SINGLE"、 "SIZE"、 "SKIP1"、 "SKIP2"、 "SKIP3"、 "SORT"、 "SOURCE"、 "SPACE"、 "SPACES"、 "STANDERD"、 "START"、 "STATION"、 "STATIONS"、 "STATUS"、 "STOP"、 "STORE"、 "STRING"、 "SUBRANGE"、 "SUBTRACT"、 "SUCCESSIVE"、 "SUFFIX"、 "SUM"、 "SUPPRESS"、 "SYMBOLIC"、 "SYNC"、 "SYNCHRONIZED"、 "TABLE"、 "TALLY"、 "TALLYING"、 "TAPE"、 "TENANT"、 "TERMINAL"、 "TERMINATE"、 "TEST"、 "TEXT"、 "THAN"、 "THEN"、 "THROUGH"、 "THRU"、 "TIME"、 "TIMES"、 "TITLE"、 "TO"、 "TOP"、 "TRACE"、 "TRACK"、 "TRACKS"、 "TRAILING"、 "TRANSACTION"、 "TYPE"、 "UNDERLINE"、 "UNEQUAL"、 "UNIT"、 "UNLOCK"、 "UNSTRING"、 "UNTIL"、 "UP"、 "UPDATE"、 "UPON"、 "USAGE"、 "USE"、 "USING"、 "VALID"、 "VALIDATE"、 "VALUE"、 "VALUES"、 "VARYING"、 "WAIT"、 "WHEN"、 "WITH"、 "WITHIN"、 "WORDS"、 "WRITE"、 "ZERO"、 "ZEROES"、 "ZEROS"