ターボ DataReader エンジン API説明書

ターボ D ataR eader エンジン A P I説明書
2011/1月
1.機能概要
ターボ D ataR eader(略称D ataR eader)はハードディスク上に格納されたD 5A 形式ファイルを
読み込んで超高速に表示します。
D 5A 形式ファイルとはC SV テキストファイルをD ataR eader専用のデータフォーマットに変換したものです。
この変換を行うのがターボD ataW riterです。
ターボD ataR eader
G U I画面
G U I部分
API
D 5A ファイル群
エンジン部分
C SV ファイル
C SV テキストファイルは表形式のデータですので、D 5A は一つのテーブルと考えることができます。
D ataR eaderはD 5A ファイル群を読み込み、その内容をG U I表示したり、C SV ファイルファイルに変換します。
D ataR eaderは図のようにG U I部分とエンジン部分から構成されます。G U I部分はエンジンの提供するA P Iを使って、
D 5A として格納された表形式データをディスプレイ上にグリッド表示します。
この説明書はD ataR eaderのエンジン部分が提供するA P Iについて説明します。
ユーザはこのA P Iを使用して、自らの好みに合ったG U I部分を作成することができます。
このとき、ユーザはオープンソースとして公開されている、D ataR eaderのG U I部分を改変して作成することもできます。
エンジン部分の機能の概要は以下のとおりです。
①D 5A を読み込み、テーブル形式のデータとして、データをユーザに渡す準備をします。
データは0から始まるレコード番号がキーとなる行の集合です。
②同じ項目から構成されるテーブルを組み合わせて、仮想ユニオンテーブルを作成し、データをユーザに渡す準備をします。
データは0から始まるレコード番号がキーとなる行の集合です。仮想ユニオンテーブルの作成はA ktblitzⅡで縦結合処理と呼んでいたものです。
③1つのユーザプロセスが使用できる、テーブルと仮想ユニオンテーブルの数は50個です。
④テーブル及び仮想ユニオンテーブルに対して検索ビューを作成することができます。検索ビューはテーブルに
対して、検索条件となる項目を指定したもので、そのテーブルに対する検索環境のことです。
検索ビューに対して検索を実行すると検索結果が得られます。検索結果は検索ビューごとに最新の1個がエンジンに
よって保持されています。(検索ビュー作成後、検索実行前はテーブルの全件が検索結果になっています。)
検索ビューはD ataR eader内で同時に50個作成することができます。
⑤検索結果からデータを取り出すキーは検索結果の0から始まる行番号です。テーブルのレコード番号とは異なります。
⑥テーブル及び仮想ユニオンテーブルの一部又は部分をC SV 形式ファイルに出力します。
⑦ D 5A はでディスク上にありますが、全体レコードを10から200個に分割し、分割点の付近のレコードをメモリーに
読み込んでおく機能があります。これはユーザが自分固有のG U Iを作るとき、応答時間を早くするための機能です。
この分割点のことをトラックバーと呼びます。
2.用語、データタイプ及び最大仕様
2.1 用語
(1)D 5A
D ataR eader専用のファイルで、C SV 形式の表形式データをD ataW riterが読み込んで作成します。
(2)テーブル
D 5A ファイルをD ataR eaderが読み込んで作成するもので、リレーショナルモデルのテーブルと似ています。
レコード番号と多数の項目から構成されるレコードの集合です。テーブルには単純なテーブルと、仮想ユニオン
テーブルがあります。
(3)レコード番号
テーブルの各レコードにユニークに与えられる番号です。
(4)行番号
テーブルや検索結果において表示順序の番号です。検索結果でなければ、行番号とレコード番号は同じとなります。
(5)項目
テーブル内のデータ項目のことで、リレーショナルモデルのカラムに相当するものです。
(6)テーブルID
D ataR eaderエンジン内のテーブルを識別する番号のことです。
(7)検索ビュー
特定のテーブルの特定項目を指定して検索を行うための検索環境のことです。
(8)検索ID
D ataR eaderエンジン内の検索ビューを識別する番号のことです。
(9)トラックバー
テーブルのレコード群の分割点のことです。トラックバーの分割点の個数は10から200個で、デフォルトは100個です。
(10)仮想ユニオンテーブル
2つ以上の同じ項目からなるテーブルを縦に並べて作成する仮想テーブル。対応するD 5A が存在しない点がテーブルと
異なります。
(11)項目ID
テーブルを構成する項目のID です。レコード番号項目のID が0で、それ以降の項目の項目ID は出現順の連番が振られます。
(12)検索結果ID
検索ビューに対して条件を与えて検索を実行して得られる検索結果のID です。
2.2 項目としてサポートするデータ型
(1)レコード番号
・8バイトのの正の整数で0から199,999,999の間の値
・データタイプ=4バイト整数の0(記号名D A TA TYP E_R EC N O )
(2)整数
・8バイトの整数
・データタイプは4バイト整数の1(記号名D A TA TYP E_IN T64)
・N ull値=0x8000,0000.0000,0000
(3)浮動小数点数
・8バイトのIEEEで規定された浮動小数点数
・データタイプ=4バイト整数の2(記号名D A TA TYP E_D O U B LE)
・N ull値はIEEEで規定されたマイナスの∞
(4)日付
・浮動小数点数の整数部
・データタイプ=4バイト整数の18(記号名D A TA TYP E_D A TE)
・N ull値はIEEEで規定されたマイナスの∞
(5)時刻
・浮動小数点数の小数部
・データタイプ=4バイト整数の34(記号名D A TA TYP E_TIM E)
・N ull値はIEEEで規定されたマイナスの∞
(6)日付時刻
・浮動小数点数の整数部で日付を表し、小数部で時刻を表します
・データタイプ=4バイト整数の50(記号名D A TA TYP E_D A TETIM E)
・N ull値はIEEEで規定されたマイナスの∞
(7)文字列
・#で始まり0ターミネートコードで終わります
・文字コードはU TF-8
・空文字列は#の次にターミネートコードが続いたものです
・データタイプ=4バイト整数の3(記号名D A TA TYP E_STR IN G )
・N ull値はターミネートコードのみから成ります
・N ull値は任意の文字列で表示するように設定できます。
2.3 最大値等
(1)テーブルの大きさ
行数=2000億
項目数=1024 D 5A _M A X_ITEM _C O U N T
(2)文字列長
最大254バイト D 5A _M A X_STR IN G _LEN
(3)日付
1899年12月30日以降を扱えます
(4)時刻
0時0分00秒から23時59分59秒までを秒単位で表せます
(5)仮想ユニオンテーブルを構成するテーブルの数
D 5A _M A X_U N IO N = 50
(6)文字列のN ull値を表示する文字列の最大
D 5A _M A X_N U LL_D ISP _LEN = 16
3.A P I一覧
A P I仕様はC ++言語用を記載します。
ユーザプログラムに下記のファイルをincludeすることが必要です。
・d5a.apih
・define.h
3.1全般
(1) D 5A _G etV ersion
バージョン情報を受け取ります。
D 5R ESU LT D 5A _G etV ersion(
IN T64 *pi64V er);
引数
引数
pi64V Er
IN /O U T
O UT
設定値
バージョン情報
戻り値
戻り値
0
-1
意味
成功
エラー
バージョン情報
先頭 2バイト 2桁のバージョン#
バイト2-3: 2桁のリビジョン#
バイト4-5: 4桁の16進数で西暦年数 例 0x2020
バイト6-7: 4桁の16進数で月と日
例 0x1215 12月15日
(2)D 5A _G etTrackB arM ax
現在のトラックバーの刻み数を得ます。100 と設定すると、0,1,...,99,100 の101箇所が分割点として登録されます。
D 5R ESU LT D 5A _G etTrackB arM ax();
引数
なし。
戻り値
戻り値
正
負
意味
10から200の分割点数
エラー
(3)D 5A _SetTrackB arM ax
分割点の個数を設定します。
D 5R ESU LT D 5A _SetTrackB arM ax(
int
iN ew M ax);
引数
iN ew M ax
IN 分割点の個数(10~200)
戻り値
0:正常
負:エラーコード
3.2 テーブル処理
(1) D 5A _LoadTable
D 5A をロードし、テーブルに展開します。
D 5R ESU LT D 5_LoadTable(
char
*pcFN am e
char
*pcP assw ord
);
引数
pcFN am e
IN
D 5A のパスとファイル名称の文字列
(O Sのコード系で指定する)
pcP assw ord IN
戻り値
正又は0 :
負
:
D 5A のパスワード
(パスワードを設定していない場合は
空文字列もしくはN U LLを与えてください)
テーブルID
エラーコード
(2)D 5A _M akeU nion
仮想ユニオンテーブルを作成します。
D 5R ESU LT D 5A _M akeU nion(
int
iN R ealTable,
int
paiTblID s[ D 5A _M A X_U N IO N ]
);
引数
iN R ealTable
IN
結合するテーブルの数
paiTblID s
IN
結合するテーブルのID の配列
戻り値
正又は0 : 作成された仮想ユニオンテーブルのテーブルID
負
:
エラーコード
(3)D 5A _iTblC ount
R eaderが処理中のテーブルの個数を得ます。
D 5R ESU LT
iTblC ount
戻り値
正又は0 :
負
:
();
処理中のテーブルの個数
エラーコード
(4)D 5A _C learA llTables
R eaderが処理中のテーブルをすべて削除します。
D 5R ESU LT
戻り値
0
負
D 5A _C learA llTables ();
: 正常に処理された。
:
エラーコード
(5)D 5A _D ropTable
指定したテーブルをR eaderエンジンから削除します。
D 5R ESU LT
引数
iTblID
戻り値
0
負
D 5A _D ropTable(
int
iTblID
);
IN
削除したいテーブルのテーブルID
: 正常に処理された。
:
エラーコード
(6)D 5A _C SV Export
処理中のテーブルの全部又は一部をC SV 形式でファイルに出力します。
D 5R ESU LT D 5A _C SV Export(
int
iTblID ,
char
*pcFileP ath,
int
iN Item ,
int
paiItem ID s[D 5A _ITEM _M A X_C O U N T],
IN T64
i64TopR ow ,
IN T64
i64B ottom R ow ,
int
boolItem N am e,
int
*piTerm Flag,
IN T64
*pi64N D one
);
解説
このA P Iを実行するとC SV 出力が完了するまで、ユーザプログラムに制御が戻りません。
処理を中断したい場合、別スレッドにてpiTerm Flagを0以外の整数にセットして下さい。
R eaderエンジンはこのフラグを参照し、0以外の値になると、出力を中断し、ユーザプログラム
に制御を戻します。このときpi64D one変数には出力済の行数がセットされています。
引数
iTblID
pcFileP ath
iN Item
paiItem ID s
i64TopR ow
i64B ottom R ow
boolItem N am e
piTerm Flag
piTerm Flag
戻り値
0
負
IN
IN
IN
IN
IN
IN
IN
IN
O UT
出力するテーブルのテーブルID
出力先のファイルのパス及びファイル名を指定する文字列
出力する項目の数
出力する項目の項目ID の配列
出力を開始するレコードの行番号(行番号は0から始まります)
出力を終了するレコードの行番号(行番号は0から始まります)
0以外のとき:先頭行に項目名を出力します。0であれば出力しません。
0ならば出力を続けます。0以外になれば出力を中断し、A P Iを終了します。
従って、初期値は0に設定することが必要です。
出力済の行数を常にセットする64ビット整数変数
: 正常に処理された。
:
エラーコード
(7)D 5A _G etTableInfo
一つのテーブルに関する情報を取得します。
D 5R ESU LT D 5A _G etTableInfo(
int
iTblID ,
TTableInfoR ec *pTableInfoR ec
);
引数
iTblID
IN
情報を取得するテーブルのテーブルID
pTableInfoR ec
O UT
テーブル情報を格納する領域のポインタ(領域は呼び出し側で確保します)
解説
TTableInfoR ec構造体の中身と各変数のデータ値は以下のとおりです。
int
int
IN T64
IN T64
char
char
char
戻り値
0
負
FiN R ealTable
通常のテーブルのときは1で、仮想ユニオンテーブルではそのテーブルを構成するD 5A の数
FiN Item
項目数(テーブルの項目数+1・・・レコード番号項目を項目数として数えるため)
Fi64R ootSize
テーブルの全行数
Fi6C urrentSize
現在表示されている行数
FacD B P ath[D 5A _M A X_STR IN G _LEN ]
D 5A ファイルのパスとファイル名。仮想ユニオンテーブルの場合先頭のテーブルの情報が
表示されます。
FacTableN am e[D 5A _M A X_STR IN G _LEN ]
テーブル名称。仮想ユニオンテーブルの場合先頭のテーブルの情報が表示されます。
FacN ullD isp[D 5A _M A X_N U LL_D ISP _LEN ]
文字列のN ull値を表示する文字列(テーブルの作成時に設定されます。)
: 正常に処理された。
:
エラーコード
(8)D 5A _G etItem Info
一つの項目に関する情報を取得します。
D 5R ESU LT D 5A _G etItem Info(
int
iTblID ,
int
iItem lID ,
TItem InfoR ec
*pItem InfoR ec
);
引数
iTblID
iItem ID
pTableInfoR ec
IN
IN
O UT
項目が属するテーブルのテーブルID
情報を取得する項目の項目ID
項目情報を格納する領域のポインタ(領域は呼び出し側で確保します)
解説
Titem InfoR ec構造体の中身と各変数のデータ値は以下のとおりです。
int
int
int
int
int
int
char
戻り値
0
負
FiItem ID
項目の項目ID
FiD ataType
項目の型(具体的な値は2.2節を参照して下さい。)
FboolH ide
0以外の値のときは非表示指定が行われています。通常は0で、表示です。
FboolC om m a
0以外のとき桁区切りのカンマを表示することを指定しています。0はカンマ表示なしの指定です。
FiU nderD P
浮動小数点項目のとき、小数点以下を表示する桁数の指定です。
FC olW idth
項目の表示幅のしてです。ピクセル単位でしていします。省略時は120です。
FacItem N am e[D 5A _M A X_STR IN G _LEN ]
項目の名称(U TF-8コードです。)
: 正常に処理された。
: エラーコード
(9) D 5A _G etD ata
テーブル中のレコードの項目の値を取得します。
D 5R ESU LT D 5A _G etD ata(
int
int
IN T64
int
char
引数
iTblID
iItem ID
i64A dr
piD ataType
pabB uf
iTblID ,
iItem lID ,
i64A dr,
*piD ataType,
pabB uf[D 5A _M A X_STR IN G _LEN ]
);
IN
IN
IN
O UT
O UT
項目が属するテーブルのテーブルID
データを取得する項目の項目ID
データを取得する行の(0から始まる)行番号
項目の型(具体的な値は2.2節を参照して下さい。)
データ
解説
pabB ufは呼び出し側で文字列長の最大+1バイト以上を確保して下さい。
整数型、及び浮動小数点、日付、時刻、日付時刻はpabB ufの先頭8バイトにバイナリフォーマットで
格納されています。文字列はN ullはN ullの表示指定の値がセットされます。N ull値以外は先頭に#が
ついていますから、#を削除した値が求めるデータです。文字列はU TF-8です。
戻り値
0
負
: 正常に処理された。
: エラーコード
(10) D 5A _SetSearchR esult
検索結果をテーブルのデータとしてセットします。テーブルのデータはテーブルのレコード全件か、このA P Iでセットした
検索結果のレコード群かのいずれかになります。
D 5R ESU LT D 5A _SetSearchR esult(
int
iTblID ,
int
iItem lID ,
int
iSrchR et
);
引数
iTblID
iItem ID
iSrchR et
戻り値
0
負
IN
IN
IN
データを設定するテーブルのテーブルID
検索条件となった項目の項目ID
検索を実行したときに取得される検索結果ID
: 正常に処理された。
: エラーコード
(11)D 5A _Show A l
l
テーブルのデータを全件レコードに設定します。即ち、検索結果のレコード群から全件レコードに切り替えます。
D 5R ESU LT D 5A _Show A l
l
(
int
iTblID
);
引数
iTblID
戻り値
0
負
IN
: 正常に処理された。
: エラーコード
データを設定するテーブルのテーブルID
3.3 検索処理
(1) D 5A S_iN Srch
現在作成されている検索ビューの個数を取得します。
D 5R ESU LT D 5A S_iN Srch();
戻り値
正又は0 : 現在作成されている検索ビューの個数。(0から50)
負
: エラーコード
(2) D 5A S_O pen
検索ビューを作成し、検索ビューID を取得します。
D 5R ESU LT D 5A S_O pen(
int
iTblID ,
int
iItem lID ,
TSV InfoR ec *pSV Info
);
引数
iTblID
IN
iItem ID
IN
pSV Info
O UT
検索するテーブルのテーブルID
検索条件となる項目の項目ID
呼び出し側で領域を確保して下さい。検索ビューの情報をセットする
領域へのポインタです。
解説
TSV InfoR ec構造体の中身と各変数のデータ値は以下のとおりです。
int
int
int
int
int
int
IN T64
char
FiTableID
検索するテーブルのテーブルID
FiItem ID
検索条件となる項目の項目ID
FiSrchID
この検索ビューのID
FiD ataType
項目の型(具体的な値は2.2節を参照して下さい。)
FboolC om m a
0以外のとき桁区切りのカンマを表示することを指定しています。0はカンマ表示なしの指定です。
FiU nderD P
浮動小数点項目のとき、小数点以下を表示する桁数の指定です。
Fi64LogicalSize
このテーブルの全レコード数
FacItem N am e[D 5A _M A X_STR IN G _LEN ]
項目の名称(U TF-8コードです。)
戻り値
正又は0 : 作成された検索ビューのID
負
: エラーコード
(3) D 5A S_IsO pen
指定された検索ビューについての情報を取得します。
D 5R ESU LT D 5A S_IsO pen(
int
iSrchID ,
int
*piIsO pen,
TSV InfoR ec *pSV Info
);
引数
iSrchID
piIsO pen
pSV Info
戻り値
0
負
IN
O UT
O UT
検索ビューのID
検索ビューの状態を示す整数へのポインタ
0:オープンされていない。 1:オープンされている
呼び出し側で領域を確保して下さい。検索ビューの情報をセットする
領域へのポインタです。
TSV InfoR ec構造体については(2)を参照して下さい。
この領域に値がセットされるのは、検索ビューがオープンされているときです。
: 正常終了
: エラーコード
(4) D 5A S_C lose
指定した検索ビューをクローズします。
D 5R ESU LT D 5A S_C lose(
int
iSrchID
);
引数
iSrchID
戻り値
0
負
IN
: 正常終了
: エラーコード
検索ビューのID
(5) D 5A S_C loseA ll
すべての検索ビューをクローズします。
D 5R ESU LT D 5A S_C loseA ll();
戻り値
0
負
: 正常終了
: エラーコード
(6) D 5A S_Search
検索ビューに対して検索条件を与えて、検索を実行し、検索結果を作成します。
D 5R ESU LT D 5A S_Search(
int
iSrchID ,
int
iSrchC m d,
char
*pcP m 1,
char
*pcP m 2,
IN T64
*pi64H itP os,
IN T64
*pi64H itLen,
char
pabB uf[D 5A _M A X_STR IN G _LEN ]
);
引数
iSrchID
IN
検索ビューのID
iSrchC m d
IN
検索コマンド。後述の解説を参照して下さい。
pcP m 1
IN
検索パラメタ1。後述の解説を参照して下さい。
pcP m 2
IN
検索パラメタ2。後述の解説を参照して下さい。
pi64H itP os
O UT
検索にヒットした最初のレコードのレコード番号を格納するエリアへのポインタ
pi64H itLen
O UT
検索にヒットしたレコード数を格納するエリアへのポインタ
pabB uf
O UT
エラーメッセージ。領域は最大文字列長+1の長さを呼び出し側で確保して下さい。
解説
①検索コマンドの値、その記号名称、意味は以下のとおりです。
(0)=
D 5A _SR C H C M D _FW D _M A TC H 前方一致(文字列項目だけに使用できる)
(1)=
D 5A _SR C H C M D _G EQ
大きいか又は等しい
(2)=
D 5A _SR C H C M D _EQ
等しい
(3)=
D 5A _SR C H C M D _G T
大きい
(4)=
D 5A _SR C H C M D _LEQ
小さいか等しい
(5)=
D 5A _SR C H C M D _LT
小さい
(6)=
D 5A _SR C H C M D _B ETW EEN
検索パラメタ1より大きくパラメタ2より小さい
(7)=
D 5A _SR C H C M D _IN SID E
検索パラメタ1より等しいか大きくパラメタ2より等しいか小さい
②検索パラメタ1および2の指定の仕方は次のとおりです。
・整数及び浮動小数点数は文字列形式で渡します。数値として解釈できないものはN ull値が設定されたものと
見なします。
・日付、時刻、日付時刻は外部の文字列形式で渡します。正しく解釈できないものはN ull値が設定されたものと
見なします。
・文字列はU TF-8の文字列で渡します。N ull値を指定する場合、別途指定されているN U LL値の外部表現
で指定します。
・パラメタ2は上記のコマンド6,7のみに有効で、指定されても無視されます。
戻り値
0
負
: 正常終了
: エラーコード
(7) D 5A S_G etSearchR esult
検索実行後の検索結果ID を取得します。一つの検索ビューに対して同時には一つの検索結果が有効なので
検索結果ID も検索ビューごとに一つしか存在しません。
D 5R ESU LT D 5A S_G etSearchR esult(
int
iSrchID ,
int
*piSrchR et
);
引数
iSrchID
IN
検索ビューのID
piSrchR et
O UT
検索結果ID
戻り値
1
0
負
: 検索結果ID が得られた
: 検索が行われておらず、検索結果ID はえられなかった
: エラーコード
(8) D 5A S_G etSrchR ec
検索ビューにおける指定の行のデータ(項目値)を取得します。
D 5R ESU LT D 5A S_G etSrchR ec(
int
iSrchID ,
IN T64
i64V iew P os,
int
*piD ataType,
char
pabB uf[D 5A _M A X_STR IN G _LEN ],
IN T64
*pi64R ecN o,
IN T64
*pi64N V alue
);
引数
iSrchID
i64V iew P os
piD ataType
pabB uf
*pi64R ecN o
*pi64N V alue
戻り値
0
負
IN
IN
O UT
O UT
O UT
O UT
: 正常終了
: エラーコード
検索ビューのID
データを取得したい行の番号(0から始まる)
項目の型(具体的な値は2.2節を参照して下さい。)
データ。領域は呼び出し側で確保して下さい。データの中身は
3.2の(9)の解説を参照して下さい。
この行番号に対応するテーブル中のレコード番号
このデータと同じ値を持つレコードの数
(9) D 5A S_i64G etP revP os
検索ビュー中の行番号に表示中の値の1つ前の値の行番号を求めます。
D 5R ESU LT D 5A S_i64G etP revP os(
int
iSrchID ,
IN T64
i64P osN ow 、
IN T64
*piP osP rev
);
引数
iSrchID
i64P osN ow
piP osP rev
戻り値
0
負
IN
IN
O UT
: 正常終了
: エラーコード
検索ビューのID
現在の行番号
一つ前の値の行番号
(10) D 5A S_i64G etN extP os
検索ビュー中の行番号に表示中の値の1つ後ろの値の行番号を求めます。
D 5R ESU LT D 5A S_i64G etN extP os(
int
iSrchID ,
IN T64
i64P osN ow 、
IN T64
*piP osN ext
);
引数
iSrchID
i64P osN ow
piP osN ext
戻り値
0
負
IN
IN
O UT
: 正常終了
: エラーコード
検索ビューのID
現在の行番号
一つ後ろの値の行番号