言語インターフェイス モジュール
 
このページをシェアする                  
言語インターフェイス モジュール
この章では、Pervasive PSQL SDK インストール オプションに用意されている言語インターフェイス ソース モジュールを示します。
Pervasive Software は、各言語インターフェイス用のソース コードを提供しています。追加情報は、ソース モジュールにあります。
開発者向けオンライン リソースには、さまざまな言語インターフェイス用の記事やサンプル コードが盛り込まれています。http://www.pervasivedb.com をご覧ください。
この章では、以下の項目について説明します。
インターフェイス モジュールの概要
C/C++
COBOL
Delphi
DOS(Btrieve)
Pascal
Visual Basic
インターフェイス モジュールの概要
プログラミング言語にインターフェイスがない場合は、コンパイラが複数の言語からの呼び出しが混在した状態をサポートするかどうかを確認してください。そうであれば、C インターフェイスを使用できる場合があります。
表 27 Btrieve 言語インターフェイス ソース モジュール
言語
コンパイラ
ソース モジュール
C/C++
Embarcadero、Microsoft、WATCOM などの大半の C/C++ コンパイラ。
このインターフェイスには、マルチ プラットフォーム サポートがあります。
Embarcadero C++ Builder
BlobHdr.h(Embarcadero または Phar Lap のみを使用する拡張 DOS プラットフォーム)
BMemCopy.obj(Embarcadero または Phar Lap のみを使用する拡張 DOS プラットフォーム)
BMemCopy.asm(BMemCopy.obj のソース)
BtiTypes.h(プラットフォーム依存データ型)
BtrApi.h(Btrieve 関数プロトタイプ)
BtrApi.c(すべてのプラットフォーム用の Btrieve インターフェイス コード)
BtrConst.h(共通 Btrieve 定数)
BtrSamp.c(サンプル プログラム)
GenStat.h(Pervasive ステータス コード)
CBBtrv.cpp
CBBtrv.mak
CBBMain.cpp
CBBMain.dfm
CBBMain.h
COBOL
Micro Focus COBOL すべてのバージョン
Microsoft COBOL 3
MfxBtrv.bin(DOS Runtime for COBOL Animator、非 Intel バイト オーダー整数)
MfxBtrv.asm(このバイナリのソース)
CobrBtrv.obj(DOS 16 ビット)
CobBtrv.asm(これらのオブジェクトのソース)
Mf2Btrv.bin(DOS runtime for COBOL animator、Intel バイト オーダー整数)
Mf2Btrv.asm(このバイナリのソース)
BtrSamp.cbl(サンプル プログラム)
Delphi
Embarcadero Delphi 1
Embarcadero Delphi 3 以降
Btr16.dpr
BtrSam16.pas(サンプル プログラム)
BtrSam16.dfm
BtrApi16.pas
BtrConst.pas(共通 Btrieve 定数)
Btr32.dpr
Btr32.dof
BtrSam32.dfm
BtrSam32.pas(サンプル プログラム)
BtrApi32.pas
BtrConst.pas(共通 Btrieve 定数)
Pascal
Borland Turbo Pascal 5 - 6
Borland Pascal 7 for DOS
Extended DOS Pascal for Turbo Pascal 7
Borland Turbo Pascal 1.5
Borland Pascal 7 for Windows
BtrApid.pas
BtrSampd.pas(サンプル プログラム)
BtrConst.pas(共通 Btrieve 定数)
BlobHdr.pas
BtrApiw.pas
BtrSampw.pas(サンプル プログラム)
BtrConst.pas(共通 Btrieve 定数)
BlobHdr.pas
Visual Basic
Microsoft Visual Basic for Windows NT 以降 / Windows 98/ME
BtSamp32.vbp
BtrSam32.bas(サンプル プログラム)
BtrFrm32.frm
以下の表に、Create や Stat などの Btrieve オペレーション用データ バッファーで使用されるいくつかの共通データ型の比較を示します。
表 28 Btrieve データ バッファーで使用される共通データ型
Assembly
C
COBOL
Delphi
Pascal
Visual Basic
doubleword
long1
PIC 9(4)
longint1
longint1
Long Integer
word
short int1
PIC 9(2)
smallint1
integer1
Integer
Byte
char
PIC X
char
char
String
Byte
Unsigned char
PIC X
Byte
Byte
Byte
1 整数値は、開発する環境により異なります。32 ビット環境では、整数は Long Integer と同じです。16 ビット環境では、整数は short int または small int と同じです。
C/C++
ここでは、Btrieve API の C/C++ モジュール情報を示します。
C/C++ インターフェイスは、プラットフォーム依存型アプリケーションの作成を容易にします。このインターフェイスは、DOS、Windows および Linux オペレーティング システムにおける開発をサポートします。これらのモジュールについては、表 27 でも説明しています。
インターフェイス モジュール
ここでは、C 言語インターフェイスを構成するモジュールについて詳述します。
BTRAPI.C
BTRAPI.C ファイルは、C アプリケーション インターフェイスの実際の実装です。BTRV および BTRVID を呼び出すすべてのアプリケーションをサポートします。これらの関数のいずれかで Btrieve 呼び出しを行う場合、BtrApi.c をコンパイルし、そのオブジェクトをアプリケーションの他のモジュールとリンクします。
BTRAPI.C ファイルには、BTRAPI.H、BTRCONST.H、BLOBHDR.H および BTITYPES.H を取り込むようにコンパイラに指示する #include ディレクティブが含まれています。これらのファイルを取り込むことによって、BTRAPI.C はインターフェイスに関連するプラットフォームの独立性を与えるデータ型を利用します。
BTRAPI.H
BTRAPI.H ファイルには、Btrieve 関数のプロトタイプが含まれています。プロトタイプ定義では、BTITYPES.H ファイルで定義されているプラットフォーム依存データ型を使用します。BTRAPI.H は、BTRV 関数と BTRVID 関数を呼び出すすべてのアプリケーションをサポートします。
BTRCONST.H
BTRCONST.H ファイルには、Btrieve 固有の有効な定数が含まれています。これらの定数を使用すると、Btrieve オペレーション コード、ステータス コード、ファイル仕様フラグ、キー仕様フラグなどの多数の項目への参照を容易に標準化できます。
BTRCONST.H を利用せずに C アプリケーション インターフェイスを使用できますが、このファイルを取り込んでプログラミング作業を単純化することができます。
BTITYPES.H
BTITYPES.H ファイルは、プラットフォーム依存データ型を定義します。Btrieve 関数呼び出しで BTITYPES.H 内のデータ型を使用して、アプリケーションは各オペレーティング システム間で移植されます。
BTITYPES.H では、アプリケーションが動作するオペレーティング システムを指示する際に使用しなければならないスイッチについても説明しています。表 29 はこれらのオペレーティング システムのスイッチのリストを示したものです。
表 29 Btrieve API オペレーティング システム スイッチ
オペレーティング システム
アプリケーション タイプ
スイッチ
DOS
16 ビット
Tenberry Extender および BStub.exe を使用した 32 ビット1
Phar Lap 6 を使用した 32 ビット
Embarcadero PowerPack を使用した 32 ビット
BTI_DOS
BTI_DOS_32R
BTI_DOS_32P
BTI_DOS_32B
Linux
32 ビット
BTI_LINUX
Linux
64 ビット
BTI_LINUX_64
Win32
32 ビット Windows
BTI_WIN_32
Win64
64 ビット Windows
BTI_WIN_64
BTRSAMP.C
BTRSAMP.C ソース ファイルは、表 29 で説明するオペレーティング システムでコンパイル、リンクおよび実行できるサンプル Btrieve プログラムです。
プログラミングの必要条件
C アプリケーション インターフェイスを使用してアプリケーション プラットフォームを独立型にする場合は、BTITYPES.H で説明しているデータ型を使う必要があります。これらのデータ型の使用方法については、BTRSAMP.C ファイルを参照してください。
メモ: また、プログラムが動作するオペレーティング システムを識別するディレクティブを指定する必要があります。ディレクティブに使用できる値は、ヘッダー ファイル BTITYPES.H に列挙されています。お使いのコンパイラの適切なコマンド ライン オプションを使用して、ディレクティブを指定してください。
COBOL
ここでは、Btrieve API の COBOL モジュール情報を示します。
アニメート型 COBOL の開発者:非アニメート型 COBOL インターフェイスが、パラメーターを右から左へ渡すのに対し、COBOL アニメーターは、スタック パラメーターを左から右へ渡します。ただし、COBOL はアニメート型アプリケーションと非アニメート型アプリケーションのどちらの場合も、整数を Intel ハイ-ロウ形式で渡します。
また、オブジェクト モジュール MF2BTRV.OBJ と CSUPPORT.OBJ は COBOL インターフェイスから削除されています。これらのモジュールの代わりにモジュール COBRBTRV.OBJ を使用してください。
非アニメート型 COBOL の開発者:MicroKernel にパラメーターとして渡されるすべての数値は Intel 形式、つまり、ロウ-ハイ バイト オーダーでなければなりません。これを行うには、COMP-5 として値を定義します。
Delphi
Btrieve Delphi モジュールについては、表 27 で説明しています。
DOS(Btrieve)
ここでは、DOS アプリケーションが Btrieve API をどのように使用できるかについて説明します。
インターフェイス モジュール
Btrieve API を使用する DOS アプリケーション向けの言語インターフェースは、以下のモジュールによって構成されます。
BTRAPI.C
BTRAPI.C ファイルは、C アプリケーション インターフェイスの実装です。また、このファイルには次のような DOS インターフェイスも含まれます。
#if defined( BTI_DOS )
BTI_API BTRVID(
BTI_WORD operation,
BTI_VOID_PTR posBlock,
BTI_VOID_PTR dataBuffer,
BTI_WORD_PTR dataLength,
BTI_VOID_PTR keyBuffer,
BTI_SINT keyNumber,
BTI_BUFFER_PTR clientID )
BTRAPI.C は、BTRV および BTRVID を呼び出すすべてのアプリケーションをサポートします。これらの関数のいずれかで Btrieve 呼び出しを行う場合、BtrApi.c をコンパイルし、そのオブジェクトをアプリケーションの他のモジュールとリンクします。
BTRAPI.C ファイルには、BTRAPI.H、BTRCONST.H、BLOBHDR.H および BTITYPES.H を取り込むようにコンパイラに指示する #include ディレクティブが含まれています。これらのファイルを取り込むことによって、BTRAPI.C はインターフェイスに関連するプラットフォームの独立性を与えるデータ型を利用します。
BTRAPI.H
BTRAPI.H ファイルには、Btrieve 関数のプロトタイプが含まれています。プロトタイプ定義では、BTITYPES.H ファイルで定義されているプラットフォーム依存データ型を使用します。BTRAPI.H は、BTRV 関数と BTRVID 関数を呼び出すすべてのアプリケーションをサポートします。
BTRCONST.H
BTRCONST.H ファイルには、Btrieve 固有の有効な定数が含まれています。これらの定数を使用すると、Btrieve オペレーション コード、ステータス コード、ファイル仕様フラグ、キー仕様フラグなどの多数の項目への参照を容易に標準化できます。
BTRCONST.H を利用せずに C アプリケーション インターフェイスを使用できますが、このファイルを取り込んでプログラミング作業を単純化することができます。
BTITYPES.H
BTITYPES.H ファイルは、プラットフォーム依存データ型を定義します。Btrieve 関数呼び出しで BTITYPES.H 内のデータ型を使用して、アプリケーションは各オペレーティング システム間で移植されます。
BTITYPES.H では、アプリケーションが動作する DOS オペレーティング システムを指示する際に使用しなければならないスイッチについても説明しています。次の表は、これらのスイッチの一覧を示します。
表 30 DOS アプリケーション用の Btrieve API オペレーティング システム スイッチ
オペレーティング システム
アプリケーション タイプ
スイッチ
DOS
16 ビット
Tenberry Extender および BStub.exe を使用した 32 ビット1
Phar Lap 6 を使用した 32 ビット
Embarcadero PowerPack を使用した 32 ビット
BTI_DOS
BTI_DOS_32R
BTI_DOS_32P
BTI_DOS_32B
Pascal
ここでは、Btrieve API の Pascal ソース モジュールについて説明します。
その後に、Pascal の Btrieve API ソース モジュールについて説明します。
ソース モジュール
Pascal インターフェイスは、以下のソース モジュールから構成されています。
BTRAPID.PAS-DOS 用 Btrieve 関数インターフェイス ユニット
BTRCONST.PAS-共通 Btrieve 定数ユニット
BTRSAMPD.PAS-DOS 用 サンプル Btrieve プログラム
BBTRAPID.PAS
BTRAPID.PAS には、DOS 用の Pascal アプリケーション インターフェイスのソース コードの実装が含まれています。このファイルは、Btrieve 関数を呼び出すアプリケーションをサポートします。
Turbo Pascal が Btrieve インターフェイスを正しくコンパイルしてアプリケーションのほかのモジュールにリンクするために、BTRAPID.PAS をコンパイルして Turbo Pascal ユニットを作成し、次にそのユニットをアプリケーションのソース コードの uses 句に示します。
BTRCONST.PAS
BTRCONST.PAS ファイルには、Btrieve に固有な有効の定数が含まれています。これらの定数を使用すると、Btrieve オペレーション コード、ステータス コード、ファイル仕様フラグ、キー仕様フラグなどの多数の項目への参照を容易に標準化できます。
BTRCONST.PAS を使用する場合、そのファイルをコンパイルして Turbo Pascal ユニットを作成し、次にそのユニットをアプリケーションのソース コードの uses 句に示すことができます。
BTRCONST.PAS を利用せずに Pascal アプリケーション インターフェイスを使用できますが、このファイルを使用してプログラミング作業を単純化することができます。
BTRSAMPD.PAS
ソース ファイル BTRSAMPD.PAS は、コンパイル、リンクおよび実行できるサンプル Btrieve プログラムです。
プログラミングの注意事項
Btrieve 関数を呼び出すと、常に、ステータス コードに対応する INTEGER 値が返されます。Btrieve 呼び出しの後、アプリケーションは常にこのステータス コードの値を確認します。ステータス コード 0 は、正常終了したオペレーションを示します。アプリケーションは、非ゼロのステータスを認識し、解決できなければなりません。
どの呼び出しでもすべてのパラメーターを提供する必要がありますが、MicroKernel はすべてのオペレーションにすべてのパラメーターを使用するわけではありません。各オペレーションに関連するパラメーターの詳細説明については、『Btrieve API Guide』を参照してください。
メモ: アプリケーションがバリアント文字列を含む Pascal レコード構造を使用する場合は、たとえレコードがパック化されていなくても、Pascal レコード内の奇数長の要素が追加の記憶バイトを必要とする場合があります。このことは、Create(14)オペレーションのレコード長を定義する場合に考慮が必要な重要問題です。レコード タイプの詳細については、Pascal リファレンス マニュアルを参照してください。
Visual Basic
ここでは、Btrieve API の Visual Basic ソース モジュールについて説明します。
Visual Basic は 32 ビット アプリケーションをコンパイルする際、UDT(ユーザー定義データ型)のメンバーをそれぞれ、その特定のメンバーのサイズに応じて 8 ビット、16 ビット、32 ビットの境界に配置します。構造体と違い、データベース行はパック化されます。つまり、フィールド間に未使用スペースがないということです。配置をオフにする方法はないので、Visual Basic アプリケーションがデータベースにアクセスできるように構造体をパック化およびアンパック化する方法が必要です。Pervasive Btrieve アライメント DLL、つまり PALN32.DLL は、この配列の問題を処理するように設計されています。
Visual Basic の場合、この言語はさまざまなビットの倍数で要素を配置します。以下の表に、各種データ型と、Visual Basic がそれらのデータ型を処理する方法を示します。
Visual Basic データ型
データ型定数
一般的なサイズ(バイト単位)
境界
Byte
FLD_BYTE
すべて
1 バイト(なし)
String
FLD_STRING
すべて
1 バイト(なし)
Boolean
FLD_LOGICAL
2
2 バイト
Integer
FLD_INTEGER
2
2 バイト
Currency
FLD_MONEY
4
4 バイト
Long
FLD_INTEGER
4
4 バイト
Single
FLD_IEEE
4
4 バイト
Double
FLD_IEEE
8
4 バイト
プログラムは、BTRCALL 関数を呼び出して Visual Basic 内の Btrieve 呼び出しにアクセスします。この関数へのアクセスは、プロジェクトに BTRAPI.BAS モジュールを取り込むことによって行います。必要な関数の残りの部分は、PALN32.DLL 内にあります。
プロジェクトに PALN32.DLL を取り込むには
プロジェクト参照設定]を選択し、Pervasive Btrieve Alignment Library モジュールを確認します。このモジュールが表示されない場合は、まず、参照ボタンを選択してファイルを検索することによってリストにモジュールを追加します。
以下の表に、各関数とその関数が必要とする特定のモジュールを示します。
機能
用途
場所
パラメーター
戻り値
BTRCALL
Btrieve オペレーションを実行するには
BTRAPI.BAS
OP As Integer
Btrieve API Guide』に示すような Btrieve オペレーション番号。
Pb$ As String
レコードを取得または格納するためか、Btrieve に構造体を渡すための文字列に、ポジション ブロックを格納します。
Db As Any
データ バッファー。このパラメーターは、レコードを取得または格納するためか、Btrieve に構造体を渡すために使用します。
DL As Long
データ バッファーの長さ。
Kb As Any
キー バッファー。
Kl As Integer
キー バッファーの長さ。
Kn As Integer
キー番号。
Integer
オペレーションから返される Btrieve ステータス コード。特定のコードの詳細については、『Status Codes and Messages』を参照してください。
RowToStruct
Visual Base UDT にバイト行を変換します。
PALN32.DLL
row (1 to n) As Byte
パック化されたデータを取得する入力配列。
fld (1 to n) As FieldMap
個々のフィールドのデータ型を決定するための FieldMap 配列。
udt As Any
データを格納する UDT。
udtSize As Long
UDT のサイズ。LenB()を使用してこの値を生成します。
Integer
問題なければ 0 です。それ以外はエラーが発生しました。
SetFieldMap
FieldMap 要素のメンバーを設定します。
PALN32.DLL
map As FieldMap
FieldMap 配列の要素。
dataType As Integer
フィールド タイプ、以下の定数上のパス。
- FLD_STRING
- FLD_INTEGER
- FLD_IEEE
- FLD_MONEY
- FLD_LOGICAL
- FLD_BYTE
- FLD_UNICODE1
size As Long
データベースに格納されているようなバイト単位のフィールドのサイズ。
なし
SetFieldMapFromDDF
FieldMap タイプの配列のすべてのメンバーを設定します。
PALN32.DLL
path As String
データ ソースへの絶対パス名。
table As String
テーブルの名前。
userName As String
予約済み。ヌル文字列("")を渡します。
passwd As String
予約済み。ヌル文字列("")を渡します。
map (1 to n) As FieldMap
記入する出力先 FieldMap 配列。この文字列には、レコードのフィールド数として正確な要素数が含まれていなければなりません。
unicode As Integer
文字列が ASCII としてレコードに格納される場合は 0 です。それ以外は、ユニコードとして格納されます。
Integer
問題なければ 0 です。それ以外はエラーが発生しました。
StructToRow
バイト行に Visual Base UDT を変換します。
PALN32.DLL
row (1 to n) As Byte
パック化されたデータを格納する出力配列。
fld (1 to n) As FieldMap
個々のフィールドのデータ型を決定するための FieldMap 配列。
udt As Any
データを取得する UDT。
udtSize As Long
UDT のサイズ。LenB()を使用してこの値を生成します。
Integer
問題なければ 0 です。それ以外はエラーが発生しました。
1 フィールド タイプ FLD_UNICODE は、データベース行(パック構造)だけでなく UDT(ユーザー定義データ型)内の両方に UNICODE で格納される Visual Basic の String 型のフィールドを指定するのに使用します。フィールドに FLD_STRING 型が使用されると、データベース行ではデフォルトの ANSI コード ページ文字セットに変換されます。ただし、UDT(ユーザー定義データ型)では UNICODE が使用されます。要するに、文字列フィールドをPervasive PSQL データベースに UNICODE で格納したい場合は、フィールド タイプに FLD_UNICODE を選択するということです。文字列フィールドを、デフォルトであるシステムの ANSI コード ページ文字セットでデータベースに格納したい場合は、FLD_STRING を選択します。