名前
tdc - TDコンパイラ
形式
tdc [{-c | -cpp | -cobol | -java | -vcpp | -oocob}] [{-mc | -mcpp | -mcobol | -mvcpp}] [{-create | -update | -delete}] [-D<name>=<Value>] [-I<includedir>] [-T<tmpdir>] [{-www | -wwwex}] [-R] [-F] [-cdecl][-noex] [-f] [-M システム名] [-W<ラッパー定義ファイル名>] [IDL定義ファイル名]
機能説明
TDコンパイラです。
TDコンパイラは指定されたIDL定義ファイルからスタブ、スケルトンのソースファイルを生成します。
以下に、tdcコマンドのオプションおよび引数を説明します。
[マッピング言語オプション(スタブ生成)]
マッピング言語を指定するオプションとして、以下のいずれかが指定可能です。このオプションを複数同時に指定することはできません。
いずれも指定しないと、-cobolが指定されたものとみなされます。
いずれも指定しないと、-cが指定されたものとみなされます。
C言語にマッピングされたスタブなどのファイル生成を行います。
C++言語にマッピングされたスタブなどのファイル生成を行います。
COBOLにマッピングされたスタブなどのファイル生成を行います。
OOCOBOL(オブジェクト指向COBOL)にマッピングされたスタブなどのファイル生成を行います。
Java言語にマッピング(OMG準拠マッピング)されたスタブなどのファイル生成を行います。
Visual C++用にマッピングされたスタブなどのファイル生成を行います。
[マッピング言語オプション(スケルトン生成)]
マッピング言語を指定するオプションとして、以下のいずれかが指定可能です。このオプションを複数同時に指定することはできません。
いずれも指定しないと、-mcobolが指定されたものとみなされます。
いずれも指定しないと、-mcが指定されたものとみなされます。
C言語にマッピングされたスケルトンなどのファイル生成を行います。
C++言語にマッピングされたスケルトンなどのファイル生成を行います。
COBOLにマッピングされたスケルトンなどのファイル生成を行います。
Visual C++用にマッピングされたスケルトンなどのファイル生成を行います。
[インタフェース情報の取り扱い]
TDコンパイラで生成したインタフェース情報の取り扱い方法を指定します。すべてのオプションを省略した場合は、-createが指定されたものとします。各オプションの内容を以下に説明します。
インタフェースリポジトリに登録します。すでに同じ識別子が登録されている場合はエラーとなり、TDコンパイラは作業を中止します。
インタフェース情報をインタフェースリポジトリに登録します。すでに同じ識別子が登録されている場合は、インタフェース情報を更新します。IDLファイルを変更した場合には、このオプションを指定する必要があります。
インタフェース情報をインタフェースリポジトリから削除します。
登録されていない識別子が存在する場合、削除に失敗します。
[クライアントとの連携形態]
コンポーネントトランザクションサービスが提供するクライアントとの連携形態を指定します。両方のオプションを省略した場合、CORBAクライアント連携を使用するものとみなします。各オプションの内容を以下に説明します。
このオプションはInterstage V2.0L20以前の互換用です。
このオプションはInterstage 2.1以前の互換用です。
このオプションを指定すると、WWW基本連携を使用するとみなします。
このオプションを指定すると、WWW簡易アプリケーション連携を使用するとみなします。
[その他のオプション]
nameで指定されたマクロを定義します。
IDL定義ファイルの先頭に#define name Valueと定義を行うことと同じ意味を持ちます。
=Valueを省略した場合は、#define nameとして定義されます。
#includeで指定したファイルを探すディレクトリのリストにincludedirで指定されたディレクトリを追加します。このオプションは複数定義可能です。その場合、指定された順にディレクトリの検索を行います。
コンパイラが作業用に作成するテンポラリファイルの位置を指定します。
このオプションを省略した場合は、C:\tempが指定されたものとしま す。
このオプションを省略した場合は、/tmpが指定されたものとします。
-Rオプションを指定した場合、スタブ・スケルトンの生成は行わず、インタフェースリポジトリの登録だけを行います。
-Fオプションを指定した場合、インタフェースリポジトリの登録は行わず、スタブ・スケルトンの生成だけを行います。
INTRA_PROCESS関数を Cの呼び出し規約で呼び出します。このオプションは、マッピング言語がC++(-cpp)のときに有効です。
例外処理をCORBA::Environment方式で生成します。省略すると、try・catch方式の例外処理となります。
マッピング言語がC++およびVisual C++のときに有効です。
C++言語およびVisual C++を使用する場合は、指定することを推奨します。
マッピング言語がC++のときに有効です。
C++言語を使用する場合は、指定することを推奨します。
このオプションはインタフェース情報チェック機能を使用する場合に指定するオプションです。
拡張システム使用時に対象のシステム名を定義します。このオプションを省略した場合は、デフォルトシステムが対象となります。
AIM連携を行う場合に、ラッパー定義ファイル名を指定します。このオプションを省略した場合は、CORBAクライアント連携を行うものとみなします。
IDL定義ファイル名
IDL定義ファイル名を指定します。このファイル名を省略した場合は、Foo.idlが指定されたものとみなします。
TDコンパイラで生成するファイル名を、以下に示します。
サーバアプリケーション(COBOL)
CORBAクライアント連携 | ||
---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 |
スタブ側 | - | - |
スケルトン側 | TD_オブジェクト名_skel.def | スケルトン用defファイル(注9)(注15) |
TD_オブジェクト名_skel.cbl | スケルトンファイル(注4) | |
TD-オブジェクト名-H.cbl(注1) | ヘッダファイル | |
TD_オブジェクト名_skel_h.cbl | データ定義型ファイル(注6) | |
TD_オブジェクト名_skel_alloc.cbl | allocプログラムファイル(注11) | |
TD_オブジェクト名_skel_allocbuf.cbl | allocbufプログラムファイル(注17) | |
AIM連携 | ||
ファイル名 | ||
- |
サーバアプリケーション(C言語)
CORBAクライアント連携 | ||
---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 |
スタブ側 | - | - |
スケルトン側 | TD_オブジェクト名_skel.c | スケルトンファイル(注4) |
TD_オブジェクト名.h | ヘッダファイル | |
AIM連携 | ||
ファイル名 | ||
- |
サーバアプリケーション(C言語)
CORBAクライアント連携 | ||
---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 |
スタブ側 | - | - |
スケルトン側 | TD_オブジェクト名_skel.c | スケルトンファイル |
TD_オブジェクト名.h | ヘッダファイル |
サーバアプリケーション(C++言語)
CORBAクライアント連携 | ||
---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 |
スタブ側 | - | - |
スケルトン側 | TD_オブジェクト名_skel_c++.C | スケルトンファイル(注4) |
TD_aa.h | ヘッダファイル | |
TD_aa_c++.C | クラスメソッド定義ファイル | |
TD_オブジェクト名_proto.h | ヘッダファイル | |
AIM連携 | ||
ファイル名 | ||
- |
サーバアプリケーション(C++言語)
CORBAクライアント連携 | ||
---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 |
スタブ側 | - | - |
スケルトン側 | TD_オブジェクト名_skel_c++.C | スケルトンファイル |
TD_aa.h | ヘッダファイル | |
TD_aa_c++.C | クラスメソッド定義ファイル | |
TD_オブジェクト名_proto.h | ヘッダファイル |
サーバアプリケーション(Visual C++)
CORBAクライアント連携 | |||
---|---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 | |
スタブ側 | - | - | |
スケルトン側 | TD_aa.h | ヘッダファイル | |
TD_aa_c++.cpp | クラスメソッド定義ファイル | ||
TD_オブジェクト名_proto.h | ヘッダファイル | ||
AIM連携 | |||
ファイル名 | |||
- |
クライアントアプリケーション(C言語)
CORBAクライアント連携 | ||
---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 |
スタブ側 | aa.h | 共通ヘッダファイル |
aa_cdr.h | CDRヘッダファイル | |
aa_cdr.c | CDRソースファイル | |
aa_stub.c | スタブファイル(注4) | |
スケルトン側 | - | - |
AIM連携 | ||
ファイル名 | ||
属性情報(注2)(注3)(注4) |
クライアントアプリケーション(C言語)
CORBAクライアント連携 | |||
---|---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 | |
スタブ側 | aa.h | 共通ヘッダファイル | |
aa_cdr.h | CDRヘッダファイル | ||
aa_cdr.c | CDRソースファイル | ||
aa_stub.c | スタブファイル | ||
スケルトン側 | - | - |
クライアントアプリケーション(C++言語)
CORBAクライアント連携 | ||
---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 |
スタブ側 | aa.H | 共通ヘッダファイル |
aa.h | 共通ヘッダファイル | |
aa_cdr.h | CDRヘッダファイル | |
aa_cdr.c | CDRソースファイル | |
aa_c++.C | クラスメソッド定義ファイル | |
aa_stub_c++.C | スタブファイル(注4) | |
スケルトン側 | - | - |
AIM連携 | ||
ファイル名 | ||
属性情報(注2)(注3)(注4) |
クライアントアプリケーション(C++言語)
CORBAクライアント連携 | ||
---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 |
スタブ側 | aa.H | 共通ヘッダファイル |
aa.h | 共通ヘッダファイル | |
aa_cdr.h | CDRヘッダファイル | |
aa_cdr.c | CDRソースファイル | |
aa_c++.C | クラスメソッド定義ファイル | |
aa_stub_c++.C | スタブファイル | |
スケルトン側 | - | - |
クライアントアプリケーション(COBOL)
CORBAクライアント連携 | ||
---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 |
スタブ側 | aa_h.cbl | 共通ヘッダファイル |
aa_cdr.cbl | CDRヘッダファイル | |
aa_cdr.def | defファイル | |
aa_stub.cbl | スタブファイル(注4) | |
スケルトン側 | - | - |
AIM連携 | ||
ファイル種別 | ||
属性情報(注2)(注3)(注4) |
クライアントアプリケーション(COBOL)
CORBAクライアント連携 | ||
---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 |
スタブ側 | aa_h.cbl | 共通ヘッダファイル |
aa_cdr.cbl | CDRヘッダファイル | |
aa_cdr.def | defファイル | |
aa_stub.cbl | スタブファイル | |
スケルトン側 | - | - |
クライアントアプリケーション(Java言語)(注5)
CORBAクライアント連携 | ||
---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 |
スタブ側 | bb.java | インタフェースクラスファイル(注7) |
bbOperations.java | インタフェースOperationsファイル(注7) | |
bbHelper.java | Helperクラスファイル(注7) | |
bbHolder.java | Holderクラスファイル(注7) | |
_bbStub.java | スタブファイル(注7) | |
bbPOATie.java | tieクラスファイル(注8) | |
bbPOA.java | スケルトンクラスファイル(注8) | |
cc.java | データ型クラスファイル(注12)(注13) | |
ccHelper.java | データ型Helperファイル(注12)(注13) | |
ccHolder.java | データ型Holderファイル(注12)(注13) | |
sequence_dd_eeHelper.java | シーケンス型Helperファイル(注14) | |
sequence_dd_eeHolder.java | シーケンス型Holderファイル(注14) | |
スケルトン側 | - | - |
AIM連携 | ||
ファイル種別 | ||
属性情報(注2)(注3)(注4) |
クライアントアプリケーション(Java言語)(注5)
CORBAクライアント連携 | ||
---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 |
スタブ側 | bb.java | インタフェースクラスファイル(注7) |
bbOperations.java | インタフェースOperationsファイル(注7) | |
bbHelper.java | Helperクラスファイル(注7) | |
bbHolder.java | Holderクラスファイル(注7) | |
_bbStub.java | スタブファイル(注7) | |
bbPOATie.java | tieクラスファイル(注8) | |
bbPOA.java | スケルトンクラスファイル(注8) | |
cc.java | データ型クラスファイル(注12)(注13) | |
ccHelper.java | データ型Helperファイル(注12)(注13) | |
ccHolder.java | データ型Holderファイル(注12)(注13) | |
sequence_dd_eeHelper.java | シーケンス型Helperファイル(注14) | |
sequence_dd_eeHolder.java | シーケンス型Holderファイル(注14) | |
スケルトン側 | - | - |
クライアントアプリケーション(Visual C++)
CORBAクライアント連携 | ||
---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 |
スタブ側 | aa.h | 共通ヘッダファイル |
aa_cdr.h | CDRヘッダファイル | |
aa_cdr.cpp | CDRソースファイル | |
aa_c++.cpp | クラスメソッド定義ファイル | |
aa_stub.cpp | スタブファイル(注4) | |
スケルトン側 | - | - |
AIM連携 | ||
ファイル種別 | ||
属性情報(注2)(注3)(注4) |
クライアントアプリケーション(Visual C++)
CORBAクライアント連携 | ||
---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 |
スタブ側 | aa.h | 共通ヘッダファイル |
aa_cdr.h | CDRヘッダファイル | |
aa_cdr.cpp | CDRソースファイル | |
aa_c++.cpp | クラスメソッド定義ファイル | |
aa_stub.cpp | スタブファイル | |
スケルトン側 | - | - |
クライアントアプリケーション(OOCOBOL)
CORBAクライアント連携 | ||
---|---|---|
スタブ・スケルトン | ファイル名 | ファイル種別 |
スタブ側 | aa--REP.cbl | リポジトリ段落宣言用登録集 |
aa--CONST.cbl | 定数宣言用登録集 | |
aa--COPY.cbl | TYPEDEF型宣言用登録集 | |
オブジェクト名.cob | インタフェースファイル | |
オブジェクト名--Helper.cob | Helperクラスファイル | |
オブジェクト名--stub.cob | スタブクラスファイル | |
オブジェクト名—NarrowStub.cob | Narrowスタブファイル | |
オブジェクト名-cc.cob | データ型クラスファイル(注16) | |
オブジェクト名-cc--Helper.cob | データ型Helperファイル(注16) | |
CORBA-STRING-dd—Helper.cob | データ型Helperファイル(注16) | |
CORBA-WSTRING-dd—Helper.cob | データ型Helperファイル(注16) | |
スケルトン側 | - | - |
AIM連携 | ||
ファイル種別 | ||
属性情報(注2)(注3)(注4) |
aa、bb、cc、dd、eeは可変部であり、aaはIDLファイル名、bbはIDLファイル内で定義されているインタフェース名、ccはデータ型名、ddはbound数、eeはクラス名を表しています。
注1)TD-オブジェクト名-H.cblはconstのIDL定義があった場合に生成されます。
注2)各ファイル名の詳細を以下に示します。
属性情報
ラッパー定義ファイルのinattrib、outattribオペランドの指定値
テンプレートHTMLファイル
TDTmpHTMLモジュール名_インタフェース名_オペレーション名.html
パラメタブロッククラスファイル
入力パラメタがあれば入力用パラメタブロッククラスファイル名
TDInputモジュール名_インタフェース名_オペレーション名.java
出力パラメタがあれば出力パラメタブロッククラスファイル名
TDOutputモジュール名_インタフェース名_オペレーション名.java
注3)属性情報はシステムが管理するため、tdcコマンド投入ディレクトリやIDL定義ファイルが存在するディレクトリには生成されません。
注4)以下のオプションによって生成するファイルが変化します。
-wwwexオプションを指定した場合
テンプレートHTMLファイルおよびパラメタブロッククラスファイルを生成します。
-wwwおよび-wwwexのどちらも省略した場合
スタブファイルを生成します。
-Wオプションを指定した場合
属性情報を生成します。
-Wオプションを省略した場合
スケルトンファイルを生成します。
注5)Java言語マッピングでは、インタフェースに対応するファイル、インタフェース内のデータ型に対応するファイルが、サブディレクトリ配下に分かれて生成されます。
注6)データ型定義が格納されています。アプリケーション作成時に、必要に応じて参照してください。
注7)tdcコマンドを投入したカレントディレクトリに、IDLファイル内で定義したモジュール名のサブディレクトリが作成され、その配下に生成されます。
注8)生成されますが使用しません。
注9)スケルトン用defファイルは、デフォルトのライブラリ名としてオブジェクト名が登録されていますが、必要に応じて変更してください。
注10)IDLファイル名_cdr.defファイルが生成されますが使用しません。
注11)可変長の構造データを定義した場合に作成されます。
注12)各ファイルは、以下のデータ型が定義された場合に、生成されます。
cc.java: 構造体型、例外 ccHelper.java: 構造体型、配列型、sequence型、 typedefされたデータ型、例外 ccHolder.java: 構造体型、配列型、sequence型、例外
注13)各ファイルは、データ型定義がモジュール定義の外に記述された場合はtdcコマンドを投入したカレントディレクトリ、モジュール定義内に記述された場合は注7)で作成されたディレクトリ、インタフェース定義内に記述された場合は、IDLファイル内で定義したインタフェース名+Packageという名前でサブディレクトリが作成され、その配下に生成されます。
注14)シーケンス型を定義した場合に、tdcコマンドを投入したカレントディレクトリに生成されます。
注15)Windows(R)の場合は生成されます。
注16)各ファイルは、以下のデータ型が定義された場合に、生成されます。
オブジェクト名-cc.cob:可変長string/wstringを含む構造データ型および例外宣言
オブジェクト名-cc--Helper.cob:固定長/可変長stringのtypedef宣言、
固定長/可変長wstringのtypedef宣言、
固定長/可変長stringを含む構造データ型および例外宣言、
固定長/可変長wstringを含む構造データ型および例外宣言
CORBA-STRING-dd--Helper.cob:固定長stringのtypedef宣言、
固定長stringを含む構造データ型および例外宣言
CORBA-WSTRING-dd--Helper.cob:固定長wstringのtypedef宣言、
固定長wstringを含む構造データ型および例外宣言
注17)シーケンス型を定義した場合に生成されます。
注意事項
TDコンパイラを起動する前に、環境変数TD_HOMEにコンポーネントトランザクションサービスのインストールディレクトリを、環境変数OD_HOMEにCORBAサービスのインストールディレクトリを設定する必要があります。
TDコンパイラは、以下の単語をキーワードとして予約していますので、IDL定義ファイル作成時に使用しないでください。cdr、con、env、failed、method、object、reply_status、request、response_expected、result、type、TD_RTNVAL
-cppオプションを指定して作成したC++のスタブを結合する場合には、C++コンパイラの実行時に、‘-D_MULTI_LINK_’を指定する必要があります。
TDコンパイラが生成する各ファイル名の最大長は255文字です。
tdcコマンドでオプションとオプション引数の間に空白を指定しないでください。
-deleteオプション指定時は、登録時と同じマッピング言語オプションを指定してください。
同一のIDL定義に対するインタフェースリポジトリへの登録または、更新を同時に行わないでください。
複数のIDL定義ファイルに対して同一のインタフェース情報を記述し、インタフェースリポジトリへのインタフェース情報の登録を行っている場合、インタフェース情報の削除時に注意が必要です。インタフェース情報は、tdcコマンドに対して指定されたIDL定義ファイル単位に削除されますので、これら複数のIDL定義ファイルの内、一つのファイルに対してtdcコマンド(-delete指定)を実行した時点で、IDL定義ファイル間で重複して指定されているインタフェース情報が削除されます。このため、重複しているインタフェース情報に対する再登録の操作が必要となります。
アプリケーション間連携時に、以下の2つの条件を満たす場合、コンパイル時に関数の二重定義エラーが発生します。
1つのクライアントアプリケーションから、複数のサーバアプリケーションを呼び出し可能とする。
各々のサーバアプリケーションで使用するIDL定義に同一種別のデータ型(基本データ型は除く)が宣言されている。
この場合は出力された関数名を変更するか、IDLcコマンド(-lcまたは-lsオプションを指定)を使用してスタブファイルを生成してください。
IDLcコマンドの詳細については、“IDLc”を参照してください。
IDLの定義をデバッグする場合、出力するメッセージをそろえることで見やすくなります。TDコンパイラを起動する前に、環境変数 LANG にCを設定してください。この場合、出力されるメッセージは英文となります。
エラーメッセージ
TDコンパイラが出力するメッセージには2種類の形式があります。出力されたメッセージ形式により詳細情報の参照先が異なります。
“tdc: Stop.処理フェーズ status = 終了ステータス”の形式でメッセージが出力された場合、“IDLc”に記載されている、その他のメッセージを参照してください。
“UX:tdc: メッセージ種別:メッセージ番号:メッセージ内容”の形式でメッセージが出力された場合、“メッセージ集”を参照してください。
使用例
tdc IDL0001.idl |
TD_HOME=/opt/FSUNtd |
TD_HOME=/opt/FJSVtd |