ターボ 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 現在の行番号 一つ後ろの値の行番号
© Copyright 2024 ExpyDoc