|目次前ページ次ページ|
─────────────────────────────────────
2.個別データベースシーケンスの説明 

■<<< 留意点 >>> 

   ※※不正なシーケンス
                       -> 不正なシーケンスは出力しないようにして 
                          ください。
                          異常終了する場合が
                          考えられます。
                          更に、<<オープン>>したら適切に<<クローズ>>
                          を行ってください 。
                          <<オープン>>してから行うべき処理は順序に
                          従って正しくシーケンス出力してください。 

   ※※編集領域の介在
                      -> 凡例などの文字列や浮動小数点の値などは 
                         一旦編集領域にダウンロードしてからその編集領域 
                         を呼び出しシーケンスで指定します。 
      --------------------------------------------------
        edit領域への値の格納(1->45)(256bytes) 
            <esc>%59;edit sp F<文字列><CR> 
            <esc>%%59;edit <control/a> F<文字列><CR> 
      --------------------------------------------------
        edit領域の値をホストに転送(1->45)(256bytes) 
            <esc>%65;edit sp F R EDIT 
            <esc>%%65;edit <control/a> F R EDIT 
      --------------------------------------------------
        長いパラメータ領域への値の格納(65536bytes) %%%[30-mar-2003]%%% 
           ※※edit=531,532,533,534 のいづれか 
           ※※edit と記載されたもののみ使用が出来ます 
            <esc>%531;0; sp F<文字列><CR> -> ストリング領域
            <esc>%532;0; sp F<文字列><CR> -> コマンド領域
            <esc>%533;0; sp F<文字列><CR> -> リターン領域
            <esc>%534;0; sp F<文字列><CR> -> エデット領域
      --------------------------------------------------
            <esc>%531;delim; sp F<文字列><delim> -> ストリング領域
            <esc>%532;delim; sp F<文字列><delim> -> コマンド領域
            <esc>%533;delim; sp F<文字列><delim> -> リターン領域
            <esc>%534;delim; sp F<文字列><delim> -> エデット領域
      --------------------------------------------------
      --------------------------------------------------
        パラメータ領域の値をホストに転送[新設] %%%[31-mar-2003]%%% 
           ※※edit=1<->45(256bytes) 
           ※※     531,532,533,534(65536bytes)  のいづれか 
            <esc>%580;edit sp F  R Data 
            <esc>%%580;edit <control/a> F R Data 
           ※※データに<CR>やコントロールコードが含まれてはいけません 
      --------------------------------------------------
        パラメータ領域の値をホストに転送[新設] %%%[18-APR-2006]%%% 
           ※※edit=1<->45(256bytes) 
           ※※     531,532,533,534(65536bytes)  のいづれか 
            <esc>%581;edit;termc; sp F   
                                 U 0:TERM=$C(termc) R Data 
            <esc>%%581;edit;termc; <control/a> F   
                                 U 0:TERM=$C(termc) R Data 
           ※※データに<CR>やコントロールコードが含まれても可能 
           ※※但し、終了文字コードは不可 
           ※※termc=<終了文字コードの10進数>(1以上31迄、0は<CR>) 
      --------------------------------------------------
        パラメータ領域の値を別のパラメータ領域に転送[新設] %%%[18-APR-2006]%%% 
           ※※editfrom=0<->45(256bytes) 
           ※※     531,532,533,534(65536bytes)  のいづれか 
           ※※editto=0<->45(256bytes) 
           ※※     531,532,533,534(65536bytes)  のいづれか 
            <esc>%584;editfrom;editto; sp F   
           ※※送り側のバイト長が受け側より大きい場合は、nullが格納される 
      --------------------------------------------------

     ※※フィールド長の問題 
                       -> キー長 フィールド長 フィールド属性に注意してください 
                          フィールド長は 最大255byte を想定しています 
                          レコード長も 4090byte を想定しているコマンドも 
                          あります。 
                       -> フィールド長が65536byteに対応 %%%[31-mar-2003]%%% 
                          Cacheの最大文字数は、32767文字 [2003-3-31]  
     ※※デリミタの問題 %%%[31-mar-2003]%%% 
                       -> フィールドデータに、$ が含まれていると正しく 
                          データ取得が出来ません。 
                       -> [新設]の以下の機能を利用するとデリミタの問題 
                          がなくなります。 
                          但し、<CR>やコントロールコードを含むと問題が生じます。 
                    <esc>%350;CurID;edit;ret;field;edtset;0;0 sp D 

■<<< SQL文でのアクセス>>> 

    ※※なるべくSQL文(問い合わせ)でアクセスするのがよいでしょう 
        SQL文の文法につては他の書物を参考にしてください 
───────────────────────────────────
               2-1
---------------------------------------------------------------------
■<<< 環境関数 >>>
---------------------------------------------------------------------
[1] データベース環境を初期化 

※※必ず1回すべての関数の前に必要です。 
 <esc>%0;0 sp D 

[2] データベース環境を解放 

※※これ以降データベース関数は一切無効です。 
 <esc>%999;0 sp D 
※※終了時この動作を行います。 

---------------------------------------------------------------------
■<<<データベース関数>>>
---------------------------------------------------------------------
[1] オープンデータベース
※※標準データベースをオープンします。

 <esc>%1;DBid;edit;ret;DBtype;Openmd;Sharamd;edtpasw sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               使われていない番号を指定します
   edit    --> 環境設定ファイルのデータベースエイリアス文字列の編集領域番号 
               0:標準データベース(Paradoxなど) 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   DBtype  --> データベースの種類(現在 0のみ可能)
               0:標準データベース(Paradoxなど)[MSACCESSも] 
               1:STANDARD 2:INTRBASE 3:MSSQL 4:ORACLE 5:SYBASE 
   Openmd  --> オープンモード(0:読み書き,1;読み取り専用)
   Sharmd  --> 共有モード(0:共有オープン, 1:排他オープン)
   edtpasw --> パスワード文字列の編集領域番号 
               (InterBase,MSACCESS,SQL,...) 
               標準データベースでは 0 を設定 
               InterBaseでは masterkey などの文字列を示す編集領域番号 
---------------------------------------------------------------
[2] クローズデータベース

 <esc>%2;DBid;0;ret sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               データベースクローズされていない番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
---------------------------------------------------------------
[3] 標準データベースの現在のディレクトリを設定 

 <esc>%21;DBid;edit;ret sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               データベースクローズされていない番号を指定します
   edit    --> 設定する標準データベースの現在のディレクトリの編集領域番号 
               \vcom2\db32 など 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
---------------------------------------------------------------
[4] 現在のセッションの専用ディレクトリを設定(paradoxでのみ) 
※※排他アクセスで使用しなければなりません 
※※一時、補助ファイルが作成されるディレクトリ(フルパスで指定) 
 <esc>%22;DBid;edit;ret sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               データベースクローズされていない番号を指定します
   edit    --> 設定する現在のセッションの専用ディレクトリの編集領域番号 
               \vcom2\work など 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
---------------------------------------------------------------------
───────────────────────────────────
               2-2
---------------------------------------------------------------------
■<<<カーソル関数 >>>
---------------------------------------------------------------------
[1] オープンテーブル 
※※特定のテーブルをオープンしカーソルハンドルをオープンしたテーブルに結び付けます。
※※内部バッファが確保されます。
 <esc>%101;CurID;edit;ret;DBid;Openmd;Sharamd;Driver;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされていない番号を指定します
   edit    --> オープンするテーブル名文字列の編集領域番号 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   Openmd  --> オープンモード(0:読み書き,1;読み取り専用)
   Sharmd  --> 共有モード(0:共有オープン, 1:排他オープン)
   Driver  --> ドライバの種類(1:PARADOX 2:dBASE 3:ASCII)
               ※※正しく設定して!!! 
   edt2    --> ドライバの種類が(3:ASCII)の時デリミタとフィールドセパレータを 
               指定編集領域番号に設定します 
               edt2=0 の時はデフォルトで デリミタ無しでフィールドセパレータは,(カンマ) 
               となります
               編集領域番号 ->  -"-, の様に 
               ※※(3:ASCII)ドライバの時はフィールド設定をしなければなりません
               ※※但し先頭レコードにフィールド名などのフィールド設定行があれば
                   不要となります
   0;0;0   --> 将来の追加の為のリザーブド
---------------------------------------------------------------
[2] ASCIIドライバの時フィールド設定 
※※テーブルオープンの直後に設定してください 
 <esc>%103;CurID;edit;ret;fldcnt;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> フィールド定義データを格納しておく
               ※※テーブルの作成の項を参照 
               ※※フィールド属性は論理型で定義してください 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   field   --> フィールド数 
---------------------------------------------------------------
[3] クローズテーブル(カーソル) 
※※カーソルハンドルをクローズします。
※※テーブルしたハンドルはデータベースクローズする前に必ずクローズしてください。
 <esc>%102;CurID;0;ret;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
---------------------------------------------------------------
[4] 先頭レコードの直前にカーソルを移動します 
 <esc>%111;CurID;;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
---------------------------------------------------------------
[5] 次のレコードを読み取ります 
※※レコードは内部バッファに保存されます。
 <esc>%112;CurID;;ret;lock;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   lock    --> ロック要求の種類
               0: ロック無し
               1: 書き込みロック([2006-2-11]誤りを訂正) 
               2: 読み取りロック([2006-2-11]誤りを訂正) 
---------------------------------------------------------------
[6] 前のレコードを読み取ります 
※※レコードは内部バッファに保存されます。
 <esc>%113;CurID;;ret;lock;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   lock    --> ロック要求の種類
               0: ロック無し
               1: 書き込みロック([2006-2-11]誤りを訂正) 
               2: 読み取りロック([2006-2-11]誤りを訂正) 
---------------------------------------------------------------
[7] PARADOXテーブルのシーケンス番号にカーソルを移動します。
※※レコードは内部バッファに保存されます。
 <esc>%115;CurID;;ret;recno;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   recno   --> レコードのシーケンス番号
---------------------------------------------------------------
[8] PARADOXテーブルのカーソルの現在のシーケンス番号を取得します。
※※レコードは内部バッファに保存されます。
 <esc>%116;CurID;;ret;;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
               0 以外に設定してください 
---------------------------------------------------------------
[9] 最後レコードの直後にカーソルを移動します 
 <esc>%119;CurID;;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
---------------------------------------------------------------
[10] リモート更新が行われた時のためにカーソルに関連した全バッファ0を 
     リフレッシュします 
 <esc>%122;CurID;;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
---------------------------------------------------------------
[11] 特定のキーに基ずいて順序付きカーソルを移動します 
※※検索条件に合ったレコードの前に位置します。
※※次のレコードを読み取りますとそのレコードが読み込まれます 
 <esc>%151;CurID;edit;ret;field;cond;flds;ilen;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> キーフィールドのデータを格納しておく
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   field   --> キーフィールドのフィールド番号 
   cond    --> 検索条件(0:完全一致 1:より大きい 2:等しいか大きい) 
               ※※完全一致条件を指定した時で一致するキーが存在しない時 
                   エラーとなります 
               ※※より大きい又は等しいか大きい条件の時エラーとなりません 
   flds    --> 複合キーに使う完全なフィールド数(0) 
               ※※例えば 3個のフィールドからなる複合キーで作成されている時
                 flds=1,ilen=0 と指定すると 1番目のフィールドが一致する
                 最初のレコードの前に位置づけます。
                 flds=2,ilen=0 と指定すると 1番目と2番目のフィールドが一致する
                 最初のレコードの前に位置づけます。
                 flds=3,ilen=0 と指定すると 1,2,3番目のフィールドが一致する
                 最初のレコードの前に位置づけます。
   ilen    --> 複合キーで使われる最後のフィールドの長さ(0)[要文字項目] 
               ※※0を指定してください。
※※flds, ilen  共に 0 のときキー全体が使われます 
  複合キーは予め指定したフィールドに現在のレコードバッファにデータを格納 
  しておきます。(キーフィールド) 
    <esc>%352;CurID;edit;ret;field;edtnam;0;0 sp D 
※※key1,key2,key3の3個の複合キーの時 flds=3,ilen=0 と指定します 
※※キーのソート順は A a B b ... の様になります 
---------------------------------------------------------------
[12] 現在のレコードを読み取ります 
※※レコードは内部バッファに保存されます。
 <esc>%152;CurID;;ret;lock;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   lock    --> ロック要求の種類
               0: ロック無し
               1: 書き込みロック([2006-2-11]誤りを訂正) 
               2: 読み取りロック([2006-2-11]誤りを訂正) 
---------------------------------------------------------------
[13] キーに一致するレコードを読み取りします 
 <esc>%117;CurID;edit;ret;field;flds;ilen;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> キーフィールドのデータを格納しておく
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   field   --> キーフィールドのフィールド番号 
   flds    --> 複合キーに使う完全なフィールド数(0) 
   ilen    --> 複合キーで使われる最後のフィールドの長さ(0)[要文字項目] 
※※flds, ilen  共に 0 のときキー全体が使われます 
  複合キーは予め指定したフィールドに現在のレコードバッファにデータを格納 
  しておきます。(キーフィールド) 
    <esc>%352;CurID;edit;ret;field;edtnam;0;0 sp D 
※※key1,key2,key3の3個の複合キーの時 flds=3,ilen=0 と指定します 
※※キーのソート順は A a B b ... の様になります 
---------------------------------------------------------------
---------------------------------------------------------------------
[14] カーソルハンドルに付随したレコード数 %%%[10-feb-2006]%%% 
 <esc>%118;Curid;;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> レコード数 
   結果値のフィールド==> レコード数 
※※<レコード数>はおおよその値(上限値)が戻ります 
---------------------------------------------------------------
───────────────────────────────────
               2-3
---------------------------------------------------------------------
■<<<テーブル関数>>>
---------------------------------------------------------------------
[1] テーブルの新規作成 
※※データベースに新規のテーブルを作成します。
 <esc>%201;DBid;edit;ret;edt2;overw;count;type;0;0;0 sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> フィールド定義パラメータの置かれている編集領域番号 
   フィールド定義パラメータ ==> フィールド定義/フィールド定義/.../フィールド定義  
   フィールド定義 ==>  
                 (1)フィールド番号 <- 1 から始まる数字 
                 ;(2)フィールド名 <- SELECT文等で使用する 
                 ;(3)フィールドタイプ <- (論理型) 
                      1:nullで終了する文字列タイプ(可)[標準] 
                      2:DATE(32bit)(変換可) yyyy/mm/dd 
                      3:Blob(不可) 
                      4:Boolean(可) 1:true 0:false 
                      5:INT(16bit)符号付整数(変換可) 
                      6:INT(32bit)符号付整数(変換可) 
                      7:浮動小数点(64bit)(変換可)
                      8:BCD(不可) 
                      9:固定長バイト(可){文字データのみ可 
                      10:TIME(32bit)(変換可) hh:mm:ss 
                      11:DATE&TIME(64bit)(変換可) hh:mm:ss;yyyy/mm/dd
                      12:INT(16bit)符号無整数(変換可) 
                      13:INT(32bit)符号無整数(変換可) 
                  ;(4)フィールドサブタイプ --> 定義値の項参照 
                  ;(5)文字数字の桁数 
                       ※※PARADOXでは文字列は 255 以下です 
                       ※※dBASEでは文字列は 254 以下です 
                  ;(6)小数点以下の桁数(ない場合=0) 
                  ;(7);(8);(9)リザーブド 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   edt2    --> テーブル名の置かれている編集領域番号 
   overw   --> 既存のテーブルを上書きする時 1 
               上書きせずエラーとする場合 0 に指定
   count   --> フィールド定義個数 
   type    --> ドライバータイプ(1:Paradox, 2:DBASE, 3:ascii)
---------------------------------------------------------------
[2] テーブルの削除 
※※テーブルを削除します。
 <esc>%204;DBid;edit;ret;type;0;0;0 sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> テーブル名を示すパス名の置かれている編集領域番号 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   type    --> ドライバータイプ(1:Paradox, 2:DBASE, 3:ascii)
---------------------------------------------------------------
[3] テーブルの全レコード削除 
※※テーブルに結び付けれたレコードを全て削除します。
 <esc>%205;DBid;edit;ret;CurID;type;0;0;0 sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> (1)テーブル名を示すパス名の置かれている編集領域番号 
               0 の時は指定なしの意味となります 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID   --> (2)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
               ※※CurIDを指定(edit=0)する場合はテーブルを排他オープン
                   しなければなりません
   type    --> ドライバータイプ(1:Paradox, 2:DBASE, 3:ascii)
※※edit=0 のときは CurIDを指定します 
※※edit>0 のときは CurIDは使用しません 
---------------------------------------------------------------
[4] テーブルのコピー(同一データベース) 
※※テーブルを別のテーブル名で複写します。
 <esc>%211;DBid;edit;ret;edt2;overw;type;0;0;0 sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> コピー元テーブル名を示すパス名の置かれている編集領域番号 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   edt2    --> コピー先テーブル名を示すパス名の置かれている編集領域番号 
   overw   --> 既存のテーブルを上書きする時 1 
               上書きせずエラーとする場合 0 に指定
   type    --> ドライバータイプ(1:Paradox, 2:DBASE, 3:ascii)
---------------------------------------------------------------
[5] テーブルの名前の変更 
※※テーブルを別のテーブル名に変更します。(テーブルはOpenしないで使用)
 <esc>%212;DBid;edit;ret;edt2;type;0;0;0 sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> 変更前テーブル名を示すパス名の置かれている編集領域番号 
               ※※テーブルをオープンしないで使用します。
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   edt2    --> 変更後テーブル名を示すパス名の置かれている編集領域番号 
               ※※テーブルをオープンしないで使用します。
   type    --> ドライバータイプ(1:Paradox, 2:DBASE, 3:ascii)
---------------------------------------------------------------
[6] テーブルを再構築 
※※テーブルを再構築して空きスペースを開放します。
  dBASE でのみ有効 !!! 
 <esc>%213;DBid;edit;ret;CurID;type;regen;0;0;0 sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> (1)テーブル名を示すパス名の置かれている編集領域番号
               ※※edit=0の時 CurID を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID   --> (2)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
               ※※edit=0の時 CurID を指定します
   type    --> ドライバータイプ(2:DBASE の時のみ有効)
               ※※edit=0以外の時 type を指定します
   regen   --> 0:古くなったインデックスを再生成しない 
               1:古くなったインデックスを再生成する 
---------------------------------------------------------------
[7] インデックスを再生成 
※※テーブル上の全てのインデックスを再生成します。
※※テーブルを排他オープンしなければなりません
 <esc>%215;CurID;;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
---------------------------------------------------------------
[8] カーソルに結び付けられた全ての更新レコードをディスクに保存 
 <esc>%216;CurID;;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
---------------------------------------------------------------
[9] テーブル構造を再構築 
※※テーブル構造を再構築します。
 <esc>%401;DBid;edit;ret;edt2;cout;pack;0;0 sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> フィールド定義パラメータの置かれている編集領域番号 
   フィールド定義パラメータ ==> フィールド定義/フィールド定義/.../フィールド定義  
                         再構築後の完全なフィールド定義が必要です 
   フィールド定義 ==>  
                   (1)フィールド番号 -> 元の要素のフィールド番号 
                         新規の要素の追加は(0)に設定します 
                  ;(2)フィールド名 
                  ;(3)フィールドタイプ 
                         1:nullで終了する文字列タイプ 
                         2:DATE(32bit) 
                         3:Blob 
                         4:Boolean 
                         5:INT(16bit)符号付整数 
                         6:INT(32bit)符号付整数 
                         7:浮動小数点(64bit)
                         8:BCD 
                         9:固定長バイト 
                         10:TIME(32bit) 
                         11:TIME(64bit) 
                         12:INT(16bit)符号無整数 
                         13:INT(32bit)符号無整数 
                  ;(4)フィールドサブタイプ --> 定義値の項参照 
                  ;(5)文字数字の桁数 
                  ;(6)小数点以下の桁数 
                  ;(7);(8)リザーブド 
                  ;(9)再構築の動作 
                         0:何もしません 
                         1:新規の要素を追加します 
                         2:既存の要素をコピーします 
                         3:要素を変更します 
                         4:要素を削除します 
                          (要素に関連したインデックス等がドロップします) 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   edt2    --> テーブル名の置かれている編集領域番号 
   count   --> フィールド定義個数
   pack    --> 0:再構築(pack処理)しない 1:再構築(pack処理)する 
---------------------------------------------------------------
───────────────────────────────────
               2-4
---------------------------------------------------------------------
■<<<データアクセス関数>>>
---------------------------------------------------------------------
[1] フィールドのデータ型に従ってレコードバッファを空白レコードで初期化します 

 <esc>%310;CurID;;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
---------------------------------------------------------------
[2] テーブルの最後にレコードを追加 
 <esc>%311;CurID;;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
---------------------------------------------------------------
[3] テーブルにレコードを挿入します 
※※PARADOXでは1次インデックスがある場合インデックスの順序しに従った
  場所に物理的に配置されます。
※※dBASEでは最後にレコードが追加されます。
 <esc>%312;CurID;;ret;lock;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   lock    --> ロック要求の種類
               0: ロック無し
               1: 書き込みロック([2006-2-11]誤りを訂正) 
               2: 読み取りロック([2006-2-11]誤りを訂正) 
---------------------------------------------------------------
[4] 現在のレコードを更新します 
 <esc>%313;CurID;;ret;lock;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   lock    --> 終了時にロックを解放するか指定します
               0: ロックは解放されません
               1: ロックは解放されます
---------------------------------------------------------------
[5] 特定のカーソルの現在のレコードを削除します 
※※dBASEではpacktableでパックされるまで物理的に削除されません。
 <esc>%314;CurID;;ret;;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
---------------------------------------------------------------
[6-1] 現在のレコードバッファから指定したフィールドのデータを編集領域等に取得 
※※ホストにフィールドのデータは転送されない。%%%[30-mar-2003]%%% <追加機能> 
 ◆ BLOB型や利用可能以外のデータ型を扱うことは出来ません。 
 <esc>%350;CurID;edit;ret;field;edtset;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> (1)フィールド名を示す文字列の置かれている編集領域番号 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   field   --> (2)フィールド番号
                edit=0 の時 fieldで指定したフィールド番号が使用されます 
   edtset  --> 0以外の時指定した編集領域番号のフィールドデータが文字列に 
               変換されて格納されます(65536バイト以内の場合) 
※※edtset=1<->45,531,532,533,534 のいづれか %%%[30-mar-2003]%%%
※※フィールドが空白がどうかが取得できます
※※ローカルデータベースのフィールド長は最大255/254バイトです%%%[30-mar-2003]%%%
※※編集領域番号等に取り出したデータは自分で取得して下さい%%%[30-mar-2003]%%%
---------------------------------------------------------------
[6-2] 現在のレコードバッファから指定したフィールドのデータを取得 
※※ホストにフィールドのデータが転送されます。(リスポンスに含まれる[デリミタ注意])
 ◆ BLOB型や利用可能以外のデータ型を扱うことは出来ません。 
 <esc>%351;CurID;edit;ret;field;edtset;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> (1)フィールド名を示す文字列の置かれている編集領域番号 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   field   --> (2)フィールド番号
                edit=0 の時 fieldで指定したフィールド番号が使用されます 
   edtset  --> 0以外の時指定した編集領域番号のフィールドデータが文字列に 
               変換されて格納されます(65536バイト以内の場合) 
※※edtset=1<->45,531,532,533,534 のいづれか %%%[30-mar-2003]%%%
※※フィールドが空白がどうかが取得できます
※※ローカルデータベースのフィールド長は最大255/254バイトです%%%[30-mar-2003]%%%
---------------------------------------------------------------
[7] 指定したフィールドに現在のレコードバッファにデータを格納 
※※予め編集領域番号にフィールドに格納するデータ文字列をダウンロード 
  しておきます。 
 ◆ BLOB型や利用可能以外のデータ型を扱うことは出来ません。 
 <esc>%352;CurID;edit;ret;field;edtnam;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> フィールドに格納するデータ文字列の置かれている編集領域番号 
               文字列の長さが、ゼロの場合、NULLか空白が設定されす。 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   field   --> (2)フィールド番号
                edtnam=0 の時 fieldで指定したフィールド番号が使用されます 
   edtnam  --> (1)フィールド名を示す文字列の置かれている編集領域番号 
※※edit=1<->45,531,532,533,534 のいづれか %%%[30-mar-2003]%%%
---------------------------------------------------------------
---------------------------------------------------------------
[8-1] 現在のレコードバッファから指定した全フィールドのデータを取得 
※※ホストにフィールドのデータは転送されない。%%%[04-feb-2006]%%% <追加機能> 
 ◆ BLOB型や利用可能以外のデータ型を扱うことは出来ません。 
 <esc>%353;CurID;edit;ret;field;edtset;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> 0 フィールド間を区切るデリミタ文字列は(,) 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   field   --> 0 
   edtset  --> 指定した編集領域番号のフィールドデータが文字列に 
               変換されて格納されます(65536バイト以内の場合) 
※※edtset=1<->45,531,532,533,534 のいづれか 
※※ローカルデータベースのフィールド長は最大255/254バイトです 
※※SQLデータベースのフィールド長とデリミタ文字列の合計長は最大65534バイトです 
※※edtset=531,532,533,534 のいづれかの場合は 
    全フィールドのデータの読み込みは  <esc>%580;edtset; sp Fで完了します 
---------------------------------------------------------------
---------------------------------------------------------------
[8-2] 現在のレコードバッファから指定した全フィールドのデータを取得 
※※ホストにフィールドのデータは転送されない。%%%[04-feb-2006]%%% <追加機能> 
 ◆ BLOB型や利用可能以外のデータ型を扱うことは出来ません。 
 <esc>%354;CurID;edit;ret;field;edtset;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> フィールド間を区切るデリミタ文字列の置かれている編集領域番号 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   field   --> 0 
   edtset  --> 指定した編集領域番号のフィールドデータが文字列に 
               変換されて格納されます(65536バイト以内の場合) 
※※edtset=1<->45,531,532,533,534 のいづれか 
※※ローカルデータベースのフィールド長は最大255/254バイトです 
※※SQLデータベースのフィールド長とデリミタ文字列の合計長は最大65534バイトです 
※※edtset=531,532,533,534 のいづれかの場合は 
    全フィールドのデータの読み込みは  <esc>%580;edtset; sp Fで完了します 
---------------------------------------------------------------
---------------------------------------------------------------
[9-1] 指定した編集領域から全フィールドのデータを現在のレコードバッファに格納 
※※予め編集領域に全フィールドをデリミタで区切って格納しておく。 
     %%%[05-feb-2006]%%% <追加機能> 
 ◆ BLOB型や利用可能以外のデータ型を扱うことは出来ません。 
 <esc>%355;CurID;edit;ret;field;edtset;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> 0 フィールド間を区切るデリミタ文字列は(,) 
               デリミタの日本語処理は行いません。 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   field   --> 0 
   edtset  --> 指定した編集領域番号に全フィールドデータ文字列を 
               デリミタで区切って格納しておく 
               変換されて格納されます(65536バイト以内の場合) 
               文字列の長さがゼロのフィールドはNULLか空白が設定されす。 
※※edtset=1<->45,531,532,533,534 のいづれか 
※※ローカルデータベースのフィールド長は最大255/254バイトです 
※※SQLデータベースのフィールド長とデリミタ文字列の合計長は最大65534バイトです 
---------------------------------------------------------------
---------------------------------------------------------------
[9-2] 指定した編集領域から全フィールドのデータを現在のレコードバッファに格納 
※※予め編集領域に全フィールドをデリミタで区切って格納しておく。 
     %%%[05-feb-2006]%%% <追加機能> 
 ◆ BLOB型や利用可能以外のデータ型を扱うことは出来ません。 
 <esc>%356;CurID;edit;ret;field;edtset;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> フィールド間を区切るデリミタ文字列の置かれている編集領域番号 
               デリミタの日本語処理は行いません。 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   field   --> 0 
   edtset  --> 指定した編集領域番号に全フィールドデータ文字列を 
               デリミタで区切って格納しておく 
               変換されて格納されます(65536バイト以内の場合) 
               文字列の長さがゼロのフィールドはNULLか空白が設定されす。 
※※edtset=1<->45,531,532,533,534 のいづれか 
※※ローカルデータベースのフィールド長は最大255/254バイトです 
※※SQLデータベースのフィールド長とデリミタ文字列の合計長は最大65534バイトです 
---------------------------------------------------------------
───────────────────────────────────
               2-5
---------------------------------------------------------------------
■<<<トランザクション関数>>>
---------------------------------------------------------------------
[1] トランザクションの開始 
※※トランザクションの終了が commit rollback に相当します。
 <esc>%501;DBid;;ret;exil;0;0;0 sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   exil    --> 排他レベル
               0: コミットされていない変更 ファントム無し
               1: コミットされた変更 ファントム無し
               2: 全読み取りの反復可能
---------------------------------------------------------------
[2] トランザクションの終了 
※※トランザクションの開始をしておかなければなりません。
 <esc>%502;DBid;;ret;eend;0;0;0 sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   eend    --> トランザクションの終了の種類 
               0: トランザクションをコミットします(更新されます) 
               1: トランザクションをコミットしカーソルを保持します(エラーが発生する)
                  ※※使用しないで!!!
               2: トランザクションをロールバックします(更新されません) 
                  ※※トランザクションは無視され元のデータのままです 
---------------------------------------------------------------------
───────────────────────────────────
               2-6
---------------------------------------------------------------------
■<<<インデックス関数  >>>
 ◆SQLソース(Oracleなどでは、使用不可。[2006-2-19] 
---------------------------------------------------------------------
[1] 既存のテーブルにインデックスを作成します 
 <esc>%601;DBid;edit;ret;CurID;type;edtnam;0;0;0 sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> インデックス定義パラメータの置かれている編集領域番号 
   インデックス定義パラメータ ==> インデックス定義1個のみ  
   インデックス定義 ==> (1)インデックス名(指定する)※※ 
                        ※※(Paradox)複合キーでない時フィールドと同じ 
                        ※※(InterBase)RDB$PRIMARY1の様に$が含まれる 
                  /(2)インデックスid(Paradox) <- 数字(1->255) 
                                             ※※複合キー(256->511) 
                  /(3)インデックスタグ名(null) 
                  /(4)一次キーの場合=1,以外=0(1) 
                  /(5)重複キーが許されていない場合=1,以外=0(1) 
                  /(6)キーが降順の場合=1,以外=0(0) 
                  /(7)キーが保守されていない場合=1,以外=0(1) 
                  /(8)インデックスが大文字小文字を区別しない=1 
                  /(9)複合インデックス中のキーフィールドの数(1) 
                         ※※通常=1,式インデックス(dBASE)=0 
                  /(10)キー中のフィールド番号の配列(1;2;3)の様に指定 
                         ※※キーフィールドの数指定する 
                 ----------------------------------------------------- 
                  /(11)キーがサブセットインデックスの場合=1,以外=0(dDASEのみ) 
                  /(12)キーが式インデックスの場合=1,以外=0(dDASEのみ) 
                  /(13)キーの物理長(byte) 
                            インデックスが作成されている間示されない 
                  /(14)インデックスが古くなっている TRUE 
                            インデックスが作成されている間示されない 
                  /(15)キーの種類(dDASEのみ) 
                  /(16)式インデックスのキー式(dDASEのみ) 
                  /(17)サブセット条件のキー式(dDASEのみ) 
                 ----------------------------------------------------- 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   type    --> ドライバータイプ(1:Paradox, 2:DBASE, 3:ascii)
   edtnam  --> (2)テーブル名を示すパス名の置かれている編集領域番号 
※※edtnam=0 のときは CurID によってテーブルが決定されます 
---------------------------------------------------------------
[2] 現在のレコードからインデックスキー値を取得します 
※※キー値がホストに送信されます。
※※複合キーの場合はフィールド,フィールド,..となります。
 <esc>%602;CurID;edit;ret;inxno;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> 格納先編集領域番号(0は格納しない) 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   inxno   --> インデックスid(Paradox)
               0:アクティブインデックス 
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> フィールドの個数 
   結果値のフィールド==> キー 
※※edit>0ならば編集領域番号にkeyが格納されます
---------------------------------------------------------------
[3] 特定のカーソルのアクティブなインデックス順を変更します 
※※カーソルはBOFに移動します。
 <esc>%603;CurID;edit;ret;idxid;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> (1)インデックス名を示す文字列の置かれている編集領域番号 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   idxid   --> edit=0 のときインデックス識別子で指定します
---------------------------------------------------------------
[4] インデックスを削除します 
 <esc>%604;DBid;edit;ret;CurID;type;idxid;edtnam;0 sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> (1)テーブル名を示すパス名の置かれている編集領域番号 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID   --> (2)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   type    --> ドライバータイプ(1:Paradox, 2:DBASE, 3:ascii)
   idxid   --> (b)インデックスを示すインデックス識別子
   edtnam  --> (a)インデックス名を示す文字列の置かれている編集領域番号 
※※edino=0 のときは CurID によってテーブルが決定されます 
※※edtnam=0 のときは idxid によってインデックスが決定されます 
---------------------------------------------------------------------
───────────────────────────────────
               2-7
---------------------------------------------------------------------
■<<<問い合わせ関数  >>>
---------------------------------------------------------------------
[1]準備した問い合わせにハンドルを割り当てます。
※※1データベースに対して問い合わせ文ハンドル1個のみ可能です
 <esc>%801;qHand;;ret;DBid;0;0 sp D 
---------------------------------------------------------------
   qHand   --> 問い合わせ文ハンドル番号(1<->1023)
               空いている番号を指定します
               ※※ハンドル番号とカーソルハンドルとデータベースハンドルは
                   同じ番号でもそれぞれ別に管理されます
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
---------------------------------------------------------------
[2]DbiQPrepare SQL または QBE 問い合わせの実行を準備し,
※※準備した問い合わせを含む文へのハンドルを返します
※※SQL文は、SELECT,CREATE,INSERT,UPDATE,... 
 <esc>%802;qHand;edit;ret;0;0;0 sp D 
---------------------------------------------------------------
   qHand   --> 問い合わせ文ハンドル番号(1<->1023)
   edit    --> SQL問い合わせ文の置かれている編集領域番号 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
---------------------------------------------------------------
[3]DbiQExec アプリケーションが用意した文ハンドルによって識別される,
※※以前に準備した問い合わせを実行し,結果集合へのカーソルを返します
※※結果集合の件数が返えされます(補助1) 
 <esc>%803;qHand;;ret;CurID;0;0 sp D 
---------------------------------------------------------------
   qHand   --> 問い合わせ文ハンドル番号(1<->1023)
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID   --> カーソルハンドルを格納するため識別する番号(1<->1023)
               空いている番号を指定します
           ※※結果集合が空(件数=0)のときカーソルハンドルは空いている番号
               のままです
---------------------------------------------------------------
[4]DbiQFree アプリケーションが用意した文ハンドルによって識別される,
※※以前に準備した問い合わせに結び付けられたリソースを解放します 
 <esc>%804;qHand;;ret;0;0;0 sp D 
---------------------------------------------------------------
   qHand   --> 問い合わせ文ハンドル番号(1<->1023)
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
---------------------------------------------------------------
[5]DbiQExecDirecT SQL または QBE 問い合わせを実行し,
※※結果集合へのカーソルを返します 
※※結果集合の件数が返えされます(補助1) 
※※SQL文は、SELECT,CREATE,INSERT,UPDATE,... 
 <esc>%805;DBid;edit;ret;CurID;0;0 sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> SQL問い合わせ文の置かれている編集領域番号 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID   --> カーソルハンドルを格納するため識別する番号(1<->1023)
               空いている番号を指定します
           ※※結果集合が空(件数=0)のときカーソルハンドルは空いている番号
               のままです
---------------------------------------------------------------
[6]DbiQInstantiateAnswer 結果集合のカーソルから永久テーブルを作成します 
※※結果集合へのカーソルハンドルはクローズされます。(CurID1) 
 <esc>%806;qHand;edit;ret;CURid1;CURid2;type;over sp D 
---------------------------------------------------------------
   qHand   --> 問い合わせ文ハンドル番号(1<->1023)
   edit    --> 永久テーブルの名前置かれている編集領域番号(1->45) 
               0:デフォルト名称 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID1  --> 結果集合へのカーソルハンドルを識別する番号(1<->1023)
               結果集合へのカーソル番号を指定します
   CurID2  --> カーソルハンドルを格納するため識別する番号(1<->1023)
               空いている番号を指定します
   type    --> ドライバータイプ(1:Paradox, 2:DBASE, 3:ascii)
   over    --> 1:上書きする 0:しない
---------------------------------------------------------------------
───────────────────────────────────
               2-8
---------------------------------------------------------------------
■<<<バッチムーブ>>>
---------------------------------------------------------------------
※※ソーステーブルを別の種類のドライバ(テキストファイル)のに転送する時に使用。 
※※(テキストファイル)からデータベーステーブルに転送する時に使用。 
※※カーソルハンドル(入出力)を使用した場合は現在のカーソルの位置から処理されます 
[1] バッチムーブ(モード1)[カーソルハンドルを使用しない] 
※※ソーステーブルを別の種類のドライバの新規テーブルに転送等をします。 
 <esc>%701;mode;edit;ret;;;ixN;ixna;ixtag;0;0 sp D 
---------------------------------------------------------------
   mode    --> バッチムーブの動作モード 
               0: 出力テーブルにレコードを追加(APPEND) 
               1: 出力テーブルに一致するレコードを上書きし(UPDATE) 
                 (一致しないソーステーブルからのレコードは追加しません) 
               2: 出力テーブルに一致するレコードは上書きし(APPENDUPDATE) 
                  一致しないソーステーブルからのレコードは追加します 
               3: 出力テーブルに一致するレコードを削除します(SUBTRACT) 
               4: ソーステーブルを別の種類のドライバの新規テーブルのコピーします(COPY) 
   edit    --> DBid;テーブル名前;テーブル種類が置かれている編集領域番号(1->45) 
               531,532,533,534 (65535bytes)
               DBid --> データベースを識別する番号(1<->1023)
               テーブル種類 ->  PARADOX   DBASE   ASCIIDRV 
               [例]  15;srctbl.db;PARADOX/17;desttbl.txt;ASCIIDRV--, 
                    ソーステーブルと出力テーブルを / で区切ってください 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   ixN     --> 出力テーブルが使うインデックス識別番号
               0:省略
               動作モードが UPDATE,APPEDNUPDATE,SUBTRACTの時だけ使用
   ixna    --> 出力テーブルが使うインデックス名が置かれている編集領域番号(1->45) 
               0:省略
               動作モードが UPDATE,APPEDNUPDATE,SUBTRACTの時だけ使用
   ixtag   --> 出力テーブルが使うインデックスタグ名が置かれている編集領域番号(1->45)
               0:省略
               動作モードが UPDATE,APPEDNUPDATE,SUBTRACTの時だけ使用
   0;0;0   --> 将来の為
---------------------------------------------------------------
[2] バッチムーブ(モード2) [カーソルハンドルを使用] 
 <esc>%702;mode;0;ret;Curid1;Curid2;ixN;ixna;ixtag;0;0 sp D 
---------------------------------------------------------------
   mode    --> バッチムーブの動作モード 
               0: 出力テーブルにレコードを追加(APPEND) 
               1: 出力テーブルに一致するレコードを上書きし(UPDATE) 
                 (一致しないソーステーブルからのレコードは追加しません) 
               2: 出力テーブルに一致するレコードは上書きし(APPENDUPDATE) 
                  一致しないソーステーブルからのレコードは追加します 
               3: 出力テーブルに一致するレコードを削除します(SUBTRACT) 
               4: ソーステーブルを別の種類のドライバの新規テーブルのコピーします(COPY) 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID1  --> ソーステーブルのカーソルハンドルを識別する番号(1<->1023)
               オープン済みのカーソル番号を指定します
   CurID2  --> 出力テーブルのカーソルハンドルを識別する番号(1<->1023)
               オープン済みのカーソル番号を指定します
   ixN     --> 出力テーブルが使うインデックス識別番号
               0:省略
               動作モードが UPDATE,APPEDNUPDATE,SUBTRACTの時だけ使用
   ixna    --> 出力テーブルが使うインデックス名が置かれている編集領域番号(1->45) 
               0:省略
               動作モードが UPDATE,APPEDNUPDATE,SUBTRACTの時だけ使用
   ixtag   --> 出力テーブルが使うインデックスタグ名が置かれている編集領域番号(1->45)
               0:省略
               動作モードが UPDATE,APPEDNUPDATE,SUBTRACTの時だけ使用
   0;0;0   --> 将来の為
---------------------------------------------------------------
[3] バッチムーブ(モード3)[ソーステーブルのみカーソルハンドルを使用]  
 <esc>%703;mode;edit;ret;Curid1;;ixN;ixna;ixtag;0;0 sp D 
---------------------------------------------------------------
   mode    --> バッチムーブの動作モード 
               0: 出力テーブルにレコードを追加(APPEND) 
               1: 出力テーブルに一致するレコードを上書きし(UPDATE) 
                 (一致しないソーステーブルからのレコードは追加しません) 
               2: 出力テーブルに一致するレコードは上書きし(APPENDUPDATE) 
                  一致しないソーステーブルからのレコードは追加します 
               3: 出力テーブルに一致するレコードを削除します(SUBTRACT) 
               4: ソーステーブルを別の種類のドライバの新規テーブルのコピーします(COPY) 
   edit    --> DBid;テーブル名前;テーブル種類が置かれている編集領域番号(1->45) 
                  531,532,533,534 (65535bytes)
               DBid --> データベースを識別する番号(1<->1023)
               テーブル種類 ->  PARADOX   DBASE   ASCIIDRV 
               [例]  17;desttbl.txt;ASCIIDRV--, <- 出力テーブル
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID1  --> ソーステーブルのカーソルハンドルを識別する番号(1<->1023)
               オープン済みのカーソル番号を指定します
   ixN     --> 出力テーブルが使うインデックス識別番号
               0:省略
               動作モードが UPDATE,APPEDNUPDATE,SUBTRACTの時だけ使用
   ixna    --> 出力テーブルが使うインデックス名が置かれている編集領域番号(1->45) 
               0:省略
               動作モードが UPDATE,APPEDNUPDATE,SUBTRACTの時だけ使用
   ixtag   --> 出力テーブルが使うインデックスタグ名が置かれている編集領域番号(1->45)
               0:省略
               動作モードが UPDATE,APPEDNUPDATE,SUBTRACTの時だけ使用
   0;0;0   --> 将来の為
---------------------------------------------------------------
[4] バッチムーブ(モード4)[出力テーブルのみカーソルハンドルを使用]  
 <esc>%704;mode;edit;ret;;Curid2;ixN;ixna;ixtag;0;0 sp D 
---------------------------------------------------------------
   mode    --> バッチムーブの動作モード 
               0: 出力テーブルにレコードを追加(APPEND) 
               1: 出力テーブルに一致するレコードを上書きし(UPDATE) 
                 (一致しないソーステーブルからのレコードは追加しません) 
               2: 出力テーブルに一致するレコードは上書きし(APPENDUPDATE) 
                  一致しないソーステーブルからのレコードは追加します 
               3: 出力テーブルに一致するレコードを削除します(SUBTRACT) 
               4: ソーステーブルを別の種類のドライバの新規テーブルのコピーします(COPY) 
   edit    --> DBid;テーブル名前;テーブル種類が置かれている編集領域番号(1->45) 
                  531,532,533,534 (65535bytes)
               DBid --> データベースを識別する番号(1<->1023)
               テーブル種類 ->  PARADOX   DBASE   ASCIIDRV 
               [例]  15;srctbl.db;PARADOX <- ソーステーブル 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID2  --> 出力テーブルのカーソルハンドルを識別する番号(1<->1023)
               オープン済みのカーソル番号を指定します
   ixN     --> 出力テーブルが使うインデックス識別番号
               0:省略
               動作モードが UPDATE,APPEDNUPDATE,SUBTRACTの時だけ使用
   ixna    --> 出力テーブルが使うインデックス名が置かれている編集領域番号(1->45) 
               0:省略
               動作モードが UPDATE,APPEDNUPDATE,SUBTRACTの時だけ使用
   ixtag   --> 出力テーブルが使うインデックスタグ名が置かれている編集領域番号(1->45)
               0:省略
               動作モードが UPDATE,APPEDNUPDATE,SUBTRACTの時だけ使用
   0;0;0   --> 将来の為
---------------------------------------------------------------
---------------------------------------------------------------------
■<<<デバグモード設定>>>
---------------------------------------------------------------------
[1] デバグモード設定します 
 <esc>%777;mode sp D 
    mode   --> 0:通常モード 0以外:エラー発生時vcom画面でメッセージボックス表示 
---------------------------------------------------------------------
───────────────────────────────────
               2-9
---------------------------------------------------------------------
■<<<ダウンロード機能>>>
---------------------------------------------------------------------
[1] テーブルにレコード群を挿入します 
 ◆ BLOB型や利用可能以外のデータ型を扱うことは出来ません。 
※※PARADOXでは1次インデックスがある場合インデックスの順序しに従った
  場所に物理的に配置されます。
※※dBASEでは最後にレコードが追加されます。
※※無条件追加されます。[2006-2-19] 
 <esc>%901;CurID;;ret;lock;0;0 sp D <-- ダウンロードの開始 
 <フィールド1>,<フィールド2>,<フィールド3>,...<フィールドn><CR><LF> <--先頭レコード 
 .......  
 <フィールド1>,<フィールド2>,<フィールド3>,...<フィールドn><CR><LF> <--最終レコード
 <control/z> <--終了 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
※※無条件追加されます。[2006-2-19] 
※※ロック要求の種類(ロック無し)
    追加後ロックは解放されます
※※追加のレコード件数が返えされます(補助1)[2006-2-19] 
---------------------------------------------------------------
[2] テーブルにレコード群を挿入します(<CR>を送信するモード) 
 <esc>%902;CurID;;ret;lock;0;0 sp D <-- ダウンロードの開始 
  上記の記述と同じですが1レコード処理される毎に<CR>がホストに送信
  されます(同期をとりたい場合) 
※※追加のレコード件数が返えされます(補助1)[2006-2-19] 
 ◆ 無条件に、Appendレコードします。 
---------------------------------------------------------------
[3] テーブルに1レコードを更新/追加します 
※※レコードが存在すれば更新されなければ追加されます。
 <esc>%910;CurID;;ret;;0;0 sp D 
---------------------------------------------------------------
   CurID   --> オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
※※ロック要求の種類(ロック無し)
    追加後ロックは解放されます
 ◆SQLソース(Oracleなどでは、使用不可。[2006-2-19] 
---------------------------------------------------------------
───────────────────────────────────
               2-10
---------------------------------------------------------------------
■<<<フィールド/インデックス情報取得>>>
---------------------------------------------------------------------
[1] フィールド数 
 <esc>%951;Curid;;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> フィールドの個数 
   結果値のフィールド==> フィールドの個数 %%%[10-feb-2006]%%% 
---------------------------------------------------------------
[2] 全フィールド情報取得 
 <esc>%952;Curid;edit;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> 結果値の編集領域番号(1->45) 0:格納しない 
               531,532,533,534 (65535bytes)
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> フィールドの個数 
   結果値のフィールド==> フィールド-1 / フィールド-2 / ... /   
   フィールド情報 ==>  
                  (1)フィールド番号 <- 1 から始まる数字 
                 ;(2)フィールド名 <- SELECT文等で使用する 
                 ;(3)フィールドタイプ <- (論理型) 
                      1:nullで終了する文字列タイプ(可)[標準] 
                      2:DATE(32bit)(変換可) yyyy/mm/dd 
                      3:Blob(BLOB操作手順) 
                      4:Boolean(可) 1:true 0:false 
                      5:INT(16bit)符号付整数(変換可) 
                      6:INT(32bit)符号付整数(変換可) 
                      7:浮動小数点(64bit)(変換可)
                      8:BCD(不可) 
                      9:固定長バイト(可){文字データのみ可 
                      10:TIME(32bit)(変換可) hh:mm:ss 
                      11:DATE&TIME(64bit)(変換可) hh:mm:ss;yyyy/mm/dd
                      12:INT(16bit)符号無整数(変換可) 
                      13:INT(32bit)符号無整数(変換可) 
                  ;(4)フィールドサブタイプ --> 定義値の項参照 
                  ;(5)文字数字の桁数 
                       ※※PARADOXでは文字列は 255 以下です 
                       ※※dBASEでは文字列は 254 以下です 
                  ;(6)小数点以下の桁数(ない場合=0) 
                  ;(7)byte数 
---------------------------------------------------------------
[3] フィールド情報取得 
 <esc>%953;Curid;;ret;fldno;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> 結果値の編集領域番号(1->45) 0:格納しない 
               531,532,533,534 (65535bytes)
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   fldno   --> フィールド情報取得するフィールド番号(1->255)
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> フィールドの個数 
   結果値のフィールド==> フィールド1個/   
---------------------------------------------------------------
[3] 全インデックス情報を取得します 
 <esc>%955;CURid;edit;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> 結果値の編集領域番号(1->45) 0:格納しない 
               531,532,533,534 (65535bytes)
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> インデックスの個数 
   結果値のフィールド==> インデックス-1 / インデックス-2 / ... /  
   インデックス定義 ==> インデックス個数分  
   インデックス情報 ==> (1)インデックス名※※ 
                        ※※(Paradox)null? 
                        ※※(InterBase)RDB$PRIMARY1の様に$が含まれる 
                  ;(2)インデックスid(Paradox) <- 数字 
                  ;(3)インデックスタグ名(null) 
                  ;(4)一次キーの場合=1,以外=0(1) 
                  ;(5)重複キーが許されていない場合=1,以外=0(1) 
                  ;(6)キーが降順の場合=1,以外=0(0) 
                  ;(7)キーが保守されていない場合=1,以外=0(1) 
                  ;(8)インデックスが大文字小文字を区別しない=1 
                  ;(9)複合インデックス中のキーフィールドの数(1) 
                         ※※通常=1,式インデックス(dBASE)=0 
                  ;(10)キー中のフィールド番号の配列(1,2,3,)の様に 
                         ※※キーフィールドの数指定する 
                 ----------------------------------------------------- 
---------------------------------------------------------------
[4] インデックス情報を取得します 
 <esc>%956;CURid;edit;ret;inxno;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> 結果値の編集領域番号(1->45) 0:格納しない 
               531,532,533,534 (65535bytes)
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   inxno   --> インデックスid(Paradox)
               0:アクティブインデックス 
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> インデックスの個数 
   結果値のフィールド==> インデックス情報 /  
   インデックス情報 ==> インデックス情報1個のみ  
---------------------------------------------------------------
───────────────────────────────────
               2-11 
---------------------------------------------------------------------
■<<<スキーマ関数>>>
---------------------------------------------------------------------
[1] テーブル名リスト取得数 
 ◆SQLソース(Oracleなどでは結果は得られますがエラーが発生[2006-2-19] 
 <esc>%1001;DBid;edit;ret;Curid;extend;system;; sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> テーブル名検索文字列の置かれている編集領域番号 
                  531,532,533,534 (65535bytes)
              <所有者>.<テーブル>で指定します。 
               ピリオドが指定されていない場合現在の所有者のものである 
               ことが想定されます。 
               検索文字列には、ワイルドカード文字列が指定出来ます。 
               アスタリスク(*)と疑問符(?)が指定出来ます。 
              edit=0 --> 全てのテーブル 
              editに置かれている文字列  
              * --> 全てのテーブル 
              *.* --> 全ての所有者の全てのテーブル 
              *.EMP --> 全ての所有者のEMPというテーブル 
              *CUST --> 所有者のCUSTで終わるテーブル 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID   --> カーソルハンドルを格納するため識別する番号(1<->1023)
               空いている番号を指定します
           ※※結果集合が空(件数=0)のときカーソルハンドルは空いている番号
               のままです
   extend  --> 0:標準情報のみ返す 
               0以外:拡張情報も返す 
   system  --> 0:システムテーブルは含めない 
               0以外:システムテーブルも含る 
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> テーブルの個数 %%%[11-feb-2006]%%% 
   結果値のフィールド==> テーブルの個数 %%%[11-feb-2006]%%% 
※※テーブルの個数は、上限値が返される場合があります 
---------------------------------------------------------------------
TBLBaseDesc は,次のフィールドからなる構造体です。
この構造体を使ってテーブルについての基本情報を提供します。
---------------------------------------------------------------------
フィールド    型    説明
---------------------------------------------------------------------
szName     DBITBLNAME テーブル名(拡張子とディレクトリなし)を示します
szFileName DBITBLNAME ファイル名を示します
szExt      DBIEXT     ファイル拡張子を示します
szType     DBINAME    ドライバの種類を示します
dtDate     DBIDATE    テーブルの日付を示します
tmTime     TIME       テーブルの時間を示します
iSize      UINT32     サイズをバイトで示します
bView      BOOL16     ビューの場合 TRUE(SQL のみ)
bSynonym   BOOL16     オブジェクトがシノニムの場合 TRUE
---------------------------------------------------------------------
TBLFullDesc は,次のフィールドからなる構造体です。
この構造体を使ってテーブルの完全な記述(ベースと拡張)を提供します。
フィールド    型    説明
---------------------------------------------------------------------
tblBase     TBLBaseDesc   ベースの記述を示します
tblExt      TBLExtDesc    拡張の記述を示します
---------------------------------------------------------------------
[2] データベース(エイリアス)名リスト取得数 
 <esc>%1002;0;0;ret;Curid;;;; sp D 
---------------------------------------------------------------
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID   --> カーソルハンドルを格納するため識別する番号(1<->1023)
               空いている番号を指定します
           ※※結果集合が空(件数=0)のときカーソルハンドルは空いている番号
               のままです
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> データベースの個数 %%%[11-feb-2006]%%% 
   結果値のフィールド==> データベースの個数 %%%[11-feb-2006]%%% 
※※データベースの個数は、上限値が返される場合があります 
---------------------------------------------------------------
DBDesc は,次のフィールドからなる構造体です。
この構造体を使ってデータベースを示します。
フィールド    型    説明
---------------------------------------------------------------
szName       DBINAME    データベースエリアス名を示します
szText       DBINAME    説明テキスト
szPhyName    DBIPATH    物理名/パスを示します
szDbType     DBINAME    データベースの種類を示します
---------------------------------------------------------------------
[3] インデックスリスト取得数 
 ◆SQLソース(Oracleなどではエラーが発生[2006-2-19] 
 <esc>%1003;DBid;edit;ret;Curid;;; sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> テーブル名文字列の置かれている編集領域番号 
               531,532,533,534 (65535bytes)
               <所有者>.<テーブル>で指定します。 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID   --> カーソルハンドルを格納するため識別する番号(1<->1023)
               空いている番号を指定します
           ※※結果集合が空(件数=0)のときカーソルハンドルは空いている番号
               のままです
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> インデックスの個数 %%%[11-feb-2006]%%% 
   結果値のフィールド==> インデックスの個数 %%%[11-feb-2006]%%% 
※※インデックスの個数は、上限値が返される場合があります 
---------------------------------------------------------------
フィールド    型    説明 
---------------------------------------------------------------
szName      DBITBLNAME    インデックス名を示します 
iIndexId    UINT16    インデックスを識別する数値を示します 
szTagName   DBINAME   インデックスタグ名を示します(dBASE のみ) 
szFormat    DBINAME     
            現在のところ,情報参照のみ。物理インデックス形式の種類 
          (たとえば,BTREE や HASH)を示します 
bPrimary    BOOL16    キーが一次キーの場合 TRUE 
bUnique     BOOL16    キーに重複値が許されていない場合 TRUE 
bDescending BOOL16    キーが降順の場合 TRUE 
bMaintained BOOL16    キーが保守されている場合 TRUE 
bSubset     BOOL16     
            キーがサブセットインデックスの場合 TRUE(dBASE のみ) 
bExpIdx     BOOL16     
            インデックスが式インデックスの場合 TRUE(dBASE のみ) 
iCost       UINT16    予約 
iFldsInKey  UINT16     
            複合インデックス中のキーフィールドの数を示します。 
            インデックスが式の場合,0 に設定 
iKeyLen     UINT16     
            インデックスが作成されている間示されない。 
            キーの物理長をバイトで示します。 
            アプリケーション開発者はキーバッファとして使う  
            iKeyLen バイトのバッファを割り当てる必要があります。 
            キーバッファは DbiExtractKey や DbiSetToKey  
            などの関数で使われます 
bOutofDate  BOOL16    インデックスが作成されている間示されない。 
            インデックスが古くなっている場合 TRUE 
iKeyExpType UINT16    キー式の種類を示します(dBASE のみ)。 
            この値は fldDBCHAR,fldDBKEYNUM,または fldDBKEYBCD  
            のうちのどれかです 
aiKeyFld    DBIKEY    キー中のフィールド番号の配列を示します 
szKeyExp    DBIKEYEXP     
            式インデックスのキー式を示します(dBASE のみ)。 
            このフィールドは bExpIdx = TRUE のときだけ使われます。 
            式は dBASE 式として記述されます 
szKeyCond   DBIKEYEXP 
        サブセット条件を定義する式を示します(dBASE のみ)。 
        このフィールドは bSubset = TRUE のときだけ使われます。 
        式は dBASE 式として記述されます 
bCaseInsensitive BOOL16     
        インデックスが大文字小文字を区別しない場合 TRUE 
iBlockSize  UINT16     
        このインデックスの内部ブロックサイズをバイトで示します 
iRestrNum   UINT16     
        インデックスが作成されている間示されない。 
        このインデックスの内部再構築番号を示します。 
        この番号はインデックスディスクリプタが読み取られたとき 
        設定されるので,ディスクリプタを DbiDoRestructure へ戻す 
        ときは変更しないでください 
abDescending BOOL16     
        キーが降順の場合,または重複値が許されていない二次キーの場合 TRUE 
メモ:    前に解説した次の4つのフィールドはインデックスのキー 
     (iFldsInKey,aiKeyFld,bExpIdx,szKeyExp)を記述します。 
      キーは,次の組み合わせのどれかを指定して表されます。 
従来型インデックス    式インデックス 
iFldsInKey と aiKeyFld    bExpIdx と szKeyExp 
---------------------------------------------------------------------
[4] ドライバ名リスト取得数 
 <esc>%1004;0;0;ret;Curid;;;; sp D 
---------------------------------------------------------------
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID   --> カーソルハンドルを格納するため識別する番号(1<->1023)
               空いている番号を指定します
           ※※結果集合が空(件数=0)のときカーソルハンドルは空いている番号
               のままです
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> ドライバ名の個数 %%%[11-feb-2006]%%% 
   結果値のフィールド==> ドライバ名の個数 %%%[11-feb-2006]%%% 
※※ドライバ名の個数は、上限値が返される場合があります 
---------------------------------------------------------------------
[5] ファンクションリスト取得数 
 ◆SQLソースのみ可ですが使用不可の場合があります 
 <esc>%1005;DBid;0;ret;Curid;;;; sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID   --> カーソルハンドルを格納するため識別する番号(1<->1023)
               空いている番号を指定します
           ※※結果集合が空(件数=0)のときカーソルハンドルは空いている番号
               のままです
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> ファンクションの個数 %%%[11-feb-2006]%%% 
   結果値のフィールド==> ファンクションの個数 %%%[11-feb-2006]%%% 
※※ファンクションの個数は、上限値が返される場合があります 
※※SQLデータソースでのみ動作 
---------------------------------------------------------------
DBIFUNDesc は,次に示すフィールドからなる構造体です。 
この構造体は,データソース関数への引数となります。 
フィールド    型    説明 
szName     DBINAME    リモート関数名 
szDesc[255]     CHAR    説明 
uOverload    UINT16    関数オーバーロードの数 
---------------------------------------------------------------------
[6] ファイルリスト取得数 
DbiOpenFileList はデータベース内にあるファイルリスト上でカーソルをオープンします。
 <esc>%1006;DBid;edit;ret;Curid;;;; sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> テーブル名検索文字列の置かれている編集領域番号 
                  531,532,533,534 (65535bytes)
              <所有者>.<テーブル>で指定します。 
               ピリオドが指定されていない場合現在の所有者のものである 
               ことが想定されます。 
               検索文字列には、ワイルドカード文字列が指定出来ます。 
               アスタリスク(*)と疑問符(?)が指定出来ます。 
              edit=0 --> 全てのテーブル 
              editに置かれている文字列  
              * --> 全てのテーブル 
              *.* --> 全ての所有者の全てのテーブル 
              *.EMP --> 全ての所有者のEMPというテーブル 
              *CUST --> 所有者のCUSTで終わるテーブル 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID   --> カーソルハンドルを格納するため識別する番号(1<->1023)
               空いている番号を指定します
           ※※結果集合が空(件数=0)のときカーソルハンドルは空いている番号
               のままです
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> テーブルの個数 %%%[11-mar-2006]%%% 
   結果値のフィールド==> テーブルの個数 %%%[11-mar-2006]%%% 
※※テーブルの個数は、上限値が返される場合があります 
使い方 
標準: DbiOpenFileList はデータベースディレクトリ中の 
すべてのファイル名を読み取るための効率良い方法です。 
この関数は,ワイルドカード条件に一致するすべてのファイルのリストを返します。 
SQL: この関数は DbiOpenTableList が返す情報と類似する情報を返します。 
フィールドには,szExt,bDir および  
iSize などの SQL データベースでは使わないものがあります。 
シノニム: Oracle をはじめ,サーバーベンダーの多くはシノニムと呼ばれる 
オブジェクトを提供しています。 
シノニムはテーブルやビューなどのほかのオブジェクトを表す代替名です。
SQL Link は DbiOpenTableList と DbiOpenFileList から返されるテーブルリストに
シノニムを含めるオプションが用意されています。
---------------------------------------------------------------------
[7] ファンクション引数リスト取得数 
DbiOpenFunctionArgList は hDb に結び付けられた pszFuncName で
定義されたデータソース関数のスキーマテーブルへのカーソル
をオープンします。レコード記述は DBIFUNCDesc 型です。
 ◆SQLソースのみ可ですが使用不可の場合があります 
 <esc>%1007;DBid;0;ret;Curid;overload;;; sp D 
---------------------------------------------------------------
   DBid    --> データベースを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   CurID   --> カーソルハンドルを格納するため識別する番号(1<->1023)
               空いている番号を指定します
           ※※結果集合が空(件数=0)のときカーソルハンドルは空いている番号
               のままです
   overload  --> オーバーロード番号であり, 
                 異なる引数セットをとる関数で使われます。 
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> ファンクションの個数 %%%[11-feb-2006]%%% 
   結果値のフィールド==> ファンクションの個数 %%%[11-feb-2006]%%% 
※※ファンクションの個数は、上限値が返される場合があります 
※※SQLデータソースでのみ動作 
---------------------------------------------------------------
DBIFUNDesc は,次に示すフィールドからなる構造体です。 
この構造体は,データソース関数への引数となります。 
フィールド    型    説明 
szName     DBINAME    リモート関数名 
szDesc[255]     CHAR    説明 
uOverload    UINT16    関数オーバーロードの数 
 
typedef struct { 
      UINT16         uArgNum;       // 引数位置番号。関数戻りの場合は 0 
      UINT16         uFldType;      // フィールドの型 
      UINT16         uSubType;      // フィールドの下位型 
    DBIFUNCArgDesc; 
typedef DBIFUNCArgDesc far *pFUNCArgDesc; 
---------------------------------------------------------------------
終了状態 
 
引数データとともにカーソルを返します。カーソルは DbiCloseCursor で 
クローズしていなければなりません。 
pszFuncName が hDb に結び付けられたドライバに対して関連付けられている 
有効な関数でない場合,カーソルは空のテーブルを指します。 
hDb がローカルテーブルに結び付けられている場合, 
「DBIERR_NOTSUPPORTED」が返されます。 
───────────────────────────────────
               2-12 
---------------------------------------------------------------------
■<<<BLOB/ブロックアクセス関数>>>
---------------------------------------------------------------------
[1] バッファを割り付ける 
 <esc>%1100;CURid;0;ret;reccnt;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   reccnt  --> 読み取るべき最大レコード数 
               0 の場合は、バッファを解放する 
---------------------------------------------------------------
※※最大レコード数は、4096迄でず。 
 ※※ブロックバッファが割り当てられます。 
---------------------------------------------------------------------
[2] 数レコード分をバッファに読み込み 
 <esc>%1101;CURid;0;ret;reccnt;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   reccnt  --> 読み取るべきレコード数 
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> "ATEND" : この場合[補助2のフィールド]のレコード数分 
                     読み込まれています 
                     ATENDでない時は実際に読み取られたレコード数 
   補助2のフィールド ==> 実際に読み取られたレコード数 
                     (補助1のフィールドがATEND)の場合にもレコード数分 
                     読み込まれています 
   結果のフィールド  ==> 実際に読み取られたレコード数 
 ※※ブロックバッファ操作モードに切り変ります。 
 ※※ブロックバッファが割り当てられます。 
---------------------------------------------------------------
この関数は,DbiGetNextRecord を piRecords で指定した回数ループを 
実行することと同じです。 
ただし,DbiGetNextRecord でループを形成するよりもこの関数を使った方が 
著しく速くなります。 
フィルタがアクティブな場合,DbiReadBlock はフィルタ条件を満たす 
レコードだけを読み取ります。 
レコードはロックされません。 
読み取られたレコード数は, 
テーブルの終りに達した場合などに 
要求されたレコード数と異なる場合があります。
DbiReadBlock は,64KB を超えるサイズのデータブロックにアクセスできます。 
ただし,バッファに割り当てるサイズによって異なります。 
変数 piRecords に,関数の終了後読み取られた実際のレコード数が入ります。 
カーソルの位置は読み取られたレコード数に従って更新されます。 
---------------------------------------------------------------
[3] 数レコード分をバッファからテーブルに書き込み 
 <esc>%1102;CURid;0;ret;reccnt;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   reccnt  --> 書き込みべきレコード数 
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> 実際に書き込まれたレコード数 
 ※※ブロックバッファが割り当て後に、レコード位置毎にフィールド設定 
   してからこの操作をしてください。 
---------------------------------------------------------------
この関数は,指定した piRecords の数だけ DbiAppendRecord  
を呼び出すのに似ています。 
DbiWriteBlock は,64KB を超えるサイズのデータブロックにアクセスできます。 
ただし,バッファに割り当てるサイズによって異なります。 
メモ:	この関数は,レコード内に空でない BLOB がある場合は使えません。 
Paradox: この関数は参照の整合性条件やデータ検証がある場合は, 
それを検証します。どちらかが失敗すると,書き込み操作は取り消されます。 
---------------------------------------------------------------
[4] バッファ中の先頭レコードに位置ずけします 
 <esc>%1110;CURid;0;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> 0 
                     エラー場合  ERR を返す 
※※レコードの存在の有無に関係無く位置ずけします 
 ※※ブロックバッファ操作モードに切り変ります。 
 ※※ブロックバッファが割り当てれれていなければなりません。 
 ※※この操作後に、フィールド操作をしてください。 
---------------------------------------------------------------
---------------------------------------------------------------
[5] バッファ中の次のレコードに位置ずけします 
 <esc>%1111;CURid;0;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> 0から数えたブロックバッファ中のレコード位置 
                     最終の次の場合  EOB を返す 
                     エラー場合  ERR を返す 
※※レコードの存在の有無に関係無く位置ずけします 
 [注]読み込み時(書込みでなく)は[補助1のフィールド]のBOBを判定するのではなく 
     [数レコード分をバッファに読み込み]時の実際に読み込まれた 
     レコード数までレコードが存在することから判定してください。 
 ※※ブロックバッファ操作モードに切り変ります。 
 ※※ブロックバッファが割り当てれれていなければなりません。 
 ※※この操作後に、フィールド操作をしてください。 
---------------------------------------------------------------
---------------------------------------------------------------
[6] バッファ中の前のレコードに位置ずけします 
 <esc>%1112;CURid;0;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> 0から数えたブロックバッファ中のレコード位置 
                     先頭より上の場合  BOB を返す 
                     エラー場合  ERR を返す 
※※レコードの存在の有無に関係無く位置ずけします 
 [注]読み込み時(書込みでなく)は[補助1のフィールド]のBOBを判定するのではなく 
     [数レコード分をバッファに読み込み]時の実際に読み込まれた 
     レコード数までレコードが存在することから判定してください。 
 ※※ブロックバッファ操作モードに切り変ります。 
 ※※ブロックバッファが割り当てれれていなければなりません。 
 ※※この操作後に、フィールド操作をしてください。 
---------------------------------------------------------------
---------------------------------------------------------------
[6-2] バッファ中の任意のレコードに位置ずけします 
 <esc>%1113;CURid;0;ret;pos;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   pos     --> 0:先頭 1,2,3,...ブロック中の位置[読み込み数-1迄])
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> 0から数えたブロックバッファ中のレコード位置 
                     先頭より上の場合  BOB を返す 
                     エラー場合  ERR を返す 
※※レコードの存在の有無に関係無く位置ずけします 
 [注]読み込み時(書込みでなく)は[補助1のフィールド]のBOBを判定するのではなく 
     [数レコード分をバッファに読み込み]時の実際に読み込まれた 
     レコード数までレコードが存在することから判定してください。 
 ※※ブロックバッファ操作モードに切り変ります。 
 ※※ブロックバッファが割り当てれれていなければなりません。 
 ※※この操作後に、フィールド操作をしてください。 
---------------------------------------------------------------
---------------------------------------------------------------
[7] ブロックバッファ中の位置ずけを解放します 
 <esc>%1114;CURid;0;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
※※ブロック単位のアクセスを終了して1レコード単位のモードにする 
---------------------------------------------------------------
---------------------------------------------------------------
[8] 現在のレコード中(位置)の全てのBLOBフィールドをオーブンします 
 ※オーブンしたBLOBハンドルは利用者責任で解放しないといけません 
 <esc>%1121;CURid;0;ret;Openmd;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   Openmd  --> オープンモード(0:読み書き,1;読み取り専用)
 ※ブロックバッファ又はレコードバッファに読み込み後にこの操作を行います。 
 ※※この操作後に、BLOBフィールド操作をしてください。 
---------------------------------------------------------------
DbiOpenBlob は BLOB フィールドにアクセスするために 
カーソルのレコードバッファを準備します。  
BLOB がオープンされ,後に DbiGetBlob,DbiPutBlob  
またはその外の BLOB 関数に渡すことのできる BLOB ハンドルが 
レコードバッファに保存されます。 
引数 
hCursor 	型: hDBICur 	(入力)カーソルハンドルを指定します。 
pRecBuf 	型: pBYTE 	(入力)レコードバッファへのポインタ。 
iField 	型: UINT16 	 
(入力)レコード内における BLOB の序数を指定します。 
eOpenMode 	型: DBIOpenMode  
	(入力)BLOB オープンモードを指定します。 
dbiREADWRITE が指定された場合,データベースとテーブルの両方が  
dbiREADWRITE モードでオープンされなければなりません。 
使い方 
DbiOpenBlob は BLOB をオープンし,BLOB ハンドルを pRecBuf に保存します。 
これにより,BLOB フィールドのすべてまたは一部を読み取ったり, 
変更したり,削除したり,挿入したり,あるいはフィールドのサイズを 
判定したりできるようになります。 
BLOB フィールドは,eOpenMode で指定される値によって 
読み取り専用または読み取り / 書き込みモードでオープンできます。 
DbiOpenBlob は,DbiGetBlobSize,DbiGetBlob,DbiPutBlob, 
DbiTruncateBlob,または DbiFreeBlob などの BLOB 関数を 
呼び出す前に呼び出されなければなりません。 
標準: BLOB を読み取り/書き込みモードでオープンする前に 
レコードをロックします。 
これにより,レコードの更新を禁止してほかのクライアント 
アプリケーションがレコードをロックしたり BLOB を更新したりしていない 
ということが保証されます。 
SQL: この関数は SQL ドライバでサポートされます。 
ただし,ランダムな読み取りや書き込みのための  
BLOB ハンドルをサポートしない SQL サーバーでは, 
BLOB のフルサポートのためには重複しない行が必要となります。 
ほとんどの SQL サーバーでは1回の BLOB の連続読み取りを  
BLOB の最大サイズ未満に限定しています。 
行が重複していて BLOB ハンドルがない場合, 
BLOB 全体が使えないことがあります。 
終了状態 
DbiOpenBlob は,クライアントアプリケーションに  
BLOB フィールドをアクセスするのに十分な権利がない場合, 
失敗します。 
DbiOpenBlob でオープンされた BLOB フィールドをクローズするには, 
DbiFreeBlob を呼び出します。 
---------------------------------------------------------------
[9] 現在のレコード中(位置)の全てのBLOBフィールドを解放します 
 ※オーブンしたBLOBハンドルは利用者責任で解放しないといけません 
 <esc>%1122;CURid;0;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
 ※レコードを更新、追加、後にこの操作を行います。 
 ※※この操作後に、BLOBフィールド操作は出来ません。 
---------------------------------------------------------------
説明 
DbiFreeBlob は DbiOpenBlob によって取得された  
BLOB ハンドルをクローズします。 
BLOB ハンドルは指定したレコードバッファ内にあります。 
引数 
hCursor 	型: hDBICur  	
(入力)テーブルのカーソルハンドルを指定します。 
テーブルには BLOB フィールドがなければなりません。 
pRecBuf 	型: pBYTE 	 
(入力)BLOB ハンドルのあるレコードバッファへのポインタ。 
DbiOpenBlob はレコードバッファ内に BLOB ハンドルを設定します。 
iField 	型: UINT16 	 
(入力)オープンされた BLOB フィールドの有効なフィールド番号を指定します。 
0 に設定されると, 
DbiFreeBlob はレコードバッファに結び付けられた 
すべてのオープン BLOB をクローズします。 
使い方 
BLOB ハンドルがクローズされ,DbiOpenBlob で BLOB に割り当てられた 
すべてのリソースが解放されます。 
この関数は DbiModifyRecord,DbiInsertRecord, 
または DbiAppendRecord(BLOB がオープンされた場合のみ) 
を呼び出した後に,BLOB リソースを解放するために呼び出します。 
DbiModifyRecord,DbiInsertRecord,または DbiAppendRecord は 
レコードの変更後自動的に BLOB リソースを解放しません。 
しかし,DbiModifyRecord,DbiInsertRecord, 
または DbiAppendRecord を呼び出す前に DbiFreeBlob が呼び出されると, 
BLOB に対して行った変更がすべて失われます。 
この関数はディスク上の BLOB の内容には影響を与えません。 
必要条件 
現在のレコードバッファには BLOB フィールドがなければならず, 
BLOB は DbiOpenBlob でオープンされていなければなりません。 
---------------------------------------------------------------
---------------------------------------------------------------
[10] 現在のレコード中(位置)の指定位置のBLOBフィールドのバイト長を取得 
 <esc>%1130;CURid;0;ret;pos;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   pos     --> BLOBフィールドのフィールド位置 
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> 指定位置のBLOBフィールドのバイト長 
 ※※この操作前に、BLOBオープンしておく必要があります。 
---------------------------------------------------------------
この関数は BLOB のサイズを取得するのに使われます。 
必要条件 
現在のレコードバッファには DbiOpenBlob を呼び出すことによって 
オープンされた BLOB フィールドがなければなりません。 
終了状態 
piSize が読み取った BLOB フィールドのサイズを指します。 
---------------------------------------------------------------
[11] 現在のレコード中(位置)の指定位置のBLOBフィールドを取得します 
 <esc>%1131;CURid;edit;ret;pos;offset;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> 結果値の編集領域番号(1->45) 
               531,532,533,534 (65535bytes)
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   pos     --> BLOBフィールドのフィールド位置 
   offset  --> BLOBフィールドの読み込み開始バイト位置 
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> 実際に読み取られたバイト数 
 ※※この操作前に、BLOBオープンしておく必要があります。 
---------------------------------------------------------------
BLOB フィールド内の読み取り開始位置を指定します。 
0 が指定された場合,読み取りはフィールドの先頭から始まります。 
値が BLOB フィールドの長さを超えている場合,エラーが返されます。 
0 より大きい任意の値が指定された場合, 
BLOB フィールドの特定の部分が読み取られます。 
iLen 	型: UINT32 	(入力)読み取るバイト数を指定します。 
iLen は 0 から BLOB フィールドの長さまでの値です。 
iLen は 64K を超えてもかまいません。 
pDest 	型: pBYTE 	 
(出力)BLOB データを受け取るクライアントバッファへのポインタ。 
piRead 	型: pUINT32 	 
(出力)読み取られた実際のバイト数を受け取るクライアント変数へのポインタ。 
実際のバイト数は,BLOB の最後に達している場合, 
要求したバイト数より小さくなります。 
使い方 
BLOB フィールド内のデータの,iOffSet で指定された位置から始まり 
 iLen で指定されたバイト数にわたる任意の部分が読み取れます。 
pRecBuf には DbiOpenBlob を呼び出すことによって取得した  
BLOB ハンドルがなければなりません。 
DbiGetBlob はバッファに割り当てたサイズによっては, 
64KB を超えるサイズのデータにアクセスできます。 
必要条件 
現在のレコードバッファには DbiOpenBlob を呼び出すことによって 
オープンされた BLOB フィールドがなければなりません。 
終了状態 
piRead は読み取られた BLOB データのバイト数を指し, 
pDest は読み取られた BLOB データを指します。 
---------------------------------------------------------------
[12] 現在のレコード中(位置)の指定位置のBLOBフィールドにデータを設定します 
 <esc>%1132;CURid;edit;ret;pos;offset;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   edit    --> 結果値の編集領域番号(1->45) 
               531,532,533,534 (65535bytes)
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   pos     --> BLOBフィールドのフィールド位置 
   offset  --> BLOBフィールドの書き込み開始バイト位置 
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> 書き込まれたバイト数(editのバイト数) 
 ※※この操作前に、BLOBオープンしておく必要があります。 
---------------------------------------------------------------
データを書き込む場所を BLOB の先頭からのオフセットの開始位置で指定します。 
この値は BLOB の長さを超えてはなりません。 
iOffset の有効な値は 0 から BLOB フィールドの長さまでです。 
iOffset が BLOB フィールドの長さより小さい場合, 
既存の BLOB の一部が上書きされます。 
iOffset が BLOB フィールドの長さに等しい場合, 
データは既存の BLOB フィールドに追加されます。 
BLOB に BLOB ヘッダー(BLOB タプル領域)があり, 
iOffset がそのヘッダー領域内の値ならば, 
DbiModifyRecord,DbiAppendRecord,または DbiInsertRecord が 
呼び出されたとき,タプル内の情報は更新されます。 
--- 
pSrc で指定されたデータブロックは, 
iOffset と iLen で指定された値に基づき,BLOB フィールドへ転送されます。 
DbiPutBlob は,64KB を超えるサイズのデータブロックにアクセスできます。 
ただし,バッファに割り当てるサイズによって異なります。 
 
メモ:	この操作は元のテーブルを更新しません 。 
BLOB フィールドのあるテーブルを更新するには, 
クライアントアプリケーションはこのレコードバッファを使って  
DbiAppendRecord,DbiModifyRecord,または DbiInsertRecord  
を呼び出さなければなりません。 
必要条件 
BLOB フィールドは読み取り/書き込みモードでオープンされなければなりません 。
---------------------------------------------------------------
[13] 現在のレコード中(位置)の指定位置のBLOBフィールドのサイズ変更します 
 <esc>%1133;CURid;0;ret;pos;size;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   pos     --> BLOBフィールドのフィールド位置 
   size    --> BLOBフィールドの変更後のサイズ 
※※リスポンスデータとして以下が戻ります 
   補助1のフィールド ==> 変更後のサイズのバイト数(size) 
 ※※この操作前に、BLOBオープンしておく必要があります。 
---------------------------------------------------------------
説明 
DbiTruncateBlob は BLOB フィールドの内容サイズを縮めたり, 
サイズを 0 にすることによってレコードから BLOB フィールドの内容を 
削除したりするために使います。 
引数 
hCursor 	型: hDBICur 	(入力)カーソルハンドルを指定します。 
pRecBuf 	型: pBYTE 	(入力)レコードバッファへのポインタ。 
iField 	型: UINT16 	 
(入力)レコードバッファ内の BLOB フィールドの序数を指定します。 
iLen 	型: UINT32 	 
(入力)縮めた後の BLOB の新規の長さを指定します。 
0 が指定されると,BLOB 全体が切り詰められます。 
使い方 
これは,レコード全体を削除せずに BLOB を削除する唯一の方法です。 
標準: ほかのクライアントアプリケーションがレコードを 
ロックしていないことを保証するために, 
BLOB を読み取り/書き込みモードでオープンする前にレコードを 
ロックしておくことをおすすめします。 
必要条件 
現在のレコードには BLOB フィールドがなければなりません。 
BLOB フィールドは DbiOpenBlob を呼び出して dbiREADWRITE モードで 
オープンされなければなりません。 
終了状態 
BLOB を縮めた後,DbiModifyRecord を呼び出して変更したレコードを 
テーブルへポストします。 
───────────────────────────────────
               2-13 
---------------------------------------------------------------------
■<<<キャシュアップデートモード関数>>>
---------------------------------------------------------------------
[1] キャシュアップデートモードを開始する 
 <esc>%1201;CURid;0;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> (1)オープンしたテーブルのカーソルハンドルを識別する番号(1<->1023)
               オープンされている番号を指定します
               入力時,元のカーソルを指定します。
               新規のキャシュアップデートモードのカーソルが返され,
               以前のカーソルは無効になります。 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
ャッシュアップデートモードをアクティブにするのに使います。
この関数は,関連するテーブルにただちに書き込まずに,
テーブルからデータを取り出して一時的にキャッシュに格納したデータに変更を加えます。
実際のデータベースでのリソースロックを最小限に抑えながら,
長時間にわたって変更を行えます。データの変更後,
実際のテーブルに変更を保存するには,DbiApplyDelayedUpdates を呼び出します。
レコードバッファのメモリープロパティを再び割り当てる必要があります。 
(ここで再び割り当てが行われます) 
---------------------------------------------------------------
[2] キャシュアップデートモードを終了する 
 <esc>%1202;CURid;0;ret;0;0;0 sp D 
---------------------------------------------------------------
   CurID   --> キャシュアップデートモードのカーソルを識別する番号(1<->1023)
               オープンされている番号を指定します
               標準カーソルハンドルが返され,
               以前のカーソルは無効になります。 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
キャッシュアップデートモードが終了し,標準カーソルハンドルを返します。
---------------------------------------------------------------
[3] キャッシュアップデートモードでキャッシュに書き込まれた 
    テーブルデータに変更を加えた後,その変更をコミットする 
 <esc>%1203;CURid;0;ret;Command;0;0 sp D 
---------------------------------------------------------------
   CurID   --> キャシュアップデートモードのカーソルを識別する番号(1<->1023)
               オープンされている番号を指定します
               標準カーソルハンドルが返され,
               以前のカーソルは無効になります。 
   ret     --> リスポンスを戻すかのフラグ(0:無 1:リスポンスを戻す)
   Command --> キャッシュアップデートカーソルに実行する操作を指定します。 
      dbiDelayedUpdCommit        = 0  // 更新内容をコミットする 
      dbiDelayedUpdCancel        = 1  // 更新内容をロールバックする 
      dbiDelayedUpdCancelCurrent = 2  // 現在のレコード変更を取り消す 
      dbiDelayedUpdPrepare       = 3  // 2相コミットのうちの第1フェーズ 
(実際のテーブルに書き込む)か,ロールバックするために DbiApplyDelayedUpdates  
を呼び出します。 
ロールバック操作によりキャッシュからの更新情報はただちに廃棄されます。 
DbiApplyDelayedUpdates を呼び出した後でも,引き続きキャッシュアップデートモードで 
データの変更を行えます。 
変更後のデータを引き続き書き込むための準備ができたら, 
実際のデータベースに変更をコミットするために,DbiApplyDelayedUpdates を呼び出します。 
コミットが終了すると,DbiEndDelayedUpdates はキャッシュアップデートモードを終了します。 
キャッシュアップデートモードの使用は,キャッシュアップデートカーソルの使い方に 
関与しており,次に示す2つの段階に分けられます。 
 
段階 1: DbiDelayedUpdPrepare 操作を実行すると, 
        キャッシュにあるすべての変更が関連するデータに適用されます。 
        シングルユーザー環境で使う場合を除き,更新途中でエラーが発生した場合に 
        リカバリ処理を行えるように,この操作は必ずトランザクションのコンテキスト内で 
        使ってください。この段階で発生したエラーはすべてコールバック関数(利用不可)で 
        処理しなければなりません。 
段階 2: dbiDelayedUpdCommit を実行します。DbiDelayedUpdPrepare を直接呼び出すことに 
        成功したら,dbiDelayedUpdCommit を実行します。 
        内部キャッシュは,更新内容が関連するデータベースに正しく適用されると 
        更新されます(つまり,適用されたレコードはキャッシュから削除されます)。 
        キャッシュアップデートが有効になっている間に加えた変更を取り消すには, 
        2通りの方法があります。 
        dbiDelayedUpdCancel はキャッシュをクリアし, 
        データセットを以下のいずれかのときの状態に復元します。 
        テーブルがオープンしていたとき 
        キャッシュアップデートが有効になっていたとき  
        更新が最後に正しく適用されたとき 
        dbiDelayedUpdCancelCurrent 操作はデータセット内の現在のレコードを 
        変更前の状態に復元します。1 
        レコードが変更されていなかった場合は, 
        これを呼び出しても何の効果もありません。 
        この操作は dbiDelayedUpdCancel 操作に似ていますが, 
        現在のレコードだけを対象としている点が異なります。 
標準: BLOB フィールド以外のすべてのフィールドが変更対象となります。 
必要条件 
DbiBeginDelayedUpdates の呼び出しが行われていなければなりません。 
───────────────────────────────────
               2-14 
     |目次前ページ次ページ