odmcreate コマンド

目的

ODM アプリケーション開発に必要な .c ファイル (ソース・ファイル) と .h ファイル (組み込みファイル) を作成し、空のオブジェクト・クラスを作成します。

構文

odmcreate-p ] [  -c -h] ClassDescriptionFile

説明

odmcreate コマンドは ODM クラス・コンパイラーです。 このコマンドは、ユーザーが特定のアプリケーションで使用したいオブジェクトを記述する ASCII ファイルを入力として使います。 odmcreate コマンドは実行の一部として空のオブジェクト・クラスを作成できます。

odmcreate コマンドの出力は .h ファイル (組み込みファイル) です。 このファイルには、ASCII の ClassDescriptionFile ファイルで定義されたオブジェクト・クラスに関する C 言語定義が入っています。 生成された組み込みファイルは、アプリケーションが ODM に保管されたオブジェクトにアクセスするときに使います。 odmcreate コマンドは .c ファイルも生成します。 このファイルはコンパイルして、アプリケーションでバインドしなくてはなりません。 .c ファイルには、ODM が実行時に内部で使う構造体と定義が入っています。

ClassDescriptionFile パラメーターは 1 つまたは複数のオブジェクト・クラスの記述を含む ASCII ファイルを指定します。 ClassDescriptionFile パラメーターの一般的な構文は以下のとおりです。

項目 説明
ファイル : classes
classes : class | classes class
class : head body tail
head : struct ClassName {
tail : }
body : elements
elements : elements | elements element
element :char DescriptorName [ DescriptorSize ];

vchar DescriptorName [ DescriptorSize ];

binary DescriptorName [ DescriptorSize ];

short DescriptorName ;

long DescriptorName ;

long64 または int64 または ODM_LONG_LONG DescriptorName ;

method DescriptorName ;

link StdClassName StdClassName ColName DescriptorName ;

ClassDescriptionFile ファイルのデフォルトの接尾部は .cre です。 odmcreate コマンドに接尾部を指定しないと、.cre 接尾部が付加されます。 このファイルでは、-p フラグを指定して実行すると、C 言語のコメントを入れることができます。 -p フラグを指定してこのファイルで C 言語プリプロセッサーを実行すると、プリプロセスできる #define 行および #include 行を取り込むことができます。

注: ODM データベースは 32 ビットのデータベースです。long タイプは、クラス記述ファイルで使用される場合 32 ビット・データ・エントリーです。 long64 または int64 タイプは、クラス記述ファイルで使用される場合 64 ビット・データ・エントリーです。 生成されたファイルは 32 ビットと 64 ビットのアプリケーションの両方で同様に機能します。

フラグ

項目 説明
-c 空のオブジェクト・クラスだけを作成します。C 言語の .h ファイルと .c ファイルは生成しません。
-h .c ファイルと .h ファイルだけを生成します。空のクラスは作成しません。
-p ClassDescriptionFile ファイルで C 言語プリプロセッサーを実行します。

FileName.cre という ClassDescriptionFile ファイルがあると仮定して、 次のコマンドはオブジェクト・クラスを作成します。


odmcreate FileName.cre

以下に示すのは、FileName.cre ソース・ファイルと、結果として生成される .h ファイルです。

/* This is an example odmcreate input file */
/* FileName.cre */
   
       class Class2 {
            char keys[32];
            method card;
            long cash;
            };
      class TstObj {
            long a;
            char b[80];
            link Class2 Class2 card Class2Ln;
            };
   
/* End of FileName.cre */
   
/* This is the generated header file FileName.h */
  
#include <odmi.h>
   
struct Class2 {
     long _id;         /* unique object id within object class */
     long _reserved;   /* reserved field */
     long _scratch;    /* extra field for application use */
     char keys[32];
     char card[256];   /* method */
     long cash;
     };
#define Class2_Descs 3
   
extern struct Class Class2_CLASS[];
#define get_Class2_list (a,b,c,d,e) (struct Class2 * ) odm_get_list (a,b,c,d,e)
   
struct TstObj {
     long _id;         /* unique object id within object class */
     long _reserved;   /* reserved field */
     long _scratch;    /* extra field for application use */
     long a;
     char b[80];
     struct Class2 *Class2Ln;  /* link */
     struct objlistinfo *Class2Ln_info; /* link */
     char Class2Ln_Lvalue[256];        /* link */
     };
#define TstObj_Descs 3
   
extern struct Class TstObj_CLASS[];
#define get_TstObj_list (a,b,c,d,e) (struct TstObj * ) odm_get_list (a,b,c,d,e)
   
/* End of generated header file FileName.h */