Pervasive PSQL v11 Btrieve API Guide Developing Applications Using the Btrieve API 免責事項 Pervasive Software Inc. は、 本 ソ フ ト ウ ェ アお よ び ド キ ュ メ ン ト の使用を、 利用者ま た はその会社に対 し て 「現状の ま ま」 で、 かつ同梱の使用許諾契約書に記載の契約条件 に よ っ てのみ許諾す る も のです。 Pervasive Software Inc. は、 いかな る 場合に も 本 ソ フ ト ウ ェ アお よ び本マニ ュ アルに記載 さ れた内容に関す る その他の一切の保証を、 明示 的に も 黙示的に も 行い ません。 Pervasive Software Inc. は、 市場性、 権利、 特定の目的 に対す る 適合性、 あ る いは一連の取引業務や職業的な使用に関す る 問題な ど に対 し 、 一切の保証を行わない こ と を明示す る と と も に、 利用者お よ びその会社が こ れに同意 し た も の と し ます。 商標 Btrieve、 Client/Server in a Box、 Pervasive、 Pervasive Software お よ び Pervasive Software の ロ ゴは、 Pervasive Software Inc. の登録商標です。 Built on Pervasive Software、 DataExchange、 MicroKernel Database Engine、 MicroKernel Database Architecture、 Pervasive.SQL、 Pervasive PSQL、 Solution Network、 Ultralight、 ZDBA は Pervasive Software Inc. の商標です。 Microsoft、 MS-DOS、 Windows、 Windows 95、 Windows 98、 Windows NT、 Windows Me、 Windows 2000、Windows 2003、Windows 2008、Windows 7、Windows 8、Windows Server 2003、Windows Server 2008、 Windows Server 2012、 Windows XP、 Win32、 Win32s、 お よ び Visual Basic は、 Microsoft Corporation の登録商標です。 NetWare お よ び Novell は Novell, Inc. の登録商標です。 NetWare Loadable Module、 NLM、 Novell DOS、 Transaction Tracking System、 TTS は、 Novell, Inc. の商標です。 Sun、 Sun Microsystems、 Java、 お よ び Sun、 Solaris、 Java を 含む す べ て の 商標 や ロ ゴ は、 Sun Microsystems の商標ま たは登録商標です。 すべての会社名お よ び製品名は各社の商標ま たは登録商標です。 © Copyright 2013 Pervasive Software Inc. All rights reserved. こ のマニ ュ アルの全文、 一部に関わ り な く 複製、 複写、 配布をす る こ と は、 前 も っ て発行者の書面に よ る 同意がない限 り 禁止 し ます。 本製品には、 Powerdog Industries に よ り 開発 さ れた ソ フ ト ウ ェ アが含ま れてい ます。 © Copyright 1994 Powerdog Industries.All rights reserved. 本製品には、 KeyWorks Software に よ り 開発 さ れた ソ フ ト ウ ェ アが含まれてい ます。 © Copyright 2002 KeyWorks Software.All rights reserved. 本製品には、 DUNDAS SOFTWARE に よ り 開発 さ れた ソ フ ト ウ ェ アが含まれてい ます。 © Copyright 1997-2000 DUNDAS SOFTWARE LTD. All rights reserved. 本製品には、 Apache Software Foundation Foundation (http://www.apache.org/) に よ り 開発 さ れた ソ フ ト ウ ェ アが含まれてい ます。 本製品では フ リ ー ソ フ ト ウ ェ ア の unixODBC Driver Manager を 使用 し て い ま す。 こ れは Peter Harvey ([email protected]) に よ っ て作成 さ れ、 Nick Gorham ([email protected]) に よ り 変更お よ び拡張 さ れ た も の に Pervasive Software が 一部修正 を 加 え た も の で す。 Pervasive Software は、 unixODBC Driver Manager プ ロ ジ ェ ク ト の LGPL 使用許諾契約書に従っ て、 こ のプ ロ ジ ェ ク ト の現在の保守管理者に そ の コ ー ド 変更 を 提供 し ま す。 unixODBC Driver Manager の Web ページは www.unixodbc.org にあ り ます。 こ のプ ロ ジ ェ ク ト に関す る 詳細については、 現在 の保守管理者であ る Nick Gorham ([email protected]) にお問い合せ く だ さ い。 GNU Lesser General Public License (LGPL) は本製品の配布 メ デ ィ アに含まれてい ます。 LGPL は www.fsf.org/licensing/licenses/lgpl.html で も 見 る こ と がで き ます。 Btrieve API Guide 2014 年 5 月 目次 こ のマニ ュ アルについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi こ のマニ ュ アルの読者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii こ のマニ ュ アルの構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii 表記上の規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv 1 Btrieve API の紹介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Btrieve API 関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . BTRV 関数 . . . . . . BTRVID 関数 . . . . BTRCALL 関数 . . . BTRCALLID 関数 . . BTRCALLID32 関数 . 旧バージ ョ ンの関数 . . . . . . . . . . . . 2 2 2 2 2 3 Btrieve API 関数のパ ラ メ ー タ ー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 5 5 6 6 7 7 8 Btrieve API オペレーシ ョ ンの要約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 オペレーシ ョ ン コ ー ド ス テー タ ス コ ー ド . . ポジシ ョ ン ブ ロ ッ ク . デー タ バ ッ フ ァ ー . . デー タ バ ッ フ ァ ー長 . キー バ ッ フ ァ ー . . . . キー番号 . . . . . . . . ク ラ イ ア ン ト ID . . . . キー長 . . . . . . . . . . . . . . . . . . . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . セ ッ シ ョ ン固有のオペレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 フ ァ イ ル固有のオペレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 サポー ト さ れないオペレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Btrieve API オペレーシ ョ ンの実行におけ る 一連の イ ベン ト . . . . . . . . . . . . . . . . . . . . . . . . 13 2 Btrieve API オペ レーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Abort Transaction (21) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 17 17 17 Begin Transaction (19 ま たは 1019) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 18 18 19 19 Clear Owner (30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 パ ラ メ ー タ ー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 iii 目次 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 20 20 Close (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 21 21 21 21 Continuous Operation (42) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 パラ メ ーター . 手順 . . . . . . . 詳細 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 22 23 24 24 Create (14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 詳細 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 25 25 26 36 37 Create Index (31) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 詳細 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 38 39 40 40 41 Delete (4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 詳細 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 42 42 42 42 43 Drop Index (32) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 詳細 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 44 44 44 44 45 End Transaction (20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 パ ラ メ ー タ ー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 前提条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 iv 目次 手順 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Find Percentage (45) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 詳細 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 47 47 48 48 49 Get By Percentage (44) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 詳細 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 50 50 51 51 52 Get Direct/Chunk (23) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 詳細 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 53 53 54 58 59 Get Direct/Record (23) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 60 60 61 61 Get Directory (18) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 62 62 62 62 Get Equal (5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 63 63 63 64 Get First (12) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 パラ メ ーター 前提条件 . . . 手順 . . . . . . 結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 65 65 65 v 目次 ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Get Greater (8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 67 67 67 68 Get Greater Than or Equal (9) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 69 69 69 70 Get Key (+50) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 71 71 71 72 Get Last (13) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 73 73 73 74 Get Less Than (10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 75 75 75 76 Get Less Than or Equal (11) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 77 77 77 78 Get Next (6) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 79 79 79 80 Get Next Extended (36) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 パ ラ メ ー タ ー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 前提条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 手順 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 vi 目次 詳細 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Get Position (22) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 87 87 87 87 Get Previous (7) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 88 88 88 89 Get Previous Extended (37) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 詳細 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 90 90 91 91 91 Insert (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 92 92 92 93 Insert Extended (40) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 詳細 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 94 94 94 95 95 Login/Logout (78) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 パラ メ ーター . 前提条件 . . . . ロ グ イ ン手順 . ロ グ ア ウ ト 手順 結果 . . . . . . . 注記 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 97 97 97 97 97 98 Open (0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 パ ラ メ ー タ ー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 前提条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 手順 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 vii 目次 詳細 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Reset (28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 103 103 103 103 Set Directory (17) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 104 104 104 104 Set Owner (29) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 詳細 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 105 105 106 106 106 Stat (15) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 詳細 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 107 107 107 110 110 Stat Extended (65) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 パラ メ ーター . . . . . . . . . . . . . . . . . . . . . . . 前提条件 . . . . . . . . . . . . . . . . . . . . . . . . . . 手順 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . サブ フ ァ ン ク シ ョ ン 1 : 拡張フ ァ イ ル情報 . . . . . . サブ フ ァ ン ク シ ョ ン 2 : シ ス テ ム デー タ 情報 . . . . . サブ フ ァ ン ク シ ョ ン 3 : 重複レ コ ー ド に よ る 競合情報 サブ フ ァ ン ク シ ョ ン 4 : フ ァ イ ル情報 . . . . . . . . . サブ フ ァ ン ク シ ョ ン 5 : ゲー ト ウ ェ イ 情報 . . . . . . サブ フ ァ ン ク シ ョ ン 6 : ロ ッ ク オーナーの識別 . . . サブ フ ァ ン ク シ ョ ン 7 : セキ ュ リ テ ィ 情報 . . . . . . 結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 111 111 111 112 113 114 116 116 118 121 Step First (33) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ viii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 122 122 122 122 目次 Step Last (34) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 123 123 123 123 Step Next (24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 124 124 124 124 Step Next Extended (38) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 詳細 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 125 125 125 126 127 Step Previous (35) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 128 128 128 128 Step Previous Extended (39) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 詳細 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 129 129 129 130 130 Stop (25) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 パラ メ ーター . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 131 131 131 Unlock (27) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 132 132 132 133 Update (3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 パ ラ メ ー タ ー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 前提条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 手順 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 ix 目次 結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Update Chunk (53) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 詳細 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 136 136 136 141 141 Version (26) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 パラ メ ーター . 前提条件 . . . . 手順 . . . . . . . 結果 . . . . . . . ポジシ ョ ニ ン グ A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 142 142 142 143 Btrieve オペ レーシ ョ ンのク ィ ッ ク リ フ ァ レ ン ス . . . . . . . . . . . . . . . . . 145 Btrieve API オペレーシ ョ ン一覧 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 x こ のマニ ュ アルについて こ のマニ ュ アルは、 Btrieve アプ リ ケーシ ョ ン プ ロ グ ラ ミ ン グ イ ン タ ーフ ェ イ ス (API) についての手引書です。 xi こ のマニ ュ アルの読者 こ のマニ ュ アルは、 Pervasive PSQL に精通 し 、 Btrieve API を使用 し て アプ リ ケーシ ョ ン を開発す る ユーザーを対 象 と し てい ます。 xii こ のマニ ュ アルの構成 こ のマニ ュ アルは、 以下の章に分かれてい ます。 第 1 章 「Btrieve API の紹介」 こ の章では、 Btrieve API 関数 と そのパ ラ メ ー タ ーの概要について説明 し ま す。 ま た、 Btrieve API オペ レ ー シ ョ ンについて も 要約 し ます。 第 2 章 「Btrieve API オペレーシ ョ ン」 こ の章では、 Btrieve API オペレーシ ョ ンについて説明 し ます。 付録 A 「Btrieve オペレーシ ョ ンの ク ィ ッ ク リ フ ァ レ ン ス」 こ の付録では、 Btrieve API オペレーシ ョ ン を オペレーシ ョ ン コ ー ド 順で要約 し ます。 xiii 表記上の規則 特段の記述がない限 り 、 コ マ ン ド 構文、 コ ー ド 、 お よ びコ ー ド 例では、 以下の表記が使用 さ れます。 xiv 大文字小文字の 区別 通常、 コ マ ン ド と 予約語は、 大文字で表記 さ れ ま す。 Linux を使用 し てい る か本書で別途記述がない限 り 、 こ れ ら の項目 は大文字、 小文字、 あ る いはそ の両方 を 使 っ て入力で き ま す。 た と えば、 MYPROG、 myprog、 ま た は MYprog と 入力 す る こ と がで き ます。 太字 太字で表示 さ れ る 単語には次の よ う な も のが あ り ま す。 メ ニ ュ ー名、 ダ イ ア ロ グ ボ ッ ク ス名、 コ マ ン ド 、 オプシ ョ ン、 ボ タ ン、 ス テー ト メ ン ト な ど。 固定幅フ ォ ン ト 固定幅フ ォ ン ト は、 コ マ ン ド 構文な ど、 ユーザーが入力す る テ キ ス ト に使われます。 [ ] 省略可能な情報には、 [log_name] の よ う に、 角か っ こ が使 用 さ れます。角かっ こ で囲ま れていない情報は必ず指定す る 必要があ り ます。 | 縦棒は、 [file name | @file name] の よ う に、 入力す る 情報 の選択肢を表 し ます。 < > <> は、 /D=<5|6|7> の よ う に、 必須項目に対す る 選択肢 を表 し ます。 変数 file name の よ う に斜体で表 さ れてい る 語は、 適切な値に置 き 換え る 必要のあ る 変数です。 ... [parameter...] の よ う に、 情報の後に省略記号が続 く 場合は、 その情報を繰 り 返 し 使用で き ます。 ::= 記号 ::= は、 あ る 項目が別の項目用語で定義 さ れてい る こ と を意味 し ま す。 た と えば、 a::=b は、 項目 a が b で定義 さ れ てい る こ と を意味 し ます。 Btrieve API の紹介 1 Pervasive PSQL ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は、 高パフ ォーマ ン ス なデー タ 処理 と プ ロ グ ラ ミ ン グの生 産性向上を目的 と し て設計 さ れてい ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス オペレーシ ョ ン を使用する と 、 開発アプ リ ケーシ ョ ンではキー値、 あ る いはシーケ ン シ ャ ルま たは ラ ン ダ ム ア ク セ ス方法に基づいて、 レ コ ー ド の取得、 挿入、 更新、 ま たは削除が行え る よ う にな り ます。 Btrieve API は、 以下のプ ロ グ ラ ミ ン グ言語お よ び開発環境 と 互換性があ り ます。 Embarcadero C/C++ Embarcadero Delphi Micro Focus COBOL Microsoft Visual Basic Microsoft Visual C++ Watcom C/C++ こ の章では、 以下の項目について説明 し ます。 「Btrieve API 関数」 「Btrieve API 関数のパ ラ メ ー タ ー」 「Btrieve API オペレーシ ョ ンの要約」 「Btrieve API オペレーシ ョ ンの実行におけ る 一連の イ ベン ト 」 1 Btrieve API の紹介 Btrieve API 関数 Btrieve API は単一関数です。 こ の API では、 ほ と ん ど のプ ロ グ ラ ム動作が関数名ではな く オペレーシ ョ ン コ ー ド パ ラ メ ー タ ーに よ っ て決定 さ れます。 アプ リ ケーシ ョ ンで使用する API は、 異な る プ ラ ッ ト フ ォーム間での コ ー ド の移植性を重視す る か、 特定のプ ラ ッ ト フ ォームで可能な限 り 最高のパフ ォーマ ン ス を重視す る か を基準 と し て選択 し て く だ さ い。 Btrieve アプ リ ケーシ ョ ンでは、 デー タ フ ァ イ ルに対 し て絶対に標準の I/O を実行 し ないで く だ さ い。 開発す る ア プ リ ケーシ ョ ンでは、 Btrieve API 関数を使っ て、 すべての フ ァ イ ル I/O を実行する 必要があ り ます。 次に、 Btrieve API 関数の一覧を示 し ます。 表 1 Btrieve API 関数 関数 オペレーティング システム 説明 BTRV すべて オペ レ ーテ ィ ン グ シ ス テ ム間での完全な コ ー ド 互換性を得 る ために使用 し ま す。 大部分の開発者に と っ て、 こ の利点はパフ ォーマ ン ス のわずかな低下を十 分に埋め合わせ る も のです。 BTRVID Btrieve API 関数を呼び出す場合に必要 と な る 言語固有の構文を調べ る には、 『Pervasive PSQL Programmer's Guide』 の 「Btrieve API プ ロ グ ラ ミ ン グ」 を参照 し て く だ さ い。 BTRV 関数 BTRV に よ っ て、 アプ リ ケーシ ョ ンは ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス呼び出 し を実行で き る よ う にな り ま す。 BTRV 関数は、 プ ロ グ ラ ミ ン グ イ ン タ ーフ ェ イ ス の イ ン ス ト ール オプシ ョ ンで提供 さ れ る すべての言語 イ ン タ ーフ ェ イ ス モジ ュ ールでサポー ト さ れてい ます。 場合に よ っ て、 BTRV 関数は実際に BTRCALL 関数を呼び出 す こ と があ り ます。 し か し なが ら 、 プ ラ ッ ト フ ォームに依存 し ない と い う こ と か ら 、 BTRV 関数の方が よ り 好ま し いで し ょ う 。 BTRVID 関数 BTRVID に よ っ て、 ア プ リ ケーシ ョ ン は ク ラ イ ア ン ト ID パ ラ メ ー タ ー を含む単独の ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス呼び出 し を実行で き る よ う にな り ます。 こ のパ ラ メ ー タ ーはアプ リ ケーシ ョ ンで制御で き ます。 ア プ リ ケーシ ョ ンでは BTRVID を使っ て、自分自身を ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に対す る 複数の ク ラ イ ア ン ト ID と し て割 り 当て、ほかの ク ラ イ ア ン ト の状態に影響を与え る こ と な く 、各 ク ラ イ ア ン ト のオペレーシ ョ ン を実行す る こ と がで き ます。 詳細については、 「 ク ラ イ ア ン ト ID」 を参照 し て く だ さ い。 DOS アプ リ ケーシ ョ ンでは、 /T オプシ ョ ンに適切な値を指定 し て DOS リ ク エ ス タ ーを ロ ー ド す る 必要があ り ま す。 /T には、 アプ リ ケーシ ョ ン内で使用す る ク ラ イ ア ン ト ID の数に等 し い値を設定 し ます。 DOS リ ク エ ス タ ー の詳細については、 Pervasive の 『Getting Started with Pervasive PSQL』 マニ ュ アルを参照 し て く だ さ い。 BTRCALL 関数 Windows と Linux の場合、 BTRCALL お よ び BTRCALL32 は BTRV 関数に相当 し ます。 BTRV で発生す る 若干の パフ ォーマ ン ス低下が問題にな ら ない限 り 、 BTRCALL ではな く BTRV 関数を使用す る よ う に し て く だ さ い。 BTRCALLID 関数 ク ラ イ ア ン ト レベルの制御が必要で、アプ リ ケーシ ョ ンが Windows ま たは Linux で動作する 場合は、BTRCALLID 関数を使用 し ます。 中間関数を呼び出 さ ない こ と 以外は、 こ の関数は BTRVID 関数に類似 し てい ます。 BTRCALLID32 関数 BTRCALLID32 関数は BTRCALLID 関数 と 同 じ です。 2 Btrieve API 関数 旧バージ ョ ンの関数 次の関数は、以前のバージ ョ ンの Btrieve API に対応 し て作成 さ れた古いアプ リ ケーシ ョ ン と の互換性を維持す る ためだけにサポー ト さ れてい ます。 BTRCALLBACK BTRVINIT BTRVSTOP RQSHELLINIT WBRQSHELLINIT WBTRVINIT WBTRVSTOP BRQSHELLINIT 現在のバージ ョ ン では こ れ ら の関数を使用 し ませんが、 こ れ ら の関数を呼び出す古いアプ リ ケーシ ョ ンは v6.15 以降の MicroKernel で も 正常に実行 さ れます。 3 Btrieve API の紹介 Btrieve API 関数のパラ メ ー タ ー 呼び出 し のたびにすべてのパ ラ メ ー タ ーを入力する 必要があ り ますが、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で はオペレーシ ョ ンのたびにすべてのパ ラ メ ー タ ーが使用 さ れ る わけではあ り ません。 場合に よ っ ては、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではそれ ら の値が無視 さ れます。 一般に、 それぞれのオペレーシ ョ ン では異な る パ ラ メ ー タ ーが送 ら れ、 返 さ れます。 第 2 章 「Btrieve API オペレーシ ョ ン」 で、 各 Btrieve API オペレーシ ョ ンに 関連す る パ ラ メ ー タ ーについて詳 し く 説明 し ます。 メ モ C 開発者:C 言語 イ ン タ ーフ ェ イ ス で使用 さ れ る プ ラ ッ ト フ ォームに依存 し ないデー タ 型 と ポ イ ン タ ー については、 BTITYPES.H を参照 し て く だ さ い。 Btrieve API 関数のパ ラ メ ー タ ーを以下に示 し ます。 「オペレーシ ョ ン コ ー ド 」 「ス テー タ ス コ ー ド 」 (BASIC と COBOL のみ) 「ポジシ ョ ン ブ ロ ッ ク 」 「デー タ バ ッ フ ァ ー」 「デー タ バ ッ フ ァ ー長」 「キー バ ッ フ ァ ー」 「キー番号」 「 ク ラ イ ア ン ト ID」 (BTRVID と BTRCALLID 関数のみ) 「キー長」 (BTRCALL、 BTRCALLID、 BTRCALL32、 BTRCALLID32 関数のみ) オペ レーシ ョ ン コ ー ド オペレーシ ョ ン コ ー ド パ ラ メ ー タ ーは、 Btrieve API 関数に よ っ て実行 さ れ る 動作を決定 し ます。 た と えば、 1 つ ま たは複数の レ コ ー ド の読み取 り 、 書 き 込み、 削除、 更新な ど のオペレ ーシ ョ ン です。 アプ リ ケーシ ョ ン では、 すべての Btrieve API 呼び出 し に対 し て有効なオペレーシ ョ ン コ ー ド を指定す る 必要があ り ます。ト ラ ンザ ク シ ョ ナル イ ン タ ー フ ェ イ ス がオペ レ ーシ ョ ン コ ー ド を 変更す る こ と は あ り ま せん。 指定す る 変数の値は、 第 2 章 「Btrieve API オペレーシ ョ ン」 に示 さ れてい る Btrieve API の正 し いオペレーシ ョ ン コ ー ド のいずれかでなければ な り ません。 メ モ C 開発者 : 指定す る 変数は BTI_WORD 型 (符号な し short integer) でなければな ら ず、 値渡 し す る 必要 があ り ます。 ス テー タ ス コ ー ド ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は、符号付き 整数 と し て ス テー タ ス コ ー ド を返 し ます。 ほ と ん ど のプ ロ グ ラ ミ ン グ環境で、 ス テー タ ス コ ー ド は Btrieve API 関数呼び出 し の戻 り 値です。 ただ し 、 一部の BASIC お よ び COBOL 言語 イ ン タ ーフ ェ イ ス では、 ス テー タ ス コ ー ド パ ラ メ ー タ ーが必要 と な り ます。 こ のパ ラ メ ー タ ーは 2 バ イ ト の整数で、 オペレーシ ョ ンの実行中に何 ら かのエ ラ ーが発生 し たか ど う か を示す コ ー ド 化 さ れた値を含み ます。 Btrieve API 呼び出 し の終了後、 アプ リ ケーシ ョ ンでは ス テー タ ス変数の値を必ずチ ェ ッ ク し 、 その呼び出 し が正常に終了 し たか ど う か を確認す る 必要があ り ます。 Pervasive PSQL コ ン ポーネ ン ト に よ っ て、 呼び出 し か ら API へス テー タ ス コー ド が返 さ れます。 こ れ ら の API に 書 き 込む場合は、 以下の 3 つの状態に対 し て処理を行 う 必要があ り ます。 API の成功 予期 さ れた API の失敗 予期 さ れなか っ た API の失敗 4 Btrieve API 関数のパラ メ ー タ ー 以下は、 3 つすべての状態を処理す る C コ ー ド の例です。 status = BTRVID(B_VERSION, posBlock1, &versionBuffer, &dataLen, keyBuf1, keyNum, (BTI_BUFFER_PTR) &clientID); if (status == B_NO_ERROR) { /* 通常のオペレーシ ョ ン を続行 */ status = BTRVID(...); } else if (status == B_RECORD_MANAGER_INACTIVE) { /* 予期 さ れたエ ラ ーの処理 */ printf("Btrieve Get Version() returned B_RECORD_MANAGER_INACTIVE\n"); } else { /* 予期 さ れなか っ たエ ラ ー */ printf("Btrieve Get Version() returned %d\n", status); } /* 別の場合は終了 */ こ の ス テー タ ス コ ー ド の処理方法に従 う と 、 Pervasive Software がお使いのアプ リ ケーシ ョ ンの将来的な安定性を 確保す る 上で役立ち ます。 Pervasive Software は、 製品を改良 し 続け る ために、 開発者か ら の フ ィ ー ド バ ッ ク を奨 励 し 、 こ れを反映 さ せてい ます。 た と えば、 Pervasive PSQL 7 では、 ス テー タ ス コ ー ド 20 はカ ス タ マーの フ ィ ー ド バ ッ ク に応 じ て さ ら にい く つかの ス テー タ ス コ ー ド に分かれてい ま し た。 こ こ で示 し た よ う に ス テー タ ス情報 を処理 し てい る アプ リ ケーシ ョ ンは、 こ の よ う な拡張に速やかに対応す る こ と がで き ます (ス テー タ ス コ ー ド の 区分に関す る 詳細については、 『Status Codes and Messages』 を参照 し て く だ さ い)。 ポジ シ ョ ン ブ ロ ッ ク ポジ シ ョ ン ブ ロ ッ ク パ ラ メ ー タ ーは、 128 バ イ ト 配列のア ド レ ス で、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が フ ァ イ ル I/O 構造体や Open (0) オペレーシ ョ ンに関連する ポジシ ョ ニ ン グ情報を格納す る ために使用 さ れます。 アプ リ ケーシ ョ ンは、 フ ァ イ ルを開 く たびに、 固有のポジシ ョ ン ブ ロ ッ ク を割 り 当て る 必要があ り ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は、 アプ リ ケーシ ョ ンが Open オペレーシ ョ ン を実行す る 際にポジシ ョ ン ブ ロ ッ ク を初期化 し 、 その後フ ァ イ ルの操作中に こ のポジシ ョ ン ブ ロ ッ ク を参照 し て更新 し ます。 こ のため、 ア プ リ ケーシ ョ ンでは、 その フ ァ イ ルに対す る 以降すべての Btrieve API オペレーシ ョ ン で同 じ ポジ シ ョ ン ブ ロ ッ ク を指定す る 必要があ り ます。 メ モ ポジシ ョ ン ブ ロ ッ ク への書 き 込みを行っ てはいけ ません。 書 き 込みを行 う と 、 ポジシ ョ ン喪失エ ラ ー やその他のエ ラ ー、 あ る いはフ ァ イ ルの損傷な ど の原因 と な り ます。 一度に複数の フ ァ イ ルを開 く 場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ スはポジシ ョ ン ブ ロ ッ ク を使っ て、特定 の呼び出 し で対象 と な る フ ァ イ ルを判別 し ます。 同様に、 同 じ フ ァ イ ルを複数回開 く 場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は Open オペレーシ ョ ン ご と にそれぞれ異な る ポジ シ ョ ン ブ ロ ッ ク を使用 し ます。 さ ら に、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は、同 じ フ ァ イ ルを開 く ク ラ イ ア ン ト ご と に も 別個のポジシ ョ ン ブ ロ ッ ク を 使用 し ます。 複数の ク ラ イ ア ン ト でポジシ ョ ン ブ ロ ッ ク を共有す る こ と はで き ません。 デー タ バ ッ フ ァ ー アプ リ ケーシ ョ ン では、 デー タ バ ッ フ ァ ーを使用 し て フ ァ イ ル と のデー タ のや り 取 り を行い ます。 デー タ バ ッ フ ァ ーを使っ て ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス と の間でや り 取 り さ れ る 情報は、実行 さ れ る Btrieve API オ ペレーシ ョ ンに よ っ て異な り ます。 し ば し ば、 デー タ バ ッ フ ァ ーには、 アプ リ ケーシ ョ ン と フ ァ イ ルの間で相互 に転送 さ れ る 1 つま たは複数の レ コ ー ド が格納 さ れてい ます。 し か し 、 Btrieve API オペレーシ ョ ン に よ っ ては、 フ ァ イ ル仕様やキー仕様、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス のバージ ョ ン情報な ど、 その他の情報がデー タ バ ッ フ ァ ーに格納 さ れ る こ と も あ り ます。 5 Btrieve API の紹介 必ず、 フ ァ イ ル内の最長 レ コ ー ド を収容で き る だけの長 さ のデー タ バ ッ フ ァ ーを割 り 当て て く だ さ い。 デー タ バ ッ フ ァ ーの割 り 当てサ イ ズ よ り も 大 き な値をデー タ バ ッ フ ァ ー長パ ラ メ ー タ ーに指定 し た場合、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス変更オペレーシ ョ ンに よ っ て、デー タ バ ッ フ ァ ーの後に続 く デー タ が破壊 さ れ る 可能 性があ り ます。 デー タ バ ッ フ ァ ー長 デー タ バ ッ フ ァ ーを必要 と す る オペレーシ ョ ンでは、 アプ リ ケーシ ョ ンはデー タ バ ッ フ ァ ーのサ イ ズ (バ イ ト 単 位) を示す変数を渡す必要があ り ます。 こ のデー タ バ ッ フ ァ ーは、 オペレーシ ョ ンに よ っ て返 さ れ る デー タ を十 分格納で き る だけの大 き さ でなければな り ません。 メ モ BASIC 開発者 : デー タ バ ッ フ ァ ー長パ ラ メ ー タ ー と し て、 ByRef の長整数を渡す必要があ り ます。 C、 COBOL、 Pascal の開発者 : デー タ バ ッ フ ァ ー長パ ラ メ ー タ ー と し て、 2 バ イ ト の符号な し 整数へのポ イ ン タ ーを渡す必要があ り ます。 可変長レ コ ー ド を含むフ ァ イ ルに レ コ ー ド を挿入 し た り 、そのフ ァ イ ルを更新す る 場合、デー タ バ ッ フ ァ ー長は、 フ ァ イ ルを最初に作成 し た と き に指定 し た レ コ ー ド 長に、 固定長部分を超えて含まれ る 文字数を加算 し た値 と 等 し く なければな り ません。 可変長レ コ ー ド を取得す る 場合、 デー タ バ ッ フ ァ ー長はフ ァ イ ル内の最長レ コ ー ド に 対応で き る 長 さ であ る 必要があ り ます。 1 件の レ コ ー ド が 64 KB よ り 長い場合は、 レ コ ー ド の部分を操作す る た めにチ ャ ン ク オペレーシ ョ ン を使用す る 必要があ り ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス はデー タ バ ッ フ ァ ー長パ ラ メ ー タ ーに よ っ て、 デー タ バ ッ フ ァ ーに使用 可能な スペース量を判断 し ます。割 り 当てたデー タ バ ッ フ ァ ー よ り 長いデー タ バ ッ フ ァ ー長を渡す と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て メ モ リ が上書 き さ れ る 場合があ り ます。デー タ バ ッ フ ァ ー長は、実際に割 り 当て ら れたデー タ バ ッ フ ァ ーのサ イ ズ を常に正確に表す よ う に し て く だ さ い。 キー バ ッ フ ァ ー Btrieve API オペレーシ ョ ンでキー バ ッ フ ァ ーが使用 さ れない場合で も 、 アプ リ ケーシ ョ ンは各 Btrieve オペレー シ ョ ンにキー バ ッ フ ァ ー パ ラ メ ー タ ーを渡す必要があ り ます。 オペレーシ ョ ンに よ っ ては、 アプ リ ケーシ ョ ンが キー バ ッ フ ァ ーのデー タ を設定す る 場合や、 Btrieve API 関数が こ れを返す場合があ り ます。 メ モ BASIC 開発者 : キー バ ッ フ ァ ー パ ラ メ ー タ ー と し て文字列を渡す必要があ り ます。 キー値が整数であ る 場合、 アプ リ ケーシ ョ ンでは Btrieve API 関数を呼び出す前に、 MKI$ ス テー ト メ ン ト を使用 し て キー値を 文字列に変換 し てお く 必要があ り ます。 キーが複数のセグ メ ン ト か ら 構成 さ れてい る 場合は、 それ ら を結合 し て 1 つの文字列変数に し 、 その変数を キー バ ッ フ ァ ー と し て渡す必要があ り ます。 キー バ ッ フ ァ ー と し て渡 し た文字列変数がキーの定義 さ れた長 さ よ り 短い場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら エ ラ ーが返 さ れます。 アプ リ ケーシ ョ ンの最初の呼び出 し がキー バ ッ フ ァ ーの初期化を必 要 と し ない場合は、 文字列変数に SPACE$(x) の値を割 り 当て ます。 こ こ で x は、 キーの定義 さ れてい る 長 さ を表 し ます。 アプ リ ケーシ ョ ンが文字列変数に BASIC の何 ら かの値を割 り 当て る ま で、 その長 さ は 0 にな り ます。 C 開発者 : キ ー バ ッ フ ァ ー パ ラ メ ー タ ー と し て キ ー値 を 含む変数の ア ド レ ス を 渡す必要が あ り ま す。 BTITYPES.H フ ァ イ ルは、 キー バ ッ フ ァ ーを VOID ポ イ ン タ ー (BTI_VOID_PTR) と し て定義 し てい ます。 必要に応 じ て、 アプ リ ケーシ ョ ンでキー バ ッ フ ァ ーのデー タ 型を定義で き ます。 COBOL 開発者 : キー バ ッ フ ァ ー パ ラ メ ー タ ー と し て レ コ ー ド 変数を渡す必要があ り ます。 キーが複数のセ グ メ ン ト か ら 構成 さ れてい る 場合は、 01 レベルの レ コ ー ド 下の個別フ ィ ール ド と し て、 それ ら を正 し い順序 で リ ス ト し ます。 こ れで、 レ コ ー ド 全体を キー バ ッ フ ァ ー と し て渡す こ と がで き ます。 6 Btrieve API 関数のパラ メ ー タ ー Pascal 開発者 : キー バ ッ フ ァ ー パ ラ メ ー タ ー と し て キー値を含む変数を渡す必要があ り ます。 キーが複数 のセグ メ ン ト か ら 構成 さ れてい る 場合は、 レ コ ー ド 構造体を使っ て キーに含まれ る 個々の フ ィ ール ド を定義 し ます。 ほ と ん ど の環境で、 アプ リ ケーシ ョ ンが Btrieve API 呼び出 し を実行する と き 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス はキー バ ッ フ ァ ー長を決め る こ と がで き ません。 こ のため、 バ ッ フ ァ ーは少な く と も 、 キーを最初に作成 し た と き に指定 し た キー長 と 同 じ だけの長 さ があ る よ う に し て く だ さ い。 そ う でない と 、 Btrieve API オペレーシ ョ ンに よ り 、 メ モ リ 内でキー バ ッ フ ァ ーの後に格納 さ れてい る デー タ が破壊 さ れ る 可能性があ り ます。 キーの最大 長は 255 なので、 常に 255 バ イ ト のキー バ ッ フ ァ ーにす る こ と をお勧め し ます。 キー番号 キー番号パ ラ メ ー タ ーで渡 さ れ る 情報は、 実行 し てい る オペレーシ ョ ン に よ っ て異な り ま す。 ほ と ん ど の場合、 キー番号には、 特定のオペレーシ ョ ンが最高 119 あ る キー (ア ク セ ス) パ ス の う ちの どれに従っ てい る か を示す 値が含まれます。 し か し 、 フ ァ イ ルを開 く と き のモー ド を示す値な ど、 その他の情報がキー番号パ ラ メ ー タ ーか ら 渡 さ れた り 、 キー番号パ ラ メ ー タ ーに返 さ れ る 場合 も あ り ます。 BTRV お よ び BTRVID 関 数 で は、 キ ー 番 号 パ ラ メ ー タ ー は 2 バ イ ト 整 数 で す。 BTRCALL、 BTRCALLID、 BTRCALL32、 お よ び BTRCALLID32 関数では、 キー番号パ ラ メ ー タ ーは 1 バ イ ト の符号付 き 文字 (BTI_CHAR) です。 すべての関数で、 キー番号パ ラ メ ー タ ーは 0 か ら 118 ま での範囲の値 と な り ます。 Btrieve API 関数がキー 番号パ ラ メ ー タ ーを変更す る こ と はあ り ません。 ク ラ イ ア ン ト ID ク ラ イ ア ン ト ID パ ラ メ ー タ ーは、 BTRVID 関数お よ び BTRCALLID 関数でのみ使用 さ れます。 ク ラ イ ア ン ト ID パ ラ メ ー タ ーは、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が コ ン ピ ュ ー タ ー上の ク ラ イ ア ン ト を区別で き る よ う に す る 16 バ イ ト 構造体のア ド レ ス です。 ク ラ イ ア ン ト ID には次の よ う な構造体を使用 し ます。 表 2 ク ラ イ ア ン ト ID 構造体 要素 Filler (フ ィ ラ ー) Service Agent ID (サービス エージェン ト ID) 長さ (バイ ト 単位) 12 2 説明 0 に初期化 し ます。 ト ラ ン ザ ク シ ョ ナル イ ン タ ー フ ェ イ ス に対す る ア プ リ ケーシ ョ ン の各 イ ン ス タ ン ス を識別 し ます。こ れは 2 文字の ASCII 値です。こ の ID の値は ASCII 値の AA(0x41 0x41) よ り 大 き いか等 し く なければな り ません。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は次の値に特殊な意味を持たせてい ます。 0x4140 (@A) 内部処理に使用 さ れます。 0xFFFF 内部処理に使用 さ れます。 0x4952 (RI) 内部処理に使用 さ れます。 0x5244 (DR) 内部処理に使用 さ れます。 0x4553 0x4353 0x4344 0x4544 0x5544 Scalable SQL に よ っ て生成 さ れた ク ラ イ ア ン ト を 識別す る ために使用 さ れます。 (SE) (SC) (DC) (DE) (DU) 7 Btrieve API の紹介 表 2 ク ラ イ ア ン ト ID 構造体 要素 長さ (バイ ト 単位) 説明 0x5257 (WR) Client Identifier (クライアント識別子) 2 Btrieve リ ク エ ス タ ーに よ っ て使用 さ れます。 アプ リ ケーシ ョ ンの現在の イ ン ス タ ン ス内で ク ラ イ ア ン ト ID を確立 し ます。 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 こ の一意な識別子を、 並行処理お よ び ト ラ ン ザ ク シ ョ ン処理のために使用 し ます。 キー長 キー長パ ラ メ ー タ ーは、 BTRCALL、 BTRCALLID、 BTRCALL32 お よ び BTRCALLID32 関数でのみ使用 さ れます。 こ れ ら の関数を使用す る 場合は、 キー長パ ラ メ ー タ ー と し て、 割 り 当て ら れた キー バ ッ フ ァ ー長の値を含む符号 な し の文字 (BTI_BYTE) を渡す必要があ り ます。 指定で き る 最大長は 255 です (キーの最大長)。 8 Btrieve API オペ レーシ ョ ンの要約 Btrieve API オペ レーシ ョ ンの要約 Btrieve API には、 アプ リ ケーシ ョ ン プ ロ グ ラ ム か ら 呼び出せ る 40 以上のオペレーシ ョ ン が用意 さ れてい ます。 以下の表に、 こ れ ら のオペレーシ ョ ンの要約を示 し ます。 Btrieve API オペレーシ ョ ンの詳細については、 第 2 章 「Btrieve API オペレーシ ョ ン」 を参照 し て く だ さ い。 オペレーシ ョ ン コ ー ド で指示す る Btrieve API オペレーシ ョ ンの要約については、 付録 A 「Btrieve オペレーシ ョ ンの ク ィ ッ ク リ フ ァ レ ン ス」 を参照 し て く だ さ い。 セ ッ シ ョ ン固有のオペ レーシ ョ ン 次のオペレーシ ョ ン を使用す る と 、 現在のデ ィ レ ク ト リ の設定 と 取得、 ワ ー ク ス テーシ ョ ン ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス のシ ャ ッ ト ダ ウ ン、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス バージ ョ ン番号の取得、 サーバー ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に接続 さ れてい る ク ラ イ ア ン ト の終了、 ト ラ ンザ ク シ ョ ンの開始、 終了ま たは中止 と い っ た処理を実行で き ます。複数の ク ラ イ ア ン ト を処理す る アプ リ ケーシ ョ ンでは、こ れ ら のオペレー シ ョ ンは呼び出 し 元の ク ラ イ ア ン ト に固有の も の と な り ます。 表 3 セ ッ シ ョ ン固有のオペ レーシ ョ ン オペレーシ ョ ン コー ド 説明 Set Directory 17 現在のデ ィ レ ク ト リ を指定 さ れたパ ス名に設定 し ます。 Get Directory 18 指定 さ れた論理デ ィ ス ク ド ラ イ ブの現在のデ ィ レ ク ト リ を返 し ます。 Stop 25 ワー ク ス テーシ ョ ン ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス を終了 し ます (サーバー ベース の ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では使用で き ません)。 Version 26 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス のバージ ョ ン番号を返 し ます。 Reset 28 ク ラ イ ア ン ト に よ っ て保持 さ れてい る すべての リ ソ ース を解放 し ます。 Begin Transaction 19 1019 論理的に関連 し てい る 一連のオペレーシ ョ ンの開始を指定 し ます。 オペレーシ ョ ン 19 は排 他 ト ラ ンザ ク シ ョ ン を開始 し ます。 オペレーシ ョ ン 1019 は並行 ト ラ ンザ ク シ ョ ン を開始 し ます。 End Transaction 20 論理的に関連 し てい る 一連のオペレーシ ョ ンの終了を指定 し ます。 Abort Transaction 21 完了 し なかっ た ト ラ ンザ ク シ ョ ン中に実行 さ れたオペレーシ ョ ン を取 り 消 し ます。 フ ァ イル固有のオペ レーシ ョ ン 次のオペレーシ ョ ンは特定の フ ァ イ ルを取 り 扱い ます。 こ のため、 操作対象 と な る フ ァ イ ルを識別す る ためにポ ジシ ョ ン ブ ロ ッ ク パ ラ メ ー タ ーが使用 さ れます。フ ァ イ ル固有のオペレーシ ョ ンは次の 3 つの タ イ プに分類 さ れ ます。 フ ァ イル ア ク セス と 情報。 こ れ ら のオペレーシ ョ ン では、 フ ァ イ ルの作成、 フ ァ イ ルの開閉、 フ ァ イ ル統計 情報の取得、 フ ァ イ ルのオーナー ネームの設定 と 削除、 フ ァ イ ルに対す る Continuous オペレーシ ョ ン モー ド の開始 と 終了、 フ ァ イ ルの ロ ッ ク 解除、 フ ァ イ ルに対す る イ ンデ ッ ク ス の作成 と 削除 と いっ た処理を実行 で き ます。 デー タ 取得。 こ れ ら のオペレーシ ョ ン では、 指定 し た条件に基づいて単一レ コ ー ド ま たは レ コ ー ド のセ ッ ト を取得す る こ と がで き ます。 Btrieve API は、 イ ンデ ッ ク ス パス に よ る 論理的位置、 ま たは物理的位置に基 づ く デー タ 検索を サポー ト し てい ます。 詳細については、 『Pervasive PSQL Programmer's Guide』 の 「レ コ ー ド へのア ク セ ス」 を参照 し て く だ さ い。 さ ら に、 オペレーシ ョ ン コ ー ド にバ イ ア ス を適用 し て、 マルチ ク ラ イ ア ン ト 状況にあ る フ ァ イ ルやレ コ ー ド の ロ ッ ク を制御す る こ と も で き ます。 詳細については、 『Pervasive PSQL Programmer's Guide』 の 「複数の ク ラ イ ア ン ト のサポー ト 」 を参照 し て く だ さ い。 デー タ 操作。 こ れ ら のオペレーシ ョ ンでは、 デー タ の挿入、 更新、 ま たは削除が行え ます。 9 Btrieve API の紹介 表 4 フ ァ イル ア ク セスおよび情報オペ レーシ ョ ン オペレーシ ョ ン コー ド 説明 Open 0 フ ァ イ ルを ア ク セ ス可能な状態に し ます。 Close 1 フ ァ イ ルを ア ク セ ス可能な状態か ら 解放 し ます。 Create 14 指定 さ れた特性を持つフ ァ イ ルを作成 し ます。 Stat 15 フ ァ イ ルお よ び イ ンデ ッ ク ス の特性 と レ コ ー ド の数を返 し ます。 Stat Extended 65 拡張フ ァ イ ルの構成要素のパス と フ ァ イ ル名を返 し 、フ ァ イ ルがシ ス テ ム定義の ロ グ キーを 使用 し てい る か ど う かを報告 し ます。 Set Owner 29 フ ァ イ ルにオーナー ネーム を割 り 当て ます。 Clear Owner 30 フ ァ イ ルか ら オーナー ネーム を削除 し ます。 Continuous Operation 42 ア ク テ ィ ブな ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス フ ァ イ ルを閉 じ ずに、 シ ス テ ム バ ッ ク ア ッ プ を実行で き る よ う に し ます。 Unlock 27 レ コ ー ド の ロ ッ ク を解除 し ます。 Create Index 31 イ ンデ ッ ク ス を作成 し ます。 Drop Index 32 イ ンデ ッ ク ス を削除 し ます。 表 5 デー タ 取得オペ レーシ ョ ン オペレーシ ョ ン コー ド 説明 イ ンデ ッ ク ス ベースの (論理) デー タ 取得 Get Equal 5 指定 さ れた イ ンデ ッ ク ス パス内で、指定 さ れた キー値 と 合致す る キー値を持つ最初の レ コ ー ド を返 し ます。 Get Next 6 イ ンデ ッ ク ス パ ス で現在の レ コ ー ド の次にあ る レ コ ー ド を返 し ます。 Get Previous 7 イ ンデ ッ ク ス パ ス で現在の レ コ ー ド の前にあ る レ コ ー ド を返 し ます。 Get Greater Than 8 指定 さ れた イ ンデ ッ ク ス パス内で、指定 さ れた キー値 よ り 大 き いキー値を持つ最初の レ コ ー ド を返 し ます。 Get Greater Than or Equal 9 指定 さ れた イ ンデ ッ ク ス パス内で、指定 さ れた キー値 よ り 大 き い ま たは等 し いキー値を持つ 最初の レ コ ー ド を返 し ます。 Get Less Than 10 指定 さ れた イ ンデ ッ ク ス パス内で、指定 さ れた キー値 よ り 小 さ いキー値を持つ最初の レ コ ー ド を返 し ます。 Get Less Than or Equal 11 指定 さ れた イ ンデ ッ ク ス パス内で、指定 さ れた キー値 よ り 小 さ い ま たは等 し いキー値を持つ 最初の レ コ ー ド を返 し ます。 Get First 12 指定 さ れた イ ンデ ッ ク ス パス の先頭の レ コ ー ド を返 し ます。 Get Last 13 指定 さ れた イ ンデ ッ ク ス パス の末尾の レ コ ー ド を返 し ます。 Get Next Extended 36 イ ンデ ッ ク ス パ ス で現在の レ コ ー ド の次にあ る 1 つま たは複数の レ コ ー ド を返 し ます。フ ィ ル タ ー条件を適用で き ます。 10 Btrieve API オペ レーシ ョ ンの要約 表 5 デー タ 取得オペ レーシ ョ ン オペレーシ ョ ン Get Previous Extended コー ド 説明 37 イ ンデ ッ ク ス パ ス で現在の レ コ ー ド の前にあ る 1 つま たは複数の レ コ ー ド を返 し ます。フ ィ ル タ ー条件を適用で き ます。 +50 実際の レ コ ー ド を返す こ と な く 、 フ ァ イ ル内に特定のキー値が存在す る か ど う か を検出 し ま す。 Get By Percentage 44 指定 さ れたパーセ ン テージ値に よ っ て示 さ れ る 位置の最 も 近 く にあ る レ コ ー ド を返 し ます。 Find Percentage 45 フ ァ イ ル内におけ る 現在の レ コ ー ド 位置に基づいたパーセ ン テージ値を返 し ます。 Get Key 非イ ンデ ッ ク ス ベースの (物理) デー タ 取得 Get Position 22 現在の レ コ ー ド の位置を返 し ます。 Get Direct/Chunk 23 指定 さ れた位置にあ る レ コ ー ド の指定部分 (チ ャ ン ク ) か ら デー タ を返 し ます。 Get Direct/Record 23 指定 さ れた位置にあ る レ コ ー ド を返 し ます。 Step Next 24 物理的に現在の レ コ ー ド の次にあ る レ コ ー ド を返 し ます。 Step First 33 フ ァ イ ル内で物理的な先頭位置にあ る レ コ ー ド を返 し ます。 Step Last 34 フ ァ イ ル内で物理的な末尾位置にあ る レ コ ー ド を返 し ます。 Step Previous 35 物理的に現在の レ コ ー ド の前にあ る レ コ ー ド を返 し ます。 Step Next Extended 38 物理的に現在の レ コ ー ド の次の位置か ら 1 つ ま た は複数の連続す る レ コ ー ド を 返 し ま す。 フ ィ ル タ ー条件を適用で き ます。 Step Previous Extended 39 物理的に現在の レ コ ー ド の前の位置か ら 1 つ ま た は複数の連続す る レ コ ー ド を 返 し ま す。 フ ィ ル タ ー条件を適用で き ます。 Get By Percentage 44 指定 さ れたパーセ ン テージ値に よ っ て示 さ れ る 位置の最 も 近 く にあ る レ コ ー ド を返 し ます。 Find Percentage 45 フ ァ イ ル内におけ る 現在の レ コ ー ド 位置に基づいたパーセ ン テージ値を返 し ます。 並行制御バイ ア ス (適切なオペレーシ ョ ン コ ー ド に追加) 単一 レ コ ー ド の 読み取 り ウ ェ イ ト ロック +100 一度に 1 つの レ コ ー ド だけ を ロ ッ ク し ます。 レ コ ー ド が既に ロ ッ ク さ れてい る 場合、 ク ラ イ ア ン ト に よ っ てオペレーシ ョ ンが再試行 さ れます。 単一 レ コ ー ド の 読み取 り ノ ー ウェイ ト ロッ ク +200 一度に 1 つの レ コ ー ド だけ を ロ ッ ク し ます。 レ コ ー ド が既に ロ ッ ク さ れてい る 場合、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら エ ラ ー ス テー タ ス コ ー ド が返 さ れ ます。 複数 レ コ ー ド の 読み取 り ウ ェ イ ト ロック +300 同一フ ァ イ ルの複数の レ コ ー ド を並行的に ロ ッ ク し ます。 レ コ ー ド が既に ロ ッ ク さ れてい る 場合、 ク ラ イ ア ン ト に よ っ てオペレーシ ョ ンが再試行 さ れます。 複数 レ コ ー ド の 読み取 り ノ ー ウェイ ト ロッ ク +400 同一フ ァ イ ルの複数の レ コ ー ド を並行的に ロ ッ ク し ます。 レ コ ー ド が既に ロ ッ ク さ れてい る 場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら エ ラ ー ス テー タ ス コ ー ド が返 さ れ ます。 書 き 込み ノ ー ウ ェ イ ト ペー ジ ロック +500 並行 ト ラ ンザ ク シ ョ ンで、 変更 し よ う と し たページがア ク テ ィ ブな別の並行 ト ラ ンザ ク シ ョ ンに よ っ て既に変更 さ れてい る 場合、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に ウ ェ イ ト し な い よ う に指示 し ます。 こ のバ イ ア ス は、 ど の レ コ ー ド 読み取 り ロ ッ ク バ イ ア ス (+100、+200、 +300、 +400) と で も 組み合わせ る こ と がで き ます。 11 Btrieve API の紹介 表 6 デー タ 操作オペ レーシ ョ ン オペレーシ ョ ン コー ド 説明 Insert 2 フ ァ イ ルに新 し い レ コ ー ド を挿入 し ます。 Update 3 現在の レ コ ー ド を更新 し ます。 Delete 4 フ ァ イ ルか ら 現在の レ コ ー ド を削除 し ます。 Insert Extended 40 フ ァ イ ルに 1 つま たは複数の レ コ ー ド を挿入 し ます。 Update Chunk 53 現在の レ コ ー ド の指定 さ れた部分 (チ ャ ン ク ) を更新 し ま す。 こ のオペレ ーシ ョ ン では、 レ コ ー ド にデー タ を追加 し た り 、 レ コ ー ド を切 り 詰め る こ と も で き ます。 サポー ト さ れないオペ レーシ ョ ン ト ラ ン ザ ク シ ョ ナル イ ン タ ー フ ェ イ ス ト レ ー ス や SDK ヘ ッ ダー フ ァ イ ル を見た と き に Btrieve API オペ レ ー シ ョ ンの リ フ ァ レ ン ス に記載 さ れていないオペレーシ ョ ンがあ る か も し れません。 こ れ ら は Pervasive PSQL が内 部的に使用す る も ので、 アプ リ ケーシ ョ ンで使用する 必要はあ り ません。 以下に示すオペレーシ ョ ンはサポー ト さ れません。 表 7 サポー ト さ れないオペ レーシ ョ ン オペレーシ ョ ン コー ド 説明 B_MISC_DATA 41 ト ラ ン ザ ク シ ョ ナル イ ン タ ー フ ェ イ ス が使用す る た めに予 約 さ れてい ます。 B_EXTEND 16 SQL エ ン ジ ンが使用す る ために予約 さ れてい ます。 Btrieve に よ る (ネ ス ト さ れた) Begin Transaction 12 2019 ト ラ ン ザ ク シ ョ ナル イ ン タ ー フ ェ イ ス が使用す る た めに予 約 さ れてい ます。 Btrieve API オペ レーシ ョ ンの実行における一連のイ ベン ト Btrieve API オペ レーシ ョ ンの実行における一連のイ ベン ト ¾ Btrieve API オペ レーシ ョ ン を実行するには、 ア プ リ ケーシ ョ ン で以下の タ ス ク を完了する必要があ り ます。 1 オペレーシ ョ ンが要求す る 必要条件をすべて満た し ます。 た と えば、 フ ァ イ ルの I/O オペレーシ ョ ン を実行 す る 前に、 対象 と な る フ ァ イ ルで Open オペレーシ ョ ン (0) を実行 し 、 その フ ァ イ ルを使用可能な状態に し てお く 必要があ り ます。 2 Btrieve API オペレーシ ョ ンが要求す る パ ラ メ ー タ ーを初期化 し ます。 パ ラ メ ー タ ー と はプ ロ グ ラ ム変数ま た はデー タ 構造体の こ と で、 その型 と サ イ ズは、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス がオペレーシ ョ ンに期 待する 特定の値に対応 し ていなければな り ません。 将来の互換性を維持す る ため、使用す る か ど う かに関係な く 、すべてのパ ラ メ ー タ ーを初期化 し て く だ さ い。 INTEGER 型のパ ラ メ ー タ ーの場合、 値をバ イ ナ リ 0 に設定 し ます。 文字配列の場合、 バ ッ フ ァ ーへのポ イ ン タ ーを渡 し ます。 こ の場合は、 バ ッ フ ァ ーの先頭バ イ ト をバ イ ナ リ 0 に初期化 し ます。 3 適切な Btrieve API 関数を呼び出 し ます (「Btrieve API 関数」 を参照 し て く だ さ い)。 4 関数呼び出 し の実行結果を評価 し ます。 すべての Btrieve API オペレーシ ョ ンか ら ス テー タ ス コ ー ド が返 さ れ ます。 アプ リ ケーシ ョ ン では ス テー タ ス コ ー ド をチ ェ ッ ク し 、 適切な操作を行 う 必要があ り ます。 ま た、 オペレーシ ョ ンか ら はその目的に基づいて、 個々のパ ラ メ ー タ ーにデー タ やその他の情報 も 返 さ れます。 13 Btrieve API の紹介 14 Btrieve API オペ レーシ ョ ン 2 こ の章では、 アプ リ ケーシ ョ ン が Btrieve API を使っ て実行で き る オペ レーシ ョ ン について説明 し ま す。 各オペ レーシ ョ ンについて、 こ の章では以下の情報を示 し ます。 オペレーシ ョ ンの名前、 コ ー ド お よ び説明。 パ ラ メ ー タ ー - オペレーシ ョ ン を実行す る 際に、 6 個のパ ラ メ ー タ ーの う ちのど の値がアプケーシ ョ ンか ら 送 ら れ、 アプ リ ケーシ ョ ンに返 さ れ る のかを表に示 し てい ます。 「送 り 値」 の行のパ ラ メ ー タ ーはアプ リ ケー シ ョ ン か ら オペレ ーシ ョ ン に送 ら れ ます。 「戻 り 値」 の行のパ ラ メ ー タ ーは、 オペ レーシ ョ ン完了後にオペ レーシ ョ ンか ら アプ リ ケーシ ョ ンに返 さ れます。 前提条件 - オペレーシ ョ ン を正常に実行 さ せ る ためにアプ リ ケーシ ョ ンが満たすべ き 条件を示 し ます。 手順 - オペレーシ ョ ンが要求す る パ ラ メ ー タ ーを初期化す る 手順を示 し ます。 詳細 - オペレーシ ョ ンについての追加情報を示 し ます。 結果 - オペレーシ ョ ンが正常に終了 し た場合 と 、 何 ら かのエ ラ ーが発生 し た場合の結果を示 し ます。 それぞ れのオペレ ーシ ョ ンは、 オペレ ーシ ョ ン の結果を アプ リ ケーシ ョ ン に通知す る ス テー タ ス コ ー ド を返 し ま す。 ス テー タ ス コ ー ド 0 は、 オペレーシ ョ ンが正常に終了 し た こ と を示 し ます。 0 以外の ス テー タ ス コ ー ド は、 通常は何 ら かのエ ラ ーが発生 し た こ と を示 し ます。 ただ し 、 0 以外の ス テー タ ス コ ー ド の中には、 単に 情報を提供す る だけで、 関連す る オペレーシ ョ ンが正常に終了 し た と き に も 示 さ れ る も のがあ り ます。 た と えば、 ス テー タ ス コ ー ド 60 は指定 し た リ ジ ェ ク ト カ ウ ン ト に到達 し た こ と を意味 し ます。 ポジシ ョ ニ ン グ - オペレーシ ョ ンが フ ァ イ ル内の レ コ ー ド の論理カ レ ン シーあ る いは物理カ レ ン シーに与え る 影響を示 し ます。 こ の章では、 以下の Btrieve API オペレーシ ョ ン を アルフ ァ ベ ッ ト 順に説明 し ます。 「Abort Transaction (21)」 「Begin Transaction (19 ま たは 1019)」 「Clear Owner (30)」 「Close (1)」 「Continuous Operation (42)」 「Create (14)」 「Create Index (31)」 「Delete (4)」 「Drop Index (32)」 「End Transaction (20)」 「Find Percentage (45)」 「Get By Percentage (44)」 「Get Direct/Chunk (23)」 「Get Direct/Record (23)」 「Get Directory (18)」 「Get Equal (5)」 「Get First (12)」 「Get Greater (8)」 「Get Key (+50)」 15 Btrieve API オペ レーシ ョ ン 「Get Last (13)」 「Get Less Than or Equal (11)」 「Get Next (6)」 「Get Next Extended (36)」 「Get Position (22)」 「Get Previous (7)」 「Get Previous Extended (37)」 「Insert (2)」 「Insert Extended (40)」 「Login/Logout (78)」 「Open (0)」 「Reset (28)」 「Set Directory (17)」 「Set Owner (29)」 「Stat (15)」 「Stat Extended (65)」 「Step First (33)」 「Step Last (34)」 「Step Next (24)」 「Step Next Extended (38)」 「Step Previous (35)」 「Step Previous Extended (39)」 「Stop (25)」 「Unlock (27)」 「Update (3)」 「Update Chunk (53)」 「Version (26)」 16 Abort Transaction (21) Abort Transaction (21) Abort Transaction オペレーシ ョ ン (B_ABORT_TRAN) では、 現在の ト ラ ンザ ク シ ョ ン を終了 し 、 こ の ト ラ ンザ ク シ ョ ンの開始以降に実行 さ れたすべてのオペレーシ ョ ンの結果を削除 し ます。 ま た、 ト ラ ンザ ク シ ョ ンに よ っ て 設定 さ れたすべての フ ァ イ ル と レ コ ー ド の ロ ッ ク を解除 し ます。 パラ メ ー タ ー オペレーション コード 送り値 ポジション ブロック データ バッ データ バッ ファー ファー長 キー バッ ファー キー番号 ○ 戻り値 前提条件 Abort Transaction オペレーシ ョ ン を発行す る 前に、 Begin Transaction オペレーシ ョ ン (19 ま たは 1019) が正常に 実行 さ れてい る 必要があ り ます。 手順 オペレーシ ョ ン コ ー ド に 21 を設定 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 オペレーシ ョ ン コ ー ド 以外の Abort Transaction 呼び出 し パ ラ メ ー タ ーはすべて無視 さ れます。 結果 Abort Transaction オペレーシ ョ ンが正常に終了 し た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら ス テー タ ス コ ー ド 0 が返 さ れます。 ト ラ ンザ ク シ ョ ンの開始以降に発行 さ れたすべての Insert、 Update お よ び Delete オペ レーシ ョ ンの結果が フ ァ イ ルか ら 削除 さ れます。 Abort Transaction オペレーシ ョ ンが正常に実行 さ れなかっ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 36 アプ リ ケーシ ョ ンで ト ラ ンザ ク シ ョ ン エ ラ ーが発生 し ま し た。 39 End Transaction オペレーシ ョ ン ま たは Abort Transaction オペレーシ ョ ン を実行す る 前に、 Begin Transaction オペ レーシ ョ ン を実行す る 必要があ り ます。 ポジ シ ョ ニ ング Abort Transaction オペレーシ ョ ンは、 フ ァ イ ルのカ レ ン シー情報に ま っ た く 影響 し ません。 17 Btrieve API オペ レーシ ョ ン Begin Transaction (19 または 1019) Begin Transaction オペレーシ ョ ン (B_BEGIN_TRAN) では、 ト ラ ンザ ク シ ョ ンの開始を定義 し ます。 ト ラ ンザ ク シ ョ ンは、 複数の Btrieve API オペレーシ ョ ン を単一 イ ベン ト と し て実行す る 必要があ る 場合に有用です。 た と え ば、 い く つかのオペレーシ ョ ンの う ち少な く と も 1 つで も オペレーシ ョ ンが正常に終了 し ない と 、 デー タ ベース の論理的整合性が保てな く な る 場合には、 ト ラ ンザ ク シ ョ ン を使用 し て く だ さ い。 一連の オペ レ ー シ ョ ン を Begin Transaction と End Transaction オペ レ ー シ ョ ン で囲ん でお く と 、 明示的 な End Transaction オペ レ ーシ ョ ン (20) で ト ラ ン ザ ク シ ョ ン の完了を要求 し ない限 り 、 ト ラ ン ザ ク シ ョ ナル イ ン タ ー フ ェ イ ス はその間に実行 さ れた複数のオペレーシ ョ ン をすべて取 り 消す こ と がで き ます。 ト ラ ンザ ク シ ョ ン内で 加え ら れた変更は、 End Transaction オペレーシ ョ ンの実行が正常に終了す る ま で、 ほかのユーザーか ら は見る こ と がで き ません。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は、 フ ァ イ ルやパフ ォーマ ン ス に多大な影響を与え る と い う 理由で、 い く つかのオペ レーシ ョ ン について ト ラ ン ザ ク シ ョ ン中の実行を禁止 し てい ま す。 こ の特定のオペレーシ ョ ン と は、 Set Owner、 Clear Owner、 Create Index、 Drop Index です。 パラ メ ー タ ー オペレーション コード 送り値 ポジション ブロック データ バッ データ バッ ファー ファー長 キー バッ ファー キー番号 ○ 戻り値 前提条件 Begin Transaction オペレーシ ョ ン を発行す る 前に、 先行す る ト ラ ンザ ク シ ョ ン を終了ま たは中止 し てお く 必要が あ り ます。 手順 オペ レ ーシ ョ ン コ ー ド に 19 を設定 し て排他 ト ラ ン ザ ク シ ョ ン を開始す る か、 1019 を設定 し て並行 ト ラ ン ザ ク シ ョ ン を開始 し ます。ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、オペレーシ ョ ン コ ー ド 以外の Begin Transaction 呼び出 し パ ラ メ ー タ ーはすべて無視 さ れます。 Begin Transaction オペレーシ ョ ンでは、 デフ ォ ル ト の ロ ッ ク バ イ ア ス を指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク 並行 ト ラ ンザ ク シ ョ ン の Begin Transaction オペレーシ ョ ン では、 +500 を オペレーシ ョ ン コ ー ド に追加で き ます (1519)。 追加す る と 、 ト ラ ンザ ク シ ョ ン内の Insert、 Update、 Delete の各オペレーシ ョ ンが、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て再試行 さ れな く な り ます。 さ ら に、 +500 バ イ ア ス をデフ ォ ル ト の ロ ッ ク バ イ ア ス と 組み合わせ る こ と も で き ます。 た と えば、 1019 + 500 + 200 (1719) を使用す る と 、 Insert、 Update お よ び Delete オペレーシ ョ ンの再試行を抑え、 並行 ト ラ ンザ ク シ ョ ン が実行 さ れます。 ま た同時に、 単一レ コ ー ド の読み取 り ノ ーウ ェ イ ト ロ ッ ク が指定 さ れます。 ト ラ ンザ ク シ ョ ンお よ び ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 18 Begin Transaction (19 または 1019) 結果 Begin Transaction オペレーシ ョ ンが正常に終了 し た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら ス テー タ ス コ ー ド 0 が返 さ れます。 Begin Transaction オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 36 アプ リ ケーシ ョ ンで ト ラ ンザ ク シ ョ ン エ ラ ーが発生 し ま し た。 37 別の ト ラ ンザ ク シ ョ ンが実行中です。 ポジ シ ョ ニ ング Begin Transaction オペレーシ ョ ンは、 フ ァ イ ルのカ レ ン シー情報に ま っ た く 影響 し ません。 19 Btrieve API オペ レーシ ョ ン Clear Owner (30) Clear Owner オペレーシ ョ ン (B_CLEAR_OWNER) では、 あ ら か じ め Set Owner オペレーシ ョ ン を使っ て フ ァ イ ルに割 り 当てて あ る オーナー ネーム を削除 し ます。 フ ァ イ ルがあ ら か じ め暗号化 さ れてい る 場合は、 Clear Owner オペレーシ ョ ンの実行中に ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て フ ァ イ ルの解読 も 行われます。 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ 戻り値 データ バッ データ バッ ファー ファー長 キー バッ ファー キー番号 ○ 前提条件 対象 と な る フ ァ イ ルが開いてお り 、 オーナー ネームが指定 さ れてい る こ と が必要です。 ト ラ ンザ ク シ ョ ンが実行中でない こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 30 を設定 し ます。 2 対象 と な る フ ァ イ ルを識別す る ポジシ ョ ン ブ ロ ッ ク を渡 し ます。 結果 Clear Owner オペレーシ ョ ンが正常に実行 さ れ る と 、 それ以降、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス はフ ァ イ ルを開いた り 変更 し た り す る と き にオーナー ネーム を要求 し な く な り ます。 オーナーを割 り 当て る と き に フ ァ イ ルのデー タ を暗号化 し た場合には、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ スは Clear Owner オペレーシ ョ ンの実行 中にデー タ の解読 も 行い ます。 暗号化 さ れてい る デー タ が多いほ ど、 Clear Owner オペレーシ ョ ンの実行にかか る 時間は長 く な り ます。 Clear Owner オペレーシ ョ ン が正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 41 実行 し よ う と し た操作は ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では許可 さ れてい ません。 ポジ シ ョ ニ ング Clear Owner オペレーシ ョ ンは、 フ ァ イ ルのカ レ ン シー情報に ま っ た く 影響 し ません。 20 Close (1) Close (1) Close オペレーシ ョ ン (B_CLOSE) では、 指定 さ れたポジシ ョ ン ブ ロ ッ ク に関連付け ら れてい る フ ァ イ ルを閉 じ 、 その フ ァ イ ルに対 し て実行 さ れた ロ ッ ク をすべて解除 し ます。フ ァ イ ルへのア ク セ ス を終了す る と き 、アプ リ ケー シ ョ ン では必ず Close オペ レーシ ョ ン を実行す る 必要があ り ま す。 Close オペレ ーシ ョ ン の実行後は、 も う 一度 Open オペレーシ ョ ン (0) を発行 し ない限 り 、 そのフ ァ イ ルにはア ク セ ス で き な く な り ます。 ト ラ ン ザ ク シ ョ ン中で も 、 フ ァ イ ルを閉 じ る こ と がで き ます。 ただ し 、 Close オペレーシ ョ ン を実行 し て も 、 ト ラ ンザ ク シ ョ ンは終了 し ません。 ト ラ ンザ ク シ ョ ンは明示的に終了ま たは中止す る 必要があ り ます。 ト ラ ンザ ク シ ョ ン を中止す る と 、 ト ラ ンザ ク シ ョ ン中に行われた変更は削除 さ れます。 ト ラ ンザ ク シ ョ ン を終了す る と 、 変 更が反映 さ れます。 メ モ ト ラ ンザ ク シ ョ ン中に フ ァ イ ルを閉 じ た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではその フ ァ イ ルへの更新を正 し く 処理で き る よ う に、 ト ラ ンザ ク シ ョ ンが中止ま たは終了 さ れ る ま で フ ァ イ ルのオープン ハン ド ルを保持 し ます。 ただ し 、 その フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を アプ リ ケーシ ョ ン で使用す る こ と は で き な く な り ます。 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ データ バッ データ バッ ファー ファー長 キー バッ ファー キー番号 戻り値 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 1 を設定 し ます。 2 閉 じ る フ ァ イ ルに対応す る 有効なポジシ ョ ン ブ ロ ッ ク を渡 し ます。 結果 Close オペレーシ ョ ンが正常に終了 し た場合は、 閉 じ た フ ァ イ ルに対応す る ポジシ ョ ン ブ ロ ッ ク は有効でな く な り ます。 Close オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 フ ァ イ ルが開いた ま ま にな り 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コー ド が返 さ れます。 3 フ ァ イ ルが開いてい ません。 ポジ シ ョ ニ ング Close オペレーシ ョ ン を実行す る と 、 フ ァ イ ルの物理カ レ ン シー情報お よ び論理カ レ ン シー情報は消去 さ れます。 21 Btrieve API オペ レーシ ョ ン Continuous Operation (42) Continuous オペレーシ ョ ン (B_CONTINOUS) では、 ア ク テ ィ ブな ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス フ ァ イ ルを閉 じ る こ と な く 、 シ ス テ ム バ ッ ク ア ッ プ を実行で き ます。 フ ァ イ ルのバ ッ ク ア ッ プ中に行っ た変更は、 デル タ フ ァ イ ル と 呼ばれ る 一時フ ァ イ ルに記憶 さ れます。 デル タ フ ァ イ ルに書 き 込まれた変更を除 き 、 Continuous オ ペレーシ ョ ン モー ド に置かれたすべての フ ァ イ ルの内容がシ ス テ ム バ ッ ク ア ッ プの対象にな り ます。バ ッ ク ア ッ プ さ れた フ ァ イ ルが Continuous オペレーシ ョ ン モー ド か ら 抜け る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ り 、 デル タ フ ァ イ ルの変更が こ れ ら の フ ァ イ ルに自動的に ロ ール イ ン さ れます。 メ モ こ のオペレーシ ョ ンは、 ロ ーカル エン ジ ンで動作 し てい る アプ リ ケーシ ョ ンにのみ使用で き ます。 ク ラ イ ア ン ト アプ リ ケーシ ョ ンは リ モー ト マシ ン にあ る フ ァ イ ルに対 し て こ のオペレーシ ョ ン を使用す る こ と はで き ません。 こ のオペレーシ ョ ン を使 う と 、 フ ァ イ ルがア ク テ ィ ブな状態の ま ま、 それを安全に コ ピーで き ます。 ク ラ イ ア ン ト / サーバー セ ッ ト ア ッ プでは、 あ る フ ァ イ ルで Continuous オペレーシ ョ ン を開始す る ク ラ イ ア ン ト は、 その フ ァ イ ルで Continuous オペレーシ ョ ン を終了する ク ラ イ ア ン ト で も なければな り ません。 パラ メ ー タ ー オペレーション コード 送り値 ポジション ブロック データ バッ データ バッ ファー ファー長 ○ 戻り値 ○ ○ ○ ○ キー バッ ファー キー番号 ○ メ モ キー番号パ ラ メ ー タ ーの値が 0 (Continuous オペレーシ ョ ン モー ド を開始) ま たは 2 (Continuous オペ レーシ ョ ン モー ド を終了) の場合にのみ、 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーお よ びデー タ バ ッ フ ァ ー長パ ラ メ ー タ ーの値が必要です。 以下に、 こ れ ら のキー番号の値について説明 し ます。 キー番号パ ラ メ ー タ ーが 1 の場合、 デー タ バ ッ フ ァ ー長は 0 であ る 必要があ り ます。 手順 ¾ Continuous オペ レーシ ョ ン モー ド を開始するには、 以下の手順を実行 し て く だ さ い。 1 バ ッ ク ア ッ プの対象 と な る フ ァ イ ル ま たは フ ァ イ ルのセ ッ ト を定義す る か、 目的の フ ァ イ ル を現在バ ッ ク ア ッ プの対象 と し て定義 さ れてい る フ ァ イ ルのセ ッ ト に追加 し ます。 a. オペレーシ ョ ン コ ー ド に 42 を設定 し ます。 b. Continuous オペレーシ ョ ン モー ド に置 く フ ァ イ ルの名前をデー タ バ ッ フ ァ ー パ ラ メ ー タ ーに入れます。 サーバー名のみを除いた フル パ ス名を入れます。 名前を カ ン マで区切 り 、 名前の リ ス ト の最後にバ イ ナ リ 0 を付け ます。 次の例は、 Windows サーバーの場合の例です。 f:\acct\march.mkd,f:\acct\april.mkd c. 名前の長 さ をデー タ バ ッ フ ァ ー長パ ラ メ ー タ ーに入れます。 こ の値は、デー タ バ ッ フ ァ ー自体に入っ て い る 、 バ イ ナ リ 0 を含めた実際の名前の長 さ 以上の値にす る 必要があ り ます。 た と えば、 例に挙げた名 前の場合、 デー タ バ ッ フ ァ ー長には 40 以上の値を入れ る こ と が必要です。 d. キー番号パ ラ メ ー タ ーに 0 を設定 し ます。 22 Continuous Operation (42) 2 バ ッ ク ア ッ プ を実行 し ます。 3 Continuous オペレーシ ョ ン モー ド を終了 し ます。 a. オペレーシ ョ ン コ ー ド に 42 を設定 し ます。 b. キー番号パ ラ メ ー タ ーに 1 を設定 し ます。 1 つま たは複数の特定の フ ァ イ ルで Continuous オペレーシ ョ ン を終了す る には、 キー番号パ ラ メ ー タ ー に 2 を設定 し 、 手順 1b で説明 し た よ う に フ ァ イ ル名をデー タ バ ッ フ ァ ー パ ラ メ ー タ ーに入れます。 さ ら に、 手順 1c で説明 し た よ う に、 名前の長 さ をデー タ バ ッ フ ァ ー長パ ラ メ ー タ ーに入れます。 詳細 一連の フ ァ イ ルをバ ッ ク ア ッ プす る よ う に定義する 場合は、 以下の点に留意 し て く だ さ い。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は、デー タ バ ッ フ ァ ーに フ ァ イ ル名が入っ ていな く て も エ ラ ー と 見な し ま せん。 フ ァ イ ル名が見つか ら ない場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は Continuous オペレー シ ョ ンで何の動作 も 行い ません。 デー タ バ ッ フ ァ ーに重複す る フ ァ イ ル名が存在 し て も 、 Continuous オペレーシ ョ ンの動作状況には影響 し ま せん。 MKDE では、 指定 し た フ ァ イ ルを 1 度だけ Continuous オペレーシ ョ ン モー ド に置 き ます。 同 じ デ ィ レ ク ト リ に、 フ ァ イ ル名が同一で拡張子のみが異な る よ う な フ ァ イ ルを置かないで く だ さ い。 た と えば、Invoice.btr と い う 名前のデー タ フ ァ イ ル と Invoice.mkd と い う 名前の フ ァ イ ルが同 じ デ ィ レ ク ト リ 内に あ っ てはな り ま せん。 こ の よ う な制限が設け ら れてい る のは、 デー タ ベー ス エ ン ジ ン が さ ま ざ ま な機能で フ ァ イ ル名のみを使用 し 、 フ ァ イ ルの拡張子を無視す る ためです。 Continuous オペレーシ ョ ンでは、 デル タ フ ァ イ ル名 と し て、 対応す る フ ァ イ ルの名前に拡張子 「.^^^」 を付けた名前を使用 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は両方の フ ァ イ ルについて同一のデル タ フ ァ イ ルに書き 込 も う と する ため、デー タ の 破損につ な が る か、 も し く は ス テ ー タ ス 85 が返 さ れ る 可能性が あ り ま す。 ま た、 こ れ ら の フ ァ イ ルが Continuous オペレーシ ョ ン モー ド に置 く フ ァ イ ルの大 き な リ ス ト の一部であ っ た と し て も 、 こ の状況が発生 す る 場合には、 フ ァ イ ルは一切 Continuous オペレーシ ョ ン モー ド に置かれません。 アプ リ ケーシ ョ ンでは、 Continuous オペレーシ ョ ン を反復的に呼び出 し て、 Continuous オペレーシ ョ ン モー ド に置 く フ ァ イ ルの リ ス ト に フ ァ イ ル名を追加で き ます。 ただ し 、 SRDE に よ っ て フ ァ イ ルの一部に参照整 合性 (RI) 制約が設定 さ れてい る 場合は、 こ の操作に よ り 、 バ ッ ク ア ッ プが壊れ る 可能性があ り ます。 参照 整合性制約 と 関連付け ら れてい る フ ァ イ ルは、 単独の Continuous オペレーシ ョ ン呼び出 し で渡す必要があ り ます。 既に Continuous オペレーシ ョ ン モー ド に入っ てい る フ ァ イ ルを指定す る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ー フ ェ イ ス か ら ス テー タ ス コ ー ド 88 が返 さ れます。 Continuous オペレーシ ョ ン を呼び出すサーバー ベース のアプ リ ケーシ ョ ン を作成する 場合は、必ず BTRVID を呼 び出 し 、 有効な ク ラ イ ア ン ト ID を使用す る こ と で、 同一 ク ラ イ ア ン ト の も と で Continuous オペレーシ ョ ンの開 始 と 終了を行え る よ う に し ます。 Btrieve API では、BTRVID 関数を使っ てバ ッ ク ア ッ プ セ ッ ト ご と に異な る ク ラ イ ア ン ト ID を指定 し 、複数のバ ッ ク ア ッ プ セ ッ ト を定義で き ます。 ただ し 、 同 じ フ ァ イ ルを 2 つのセ ッ ト に入れ る こ と はで き ません。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ てデル タ フ ァ イ ルか ら デー タ フ ァ イ ルに変更内容が ロ ール イ ン さ れてい る と き で も 、 ユーザーは通常の場合 と 同 じ よ う に、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス フ ァ イ ルの更 新、 挿入お よ び読み取 り を引 き 続 き 実行で き ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ スは挿入作業で必要 と な れば、 変更内容の ロ ール イ ン中で も デル タ フ ァ イ ルに新 し いページ を追加 し ます。 こ のため、 変更内容が失われ る こ と はあ り ません。 メ モ デル タ フ ァ イ ルは決 し て手動で削除 し ないで く だ さ い。 アプ リ ケーシ ョ ン で BTRV 関数を使用す る 場合は、 フ ァ イ ルが Continuous オペレーシ ョ ン モー ド に入っ てい る と き に そ の ア プ リ ケ ー シ ョ ン を ア ン ロ ー ド し な い で く だ さ い。 ア ン ロ ー ド す る と 、 対象 と な る フ ァ イ ル を 23 Btrieve API オペ レーシ ョ ン Continuous オペ レ ーシ ョ ン モー ド か ら 削除で き な く な る こ と が あ り ま す。 こ れは、 対象 と な る フ ァ イ ルのオー ナー と し て ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が当初割 り 当てたデフ ォ ル ト の ク ラ イ ア ン ト ID が、 別のアプ リ ケーシ ョ ンに再割 り 当て さ れて し ま う 可能性があ る か ら です。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では対象 と な る フ ァ イ ルの正 し いオーナーがわか ら な く な る ため、それ ら の フ ァ イ ルを Continuous オペレーシ ョ ン モー ド か ら 削除で き な く な っ て し ま い ます。 Continuous オペレーシ ョ ン モー ド に入 る と き 、ま たは ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ てデル タ フ ァ イ ルか ら デー タ フ ァ イ ルに変更内容が ロ ール イ ン さ れてい る 最中にシ ス テ ムが ク ラ ッ シ ュ し た場合は、シ ス テ ム の再起動後初めてその フ ァ イ ルを開 く と き に、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ てすべての変更内容 が フ ァ イ ルに ロ ール イ ン さ れます。 結果 Continuous オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら ス テー タ ス コ ー ド 0 が返 さ れますが、 デー タ バ ッ フ ァ ーお よ びデー タ バ ッ フ ァ ー長パ ラ メ ー タ ーには何の値 も 返 さ れません。 こ のオペレーシ ョ ンが正常に実行 さ れなか っ た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 11 指定 さ れた フ ァ イ ル名は不正です。 12 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は指定 さ れた フ ァ イ ルを見つけ ら れません。 41 実行 し よ う と し た操作は ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では許可 さ れてい ません。 51 オーナー ネームが不正です。 88 アプ リ ケーシ ョ ンでモー ド の不一致エ ラ ーが発生 し ま し た。 91 アプ リ ケーシ ョ ンでサーバー エ ラ ーが発生 し ま し た。 上記の コ ー ド に加え、 アプ リ ケーシ ョ ンには、 ス テー タ ス コ ー ド 18 の よ う な標準の I/O エ ラ ーが返 さ れ る こ と があ り ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 0 以外の ス テー タ ス コ ー ド が返 さ れ る 場合、Continuous オペレーシ ョ ンは、 エ ラ ーを発生 さ せた入力文字列の一部をデー タ バ ッ フ ァ ーに返 し ます。 入力文字列が使用 さ れていない場 合、 デー タ バ ッ フ ァ ーにはエ ラ ーの原因 と な っ た フ ァ イ ル名が返 さ れ ます。 デー タ バ ッ フ ァ ー長には、 デー タ バ ッ フ ァ ー内の出力文字列の長 さ が反映 さ れます。 こ の場合は、 エ ラ ーの原因 と な っ た フ ァ イ ル名の長 さ が入 り ます。 ポジ シ ョ ニ ング Continuous オペレーシ ョ ン を実行 し て も 、 フ ァ イ ルにカ レ ン シーは確立 し ません。 24 Create (14) Create (14) Create オペレーシ ョ ン (B_CREATE) では、 アプ リ ケーシ ョ ン内部か ら 新 し いデー タ フ ァ イ ルを生成で き ます。 Create オペレーシ ョ ンにはフ ァ イ ルの削除ま たは名前変更がで き る サブ フ ァ ン ク シ ョ ン も あ り ます (「Create オペ レーシ ョ ンに よ る 削除お よ び名前変更サブ フ ァ ン ク シ ョ ン」 を参照)。 メ モ 同 じ デ ィ レ ク ト リ に、 フ ァ イ ル名が同一で拡張子のみが異な る よ う な フ ァ イ ルを置かないで く だ さ い。 た と えば、 同 じ デ ィ レ ク ト リ 内のデー タ フ ァ イ ルの 1 つに Invoice.btr、 も う 1 つに Invoice.mkd と い う 名前を 付け てはいけ ま せん。 こ の よ う な制限が設け ら れてい る のは、 デー タ ベー ス エ ン ジ ン が さ ま ざ ま な機能で フ ァ イ ル名のみを使用 し 、 フ ァ イ ルの拡張子を無視する ためです。 フ ァ イ ルの識別にはフ ァ イ ル名のみが使 用 さ れ る ため、 フ ァ イ ルの拡張子だけが異な る フ ァ イ ルは、 デー タ ベース エン ジ ンでは同一の も のであ る と 認識 さ れます。 パラ メ ー タ ー オペレーション コード 送り値 ポジション ブロック ○ データ バッ データ バッ ファー ファー長 ○ ○ キー バッ ファー キー番号 ○ ○ 戻り値 前提条件 既存の フ ァ イ ルを基に空の フ ァ イ ルを作成す る 場合は、 Create オペレーシ ョ ン を実行す る 前に必ずその既存フ ァ イ ルは閉 じ てい る よ う に し ます。 手順 1 オペレーシ ョ ン コ ー ド に 14 を設定 し ます。 2 「詳細」 の説明に従い、 デー タ バ ッ フ ァ ーに フ ァ イ ル仕様、 キー仕様、 お よ びオル タ ネー ト コ レーテ ィ ン グ シーケ ン ス (ACS) を指定 し ます (格納す る フ ァ イ ル仕様 と キー仕様の値はすべて、 バ イ ナ リ 形式でなけれ ばな り ません)。 3 デー タ バ ッ フ ァ ー長を指定 し ます。 こ れは、 Create の指定を含むバ ッ フ ァ ーの長 さ であ り 、 フ ァ イ ルの レ コ ー ド 長ではあ り ません。 4 キー バ ッ フ ァ ーに フ ァ イ ルのパ ス名を指定 し ます。 パス名の終端は必ず空白かバ イ ナ リ ゼ ロ に し ます。パ ス 名は、 ボ リ ュ ーム名お よ び終端文字を含めて、 255 文字ま での範囲で指定す る こ と がで き ます。 Pervasive PSQL ク ラ イ ア ン ト でサポー ト す る パ ス名の詳細については、 『Getting Started with Pervasive PSQL』 の 「Pervasive リ ク エ ス タ ーでサポー ト する ネ ッ ト ワー ク パ ス の形式」 を参照 し て く だ さ い。 『Pervasive PSQL Programmer's Guide』 の 「デー タ ベース URI」 も 参照 し て く だ さ い。 5 キー番号パ ラ メ ー タ ーの値を、 表 14 の値のいずれか を使っ て指定 し ます。 25 Btrieve API オペ レーシ ョ ン 詳細 表 8 は、 フ ァ イ ル仕様お よ びキー仕様を格納する 順序を示 し てい ます。 表 8 Create オペ レーシ ョ ンのデー タ バ ッ フ ァ ー構造体 説明 データ型 1 バイト番号 値の例 2 Short Int4 0, 1 すべて の フ ィ ール ド を 結合 し たサ イ ズです。 フ ァ イル仕様 論理固定レ コ ー ド 長 3 512 Pervasive PSQL 6.x か ら 9.4 Pervasive PSQL 6.x 以上 1,024 Pervasive PSQL 6.x か ら 9.4 1,536 Pervasive PSQL 6.x 以上 2,048 Pervasive PSQL 6.x か ら 9.4 Short Int 2, 3 3,072 3,584 ページ サ イ ズ Pervasive PSQL 6.x 以上 4,096 Pervasive PSQL 9.0 か ら 9.4x 8,192 Pervasive PSQL 9.5 以上 16,384 ほ と ん ど の フ ァ イ ルでは最小サ イ ズの 4096 バ イ ト が最 も 効率的です。 微調整を行 う 場合の詳細につい ては、 『Pervasive PSQL Programmer's Guide』 の 「ページ レベル圧縮を用いた フ ァ イ ルの作成」 を参照 し て く だ さ い。 9.5 フ ァ イ ル形式の フ ァ イ ルを作成す る 場合、 指定 さ れた論理ページ サ イ ズがその フ ァ イ ル形式で有効 な ら ば、 MicroKernel は指定値の次に大 き な有効値があ る か ど う か を調べ、 存在す る 場合はその値に切 り 上げ ます。 それ以外の値やフ ァ イ ル形式の場合、 オペレーシ ョ ンは ス テー タ ス コ ー ド 24 で失敗 し ま す。 古いバージ ョ ンの フ ァ イ ル形式では切 り 上げは行われません。 キー ( イ ンデ ッ ク ス) 数 フ ァ イ ル バージ ョ ン Byte Byte 4 5 0x60 バージ ョ ン 6.0 0x70 バージ ョ ン 7.0 0x80 バージ ョ ン 8.0 0x90 バージ ョ ン 9.0 0x95 バージ ョ ン 9.5 0x00 デー タ ベー ス エ ン ジ ン のデフ ォ ル ト を使用 予約済み (Create オペレーシ ョ ン では使用 し ません。) 予約済み 6- 9 0 フ ァ イ ル フ ラ グ。 フ ァ イ ル属性を指定 し ます。 フ ァ イ ルの例で は、 フ ァ イ ル フ ラ グ を使用 し てい ません。 Short Int 10, 11 0 追加ポ イ ン タ ー数。 将来のキーの追加のために予約す る 重複ポ イ ン タ ー数を設定 し ま す。 フ ァ イ ル属性で予約重複ポ イ ン タ ー を指定す る 場合に使用 し ます。 Byte 12 0 26 Create (14) 表 8 Create オペ レーシ ョ ンのデー タ バ ッ フ ァ ー構造体 説明 データ型 1 バイト番号 値の例 2 予約済み (Create オペレーシ ョ ン では使用 し ません。) 予約済み 13 0 プ リ ア ロ ケー ト ページ数。 事前に割 り 当て ら れ る ページ数を設 定 し ます。 フ ァ イ ル属性でページ プ リ ア ロ ケーシ ョ ン を指定す る 場合に使用 し ます。 Short Int 14, 15 0 キー ポジ シ ョ ン。 レ コ ー ド 内のキーの最初のバ イ ト の位置を指 定 し ます。 レ コ ー ド 内の最初のバ イ ト は 1 です。 Short Int 16, 17 1 キー長。 バ イ ト 単位でキーの長 さ を指定 し ます。 Short Int 18, 19 25 キー フ ラ グ。 キー属性を指定 し ます。 Short Int 20, 21 EXTTYPE_KEY + NOCASE_KEY + DUP + MOD Create には使用 し ません。 Byte 22-25 0 拡張キー タ イ プ。 キー フ ラ グで 「拡張キー タ イ プを使用す る 」 を指定す る 場合に使用 し ます。 拡張デー タ 型の う ちの 1 つを指 定 し ます。 Byte 26 ZSTRING ヌ ル値 (レ ガシー ヌ ルのみ)。 キー フ ラ グで 「ヌ ルキー (すべ てのセグ メ ン ト )」 ま たは 「 ヌ ルキー (任意のセ グ メ ン ト )」 を 指定す る 場合に使用 し ま す。 キーの除外値を指定 し ます。 レ ガ シー ヌ ル と 真の ヌ ルの概念については、 「ヌ ル値」 を参照 し て く だ さ い。 Byte 27 0 Create には使用 し ません。 Byte 28, 29 0 手動割 り 当て キー番号。 フ ァ イ ル属性で 「キー番号」 を指定す る 場合に使用 し ます。 キー番号を割 り 当て ます。 Byte 30 0 ACS 番号。 キー フ ラ グ で 「デ フ ォ ル ト の ACS を 使用す る 」 、 「フ ァ イ ル内の番号付 き の ACS を使用す る 」 ま たは 「名前付 き の ACS を 使用す る 」 を指定す る 場合に使用 し ま す。 使用す る ACS 番号を指定 し ます。 Byte 31 0 キー ポジ シ ョ ン。 (社員 ID は、 ミ ド ル イ ニシ ャ ルの後の最初の バ イ ト か ら 始ま り ます。) Short Int 32, 33 52 キー長。 Short Int 34, 35 4 キー フ ラ グ。 Short Int 36, 37 EXTTYPE_KEY + MOD Create には使用 し ません。 Byte 38-41 0 拡張キー タ イ プ。 Byte 42 INTEGER ヌ ル値。 Byte 43 0 Create には使用 し ません。 Byte 44, 45 0 手動割 り 当て キー番号。 Byte 46 0 ACS 番号。 Byte 47 0 キー 0 (ラ ス ト ネーム) のキー仕様 キー 1 (社員 ID) のキー仕様 ページ圧縮のキー仕様 27 Btrieve API オペ レーシ ョ ン 表 8 Create オペ レーシ ョ ンのデー タ バ ッ フ ァ ー構造体 説明 データ型 1 バイト番号 値の例 2 物理ページ サ イ ズ 5 Char A 512 (デフ ォ ル ト 値) 1 特に指定がない場合、 すべてのデー タ 型は符号な し です。 2 簡素化を図 る ため、 数値以外の値の例は C アプ リ ケーシ ョ ンの場合です。 3 可変長レ コ ー ド を持つフ ァ イ ルの場合、 論理レ コ ー ド 長はレ コ ー ド の固定長部分のみを指 し ます。 4 Short Integer (Short Int) は 「 リ ト ル エンデ ィ ア ン」 のバ イ ト 順、 つま り 、 Intel 系の コ ン ピ ュ ー タ ーが採用 し てい る 下位バ イ ト か ら 上位バ イ ト へ記録す る 方式で格納す る 必要があ り ます。 5 ページ レベル圧縮でのみ使用 し ま す。 ページ圧縮フ ァ イ ル フ ラ グ (表 6 を参照) と 組み合わせて使用す る 必要があ り ま す。 詳細については、 『Pervasive PSQL Programmer's Guide』 の 「ページ レベル圧縮を用いた フ ァ イ ルの作成」 を参照 し て く だ さ い。 メ モ ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は Create オペレーシ ョ ンではデー タ バ ッ フ ァ ーの 「未使用」 お よ び 「予約済み」 領域を使用 し ませんが、 それ ら を割 り 当ててお く 必要があ り ます。 将来の リ リ ース と の互 換性を維持す る ため、 予約済み領域はゼ ロ に初期化 し て く だ さ い。 フ ァ イル仕様 デー タ バ ッ フ ァ ーの先頭 16 バ イ ト にはフ ァ イ ル仕様を格納 し ます。 バ イ ト は 0 か ら 数え始め ます。 レ コ ー ド 長、 ページ サ イ ズお よ び イ ンデ ッ ク ス数の情報を整数で格納 し ます。 論理レ コ ー ド 長。 (オ フ セ ッ ト 0x00) 論理レ コ ー ド 長はフ ァ イ ルの固定長デー タ のバ イ ト 数です (論理レ コ ー ド 長には可変長デー タ を含めないで く だ さ い)。 ページ サイ ズ。(オ フ セ ッ ト 0x02)ページ サ イ ズはフ ァ イ ル形式のバージ ョ ンに よ っ て決ま っ てい ます。『Pervasive PSQL Programmer's Guide』 の 「ページ サ イ ズの選択」 を参照 し て く だ さ い。 イ ンデ ッ ク ス数。 (オ フ セ ッ ト 0x04) イ ンデ ッ ク ス数はフ ァ イ ルに対 し て定義 し てい る キーの数です。 キー セグ メ ン ト 数ではあ り ません。 デー タ オン リ ー フ ァ イ ルを作成す る には、 イ ンデ ッ ク ス数に 0 を設定 し ます。 フ ァ イル バージ ョ ン。 (オ フ セ ッ ト 0x05) 作成す る ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス の フ ァ イ ル バージ ョ ンです。 前の リ リ ース では、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は 2 バ イ ト 整数を使っ て Create オペレーシ ョ ンで イ ンデ ッ ク ス数を取得 し てい ま し た。 イ ンデ ッ ク ス の最大数は 119 であ る ため、 こ の整数の上位バ イ ト は常 にゼ ロ で し た。 こ の上位バ イ ト は、 Stat オペレーシ ョ ンではフ ァ イ ル バージ ョ ン を返すために常に使用 さ れてい ますが、 以前のアプ リ ケーシ ョ ン を破棄 し な く と も 、 Create オペレーシ ョ ンで フ ァ イ ル バージ ョ ンの指定に使用 で き る よ う にな り ま し た。 Create でサポー ト さ れ る フ ァ イ ル バージ ョ ンは 6.x、 7.x、 8.x、 9.x、 9.5 です。 こ れ ら は、 それぞれ 16 進数の値 0x50、 0x60、 0x70、 0x80、 0x90、 0x95 で特定のバ イ ト に示 さ れます。 物理ペー ジ サ イ ズ。 (オ フ セ ッ ト 0xA) こ の フ ィ ール ド は、 以前は 「未使用」 と マー ク さ れて い ま し た。 こ の フ ィ ール ド はページ圧縮フ ァ イ ル フ ラ グ と 組み合わせて使用 さ れます。ページ圧縮フ ラ グが指定 さ れていなけれ ば、 こ の フ ィ ール ド は無視 さ れます。 バージ ョ ン 6.x 以降のデー タ フ ァ イ ルでは、論理ページは物理ページに割 り 当て、ページ ア ロ ケーシ ョ ン テーブ ル (PAT) に格納 し ます。 物理ページのサ イ ズは論理ページのサ イ ズ と 同一です。 ページ圧縮は 9.5 以降の フ ァ イ ル形式で使用で き ます。 デー タ ベース ページはページ レベルで圧縮 さ れます。 各論理ページは、 1 つ以上の物 理ページ単位に圧縮 さ れます。 こ れ ら 個々の物理ページのサ イ ズは、 1 論理ページ よ り も 小 さ く な り ます。 物理ページ サ イ ズ フ ィ ール ド を使用 し て、 フ ァ イ ルで使用す る 物理ページ サ イ ズ を指定で き ます。 こ の フ ィ ー ル ド で指定す る 値は、 使用 さ れ る 実際の物理ページ サ イ ズ を決定する ため、 512 の倍数に し ます。 ゼ ロ を指定す る と 、 エン ジ ンは物理ページ サ イ ズのデフ ォ ル ト 値を使用 し ます。 デフ ォ ル ト 値は 512 バ イ ト です。 物理ページ サ イ ズに指定 さ れた値は、論理ページ サ イ ズに指定 さ れた値 よ り も 大 き く す る こ と はで き ません。物 理ページ サ イ ズに指定 さ れた値の方が大 き い場合、エン ジ ンは論理ページ サ イ ズ と 同 じ にな る よ う その値を切 り 28 Create (14) 捨て ます。 論理ページ サ イ ズは物理ページ サ イ ズの倍数にな っ ていなければな り ません。 倍数でない場合、 その 論理ページ サ イ ズの値は物理ページ サ イ ズの値のち ょ う ど倍数にな る よ う 切 り 捨て ら れます。こ の よ う な操作の 結果 と し て、 論理ページ サ イ ズ と 物理ページ サ イ ズの値が同 じ にな っ た場合、 ページ レベルの圧縮は こ の フ ァ イ ルに適用 さ れ ま せん。 『Pervasive PSQL Programmer's Guide』 の 「ページ レ ベル圧縮を用いた フ ァ イ ルの作成」 も 参照 し て く だ さ い。 フ ァ イル フ ラ グ。 (オ フ セ ッ ト 0x0A) フ ァ イ ル フ ラ グ ワー ド のビ ッ ト を セ ッ ト し て、 フ ァ イ ルの属性を指定 し ます。 表 9 に、 フ ァ イ ル フ ラ グの値の 2 進、 16 進、 お よ び 10 進表記を示 し ます。 表 9 フ ァ イル フ ラ グの値 属性 定数 2 進数 可変長レ コ ー ド VAR_RECS 0000 0000 0000 0001 1 1 ブ ラ ン ク ト ラ ン ケーシ ョ ン BLANK_TRUNC 0000 0000 0000 0010 2 2 ページ プ リ ア ロ ケーシ ョ ン PRE_ALLOC 0000 0000 0000 0100 04 4 デー タ 圧縮 DATA_COMP 0000 0000 0000 1000 08 8 キーオ ン リ ー フ ァ イ ル KEY_ONLY 0000 0000 0001 0000 10 16 イ ンデ ッ ク ス バ ラ ン ス BALANCED_KEYS 0000 0000 0010 0000 20 32 10% 空 き スペース ス レ ッ シ ョ ル ド FREE_10 0000 0000 0100 0000 40 64 20% 空 き スペース ス レ ッ シ ョ ル ド FREE_20 0000 0000 1000 0000 80 128 30% 空 き スペース ス レ ッ シ ョ ル ド FREE_30 0000 0000 1100 0000 C0 192 予約重複ポ イ ン タ ー DUP_PTRS 0000 0001 0000 0000 100 256 INCLUDE_SYSTEM_DATA 0000 0010 0000 0000 200 512 シ ス テ ム デー タ を含めない NO_INCLUDE_SYSTEM_DATA 0001 0010 0000 0000 1200 4,608 キー番号 SPECIFY_KEY_NUMS 0000 0100 0000 0000 400 1,024 VAT の使用 VATS_SUPPORT 0000 1000 0000 0000 800 2,048 ページ圧縮の使用 2 PAGE_COMPRESSED 0010 0000 0000 0000 2000 8,192 シ ス テ ムデー タ を含め る 1 16 進数 10 進数 1 シ ス テ ム デー タ を フ ァ イ ルに含め る か ど う か を明示的に指定 し ていない場合、 Btrieve API は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス設定オプシ ョ ンの 「シ ス テ ム デー タ 」 のその時点の設定を使用 し ます。 2 ページ レ ベル圧縮でのみ使用 し ま す。 「物理ページ サ イ ズ」 キー仕様 と 組み合わせて使用 さ れ ま す。 詳細につい ては、 『Pervasive PSQL Programmer's Guide』 の 「ページ レベル圧縮を用いた フ ァ イ ルの作成」 を参照 し て く だ さ い。 29 Btrieve API オペ レーシ ョ ン 互換性のない フ ラ グの使用は避けて く だ さ い。 同一ビ ッ ト 位置を使用す る フ ラ グ間には互換性はあ り ません。 未 使用のビ ッ ト は将来使用す る ために予約 さ れてい ます。 こ れ ら のビ ッ ト には 0 を設定 し ます。 フ ァ イ ルの属性を組み合わせ る には、 対応す る フ ァ イ ル フ ラ グの値を加算 し ます。 た と えば、 可変長レ コ ー ド を 含む こ と がで き 、 ブ ラ ン ク ト ラ ン ケーシ ョ ン を行 う フ ァ イ ルを指定す る には、 フ ァ イ ル フ ラ グ ワ ー ド を 3 (2 + 1) に初期化 し て く だ さ い。 可変長レ コ ー ド の ビ ッ ト が 0 に設定 さ れてい る 場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ー フ ェ イ ス ではブ ラ ン ク ト ラ ン ケーシ ョ ンお よ び空 き スペース ス レ ッ シ ョ ル ド のビ ッ ト を無視 し ます。 ページ プ リ ア ロ ケーシ ョ ンのビ ッ ト を設定す る 場合は、 フ ァ イ ル仕様ブ ロ ッ ク (ア ロ ケーシ ョ ン) の最後の 2 バ イ ト を使用 し て、 フ ァ イ ルにプ リ ア ロ ケー ト する ページ数を指定す る 整数値を格納 し て く だ さ い。 デー タ 圧縮の ビ ッ ト を設定 し た場合、 ト ラ ン ザ ク シ ョ ナル イ ン タ ー フ ェ イ ス では可変長 レ コ ー ド の ビ ッ ト が無視 さ れ ま す。 キーオン リ ー フ ァ イ ルのビ ッ ト を設定 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではシ ス テ ム デー タ の ビ ッ ト が無視 さ れます。 デー タ ベース エン ジ ンは、 シ ス テ ム デー タ を使用 し てお り 、 レ コ ー ド 長が許容最大サ イ ズ を超え る フ ァ イ ルにつ いては自動的にデー タ 圧縮を使用 し ます。 『Pervasive PSQL Programmer's Guide』 の表 12 を参照 し て く だ さ い。 フ ァ イ ルを作成 し た後で イ ンデ ッ ク ス の追加が予想 さ れ、 その イ ンデ ッ ク ス に多数の重複 し た値が含まれ る 場合 は、 重複ポ イ ン タ ーのビ ッ ト を設定 し ます。 こ のビ ッ ト を設定す る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で は重複 し た値を リ ン ク す る ポ イ ン タ ーのために フ ァ イ ルの各レ コ ー ド に ス ペース が確保 さ れ る よ う にな り ます。 こ の よ う な スペース を確保す る こ と に よ り 、 特に、 キーが長 く 、 多数の レ コ ー ド が重複す る キー値を持つ こ と が 予測 さ れ る 場合には、 検索時間を短縮 し 、 デ ィ ス ク 領域を節約で き る 場合があ り ます。 メ モ 重複ポ イ ン タ ーの領域は、 フ ァ イ ル作成後に追加 さ れ る イ ンデ ッ ク ス のみを対象に予約で き ます。 し たがっ て、 重複値へのポ イ ン タ ーのために領域を確保す る と き は、 こ の Create オペレーシ ョ ンの実行中に作 成 さ れ る イ ンデ ッ ク ス の領域は含めないで く だ さ い。 ま た、 繰 り 返 し 重複キー と し て指定 さ れ る キーについ て、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は重複ポ イ ン タ ーの領域を確保 し ません。 特定の番号を キーに割 り 当て る こ と が必要な場合は、 キー番号のビ ッ ト を設定 し 、 希望す る キー番号を キー仕様 ブ ロ ッ ク の手動割 り 当て キー番号要素 (オ フ セ ッ ト 0x0E) に入れ ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではキー番号が連続 し てい る 必要はあ り ません。つま り 、フ ァ イ ルのキー番号は飛んでいて も か ま い ません。キー が作成 さ れ る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス はデフ ォ ル ト で、 0 か ら 始ま る キー番号の う ち使用可能 な最小の番号を その イ ンデ ッ ク ス に割 り 当て ます。 ただ し 、 アプ リ ケーシ ョ ンに よ っ ては、 デフ ォ ル ト の割 り 当 て と は異な る キー番号が必要な こ と も あ り ます。 フ ァ イ ルで可変長部割 り 当てテーブルを使用する 場合は、 VAT の使用の ビ ッ ト を設定 し ます。 VAT を使 う には、 フ ァ イ ルで可変長レ コ ー ド を使用 し てい る こ と が必要です。 予約する重複ポ イ ン タ ー数。 (オ フ セ ッ ト 0x0C) 予約する 重複ポ イ ン タ ー数を フ ァ イ ルご と に指定で き ます。 予 約重複ポ イ ン タ ーの フ ァ イ ル フ ラ グ を指定 し た場合にのみ、 こ の要素を使用 し て く だ さ い。 重複キーの詳細につ いては、 『Pervasive PSQL Programmer's Guide』 の 「重複キー」 を参照 し て く だ さ い。 ア ロ ケーシ ョ ン。 (オ フ セ ッ ト 0x0E) プ リ ア ロ ケー ト する ページ数を指定で き ます。 ページ プ リ ア ロ ケーシ ョ ン の フ ァ イ ル フ ラ グ を指定 し た場合にのみ、 こ の要素を使用 し て く だ さ い。 ページのプ リ ア ロ ケーシ ョ ンの詳細に ついては、 『Pervasive PSQL Programmer's Guide』 の 「ページ プ リ ア ロ ケーシ ョ ン」 を参照 し て く だ さ い。 キー仕様ブ ロ ッ ク フ ァ イ ル仕様のす ぐ 後にキー仕様ブ ロ ッ ク を配置 し ます。 フ ァ イ ルのキー セグ メ ン ト ご と に 16 バ イ ト のキー仕 様ブ ロ ッ ク を割 り 当て ます。 キー ポジシ ョ ンお よ びキー長の情報は整数で格納 し ます。 30 Create (14) キー セグ メ ン ト の最大許容数は、 フ ァ イ ルのページ サ イ ズに よ っ て異な り ます。 ページ サイズ (バイト数) キー セグメントの最大数 (ファイル バージョン別) 8.x 以前 9.0 9.5 512 8 8 切 り 上げ 2 1,024 23 23 97 1,536 24 24 切 り 上げ 2 2,048 54 54 97 2,560 54 54 切 り 上げ 2 3,072 54 54 切 り 上げ 2 3,584 54 54 切 り 上げ 2 4,096 119 119 204 (ま たは 119) 3 8,192 N/A1 119 420 (ま たは 119) 3 16,384 N/A1 N/A1 420 (ま たは 119) 3 1 N/A は 「適用外」 を意味 し ます。 2 「切 り 上げ」 は、 ページ サ イ ズ を、 フ ァ イ ル バージ ョ ン でサポー ト さ れ る 次のサ イ ズへ切 り 上げ る こ と を意味 し ます。 た と えば、 512 は 1,024 に切 り 上げ ら れ、 2,560 は 4,096 に切 り 上げ る と い う こ と です。 3 リ レーシ ョ ナル イ ン タ ーフ ェ イ ス で使用で き る イ ンデ ッ ク ス セグ メ ン ト の最大数は 119 です。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス の場合、 最大数は、 ページ サ イ ズ 4,096 では 204、 ページ サ イ ズ 8,192 お よ び 16,384 では 420 です。 『Status Codes and Messages』 の ス テー タ ス コ ー ド 「26 : 指定 さ れた キーの数が不正です。」 お よ び 「29 : キー長 が不正です。」 を参照 し て く だ さ い。 キー ポジ シ ョ ン。 (オ フ セ ッ ト 0x00) キー ポジシ ョ ンは、 キーま たはキー セグ メ ン ト の開始位置のバ イ ト オ フ セ ッ ト です。 ポジシ ョ ンは 1 か ら の相対にな り ます。 レ コ ー ド の先頭に位置す る キーは、 ポジシ ョ ン 1 か ら 始ま り ます。 ポジシ ョ ン 0 はあ り ません。 キー長。 (オ フ セ ッ ト 0x02) キーま たはキー セグ メ ン ト の長 さ です。 キーの最大長は、 すべてのキー セグ メ ン ト を含めて、 255 バ イ ト です。 キー フ ラ グ。 (オ フ セ ッ ト 0x04) キー フ ラ グ ワー ド のビ ッ ト を セ ッ ト し て、 キーの属性を指定 し ます。 表 10 に、 キー フ ラ グの値の 2 進、 16 進、 お よ び 10 進表記を示 し ます。 表 10 キー フ ラ グの値 属性 定数 2 進数 16 進数 重複許可 ( リ ン ク さ れた重複はデフ ォ ル ト 、 あ る い は 繰 り 返 し 重 複 用 に REPEAT_DUPS_KEY と 組み合わせ る ) DUP 0000 0000 0000 0001 1 1 変更可能キー値 MOD 0000 0000 0000 0010 2 2 旧形式の BINARY デー タ 型を使用 BIN 0000 0000 0000 0100 4 4 0000 0000 0000 0000 0 0 0000 0000 0000 1000 8 8 旧形式の STRING デー タ 型を使用 (ビ ッ ト 2 お よ び 8 は 0 にす る 必要があ り ます) ヌ ル キー (全セグ メ ン ト ) NUL 10 進数 31 Btrieve API オペ レーシ ョ ン 表 10 キー フ ラ グの値 属性 定数 2 進数 16 進数 10 進数 セ グ メ ン ト キー SEG 0000 0000 0001 0000 10 16 デフ ォ ル ト の ACS を使用 ALT 0000 0000 0010 0000 20 32 フ ァ イ ル内の番号付 き の ACS を使用 NUMBERED_ACS 0000 0100 0010 0000 420 1,056 名前付 き の ACS を使用 NAMED_ACS 0000 1100 0010 0000 C20 3,104 降順 ソ ー ト DESC_KEY 0000 0000 0100 0000 40 64 繰 り 返 し 重複 (DUP 属性 と 組み合わせ る ) REPEAT_DUPS_KEY 0000 0000 1000 0000 80 128 拡張デー タ 型を使用 EXTTYPE_KEY 0000 0001 0000 0000 100 256 ヌ ル キー (一部セ グ メ ン ト ) MANUAL_KEY 0000 0010 0000 0000 200 512 大文字小文字無視キー NOCASE_KEY 0000 0100 0000 0000 400 1,024 互換性のない フ ラ グの使用は避けて く だ さ い。 同一ビ ッ ト 位置を使用す る フ ラ グ間には互換性はあ り ません。 未 使用のビ ッ ト は将来使用す る ために予約 さ れてい ます。 こ れ ら のビ ッ ト には 0 を設定 し ます。 キーの属性を組み合わせ る には、 対応す る キー フ ラ グの値を加算 し ます。 た と えば、 キーが拡張キー タ イ プで、 セグ メ ン ト キーの一部であ り 、 さ ら に降順に照合 さ れ る 場合は、 キー フ ラ グ ワ ー ド を 336 (256 + 16 + 64) に初 期化 し ます。 セグ メ ン ト キー属性は、デー タ バ ッ フ ァ ー内の次のキー仕様ブ ロ ッ ク が同一キーの次のセグ メ ン ト を指す こ と を 示 し ます。 セグ メ ン ト キーについては以下の規則に従っ て く だ さ い。 同一キーのすべてのセグ メ ン ト で、 重複可能、 繰 り 返 し 重複、 変更可能お よ びヌ ル キーの値はそれぞれ同 じ でなければな り ません (レ ガシー ヌ ル キー属性を指定す る 場合は、全セグ メ ン ト ま たは一部セグ メ ン ト の ど ち ら の場合に も 、 セグ メ ン ト ご と に異な る ヌ ル値を割 り 当て る こ と がで き ます)。 同一キーのすべてのセグ メ ン ト で、 同一 ACS を使用す る 必要があ り ます。 同一キーのセグ メ ン ト ご と に、 異な る 降順 ソ ー ト お よ び拡張デー タ 型の値を設定で き ます。 ACS は、 STRING、 LSTRING お よ び ZSTRING キーにのみ適用で き ま す。 大文字小文字の区別を 無視 し 、 かつ ACS を使用す る キーを定義す る こ と はで き ません。 あ る キーの一部のセグ メ ン ト に し か ACS が指定 さ れていな い フ ァ イ ルの場合、 ACS が指定 さ れてい る セグ メ ン ト はその ACS に従っ て ソ ー ト さ れ、 ACS が指定 さ れていな いセグ メ ン ト はそれぞれの型に従っ て ソ ー ト さ れます。 32 Create (14) 拡張デー タ 型。 (オ フ セ ッ ト 0x0A) 拡張デー タ 型を キー仕様ブ ロ ッ ク のバ イ ト 10 にバ イ ナ リ 値で指定 し ます。 表 11 に、 拡張デー タ 型に対応す る コ ー ド を示 し ます。 表 11 拡張デー タ 型 データ型 コード データ型 コード CHAR 0 ZSTRING 11 INTEGER 1 UNSIGNED BINARY 14 FLOAT 2 AUTOINCREMENT 15 DATE 3 NUMERICSTS 17 TIME 4 NUMERICSA 18 DECIMAL 5 CURRENCY 19 MONEY 6 TIMESTAMP 20 LOGICAL 7 WSTRING 25 NUMERIC 8 WZSTRING 26 BFLOAT 9 GUID 27 LSTRING 10 NULL INDICATOR SEGMENT 255 拡張デー タ 型の コ ー ド 12、 13、 16 お よ び 21 か ら 24 ま では将来使用する ために予約 さ れてい ます。 STRING お よ び UNSIGNED BINARY デー タ 型は、 標準型 と 拡張型の ど ち ら と し て も 定義で き ます。 こ れに よ り 、 以前のバージ ョ ンの Btrieve API を使っ て開発 し た アプ リ ケーシ ョ ン と の互換性が保て る 一方、新 し いアプ リ ケー シ ョ ンで拡張デー タ 型を排他的に使用で き る よ う にな り ます。 キーに割 り 当て る デー タ 型に関 し 、 入力 し た レ コ ー ド がそのキーに定義 さ れてい る デー タ 型に合っ てい る か ど う かは、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では確認 さ れません。 た と えば、 TIMESTAMP キーを フ ァ イ ルに定 義す る こ と がで き ますが、 そ こ に文字列を格納す る こ と も で き ます。 Btrieve API アプ リ ケーシ ョ ン では問題な く 動作 し ていて も 、ODBC アプ リ ケーシ ョ ンで同 じ デー タ に ODBC TIMESTAMP デー タ 型を使っ て ア ク セ ス し よ う と する と 、 正常に動作 し ない こ と があ り ます。 こ れはおそ ら く 、 バ イ ト の形式が異な り 、 タ イ ム ス タ ンプ値を生 成す る アルゴ リ ズ ムが異な る か ら です。デー タ 型の説明については、『SQL Engine Reference』 を参照 し て く だ さ い。 ヌル値。 (オ フ セ ッ ト 0x0B) キー仕様ブ ロ ッ ク の こ のオ フ セ ッ ト は、 キーの除外値を表 し ます。 あ る キーを ヌ ル キー と し て定義 し た場合は、各キー セグ メ ン ト の ヌ ル値 と し て認識 さ せ る 値を ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に提供す る 必要があ り ます。 こ れは、 レ ガシー ヌ ルへの参照内にあ り 、 真の ヌ ルには影響 し ません。 ヌ ルの サポー ト の説明については、 『Pervasive PSQL Programmer's Guide』 の 「 ヌ ル値」 を参照 し て く だ さ い。 手動割 り 当てキー番号。 (オ フ セ ッ ト 0x0E) ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 イ ンデ ッ ク ス 付 き の フ ァ イ ルを作成す る と き に、 アプ リ ケーシ ョ ンで特定のキー番号を割 り 当て る こ と がで き ます。 フ ァ イ ルの各 イ ンデ ッ ク ス に手動でキー番号を割 り 当て る には、各キー番号を キー仕様ブ ロ ッ ク のバ イ ト 14 にバ イ ナ リ 値で指定 し 、 フ ァ イ ル フ ラ グ ワ ー ド にキー番号ビ ッ ト (0x400) を設定 し ます。 キー番号はフ ァ イ ルで一意であ り 、 キー 0 か ら 昇順に指定 さ れていなければな り ません。 ま た、 有効な値、 つま り 、 フ ァ イ ルのページ サ イ ズに対す る キーの最大数 よ り も 小 さ い値でなければな り ません。 手動でキー番号を割 り 当て る と い う 機能は、 キーを削除 し て、 その削除 し た キー よ り も 大 き な キー番号を持つす べてのキーの番号を ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に付け替え さ せない よ う にす る 機能 と 相補関係にあ り ます。 た と えば、 アプ リ ケーシ ョ ンか ら イ ンデ ッ ク ス を削除 し 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス にそれ よ り も 大 き な番号を持つキーの番号を付け替えない よ う に指示を出 し た場合、 その後でユーザーが具体的な キー 番号を割 り 当てずに影響を受けた フ ァ イ ルを複製する と 、 複製 し た フ ァ イ ルには元の フ ァ イ ル と は別のキー番号 が割 り 当て ら れます。 33 Btrieve API オペ レーシ ョ ン ACS 番号。 (オ フ セ ッ ト 0x0F) 特定の ACS を使用す る キーの場合、 キー仕様ブ ロ ッ ク のオ フ セ ッ ト 0x0F に よ り 、 キーの照合に使用す る ACS 番号が示 さ れ ます。 ACS 番号はデー タ バ ッ フ ァ ー内の位置に基づいて決ま り ます。 最後のキー仕様ブ ロ ッ ク に続 く 最初の ACS は、 ACS 番号 0 にな り ます。ACS 0 の次には ACS 1、 その次には ACS 2、 と い う よ う に続 き ます。 オル タ ネー ト コ レーテ ィ ング シーケ ン ス (ACS) アプ リ ケーシ ョ ンでは、 デー タ バ ッ フ ァ ー内の最後のキー仕様ブ ロ ッ ク の直後か ら ACS を 1 つずつ順に指定 し ます。 ユーザー定義の ACS。 文字列値を ASCII 標準 と は異な る 並び順で ソ ー ト す る ACS を作成する には、 表 12 に示す 形式を使っ て、 アプ リ ケーシ ョ ンか ら デー タ バ ッ フ ァ ーに直接 265 バ イ ト を設定す る 必要があ り ます。 表 12 ユーザー定義の ACS を作成する ためのデー タ バ ッ フ ァ ー 位置 (オフセット) 長さ (バイト単位) 説明 0 1 識別バ イ ト 。 0xAC を指定 し ます。 1 8 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に ACS を識別 さ せ る 、 8 バ イ ト の一意の名前。 9 256 256 バ イ ト のマ ッ プ。マ ッ プ内の 1 バ イ ト の位置はそれぞれ、マ ッ プ内でのその位置のオ フ セ ッ ト と 同 じ 値を持つ コ ー ド ポ イ ン ト に対応 し ま す。 その位置にあ る バ イ ト の値は、 コ ー ド ポ イ ン ト に割 り 当て ら れ る コ レ ーテ ィ ン グ ウ ェ イ ト です。 た と えば、 コ ー ド ポ イ ン ト 0x61 ('a') を コ ー ド ポ イ ン ト 0x41 ('A') と 同 じ ウ ェ イ ト で ソ ー ト さ せ る には、 オ フ セ ッ ト 0x61 お よ び 0x41 に同一の値を設定 し ます。 ユーザー定義の ACS の例については、 『Pervasive PSQL Programmer's Guide』 の 「オル タ ネー ト コ レーテ ィ ン グ シーケ ン ス」 を参照 し て く だ さ い。 イ ン タ ーナシ ョ ナル ソ ー ト 規則 (ISR) 。 ISR を指定す る には、 以下の形式でアプ リ ケーシ ョ ンか ら デー タ バ ッ フ ァ ーに直接 265 バ イ ト を設定す る こ と が必要です。 表 13 ISR ACS を指定する ためのデー タ バ ッ フ ァ ー 位置 (オフセット) 長さ (バイト単位) 0 1 1 16 17 248 説明 識別バ イ ト 。 0xAE を指定 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に ISR テーブルを識別 さ せ る 、16 バ イ ト の一意の名前。 ISR テーブル名の リ ス ト については、『Pervasive PSQL Programmer's Guide』を参照 し て く だ さ い。 Filler デー タ バ ッ フ ァ ー長 デー タ バ ッ フ ァ ー長は、 フ ァ イ ル仕様、 キー仕様、 お よ び定義 さ れてい る ACS を十分に格納で き る だけの長 さ を持つ必要があ り ます。 こ のパ ラ メ ー タ ーに フ ァ イ ルの レ コ ー ド 長を指定 し ないで く だ さ い。 た と えば、 1 セグ メ ン ト のキーを 2 つ と ACS を 1 つ持つフ ァ イ ルを作成する には、 Create オペレーシ ョ ンのデー タ バ ッ フ ァ ーには、 以下の よ う に、 少な く と も 313 バ イ ト の長 さ が必要です。 34 フ ァ イ ル仕様 + キー仕様 + キー 2 仕様 + ACS 16 + 16 + 16 + 265 = 313 Create (14) キー番号 Create オペレーシ ョ ンのキー番号パ ラ メ ー タ ーは、 同名の フ ァ イ ルが既に存在する 場合に ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が警告を出すか ど う か を決定す る ために、 ま た、 フ ァ イ ルの作成時に ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が ロ ーカル エン ジ ン と リ モー ト エン ジ ンの ど ち ら を使用する か を決定する ために使用 さ れます。 表 14 を使っ て、 キー番号パ ラ メ ー タ ーで使用する 値を決定 し ます。 メ モ ロ ーカル エン ジ ンで フ ァ イ ルを作成する よ う 指定する 場合は、 ワ ー ク グループ エン ジ ン で も サーバー エン ジ ンで も 、 Create オペレーシ ョ ンに何 ら 違いはあ り ません。 表 14 Create オペ レーシ ョ ンのキー番号パラ メ ー タ ー CREATE オペレーション 選択しない ローカル エンジンにファ イルを作成させる リモート エンジンにファイ ルを作成させる 標準の作成 (フ ァ イ ルが既存の場合、上書 き す る ) 0 6 99 フ ァ イ ルが既存の場合、 ス テー タ ス 59 を返す -1 7 100 Create オペ レーシ ョ ンに よ る削除および名前変更サブ フ ァ ン ク シ ョ ン Create オペレーシ ョ ンには 2 つのサブ フ ァ ン ク シ ョ ンがあ り 、 こ れを使用 し て フ ァ イ ルの削除ま たは名前変更が で き ます。 Pervasive.SQL v8.5 よ り 前の リ リ ー ス では、 オペ レ ーテ ィ ン グ シ ス テ ム を介 し て ト ラ ン ザ ク シ ョ ナル イ ン タ ー フ ェ イ ス フ ァ イ ルを操作す る こ と は常に可能で し た。 こ れは、オペレーテ ィ ン グ シ ス テ ムが Pervasive PSQL ユー ザーに与え る 権限に ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が依存 し ていたためです。 し か し 現在は、 セキ ュ リ テ ィ が設定 さ れた Pervasive PSQL デー タ ベース があ る 場合、 承認 さ れていないア ク セ ス か ら デー タ ベース を保護す る 過程において、 こ の よ う なオペレーテ ィ ン グ シ ス テ ムのア ク セ ス権は除去 さ れ る こ と があ り ます。 こ れに よ り 、 必ず し も 必要な権限を利用で き る と は限 ら な く な る ため、 プ ロ グ ラ ムに よ る フ ァ イ ルの削除や移動が困難にな り ま し た。 名前変更 と 削除のサブ フ ァ ン ク シ ョ ンは、 代替キー番号を持つ Create オペレーシ ョ ン と し て実装 さ れてい ます。 新規デー タ フ ァ イ ルを作成す る 場合の よ う に フ ァ イ ル仕様を指定す る 必要はあ り ません。 Create オペレーシ ョ ン で名前変更 と 削除サブ フ ァ ン ク シ ョ ン を使用する ための設定方法を、 次の表に示 し ます。 表 15 Create オペ レーシ ョ ンのサブ フ ァ ン ク シ ョ ン 機能 使用するキー番号 説明 データ バッファーに 指定するもの キー バッファーに指 定するもの フ ァ イ ルの名前 変更 -127 デー タ バ ッ フ ァ ーの既存の フ ァ イ ル を、 キー バ ッ フ ァ ーの名前に変更 し ます。 既存の フ ァ イ ル名 新 し い フ ァ イ ル名 フ ァ イ ルの削除 -128 フ ァ イ ルを削除 し ます。 適用外 既存の フ ァ イ ル名 こ れ ら のサブ フ ァ ン ク シ ョ ンはセキ ュ リ テ ィ モデルで動作す る よ う に変更 さ れま し た。 その変更点 と し て、 サブ フ ァ ン ク シ ョ ンは削除ま たは名前変更す る ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス フ ァ イ ルを示すために、必要に 応 じ て、 キー バ ッ フ ァ ーお よ びデー タ バ ッ フ ァ ーで フ ァ イ ル名の代わ り に URI を受け入れ る よ う にな り ま し た。 こ れに よ り 、 セキ ュ リ テ ィ 情報をオペレーシ ョ ンに指定する こ と がで き ます。 URI 接続文字列の詳細については、 『Pervasive PSQL Programmer's Guide』 の 「デー タ ベース URI」 を参照 し て く だ さ い。 35 Btrieve API オペ レーシ ョ ン セキ ュ リ テ ィ 情報は、 通常の Create ま たは Open オペレーシ ョ ン と ま っ た く 同様に処理 さ れます。 ユーザーは認 証 さ れ、 か つ、 既 存 の フ ァ イ ル に 対 し て、 ま た 新 し い フ ァ イ ル の 保存 場所 と な る デ ィ レ ク ト リ に 対 し て DB_RIGHT_CREATE、 DB_RIGHT_ALTER、 お よ び DB_RIGHT_OPEN 権限を持っ てい る 必要があ り ます。 表 16 Create サブ フ ァ ン ク シ ョ ン -キー バ ッ フ ァ ーでの URI パラ メ ー タ ーの使用 URI パラメーター file= URI パラメーター dbfile= URI パラメーター table= 名前変更 ○ ○ × 削除 ○ ○ × 機能 表 17 Create サブ フ ァ ン ク シ ョ ン -デー タ バ ッ フ ァ ーでの URI パラ メ ー タ ーの使用 機能 file= dbfile= table= 名前変更 ○ ○ × 適用外 適用外 適用外 削除 名前変更および削除サブ フ ァ ン ク シ ョ ン での注意 以前の Create オペレーシ ョ ンの機能は変更 さ れてい ません。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス デー タ フ ァ イ ルを新規作成す る 場合は、 既存マニ ュ アルの Create オペレーシ ョ ンの説明に従っ て く だ さ い。 RenameFile お よ び DeleteFile サブ フ ァ ン ク シ ョ ンは種々雑多なページの内容には影響 し ないため、 特定の デー タ ベース にバ イ ン ド さ れてい る フ ァ イ ルに使用する こ と はで き ません。 フ ァ イ ルにオーナー ネームが含まれてい る 場合、新 し いサブ フ ァ ン ク シ ョ ンではオーナー ネームのチ ェ ッ ク は行われません。 オーナー ネームはフ ァ イ ルの内容を表示 さ せ る ためには、 引 き 続 き 必要です。 結果 Create オペレーシ ョ ンが正常に終了 し た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 同名の フ ァ イ ルが既 に存在す る と 警告 さ れ る か、 仕様に従っ て新 し い フ ァ イ ルが作成 さ れます。 新規フ ァ イ ルには レ コ ー ド は含まれ てい ません。 Create オペレーシ ョ ン では作成 し た フ ァ イ ルを開き ません。 し たが っ て、 フ ァ イ ルにア ク セ スす る には、 アプ リ ケーシ ョ ンで Open オペレーシ ョ ン を実行す る 必要があ り ます。 Create オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 36 2 アプ リ ケーシ ョ ンで I/O エ ラ ーが発生 し ま し た。 11 指定 さ れた フ ァ イ ル名は不正です。 18 デ ィ ス ク がいっぱいです。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 次の ス テー タ ス コ ー ド 24 ページ サ イ ズ ま たはデー タ バ ッ フ ァ ー サ イ ズが不正です。 25 アプ リ ケーシ ョ ンが指定 さ れた フ ァ イ ルを作成で き ません。 26 指定 さ れた キーの数が不正です。 27 キー ポジシ ョ ンが不正です。 28 レ コ ー ド 長が不正です。 29 キー長が不正です。 Create (14) 48 オル タ ネー ト コ レーテ ィ ン グ シーケ ン ス定義が不正です。 49 拡張キー タ イ プが不正です。 59 指定 さ れた フ ァ イ ルは既に存在 し ます。 104 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が ロ ケールを認識 し ません。 105 こ の フ ァ イ ルは、 可変長部割 り 当て テーブル (VAT) 付 き で作成す る こ と はで き ません。 134 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が イ ン タ ーナシ ョ ナル ソ ー ト 規則 (ISR) を読み取れません。 135 指定 さ れた イ ン タ ーナシ ョ ナル ソ ー ト 規則 (ISR) テーブルは破損 し てい る か、 ま たは不正です。 ポジ シ ョ ニ ング Create オペレーシ ョ ン を実行 し て も 、 フ ァ イ ルにカ レ ン シーは確立 し ません。 37 Btrieve API オペ レーシ ョ ン Create Index (31) Create Index オペレーシ ョ ン (B_BUILD_INDEX) では、 既存の フ ァ イ ルにキーを追加 し ます。 パラ メ ー タ ー オペレーション コード ポジション ブロック ○ ○ 送り値 データ バッ データ バッ ファー ファー長 ○ キー バッ ファー キー番号 ○ ○ 戻り値 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 フ ァ イ ル内の既存のキー セグ メ ン ト 数は、 許容 さ れ る キー セグ メ ン ト の最大数か ら 追加す る キー セグ メ ン ト 数を差 し 引いた値以下でなければな り ません。 許容 さ れ る キー セグ メ ン ト の最大数は、 フ ァ イ ルのページ サ イ ズに よ っ て決ま り ます。 次の表に、 ページ サ イ ズ と キー セグ メ ン ト の最大数を示 し ます。 ページ サイズ (バイト数) キー セグメントの最大数 (ファイル バージョン別) 8.x 以前 9.0 9.5 512 8 8 切 り 上げ 2 1,024 23 23 97 1,536 24 24 切 り 上げ 2 2,048 54 54 97 2,560 54 54 切 り 上げ 2 3,072 54 54 切 り 上げ 2 3,584 54 54 切 り 上げ 2 4,096 119 119 204 (ま たは 119) 3 8,192 N/A1 119 420 (ま たは 119) 3 16,384 N/A1 N/A1 420 (ま たは 119) 3 1 N/A は 「適用外」 を意味 し ます。 2 「切 り 上げ」 は、 ページ サ イ ズ を、 フ ァ イ ル バージ ョ ン でサポー ト さ れ る 次のサ イ ズへ切 り 上げ る こ と を意味 し ます。 た と えば、 512 は 1,024 に切 り 上げ ら れ、 2,560 は 4,096 に切 り 上げ る と い う こ と です。 3 リ レーシ ョ ナル イ ン タ ーフ ェ イ ス で使用で き る イ ンデ ッ ク ス セグ メ ン ト の最大数は 119 です。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス の場合、 最大数は、 ページ サ イ ズ 4,096 では 204、 ページ サ イ ズ 8,192 お よ び 16,384 では 420 です。 『Status Codes and Messages』 の ス テー タ ス コ ー ド 「26 : 指定 さ れた キーの数が不正です。」 お よ び 「29 : キー 長が不正です。」 を参照 し て く だ さ い。 38 Create Index (31) 新 し いキーのキー フ ラ グ、 位置お よ び長 さ が、 キーを追加 し よ う と し てい る フ ァ イ ルに対 し て適切であ る こ と を確認 し ます。 ト ラ ンザ ク シ ョ ンが実行中でない こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 31 を設定 し ます。 2 キーを追加す る フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 キーの各セグ メ ン ト について、16 バ イ ト のキー仕様ブ ロ ッ ク をデー タ バ ッ フ ァ ーに格納 し ます。表 8 で定義 さ れてい る も の と 同 じ 構造体を使用 し ます。 キー ポジシ ョ ンお よ びキー長の情報は整数で格納 し ます。 シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ と も 言い ます) を再構築 し てい る 場合、 デー タ バ ッ フ ァ ーは少な く と も 16 バ イ ト の長 さ で、 ゼ ロ に初期化 さ れてい る 必要があ り ます。 4 新 し いキーに ACS を定義す る には、 次のいずれかの手順を実行 し ます。 デフ ォ ル ト の ACS、 つま り 、 フ ァ イ ルに既に定義 さ れてい る 先頭の ACS を使用す る には、 キー フ ラ グ ワ ー ド に 「デフ ォ ル ト の ACS を使用」 属性を指定 し ます。 新 し い ACS を定義す る には、 キー フ ラ グ ワ ー ド に 「番号付き の ACS を使用」 属性を指定 し 、 ACS 番 号フ ィ ール ド にゼ ロ (0) を設定 し ます。 さ ら に、 デー タ バ ッ フ ァ ーの最後のキー仕様ブ ロ ッ ク の後に 265 バ イ ト の ACS を格納 し ます。 名前に よ っ て既存の ACS を指定す る には、 キー フ ラ グ ワー ド に 「名前付き の ACS を使用」 属性を指定 し 、 ACS 番号フ ィ ール ド にゼ ロ (0) を設定 し ま す。 さ ら に、 ACS 名を、 デー タ バ ッ フ ァ ーの最後の キー仕様ブ ロ ッ ク の後にあ る 265 バ イ ト のブ ロ ッ ク の先頭か ら 格納 し ます(名前 よ り 後の ACS ブ ロ ッ ク の残 り 部分は無視 さ れます)。 名前の形式は次のいずれかに従っ てい る 必要があ り ます。 ACS の種類 長さ (バイト単位) 説明 ユーザー定義の ACS 1 識別バ イ ト 0xAC 8 ACS テーブル名 1 識別バ イ ト 0xAE 16 ISR テーブル名 〃 ISR 〃 5 デー タ バ ッ フ ァ ー長パ ラ メ ー タ ーにデー タ バ ッ フ ァ ー内のバ イ ト 数を設定 し ます。 新 し いキーが ACS を持 た ない、 も し く はデフ ォ ル ト の ACS を使用す る 場合は、 次の式を使っ て正 し いデー タ バ ッ フ ァ ー長を決定 し ます。 16 * ( セグ メ ン ト 数 ) 新 し いキーでデフ ォ ル ト 以外の ACS を指定す る 場合は、 次の式を使っ て正 し いデー タ バ ッ フ ァ ー長を決定 し ます。 16 * ( セグ メ ン ト 数 ) + 265 6 作成 さ れ る キーに特定のキー番号を割 り 当て る には、目的のキー番号に 0x80 を加算 し 、 その合計値を キー番 号パ ラ メ ー タ ーに入れます。 シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ ) を再構築 し てい る 場合は、 0xFD (つま り 、 キー番号 125 + 128) を指定 し ます。 メ モ キー番号はフ ァ イ ルで一意であ る こ と が必要です。 ま た、 有効な値でなければな り ません (つま り 、 各 キー番号の値は、 フ ァ イ ルのページ サ イ ズに対 し て許容 さ れ る キーの最大数 よ り も 小 さ い値でなければな り ません)。 39 Btrieve API オペ レーシ ョ ン 詳細 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 キーを作成す る と き に特定のキー番号を割 り 当て る こ と がで き ま す。 こ の機能は、 キーを削除 し て、 その削除 し た キー よ り も 大 き な キー番号を持つすべてのキーの番号を ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に付け替え さ せない よ う にす る 機能 と 相補関係にあ り ます。 アプ リ ケーシ ョ ンが イ ンデ ッ ク ス を削除 し 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス にそれ よ り も 大 き な番号を持つキーの番号を付け 替え ない よ う に指示を出 し た場合、 その後でユーザーが具体的な キー番号を割 り 当てずに影響を受けた フ ァ イ ル を複製す る と 、 複製 し た フ ァ イ ルには元の フ ァ イ ル と は別のキー番号が割 り 当て ら れます。 デー タ バ ッ フ ァ ーで ACS を定義す る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は ACS 定義を フ ァ イ ルに追加す る 前に、 まず指定 さ れた名前を使っ て既存の ACS をチ ェ ッ ク し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が 指定 さ れた名前を持つ既存の ACS を検出 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス はフ ァ イ ル内で ACS 定義の複製は行わず、 既存の ACS と 新 し いキー と の関連付け を行い ます。 キー フ ラ グ ワ ー ド に 「名前付 き の ACS を使用」 属性を指定 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ スは デー タ バ ッ フ ァ ーに指定 さ れた ACS 名を使っ て フ ァ イ ル内で同名の ACS を検索 し てか ら 、 その ACS を新 し い キーに割 り 当て ます。 フ ァ イ ルが複数の ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て開かれてお り 、あ る ク ラ イ ア ン ト が Create Index プ ロ セ ス を開始 し た場合、 リ モー ト ク ラ イ ア ン ト は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て キーが作成 さ れてい る 間 も 、 同 じ フ ァ イ ルに対 し て Get お よ び Step オペレーシ ョ ン を実行で き ます。 作成 さ れ る キーが AUTOINCREMENT キーでない場合は、リ モー ト ク ラ イ ア ン ト の Get お よ び Step オペレーシ ョ ンに ロ ッ ク バ イ ア ス を使用で き 、 Create Index プ ロ セ ス が完了 し た と き に、 読み取 り オペレーシ ョ ン を さ ら に発 行 し な く て も 、 ロ ッ ク さ れていた レ コ ー ド を更新 し た り 削除 し た り で き ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではキーを作成す る ために レ コ ー ド の イ メ ージ を変更する 必要がないため、 こ の よ う な処理が可能にな り ま す。 ただ し 、 作成 さ れ る キーが AUTOINCREMENT キーであ る 場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では イ ンデ ッ ク ス を構築 し 、かつ適切な フ ィ ール ド でゼ ロ 値を使っ てすべての レ コ ー ド を変更す る 必要があ り ます。キー の作成前ま たは最中に ロ ッ ク バ イ ア ス を使わずに Get ま たは Step オペレーシ ョ ン を実行 し た リ モー ト ク ラ イ ア ン ト は、キーの作成が正常に終了 し た後で Update ま たは Delete オペレーシ ョ ン を実行す る と き 、ス テー タ ス コ ー ド 80 を受け取 り ます。 ま た、 あ る ク ラ イ ア ン ト が レ コ ー ド を ロ ッ ク し てい る 最中に、 別の ク ラ イ ア ン ト が AUTOINCREMENT キーを作 成 し よ う と す る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら ス テー タ ス コ ー ド 84 が返 さ れます。 同様に、 あ る ク ラ イ ア ン ト が AUTOINCREMENT キーの イ ンデ ッ ク ス を作成 し てい る 最中に、別の ク ラ イ ア ン ト が ロ ッ ク バ イ ア ス を使っ て Get ま たは Step オペレーシ ョ ン を実行 し よ う と す る と 、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら ス テー タ ス コ ー ド 85 が返 さ れます。 結果 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス はフ ァ イ ルに新 し いキーを直ちに追加 し ます。 こ のオペレーシ ョ ンの所要 時間は、 イ ンデ ッ ク ス が作成 さ れ る 総レ コ ー ド 数、 フ ァ イ ルのサ イ ズお よ び新 し い イ ンデ ッ ク ス の長 さ に よ っ て 変わ り ます。 Create Index オペレーシ ョ ンが正常に終了 し た場合、 新 し いキーの番号は指定 し た番号にな る か、 ま たは次のいず れかにな り ます。 キー番号が飛んでいない フ ァ イ ルの場合は、 新 し いキー番号は以前の最大のキー番号 よ り 1 つ大 き く な り ま す。 キー番号が飛んでい る フ ァ イ ルの場合は、 新 し いキー番号は欠けてい る キー番号の う ちの最小の番号にな り ます。 オペレーシ ョ ンの終了 し だい、 新 し いキーを使っ てデー タ にア ク セ スす る こ と がで き る よ う にな り ます。 Create Index オペレーシ ョ ンが正常に実行 さ れなか っ た場合、新 し い イ ンデ ッ ク ス の一部が既に構築 さ れていた と し て も 、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス はそれをすべて削除 し ま す。 エ ラ ーが発生す る 前に新 し い イ ン デ ッ ク ス に割 り 当て ら れた フ ァ イ ル ページは、 フ ァ イ ルの空き 領域 リ ス ト に置かれ、 レ コ ー ド を挿入 し た り 別の キーを作成 し た り す る と き に再利用 さ れます。 40 Create Index (31) AUTOINCREMENT キーの作成中にエ ラ ーが発生する と 、 それま でに変更 さ れてい る 値はその ま ま残 り ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 返 さ れ る 可能性のあ る ス テー タ ス コ ー ド は次の と お り です。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 27 キー ポジシ ョ ンが不正です。 41 実行 し よ う と し た操作は ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では許可 さ れてい ません。 45 指定 し た キー フ ラ グが不正です。 49 拡張キー タ イ プが不正です。 56 イ ンデ ッ ク ス が不完全です。 84 レ コ ー ド ま たはページが ロ ッ ク さ れてい ます。 85 フ ァ イ ルは ロ ッ ク さ れてい ます。 104 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が ロ ケールを認識 し ません。 134 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が イ ン タ ーナシ ョ ナル ソ ー ト 規則 (ISR) を読み取れません。 135 指定 さ れた イ ン タ ーナシ ョ ナル ソ ー ト 規則 (ISR) テーブルは破損 し てい る か、 ま たは不正です。 136 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は、 指定 さ れたオル タ ネー ト コ レーテ ィ ン グ シーケ ン ス を フ ァ イ ル内 に見つけ ら れません。 キーの作成中に処理が中断 さ れて も 、 フ ァ イ ルのほかのキーを使っ て フ ァ イ ルのデー タ にア ク セ スす る こ と はで き ま す。 し か し 、 不完全な イ ンデ ッ ク ス を使っ てデー タ にア ク セ ス し よ う と す る と 、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 0 以外の ス テー タ ス コ ー ド が返 さ れます。 こ の問題を解決する には、 Drop Index オペレーシ ョ ン (32) を使っ て不完全な イ ンデ ッ ク ス を削除 し 、 Create Index オペレーシ ョ ン を再発行 し て く だ さ い。 ポジ シ ョ ニ ング Create Index オペレーシ ョ ンは、 フ ァ イ ルのカ レ ン シー情報に ま っ た く 影響 し ません。 41 Btrieve API オペ レーシ ョ ン Delete (4) Delete オペレーシ ョ ン (B_DELETE) では、 フ ァ イ ルか ら 既存の レ コ ー ド を削除 し ます。 削除 し た レ コ ー ド が占 有 し ていた スペース は、 新 し い レ コ ー ド を挿入する ために再利用 さ れます。 パラ メ ー タ ー 送り値 戻り値 オペレーション コード ポジション ブロック ○ ○ データ バッ データ バッ ファー ファー長 キー バッ ファー キー番号 ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 対象 と な る フ ァ イ ルの物理カ レ ン シーま たは論理カ レ ン シーを確立 し てお く こ と が必要です。 こ の要件を満 たすオペレーシ ョ ンには次の も のがあ り ます。 Get、 Step、 Insert お よ び Update オペレーシ ョ ンです。 ただ し 、 Get ... Extended、 Get Key、 Step ... Extended は除き ます。 手順 1 オペレーシ ョ ン コ ー ド に 4 を設定 し ます。 2 削除す る レ コ ー ド を含むフ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 詳細 Delete オペレーシ ョ ン を Extended Get ま たは Extended Step オペレーシ ョ ンの直後に実行 し た場合、 こ れは有効な オペレーシ ョ ンにな り ません。 Get オペレーシ ョ ンの直後に Delete オペレーシ ョ ン を実行する 場合は、Get オペレーシ ョ ンか ら 返 さ れ る キー番号 を変更 し ないで く だ さ い。 変更 し て し ま う と 、 レ コ ー ド は ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で正常に削除 さ れますが、 レ コ ー ド 削除後に実行す る 最初の Get オペレーシ ョ ン で ス テー タ ス コ ー ド 7 が返 さ れます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 Get Key オペレーシ ョ ン (+50) の後に Delete オペレーシ ョ ン を実 行す る こ と はで き ません。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で Delete オペレーシ ョ ン を実行する 前に、 変更 し よ う と し てい る デー タ ページの現在の使用回数 と 、レ コ ー ド を読み取っ た時点のデー タ ページの使用回数が比 較 さ れます。使用回数を取得す る には、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス がデー タ ページ を読み取 る 必要が あ り ます。 Get Key オペレーシ ョ ンではデー タ ページ を読み取 ら ないので、 Delete オペレーシ ョ ンで比較す る ための使用回 数が利用可能にな り ま せん。 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 比較な し にパ ッ シブ並行制御の矛盾 チ ェ ッ ク を実行で き ないため、 Delete オペレーシ ョ ンは正常に実行 さ れ ません。 Delete オペレーシ ョ ンが正常に 実行 さ れない と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら ス テー タ ス コ ー ド 8 が返 さ れます。 結果 Delete オペレーシ ョ ンが正常に終了 し た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て フ ァ イ ルか ら レ コ ー ド が削除 さ れ、 削除 し た レ コ ー ド に ロ ッ ク が設定 さ れていた場合はその ロ ッ ク が解除 さ れ、 さ ら に削除の結 果を反映 し て、 すべてのキー イ ンデ ッ ク ス を調整 さ れます。 42 Delete (4) Delete オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 8 現在のポジシ ョ ンが不正です。 80 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で レ コ ー ド レベルの矛盾が発生 し ま し た。 84 レ コ ー ド ま たはページが ロ ッ ク さ れてい ます。 85 フ ァ イ ルは ロ ッ ク さ れてい ます。 Delete オペレーシ ョ ン を実行 し て も フ ァ イ ル サ イ ズは小 さ く な り ません。 レ コ ー ド の削除に よ っ て生 じ る 空 き 領 域は、 今後レ コ ー ド を追加す る と き に再利用 さ れ ます。 デ ィ ス ク 容量を回復す る には、 フ ァ イ ルを再作成 し て、 その フ ァ イ ルにすべての レ コ ー ド を挿入す る し かあ り ません。 ポジ シ ョ ニ ング Delete オペレーシ ョ ン を実行す る と 、 すべての物理位置情報 と 現在の レ コ ー ド の論理位置は消去 さ れ ますが、 次 の レ コ ー ド ま たは前の レ コ ー ド の論理位置は変わ り ません。 43 Btrieve API オペ レーシ ョ ン Drop Index (32) Drop Index オペレーシ ョ ン (B_DROP_INDEX) では、 既存の フ ァ イ ルか ら キーを削除 し ます。 パラ メ ー タ ー 送り値 オペレーショ ン コード ポジション ブロック ○ ○ データ バッ データ バッ ファー ファー長 キー バッ ファー キー番号 ○ 戻り値 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 フ ァ イ ル内にキーが存在 し てい る こ と が必要です。 ト ラ ンザ ク シ ョ ンが実行中でない こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 32 を設定 し ます。 2 削除す る キーを含むフ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 キー番号パ ラ メ ー タ ーに削除す る キーの番号を格納 し ます。 シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ と も 言い ます) を削除す る には、 125 を指定 し ます。 詳細 シ ス テ ム定義の ロ グ キーを削除 し た場合、 Create Index (31) オペレーシ ョ ン を使っ てそれを再構築す る こ と がで き ます。 キーを削除す る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では特に指定がなければ、 削除 し た キー よ り も キー番 号の大 き な キーはすべて自動的に番号が付け替え ら れます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 削除 し た キー よ り も キー番号の大 き な キーは、 番号が 1 ずつ小 さ く な り ます。 た と えば、 キー番号 1、 4、 お よ び 7 を含 むフ ァ イ ルがあ る と し ます。 キー 4 を削除す る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では残っ た キーの番号 が 1 と 6 に付け替え ら れます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て キー番号を自動的に付け替え ら れた く ない場合は、 128 と い う バ イ ア ス を キー番号パ ラ メ ー タ ーに入れ る 値に加算 し ます。 こ れに よ り 、 キー番号は飛んだ ま ま に し てお く こ と が で き 、 その結果、 フ ァ イ ル内のほかのキー番号に影響を及ぼす こ と な く 、 壊れた イ ンデ ッ ク ス を削除 し 、 その イ ンデ ッ ク ス を作成 し 直す こ と がで き ます。 イ ンデ ッ ク ス を再構築する には、 Create Index オペレーシ ョ ン (31) を 使い ます。 こ のオペレーシ ョ ンではキー番号を指定で き ます。 ただ し 、 キーを削除 し 、 それ よ り キー番号の大き な キーの番号を付け替えなか っ た場合、 その後でユーザーが具 体的な キー番号を割 り 当てずに影響を受けた フ ァ イ ルを複製す る と 、 複製 し た フ ァ イ ルには元の フ ァ イ ル と は別 のキー番号が割 り 当て ら れます。(ユーザーは Btrieve Maintenance ユーテ ィ リ テ ィ を使っ て フ ァ イ ルを複製で き ま す。 複製 と は、 あ る 既存の フ ァ イ ル と 同 じ 統計情報を使っ て新 し い空の フ ァ イ ルを作成す る 処理です。) 結果 Drop Index オペレーシ ョ ンが正常に終了 し た場合、 指定 し た イ ンデ ッ ク ス は ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て削除 さ れ、 その イ ンデ ッ ク ス に割 り 当て ら れていたページは、 今後の使用のために空 き 領域の リ ス ト に配置 さ れ ま す。 ま た、 特に指定 し な ければ、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では削除 し た キー よ り も キー番号の大き な キーの番号が付け替え ら れます。 44 Drop Index (32) Drop Index オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 6 キー番号パ ラ メ ー タ ーが不正です。 41 実行 し よ う と し た操作は ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では許可 さ れてい ません。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が イ ンデ ッ ク ス を削除中に処理が中断 さ れて も 、 フ ァ イ ルのほかのキーを 使っ て フ ァ イ ルのデー タ にア ク セ スす る こ と はで き ます。 し か し 、 不完全な イ ンデ ッ ク ス を使っ て フ ァ イ ルにア ク セ ス し よ う と す る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら ス テー タ ス コ ー ド 56 が返 さ れます。 処理が 中断 さ れた場合は、 Drop Index オペレーシ ョ ン を再発行 し て く だ さ い。 ポジ シ ョ ニ ング Drop Index オペレーシ ョ ンは、 フ ァ イ ルの物理カ レ ン シー情報には ま っ た く 影響 し ません。 ただ し 、 直前に論理 カ レ ン シーを確立す る ために使用 し た キーを削除する と 、 論理カ レ ン シーは消去 さ れます。 45 Btrieve API オペ レーシ ョ ン End Transaction (20) End Transaction オペレーシ ョ ン (B_END_TRAN) では、 ト ラ ン ザ ク シ ョ ン を終了 し 、 デー タ フ ァ イ ルに適切な 変更を加え ます。 ま た、 ト ラ ンザ ク シ ョ ンに よ っ て設定 さ れたすべての フ ァ イ ル と レ コ ー ド の ロ ッ ク を解除 し ま す。 パラ メ ー タ ー オペレーション コード 送り値 ポジション ブロック データ バッ データ バッ ファー ファー長 キー バッ ファー キー番号 ○ 戻り値 前提条件 End Transaction オペレーシ ョ ン を発行す る 前に、 Begin Transaction オペレーシ ョ ン (19 ま たは 1019) が正常に終 了 し てい る 必要があ り ます。 手順 オペレーシ ョ ン コ ー ド に 20 を設定 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 オペレーシ ョ ン コ ー ド 以外の End Transaction 呼び出 し パ ラ メ ー タ ーはすべて無視 さ れますが、 将来の リ リ ース と の互換性を確保す る た めに 0 に初期化 し て く だ さ い。 結果 End Transaction オペ レ ーシ ョ ン が正常に終了 し た場合は、 ト ラ ン ザ ク シ ョ ン内で実行 さ れたすべてのオペ レ ー シ ョ ンの結果が フ ァ イ ルに保存 さ れます。 End Transaction オペレーシ ョ ン を実行 し た後で ト ラ ンザ ク シ ョ ン を中 止す る こ と はで き ません。 End Transaction オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次 の ス テー タ ス コー ド が返 さ れます。 38 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で、 ト ラ ンザ ク シ ョ ン制御フ ァ イ ル I/O エ ラ ーが発生 し ま し た。 ポジ シ ョ ニ ング End Transaction オペレーシ ョ ンは、 フ ァ イ ルのカ レ ン シー情報に ま っ た く 影響 し ません。 46 Find Percentage (45) Find Percentage (45) Find Percentage オペ レ ーシ ョ ン (B_GET_PERCENT) は、 ス ク ロ ール バーを 実装す る ウ ィ ン ド ウ 指向の ア プ リ ケーシ ョ ン で使用す る こ と ので き る 2 つの Btrieve API オペレーシ ョ ンの う ちの 1 つです。 も う 1 つのオペレー シ ョ ンは Get By Percentage オペレーシ ョ ン (44) です。 Find Percentage では、 キー パ ス ま たはフ ァ イ ル内での レ コ ー ド の物理位置を基準 と し て、 それに対応する レ コ ー ド のおお よ その位置を検出 し ます。 位置はパーセ ン テー ジ値で表 さ れます。 パーセ ン テージ値の範囲の定義については、 「結果」 のセ ク シ ョ ン を参照 し て く だ さ い。 パラ メ ー タ ー 送り値 戻り値 オペレーション コード ポジション ブロック データ バッ データ バッ ファー ファー長 ○ ○ ○ ○ ○ ○ ○ キー バッ ファー キー番号 ○ ○ メ モ Find Percentage を使っ て、キー パス を基準に対応す る パーセ ン テージ を シー ク す る 場合は、デー タ バ ッ フ ァ ー パ ラ メ ー タ ーに値を入力す る 必要はあ り ません。 フ ァ イ ル内での レ コ ー ド の物理位置を基準に対応す る パーセ ン テージ を シー ク する 場合は、 キー バ ッ フ ァ ー パ ラ メ ー タ ーに値を入力する 必要はあ り ません。 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 キー パ ス に基づいてパーセ ン テージ を シー ク す る 場合は、対象 と な る フ ァ イ ルがデー タ オン リ ー フ ァ イ ルで あ っ てはいけ ません。 フ ァ イ ル内の レ コ ー ド の物理位置に基づいてパーセ ン テージ を シー ク す る 場合は、 その レ コ ー ド の 4 バ イ ト 物理位置をデー タ バ ッ フ ァ ー パ ラ メ ー タ ーに指定する 必要があ り ます。 こ の値は、Get Position オペレーシ ョ ン (22) を使っ て取得で き ます。 手順 1 オペレーシ ョ ン コ ー ド に 45 を設定 し ます。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 フ ァ イ ル内の レ コ ー ド の物理位置を基準にパーセ ン テージ を シー ク す る 場合は、 レ コ ー ド の物理ア ド レ ス を デー タ バ ッ フ ァ ー パ ラ メ ー タ ーに格納 し ます。レ コ ー ド のキー パ ス を基準にパーセ ン テージ を シー ク し 、そ の検索に精度を指定す る 場合は、 「精度」 で指定 さ れてい る よ う にデー タ バ ッ フ ァ ー パ ラ メ ー タ ーを設定 し ます。 それ以外の場合は、 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーに値を入れ る 必要はあ り ません。 4 デー タ バ ッ フ ァ ー長に最小値であ る 4 バ イ ト を設定 し ます ( こ の 4 バ イ ト と い う 最小長は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス の内部的な実装に必要 と さ れます)。検索に精度を設定する 場合は、デー タ バ ッ フ ァ ー 長を最小値の 12 バ イ ト に設定 し ます。 5 キー パス を基準にパーセ ン テージ を シー ク する 場合は、 キー値を キー バ ッ フ ァ ー パ ラ メ ー タ ーに設定 し ま す。 それ以外の場合は、 キー バ ッ フ ァ ー パ ラ メ ー タ ーに値を入れ る 必要はあ り ません。 6 キー番号パ ラ メ ー タ ーを以下の と お り に設定 し ます。 a. キー パ ス に よ っ てパーセ ン テージ を シー ク す る 場合は、 キー番号パ ラ メ ー タ ーに実際のキー番号を設定 し ます。 47 Btrieve API オペ レーシ ョ ン b. レ コ ー ド の物理位置に よ っ てパーセ ン テージ を シー ク す る 場合は、 キー番号パ ラ メ ー タ ーに -1 (0xFF) を設定 し ます。 詳細 Find Percentage オペレーシ ョ ンは、 特に ス ク ロ ール バーの実装をサポー ト す る 目的で用意 さ れてい ます。 こ のオ ペレーシ ョ ンの精度、 つま り 、 返 さ れたパーセ ン テージ値が レ コ ー ド ま たはキー値の位置を どれだけ精確に反映 し てい る か ど う かは、 さ ま ざ ま な要因に よ っ て影響を受け ます。 こ のため、 ス ク ロ ール バーの実装以外の目的で 使用す る 場合は、 こ のオペレーシ ョ ンの精度を信頼 し ないで く だ さ い。 Find Percentage オペレーシ ョ ン を最適化す る ため、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、フ ァ イ ルの レ コ ー ド はデー タ ページ間に、 キーは イ ンデ ッ ク ス ページ間に均等に分布 し てい る こ と を前提 と し てい ます。 ただ し 、 分布状態は次の よ う な状況に よ っ て影響を受け ます。 フ ァ イ ルが イ ンデ ッ ク ス バ ラ ン ス を使用 し ておら ず、同一範囲内のキーで多数のレ コー ド が削除 さ れてい る。 同一範囲内の物理ア ド レ ス で多数の レ コ ー ド が削除 さ れてい る 。 フ ァ イ ルに多数の重複す る キー値が含まれてお り 、 そのキーが リ ン ク 重複キーにな っ てい る 。 精度 精度の設定はオプシ ョ ン で、 パーセ ン テージ を測定す る 要素を選択す る こ と がで き ます。 Pervasive PSQL 9 よ り 前の リ リ ース では、 こ の値は常に 10,000 で し た。 精度を指定す る 場合は、 以下の手順に従っ て く だ さ い。 ¾ Find Percentage オペ レーシ ョ ンの精度を指定するには 1 デー タ バ ッ フ ァ ーの 2 番目の 4 バ イ ト に ExPc を設定 し ます。 2 3 番目の 4 バ イ ト に希望す る 精度を LoHi Intel 整数で指定 し ます。 選択で き る 精度は、 1 か ら 0xFFFFFFFF ま での数値です。 3 デー タ バ ッ フ ァ ー長が少な く と も 12 バ イ ト あ る こ と を確認 し て く だ さ い。 た と えば、 365 件の レ コ ー ド が入っ てい る フ ァ イ ルか ら 100 番目の レ コ ー ド を取得 し たい場合、 パーセ ン テージ に 100、 精度に 365 を使用 し て FindPercentage を実行す る こ と がで き ます。 結果 Find Percentage オペレーシ ョ ンが正常に終了 し た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て、 指定 し た キー値ま たはレ コ ー ド の相対位置がデー タ バ ッ フ ァ ーに返 さ れます。 こ の位置は、 キー パ ス ま たはフ ァ イ ル におけ る オ フ セ ッ ト のパーセ ン テージ と し て表 さ れ、 0 (0 %) か ら 10,000 (100.00%) ま での範囲の値にな り ま す。 こ れは、 物理位置で も 論理位置で も ないので注意 し て く だ さ い。 パーセ ン テージ値は、 下位バ イ ト 、 上位バ イ ト の順の 2 バ イ ト 整数 と し て返 さ れます。 た と えば、 次の よ う にな り ます。 16 進数の戻り値 10 進数の戻り値 キー パスまたはファイル内での パーセンテージ 88h 13h 00 50 50% ま た、 オペレーシ ョ ンが正常に終了 し た場合には、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら デー タ バ ッ フ ァ ー 長に 4 が返 さ れます。 48 Find Percentage (45) Find Percentage オペレーシ ョ ンが正常に実行 さ れなかっ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次 の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 6 キー番号パ ラ メ ー タ ーが不正です。 7 キー番号が変更 さ れま し た。 8 現在のポジシ ョ ンが不正です。 9 オペレーシ ョ ンが EOF (end-of-file) を検出 し ま し た。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 41 実行 し よ う と し た操作は ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では許可 さ れてい ません。 43 指定 さ れた レ コ ー ド ア ド レ ス が不正です。 82 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス がポジシ ョ ニ ン グ を失い ま し た。 ポジ シ ョ ニ ング Find Percentage オペレーシ ョ ン を実行 し て も 、 カ レ ン シー情報は変更 さ れません。 49 Btrieve API オペ レーシ ョ ン Get By Percentage (44) Get By Percentage オペレーシ ョ ン (B_SEEK_PERCENT) は、 ス ク ロ ール バーを実装す る ウ ィ ン ド ウ 指向のアプ リ ケーシ ョ ンで使用す る こ と ので き る 2 つの Btrieve API オペレーシ ョ ンの う ちの 1 つです。 も う 1 つは 「Find Percentage (45) 」 です。 Get By Percentage オペレーシ ョ ンは、 フ ァ イ ル内の レ コ ー ド の相対位置に よ っ て レ コ ー ド を取得 し ます。 こ の位置は、 オペレーシ ョ ン を呼び出す と き に指定 し たパーセ ン テージ値に基づ き ます。 ま た、 こ の位置は特定のキー パ ス を基準 と す る のか、 フ ァ イ ル内の レ コ ー ド の実際の物理位置を表すのか を指定す る 必 要があ り ます。 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ ○ ○ ○ ○ ○ 戻り値 データ バッ データ バッ ファー ファー長 キー バッ ファー キー番号 ○ ○ メ モ フ ァ イ ル内の レ コ ー ド の物理位置を基準 と し て レ コ ー ド を シー ク す る 場合、Get By Percentage オペレー シ ョ ンか ら キー バ ッ フ ァ ー パ ラ メ ー タ ーには何の情報 も 返 さ れません。 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 キー パ ス に基づいて レ コ ー ド を シー ク す る 場合は、対象 と な る フ ァ イ ルがデー タ オ ン リ ー フ ァ イ ルであ っ て はいけ ません。 手順 1 オペレーシ ョ ン コ ー ド に 44 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 パーセ ン テージの値を 2 バ イ ト 整数でデー タ バ ッ フ ァ ーに格納 し ます。 パーセ ン テージ値の許容範囲お よ び 関連情報については、 「詳細」 を参照 し て く だ さ い。 4 デー タ バ ッ フ ァ ー長に、 返 さ れ る 可能性のあ る 最大レ コ ー ド 長以上の値を設定 し ます ( ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス の内部的な実装は、デー タ バ ッ フ ァ ー長に最小値の 4 バ イ ト が設定 さ れてい る こ と を必要 と し ます)。 検索に精度を設定す る 場合は、 デー タ バ ッ フ ァ ー長を最小値の 12 バ イ ト に設定 し ます。 5 キー番号パ ラ メ ー タ ーを設定 し ます。 a. キー パス に よ っ て レ コ ー ド を シー ク する 場合は、 キー番号パ ラ メ ー タ ーに実際のキー番号を設定 し ま す。 シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ ) を使用する には、 125 を指定 し ます。 b. フ ァ イ ル内の レ コ ー ド の物理位置に よ っ て レ コ ー ド を シー ク す る 場合は、 キー番号パ ラ メ ー タ ーに (0xFF) を設定 し ます。 50 -1 Get By Percentage (44) 詳細 精度を指定 し ない場合 ( 「精度」 を参照) 、 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーの最初の 2 バ イ ト に対す る パーセ ン テージ値の許容範囲は、 0 (キー パ ス ま たはフ ァ イ ルの先頭を表 し ます) か ら 10,000 (キー パ ス ま たはフ ァ イ ル の末尾を表 し ます) ま でです。 こ の値は、 小数点以下 2 桁を含む も の と し て、 0% か ら 100.00% の範囲に対応 し てい ます。 フ ァ イ ル中の 33.33% あ た り にあ る レ コ ー ド を検索す る 場合は、 デー タ バ ッ フ ァ ーに値 3333 を渡 し ま す。 値は、 下位バ イ ト 、 上位バ イ ト の順の整数 と し て格納 し て く だ さ い。 た と えば、 フ ァ イ ル内の 50% の地点を シー ク す る には、 5,000 (0x1388) と い う 値を使い ます。 0x1388 の下位バ イ ト と 上位バ イ ト を入れ替え、 0x88 と 0x13 をデー タ バ ッ フ ァ ー パ ラ メ ー タ ーの先頭の 2 バ イ ト に格納 し ます。 レ コ ー ド のキー パ ス を基準にパーセ ン テージ を シー ク し 、 その検索に精度を指定す る 場合は、 「精度」 で指定 さ れてい る よ う にデー タ バ ッ フ ァ ー パ ラ メ ー タ ーを設定 し ます。 Get By Percentage オペレーシ ョ ンは、 特に ス ク ロ ール バーの実装をサポー ト す る 目的で用意 さ れてい ます。 こ の オペレーシ ョ ンの精度、 つま り 、 返 さ れた レ コ ー ド が フ ァ イ ル内の指定 し たパーセ ン テージ地点に実際に位置 し てい る か ど う かは、 さ ま ざ ま な要因に よ っ て影響を受け ます。 こ のため、 ス ク ロ ール バーの実装以外の目的で使 用す る 場合は、 こ のオペレーシ ョ ンの精度を信頼 し ないで く だ さ い。 Get By Percentage オペレーシ ョ ン を最適化す る ため、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 フ ァ イ ルの レ コ ー ド はデー タ ページ間に、 キーは イ ンデ ッ ク ス ページ間に均等に分布 し てい る こ と を前提 と し てい ます。 ただ し 、 分布状態は次の よ う な状況に よ っ て影響を受け ます。 フ ァ イ ルが イ ンデ ッ ク ス バ ラ ン ス を使用 し ておら ず、同一範囲内のキーで多数のレ コー ド が削除 さ れてい る。 同一範囲内の物理ア ド レ ス で多数の レ コ ー ド が削除 さ れてい る 。 フ ァ イ ルに多数の重複す る キー値が含まれてお り 、 そのキーが リ ン ク 重複キーにな っ てい る 。 精度 精度の設定はオプシ ョ ン で、 パーセ ン テージ を測定す る 要素を選択す る こ と がで き ます。 Pervasive PSQL 9 よ り 前の リ リ ース では、 こ の値は常に 10,000 で し た。 精度を指定す る 場合は、 以下の手順に従っ て く だ さ い。 ¾ Get By Percentage オペ レーシ ョ ンの精度を指定する には 1 デー タ バ ッ フ ァ ーの 2 番目の 4 バ イ ト に ExPc を設定 し ます。 2 3 番目の 4 バ イ ト に希望す る 精度を LoHi Intel 整数で指定 し ます。 選択で き る 精度は、 1 か ら 0xFFFFFFFF ま での数値です。 3 デー タ バ ッ フ ァ ー長が少な く と も 12 バ イ ト あ る こ と を確認 し て く だ さ い。 た と えば、 365 件の レ コ ー ド が入っ てい る フ ァ イ ルか ら 100 番目の レ コ ー ド を取得 し たい場合、 パーセ ン テージ に 100、 精度に 365 を使用 し て GetByPercentage を実行する こ と がで き ます。 結果 Get By Percentage オペレーシ ョ ンが正常に終了 し た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て、 指 定 し た キー パ ス を基準 と す る 位置 ま たは フ ァ イ ル内の物理位置にあ る レ コ ー ド がデー タ バ ッ フ ァ ーに返 さ れ ま す。 さ ら に ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら は、デー タ バ ッ フ ァ ー長パ ラ メ ー タ ーに レ コ ー ド 長がバ イ ト 単位で返 さ れます。 キー パス に よ っ て レ コ ー ド を シー ク し た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら キー バ ッ フ ァ ー パ ラ メ ー タ ーに指定 し た キー パ ス のキー値が返 さ れます。 物理レ コ ー ド 順に よ っ て レ コ ー ド を シー ク し た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら キー バ ッ フ ァ ー パ ラ メ ー タ ーには何の情報 も 返 さ れません。 メ モ Get By Percentage オペレーシ ョ ン でキー パ ス を基準 と し て レ コ ー ド を シー ク し た場合、 そのキーに重 複値が含まれてい る と き は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では常に重複値を含む先頭の レ コ ー ド が 返 さ れます。 こ の よ う な実装の細部に よ っ て、 オペレーシ ョ ンの精度が影響を受け る 場合があ り ます。 51 Btrieve API オペ レーシ ョ ン Get By Percentage オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 6 キー番号パ ラ メ ー タ ーが不正です。 7 キー番号が変更 さ れま し た。 8 現在のポジシ ョ ンが不正です。 9 オペレーシ ョ ンが EOF (end-of-file) を検出 し ま し た。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 41 実行 し よ う と し た操作は ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では許可 さ れてい ません。 43 指定 さ れた レ コ ー ド ア ド レ ス が不正です。 82 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス がポジシ ョ ニ ン グ を失い ま し た。 ポジ シ ョ ニ ング 指定 し た キー パス を基準 と し て レ コ ー ド を シー ク する と き 、 Get By Percentage オペレーシ ョ ンが正常に終了 し た 場合は、 指定 し た キー番号 と 取得 し た レ コ ー ド のそれぞれに基づいて新 し い論理カ レ ン シーお よ び物理カ レ ン シーが確立 さ れます。 フ ァ イ ル内の レ コ ー ド の物理位置を基準 と し て レ コ ー ド を シー ク す る と き 、 Get By Percentage オペレーシ ョ ンが 正常に終了 し た場合は、 取得 し た レ コ ー ド に基づいて新 し い物理カ レ ン シーが確立 さ れます。 Get By Percentage オペレーシ ョ ンが正常に実行 さ れなか っ た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではカ レ ン シーは変更 さ れません。 52 Get Direct/Chunk (23) Get Direct/Chunk (23) Get Direct/Chunk オペレーシ ョ ン (B_GET_DIRECT) では、 チ ャ ン ク と 呼ばれ る レ コ ー ド の部分を 1 つま たは複 数取得で き ます。 こ のオペレーシ ョ ンは、 65,535 バ イ ト よ り 長い レ コ ー ド を含むフ ァ イ ルで特に役に立ち ます。 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーの長 さ には制限があ る ため、 こ の よ う な レ コ ー ド は長すぎて、 ほかの Get お よ び Step オペレーシ ョ ンでは取得で き ません。 アプ リ ケーシ ョ ンでは、 物理ア ド レ ス を指定す る こ と で、 チ ャ ン ク が 取得 さ れ る レ コ ー ド を指定 し ます。 通常、 レ コ ー ド 内でのチ ャ ン ク の位置は、 そのオ フ セ ッ ト と 長 さ で指定 さ れ ます。 パラ メ ー タ ー 送り値 戻り値 オペレーション コード ポジション ブロック データ バッ データ バッ ファー ファー長 ○ ○ ○ ○ ○ ○ ○ キー バッ ファー キー番号 ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 4 バ イ ト か ら 成 る レ コ ー ド の物理位置を用意す る 必要があ り ます。 こ の値は、 Get Position オペレーシ ョ ン (22) を使っ て取得で き ます。 Get Direct/Chunk オペレーシ ョ ンか ら 返 さ れ る すべての値を格納する のに十分な大き さ のデー タ バ ッ フ ァ ー を用意す る 必要があ り ます。 ま た、 Get Direct/Chunk オペレーシ ョ ン が間接チ ャ ン ク オペレーシ ョ ン を実行 す る と き 、 デー タ バ ッ フ ァ ーにはチ ャ ン ク デ ィ ス ク リ プ タ ー全体 (すべてのチ ャ ン ク 定義) を格納で き なけ ればな り ません。 デー タ バ ッ フ ァ ーの最大サ イ ズは、 表 18 に示す よ う に制限 さ れてい ます。 表 18 環境によ るデー タ バ ッ フ ァ ー サイ ズの制限 環境 最大データ バッファー サイズ サーバー ま た は ワ ー ク ス テーシ ョ ン エ ン ジ ン への ロ ーカル呼び出 し 64,512 バ イ ト DOS リ ク エ ス タ ー (BREQNT) を経由 し た リ モー ト 呼び出 し 55,512 バ イ ト Windows ま た は Linux リ ク エ ス タ ー を 経由 し た リ モー ト 呼び出 し 65,153 バ イ ト 手順 1 オペレーシ ョ ン コ ー ド に 23 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 53 Btrieve API オペ レーシ ョ ン 3 「詳細」 の説明に従っ て、 デー タ バ ッ フ ァ ーを指定 し ます。 4 デー タ バ ッ フ ァ ー長に、 入力構造体の長 さ (表 19 ま たは表 20) と ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に 取得す る よ う に要求 し たバ イ ト 数の、 ど ち ら か大き い方を指定 し ます。 Get Direct/Chunk オペレーシ ョ ンの一部のオプシ ョ ン では、 デー タ バ ッ フ ァ ー以外の場所にチ ャ ン ク を取得 し ます。 デー タ バ ッ フ ァ ー長を計算す る 方法については、 「詳細」 を参照 し て く だ さ い。 5 キー番号パ ラ メ ー タ ーに -2 (0xFE) を設定 し ます。 詳細 デー タ バ ッ フ ァ ーでは、 次のチ ャ ン ク デ ィ ス ク リ プ タ ーのいずれか を使用 し ます。 ラ ン ダ ム チ ャ ン ク デ ィ ス ク リ プ タ ー - オペレーシ ョ ンに付 き 1 つのチ ャ ン ク を取得する ため、ま たはチ ャ ン ク が レ コ ー ド 全体にわた っ て ラ ン ダ ムに配置 さ れてい る と き に、 1 回のオペレーシ ョ ンで複数のチ ャ ン ク を 取得す る ために使用 し ます。 矩形チ ャ ン ク デ ィ ス ク リ プ タ ー - 各チ ャ ン ク の長 さ が同 じ で、 チ ャ ン ク が レ コ ー ド 内に等間隔に配置 さ れて い る と き に、 1 回のオペレーシ ョ ンで複数のチ ャ ン ク を取得す る ために使用 し ます。 ラ ン ダム チ ャ ン ク 次の例は、 ラ ン ダ ムに配置 さ れてい る 3 つのチ ャ ン ク ([*] があ る 部分) を含むレ コ ー ド を示 し てい ます。 チ ャ ン ク 0(バ イ ト 0x12 か ら 0x16)、チ ャ ン ク 1(バ イ ト 0x2A か ら 0x31)お よ びチ ャ ン ク 2(バ イ ト 0x41 か ら 0x4E)です。 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 [*] [*] [*] [*] [*] 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 [*] [*] [*] [*] [*] [*] [*] [*] 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] 4F ラ ン ダ ム チ ャ ン ク を取 り 出すには、 次の表に基づいてデー タ バ ッ フ ァ ー内に構造体を作成する 必要があ り ます。 表 19 ラ ン ダム チ ャ ン ク オペ レーシ ョ ンのデー タ バ ッ フ ァ ー 要素 長さ (バイト単位) 説明 レ コー ド ア ド レ ス 4 レ コ ー ド の 4 バ イ ト 物理ア ド レ ス。 こ の値は、 Get Position オペレーシ ョ ン (22) を使っ て取得で き ます。 ラ ン ダム チ ャ ン ク デ ィ ス ク リ プ タ ー サブフ ァ ン ク シ ョ ン 4 チ ャ ン ク デ ィ ス ク リ プ タ ーの種類。 次のいずれかを指定 し ます。 0x80000000 (直接 ラ ン ダ ム チ ャ ン ク デ ィ ス ク リ プ タ ー) - チ ャ ン ク を直接 デー タ バ ッ フ ァ ーに取得 し ま す。 1 つ目のチ ャ ン ク が取得 さ れ る と デー タ バ ッ フ ァ ーのオ フ セ ッ ト 0 に格納 さ れ、 2 つ目のチ ャ ン ク が 1 つ目のチ ャ ン ク の直後に続 き 、 と 以下同様に続 き ます。 0x80000001 (間接 ラ ン ダ ム チ ャ ン ク デ ィ ス ク リ プ タ ー) - チ ャ ン ク をチ ャ ン ク 定義に よ っ て指定 さ れ る ア ド レ ス内に取得 し ます。 チャ ン ク数 54 4 取得す る チ ャ ン ク 数。 こ の値は少な く と も 1 以上であ る こ と が必要です。 明確 な最大値はあ り ませんが、チ ャ ン ク デ ィ ス ク リ プ タ ーはデー タ バ ッ フ ァ ーに収 ま ら なければな り ません。 デー タ バ ッ フ ァ ーのサ イ ズは、 表 18 の説明の と お り 制限 さ れてい ます。 Get Direct/Chunk (23) 表 19 ラ ン ダム チ ャ ン ク オペ レーシ ョ ンのデー タ バ ッ フ ァ ー 要素 長さ (バイト単位) 説明 チ ャ ン ク 定義 (各チ ャ ン ク につい て繰 り 返す) 12 (32 ビ ッ ト アプ リ ケーシ ョ ン用) 各チ ャ ン ク 定義は、 以下に示す よ う に、 4 バ イ ト のチ ャ ン ク オ フ セ ッ ト 、 それ に続 く 4 バ イ ト のチ ャ ン ク 長、 さ ら に 32 ビ ッ ト アプ リ ケーシ ョ ンの場合は 4 バ イ ト のユーザー デー タ 、 ま たは 64 ビ ッ ト アプ リ ケーシ ョ ンの場合は 8 バ イ ト のユーザー デー タ か ら 構成 さ れます。 16 (64 ビ ッ ト アプ リ ケーシ ョ ン用) チ ャ ン ク オ フ セ ッ ト - チ ャ ン ク の開始地点を、 レ コ ー ド の先頭か ら のオ フ セ ッ ト (バ イ ト 単位) で示 し ます。 最小値は 0、 最大値はレ コ ー ド の末尾の バ イ ト のオ フ セ ッ ト です。 チ ャ ン ク 長 - チ ャ ン ク 内のバ イ ト 数を示 し ます。最小値は 0、最大値は 65,535 です。 ただ し 、 チ ャ ン ク デ ィ ス ク リ プ タ ーはデー タ バ ッ フ ァ ーに収ま ら な ければな り ません。 デー タ バ ッ フ ァ ーのサ イ ズは、 表 18 の説明の と お り 制 限 さ れてい ます。 ユーザー デー タ - (間接デ ィ ス ク リ プ タ ーでのみ使用 し ます。) 32 ビ ッ ト ア プ リ ケーシ ョ ンの場合、実際のチ ャ ン ク デー タ への 32 ビ ッ ト ポ イ ン タ ーで す。64 ビ ッ ト アプ リ ケーシ ョ ンの場合、実際のチ ャ ン ク デー タ への 64 ビ ッ ト ポ イ ン タ ーです。 使用すべ き 形式は、 オペレーテ ィ ン グ シ ス テ ムに よ っ て異な り ます。1 直接チ ャ ン ク デ ィ ス ク リ プ タ ーのサブ フ ァ ン ク シ ョ ンの場 合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では こ の要素は無視 さ れます。 1 DOS アプ リ ケーシ ョ ンの場合、 ユーザー デー タ は 16 ビ ッ ト オ フ セ ッ ト お よ び 16 ビ ッ ト セグ メ ン ト と し て初期化 し て く だ さ い。 ユーザー デー タ では、 そのセグ メ ン ト の最後を越え て メ モ リ を ア ド レ ス指定す る こ と はで き ません。 チ ャ ン ク 長を ユーザー デー タ のオ フ セ ッ ト 部分に加算 し た と き 、 その結果は、 ユーザー デー タ に よ っ て定義 さ れ る セ グ メ ン ト の範囲内 でな ければな り ま せん。 デフ ォ ル ト で、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では こ の規則に対す る 違反はチ ェ ッ ク さ れ ず、 こ の よ う な違反は適切に処理 さ れません。 次の表は、直接 ラ ン ダ ム チ ャ ン ク を取 り 出す場合の 32 ビ ッ ト アプ リ ケーシ ョ ン用デー タ バ ッ フ ァ ーの例を示 し てい ます。 要素 サンプル値 長さ (バイト単位) レ コー ド ア ド レ ス 0x00000628 4 サブ フ ァ ン ク シ ョ ン 0x80000000 4 チャ ン ク数 3 4 チャ ン ク オフセ ッ ト 18 4 チャ ン ク長 5 4 ユーザー デー タ 適用外 4 チャ ン ク オフセ ッ ト 42 4 チャ ン ク長 8 4 ユーザー デー タ 適用外 4 チャ ン ク オフセ ッ ト 65 4 チャ ン ク長 14 4 ユーザー デー タ 適用外 4 チャンク 0 チャンク 1 チャンク 2 55 Btrieve API オペ レーシ ョ ン 矩形チ ャ ン ク デ ィ ス ク リ プ タ ー構造体 同 じ 長 さ のチ ャ ン ク が レ コ ー ド 全体にわた っ て等間隔に配置 さ れてい る 場合は、矩形チ ャ ン ク デ ィ ス ク リ プ タ ー を使っ て、 取得す る すべてのチ ャ ン ク を記述する こ と がで き ます。 た と えば、 次の よ う な図を考えてみま し ょ う 。 こ の図は、 レ コ ー ド 内のオ フ セ ッ ト 0x00 か ら 0x4F ま でを表 し てい ます。 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 [*] [*] [*] [*] 1D 1E 1F 20 21 22 23 24 25 26 27 28 [*] [*] [*] [*] 2D 2E 2F 30 31 32 33 34 35 36 37 38 [*] [*] [*] [*] 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F こ の レ コ ー ド には 3 つのチ ャ ン ク ([*] があ る 部分) が含まれてい ます。 チ ャ ン ク 0 (バ イ ト 0x19 か ら 0x1C) 、 チ ャ ン ク 1 (バ イ ト 0x29 か ら 0x2C)、 お よ びチ ャ ン ク 2 (バ イ ト 0x39 か ら 0x3C) です。 各チ ャ ン ク はどれ も 4 バ イ ト の長 さ で、 チ ャ ン ク 同士は、 各チ ャ ン ク の先頭か ら 計算す る と 、 いずれ も 合計 16 (0x10) バ イ ト ずつ離れ てい ます。 1 つの矩形デ ィ ス ク リ プ タ ーを使っ て、 3 つのチ ャ ン ク をすべて取得で き ます。 矩形チ ャ ン ク を取 り 出すには、 次 の表に基づいてデー タ バ ッ フ ァ ー内に構造体を作成す る 必要があ り ます。 表 20 矩形チ ャ ン クのデー タ バ ッ フ ァ ー 要素 長さ (バイト単位) 説明 レ コー ド ア ド レ ス 4 レ コ ー ド の 4 バ イ ト 物理ア ド レ ス。 こ の値は、 Get Position オペレーシ ョ ン (22) を使っ て取得で き ます。 矩形チ ャ ン ク デ ィ ス ク リ プ タ ー サブフ ァ ン ク シ ョ ン 4 チ ャ ン ク デ ィ ス ク リ プ タ ーの種類。 次のいずれかを指定 し ます。 0x80000002 (直接矩形チ ャ ン ク デ ィ ス ク リ プ タ ー) - チ ャ ン ク を直接デー タ バ ッ フ ァ ーに取得 し ま す。 1 つ目のチ ャ ン ク が取得 さ れ る と デー タ バ ッ フ ァ ーのオ フ セ ッ ト 0 に格納 さ れ、 2 つ目のチ ャ ン ク が 1 つ目のチ ャ ン ク の 直後に続 き 、 と 以下同様に続 き ます。 0x80000003 (間接矩形チ ャ ン ク デ ィ ス ク リ プ タ ー) - チ ャ ン ク をユーザー デー タ 要素お よ びア プ リ ケーシ ョ ン の行間隔要素に よ っ て指定 さ れ る ア ド レ ス内に取得 し ます。 行数 4 矩形チ ャ ン ク デ ィ ス ク リ プ タ ーの操作対象 と す る チ ャ ン ク 数。 最小値は 1 で す。 明確な最大値はあ り ません。 位置 (オ フ セ ッ ト ) 4 取得す る 最初のバ イ ト の、 レ コ ー ド の先頭か ら のオ フ セ ッ ト 。 最小値は 0、 最 大値は レ コ ー ド の末尾のバ イ ト のオ フ セ ッ ト です。 レ コ ー ド が 1 つの矩形 と し て表 さ れ る 場合、 こ の要素は、 取得 さ れ る 先頭行にあ る 先頭バ イ ト のオ フ セ ッ ト を指 し ます。 行のバ イ ト 数 4 各チ ャ ン ク で取得す る バ イ ト 数。 最小値は 0、 最大値は 65,535 です。 ただ し 、 チ ャ ン ク デ ィ ス ク リ プ タ ーはデー タ バ ッ フ ァ ーに収ま ら なければな り ません。 デー タ バ ッ フ ァ ーのサ イ ズは、 表 18 の説明の と お り 制限 さ れてい ます。 行間隔 4 チ ャ ン ク の先頭か ら 次のチ ャ ン ク の先頭ま でのバ イ ト 数。 56 Get Direct/Chunk (23) 表 20 矩形チ ャ ン クのデー タ バ ッ フ ァ ー 要素 長さ (バイト単位) 説明 ユーザー デー タ 4 (32 ビ ッ ト アプ リ ケーシ ョ ン用) (間接デ ィ ス ク リ プ タ ーでのみ使用 し ます。 ) 32 ビ ッ ト アプ リ ケーシ ョ ンの場 合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が各行か ら バ イ ト を取得 し た後でそ れ ら を格納す る 場所への 32 ビ ッ ト ポ イ ン タ ー。 64 ビ ッ ト アプ リ ケーシ ョ ンの 場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が各行か ら バ イ ト を取得 し た後で それ ら を格納す る 場所への 64 ビ ッ ト ポ イ ン タ ー。 8 (64 ビ ッ ト アプ リ ケーシ ョ ン用) 使用すべ き 形式は、 オペレーテ ィ ン グ シ ス テ ムに よ っ て異な り ます。 1 直接矩 形デ ィ ス ク リ プ タ ーの場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では こ の要 素は無視 さ れ ま す。 ただ し それで も 、 こ の要素を割 り 当て、 0 に初期化 し てお く 必要があ り ます。 アプ リ ケーシ ョ ン の行間隔 4 (間接矩形デ ィ ス ク リ プ タ ーでのみ使用 し ます。) 矩形がアプ リ ケーシ ョ ンの メ モ リ (つま り 、 ユーザー デー タ で指定 し た ア ド レ ス) に格納 さ れ る と き の、 矩 形内のチ ャ ン ク の先頭か ら 次のチ ャ ン ク の先頭ま でのバ イ ト 数。 直接矩形デ ィ ス ク リ プ タ ーの場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では こ の要素は無 視 さ れ ます。 ただ し それで も 、 こ の要素を割 り 当て、 0 に初期化 し てお く 必要 があ り ます。 1 DOS アプ リ ケーシ ョ ンの場合、 ユーザー デー タ は 16 ビ ッ ト オ フ セ ッ ト と それに続 く 16 ビ ッ ト セグ メ ン ト で表 し て く だ さ い。 間接矩形デ ィ ス ク リ プ タ ーを使用す る と き は、取得 さ れたチ ャ ン ク がチ ャ ン ク デ ィ ス ク リ プ タ ーを上書 き し ない よ う に、ユーザー デー タ ポ イ ン タ ーが初期化 さ れてい る こ と を確認 し て く だ さ い。 ト ラ ンザ ク シ ョ ナル イ ン タ ー フ ェ イ ス は、 返 さ れたチ ャ ン ク を ユーザー デー タ 要素が示す場所に コ ピーする と き 、 デ ィ ス ク リ プ タ ーを使用 し ます。 チ ャ ン ク デ ィ ス ク リ プ タ ーを上書 き し て し ま っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら ス テー タ ス コ ー ド 62 が返 さ れます。 矩形が メ モ リ 内にあ る と き 、 各行の間隔が レ コ ー ド と し て格納 さ れてい る と き と 同 じ バ イ ト 数にな る 場合は、 ア プ リ ケーシ ョ ンの行間隔に行間隔 と 同 じ 値を設定 し ます。 し か し 、 矩形がアプ リ ケーシ ョ ンの メ モ リ 内で再配置 さ れ、 行の間隔が何バ イ ト か増減す る 場合は、 アプ リ ケーシ ョ ンの行間隔に よ り 、 その情報を ト ラ ンザ ク シ ョ ナ ル イ ン タ ーフ ェ イ ス に渡す こ と がで き ます。 間接矩形デ ィ ス ク リ プ タ ーを使用す る と き は、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス はユーザー デー タ 要素お よ びアプ リ ケーシ ョ ンの行間隔要素を使っ て、 取得後のデー タ の格納場所を決定 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では 1 行目のデー タ はユーザー デー タ のオ フ セ ッ ト 0 に格納 さ れ ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では 2 行目のデー タ は、ユーザー デー タ + アプ リ ケーシ ョ ンの行間隔で指定 さ れ る ア ド レ ス に格納 さ れます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では 3 行目のデー タ は、 ユーザー デー タ + ( アプ リ ケーシ ョ ン の行間隔 * 2) で指定 さ れ る ア ド レ ス に格納 さ れ、 以下同様です。 次の表は、 直接矩形チ ャ ン ク を取 り 出す場合の 32 ビ ッ ト アプ リ ケーシ ョ ン用デー タ バ ッ フ ァ ーの例を示 し てい ます。 要素名 サンプル値 長さ (バイト単位) レ コー ド ア ド レ ス 0x00000628 4 サブ フ ァ ン ク シ ョ ン 0x80000002 4 行数 3 4 位置 (オ フ セ ッ ト ) 25 4 行のバ イ ト 数 4 4 行間隔 16 4 ユーザー デー タ 0 4 アプ リ ケーシ ョ ンの行間隔 0 4 57 Btrieve API オペ レーシ ョ ン ネ ク ス ト イ ン レ コ ー ド サブ フ ァ ン ク シ ョ ン バイ ア ス こ れ ま でに述べたサブ フ ァ ン ク シ ョ ンの値にバ イ ア ス 0x40000000 を加算す る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ー フ ェ イ ス ではレ コ ー ド 内の物理カ レ ン シー (つま り 、レ コ ー ド 内の現在の物理位置) に基づいてサブ フ ァ ン ク シ ョ ンのオ フ セ ッ ト 要素の値が算出 さ れます。 ネ ク ス ト イ ン レ コ ー ド サブ フ ァ ン ク シ ョ ン を使用する 場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではチ ャ ン ク デ ィ ス ク リ プ タ ーのオ フ セ ッ ト 要素は無視 さ れます。 結果 Get Direct/Chunk オペレーシ ョ ン が正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では直接チ ャ ン ク デ ィ ス ク リ プ タ ーを使用 し てい る と き は、デー タ バ ッ フ ァ ーにチ ャ ン ク が順に返 さ れます。間接 ラ ン ダ ム チ ャ ン ク デ ィ ス ク リ プ タ ーを使用 し てい る と き 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では各チ ャ ン ク のユーザー デー タ 要素で指定 し た場所にデー タ が返 さ れます。 ま た、 間接矩形デ ィ ス ク リ プ タ ーを使用 し てい る と き 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではユーザー デー タ 要素お よ びアプ リ ケーシ ョ ン の行間隔要素か ら 計算 さ れ る 場所にデー タ が返 さ れます。 さ ら に ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 、デー タ バ ッ フ ァ ー長パ ラ メ ー タ ーには、取得 さ れたチ ャ ン ク の長 さ の総計が格納 さ れます ( こ の戻 り 値は、 チ ャ ン ク が取得 さ れて直接デー タ バ ッ フ ァ ーに格納 さ れたか、 間 接デ ィ ス ク リ プ タ ーに よ っ てチ ャ ン ク が取得 さ れ別の場所に格納 さ れたか ど う かに関係な く 、 取得 さ れた全バ イ ト 数を反映 し てい ます) 。 オペレーシ ョ ンが部分的に し か正常に実行 さ れなか っ た場合、 アプ リ ケーシ ョ ン では デー タ バ ッ フ ァ ー長パ ラ メ ー タ ーに返 さ れた値を使っ て、 ど のチ ャ ン ク が取得 さ れなか っ たか、 ま た最後のチ ャ ン ク の何バ イ ト ま でが取得 さ れたか を調べ る こ と がで き ます。 いずれかのチ ャ ン ク で、 開始位置が レ コ ー ド の末尾を超え て し ま う 場合 (結果 と し て、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら ス テー タ ス コ ー ド 103 が返 さ れます)、 ま たはチ ャ ン ク のオ フ セ ッ ト と 長 さ の合計が レ コ ー ド 長を超え て し ま う 場合には、 Get Direct/Chunk オペレーシ ョ ンの一部だけが正常に実行 さ れます。 後者の場合は ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら ス テー タ ス コ ー ド 0 が返 さ れますが、こ のオペレーシ ョ ンに後続のチ ャ ン ク があ る 場合、 その処理は中止 さ れます。 メ モ すべてのチ ャ ン ク が適切に取得 さ れたか ど う かを知 ら せ る も のは、 デー タ バ ッ フ ァ ー長パ ラ メ ー タ ー だけです。 こ のため、 Get Direct/Chunk オペレーシ ョ ン の実行後は、 必ずデー タ バ ッ フ ァ ー長パ ラ メ ー タ ー に返 さ れた値をチ ェ ッ ク し て く だ さ い。 次の ス テー タ ス コ ー ド は、 Get Direct/Chunk オペレーシ ョ ンの一部だけが実行 さ れた こ と を示 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら こ れ ら の ス テー タ ス コ ー ド のいずれかが返 さ れた場合は、アプ リ ケーシ ョ ン で デー タ バ ッ フ ァ ー長パ ラ メ ー タ ーの戻 り 値を調べて、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 実際に返 さ れた デー タ 量を確認す る 必要があ り ます。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 54 レ コ ー ド の可変長部分が破損 し てい ます。 103 チ ャ ン ク オ フ セ ッ ト が大 き すぎ ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド が返 さ れ る 場合、デー タ は ま っ た く 取得 さ れま せん。 58 43 指定 さ れた レ コ ー ド ア ド レ ス が不正です。 58 圧縮バ ッ フ ァ ー長が短すぎ ます。 62 デ ィ ス ク リ プ タ ーが不正です。 97 デー タ バ ッ フ ァ ーが小 さ すぎ ます。 106 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は、 Get Next Chunk オペレーシ ョ ン を実行で き ません。 Get Direct/Chunk (23) ポジ シ ョ ニ ング Get Direct/Chunk オペレーシ ョ ンは、 論理カ レ ン シーに ま っ た く 影響 し ません。 物理カ レ ン シーについては、 チ ャ ン ク が取 り 出 さ れた レ コ ー ド が現在の物理レ コ ー ド にな り ます。 59 Btrieve API オペ レーシ ョ ン Get Direct/Record (23) Get Direct/Record オペレーシ ョ ン (B_GET_DIRECT) では、 定義 さ れてい る キー パ ス ではな く 、 フ ァ イ ル内の物 理位置を使っ て レ コ ー ド を取得 し ます。 以下の よ う な操作を実行す る 場合は、 Get Direct/Record オペレーシ ョ ン を使用 し て く だ さ い。 キー値の代わ り に物理位置を使っ て、 よ り 高速に レ コ ー ド を取得す る 。 Get Position オペレーシ ョ ン (22) を使っ て レ コ ー ド の 4 バ イ ト 物理位置を取得 し 、 その位置を保存す る 。 そ れか ら 、 カ レ ン シーに影響を与え る ほかのオペレーシ ョ ン を実行 し た後で Get Direct/Record オペレーシ ョ ン を使っ て、 その位置に直接戻 る 。 一連の重複レ コ ー ド の中か ら 1 つの レ コ ー ド を取得する と き 、 その一連の レ コ ー ド を先頭か ら すべて読み取 り し 直す こ と な く 、 4 バ イ ト の物理位置を使っ て取得す る 。 現在のキー パ ス を変更す る 。 Get Position オペレーシ ョ ンに続けて、 別のキー番号を使っ た Get Direct/Record オペレーシ ョ ン を実行す る と 、 別の イ ンデ ッ ク ス パ ス に現在の レ コ ー ド のポジシ ョ ニ ン グが確立 し ます。 こ の後で Get Next オペレーシ ョ ン を実行する と 、新 し いキー パス に基づいて フ ァ イ ル内の次の レ コ ー ド が返 さ れます。 パラ メ ー タ ー 送り値 戻り値 オペレーション コード ポジション ブロック データ バッ データ バッ ファー ファー長 ○ ○ ○ ○ ○ ○ ○ キー バッ ファー キー番号 ○ ○ メ モ デー タ オン リ ー フ ァ イ ルで Get Direct/Record オペレーシ ョ ン を実行す る 場合は、キー番号パ ラ メ ー タ ー は必要あ り ません。 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 4 バ イ ト か ら 成 る レ コ ー ド の物理位置を用意する 必要があ り ます。 こ の値は、 Get Position オペレーシ ョ ン (22) を使っ て取得で き ます。 こ のオペレーシ ョ ン を実行する と 、 現在の レ コ ー ド の物理ア ド レ ス が返 さ れま す。 手順 1 オペレーシ ョ ン コ ー ド に 23 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ーの先頭の 4 バ イ ト に、 目的の レ コ ー ド の位置を表す 4 バ イ ト 値を格納 し ます。 4 デー タ バ ッ フ ァ ー長に取得す る レ コ ー ド の長 さ 以上の値を設定 し ます。 60 Get Direct/Record (23) 5 キー番号には、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で論理カ レ ン シーを確立す る パ ス のキー番号を設定 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で論理カ レ ン シーの確立を必要 と し ない場合は、 -1 を指定 し ま す。 シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ ) を使用する には、 125 を指定 し ます。 結果 Get Direct/Record オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では要求 し た レ コ ー ド がデー タ バ ッ フ ァ ーに、 レ コ ー ド 長がデー タ バ ッ フ ァ ー長に、 指定 し た キー パ ス のキー値がキー バ ッ フ ァ ーにそれぞれ返 さ れます。 Get Direct/Record オペレーシ ョ ンが正常に実行 さ れず、 要求 し た レ コ ー ド を ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が取得で き なか っ た場合は、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 (論理カ レ ン シーは ま だ確立 さ れてい ます) 43 指定 さ れた レ コ ー ド ア ド レ ス が不正です。 (論理カ レ ン シーは確立 さ れてい ません) 44 指定 さ れた キー パ ス が不正です。 (論理カ レ ン シーは確立 さ れてい ません) 82 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス がポジ シ ョ ニ ン グ を失い ま し た。 (論理カ レ ン シーは確立 さ れてい ませ ん) ポジ シ ョ ニ ング Get Direct/Record オペレーシ ョ ン を実行す る と 、既存の論理カ レ ン シー情報が消去 さ れ、指定 し た キー番号に従っ て新 し い論理カ レ ン シーが確立 さ れます。 物理カ レ ン シー情報には ま っ た く 影響 し ません。 61 Btrieve API オペ レーシ ョ ン Get Directory (18) Get Directory オペレーシ ョ ン (B_GET_DIR) では、 指定 さ れた論理デ ィ ス ク ド ラ イ ブの現在のデ ィ レ ク ト リ を返 し ます。 パラ メ ー タ ー オペレーション コード 送り値 ポジション ブロック データ バッ データ バッ ファー ファー長 キー バッ ファー キー番号 ○ 戻り値 ○ ○ 前提条件 Get Directory オペレーシ ョ ンはいつで も 発行す る こ と がで き ます。 キー バ ッ フ ァ ーには少な く と も 65 文字の長 さ が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 18 を設定 し ます。 2 キー番号パ ラ メ ー タ ーに論理デ ィ ス ク ド ラ イ ブ番号を格納 し ます。 ド ラ イ ブは、 A の場合は 1、 B の場合は 2、 と い う よ う に指定 し ます。 デフ ォ ル ト の ド ラ イ ブ を使用する には 0 を指定 し ます。 結果 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 オペレーシ ョ ンが正常に終了 し た場合、 バ イ ナ リ 0 で終端す る 現在 のデ ィ レ ク ト リ がキー バ ッ フ ァ ーに返 さ れます。 ポジ シ ョ ニ ング Get Directory オペレーシ ョ ンは、 フ ァ イ ルのカ レ ン シー情報にはま っ た く 影響 し ません。 62 Get Equal (5) Get Equal (5) Get Equal オペレーシ ョ ン (B_GET_EQUAL) では、 キー バ ッ フ ァ ーに指定 さ れた キー値 と 等 し いキー値を持つ レ コ ー ド を取得 し ます。 キーの重複が可能な場合は、 同 じ キー値を持つグループの中で先頭の レ コ ー ド (作成順) が取得 さ れます。 「Get Key (+50)」 バ イ ア ス を使 う と 、 フ ァ イ ル内に値が存在す る か ど う か を検出す る こ と も で き ます。 一般に、 Get Key オペレーシ ョ ンの方が高速に処理 さ れます。 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ 戻り値 データ バッ データ バッ ファー ファー長 ○ キー バッ ファー キー番号 ○ ○ ○ ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 フ ァ イ ルがデー タ オン リ ー フ ァ イ ルであ っ てはいけ ません。 手順 1 オペレーシ ョ ン コ ー ド に 5 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ー長に取得す る レ コ ー ド の長 さ 以上の値を設定 し ます。 4 キー バ ッ フ ァ ーに目的のキー値を指定 し ます。 キーが複数のセグ メ ン ト か ら 成る 場合は、 必ずすべてのセグ メ ン ト を記述 し 、 それ ら すべてに値を設定す る よ う キー バ ッ フ ァ ーを定義 し て く だ さ い。 すべてのセグ メ ン ト について検索条件を設定 し ない場合は、代わ り に Get Greater Than Or Equal オペレーシ ョ ン を使用 し て く だ さ い。 5 キー番号に正 し いキー パス を設定 し ます。 シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ ) を使用す る には、 125 を指定 し ます。 結果 Get Equal オペレーシ ョ ンが正常に終了 し た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では要求 し た レ コ ー ド がデー タ バ ッ フ ァ ーに、 その レ コ ー ド の長 さ がデー タ バ ッ フ ァ ー長に返 さ れます。 Get Equal オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 4 アプ リ ケーシ ョ ンがキー値を見つけ ら れません。 6 キー番号パ ラ メ ー タ ーが不正です。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 63 Btrieve API オペ レーシ ョ ン こ のオペレーシ ョ ンは、キーの ヌ ル イ ン ジ ケー タ ー セグ メ ン ト にゼ ロ 以外の値が含まれてい る 場合には ス テー タ ス コ ー ド 4 を返 し ます。 Get Equal を使っ て ヌ ルの レ コ ー ド は検索で き ません。 こ れは、 ヌ ルの定義はあい ま い な も のであ り 、 ど の値 と も 等 し く な ら ないか ら です。 ヌ ル値の検索が必要な場合は、 Get First オペレーシ ョ ンに 続けて Get Next オペレーシ ョ ン を使用 し ます。 ポジ シ ョ ニ ング Get Equal オペレーシ ョ ン を実行す る と 、 完全な論理カ レ ン シーお よ び物理カ レ ン シーが確立 し 、 取得 し た レ コ ー ド が現在の レ コ ー ド にな り ます。 64 Get First (12) Get First (12) Get First オペレーシ ョ ン (B_GET_FIRST) では、 指定 さ れた キーに基づいて先頭の論理レ コ ー ド を取得 し ます。 「Get Key (+50) 」 バ イ ア ス を使 う と 、 フ ァ イ ル内に値が存在す る か ど う か を検出す る こ と も で き ます。 一般に、 Get Key オペレーシ ョ ンの方が高速に処理 さ れます。 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ 戻り値 データ バッ データ バッ ファー ファー長 ○ キー バッ ファー ○ ○ ○ キー番号 ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 フ ァ イ ルがデー タ オン リ ー フ ァ イ ルであ っ てはいけ ません。 手順 1 オペレーシ ョ ン コ ー ド に 12 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ー長に取得す る レ コ ー ド の長 さ 以上の値を設定 し ます。 4 キー番号にキー パ ス を設定 し ます。 シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ ) を使用する には、 125 を指 定 し ます。 結果 Get First オペレーシ ョ ンが正常に終了 し た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では要求 し た レ コ ー ド がデー タ バ ッ フ ァ ーに返 さ れ、対応す る キー値がキー バ ッ フ ァ ーに格納 さ れ、 さ ら にその レ コ ー ド の長 さ がデー タ バ ッ フ ァ ー長に返 さ れます。 Get First オペレ ーシ ョ ン が正常に実行 さ れなか っ た場合は、 ト ラ ン ザ ク シ ョ ナル イ ン タ ー フ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 6 キー番号パ ラ メ ー タ ーが不正です。 9 オペレーシ ョ ンが EOF (end-of-file) を検出 し ま し た。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 65 Btrieve API オペ レーシ ョ ン ポジ シ ョ ニ ング Get First オペレーシ ョ ン を実行す る と 、 完全な論理カ レ ン シーお よ び物理カ レ ン シーが確立 し 、 取得 し た レ コ ー ド が現在の レ コ ー ド にな り ます。 論理位置の直前は、 フ ァ イ ルの先頭 よ り も 前を指す こ と にな り ます。 66 Get Greater (8) Get Greater (8) Get Greater オペレーシ ョ ン (B_GET_GT) では、 キー番号で指定 さ れた フ ィ ール ド が、 キー バ ッ フ ァ ーの値 よ り も 次に大 き な値を含むレ コ ー ド を取得 し ます。 キーの重複が可能な場合は、 同 じ キー値を持つグループの中で先 頭の レ コ ー ド (作成順) が取得 さ れます。 「Get Key (+50)」 バ イ ア ス を使 う と 、 フ ァ イ ル内に値が存在す る か ど う か を検出す る こ と も で き ます。 一般に、 Get Key オペレーシ ョ ンの方が高速に処理 さ れます。 メ モ 降順キーで Get Greater オペ レーシ ョ ン を実行す る 場合、 「次に大 き な値」 と い う のは、 実際にはキー バ ッ フ ァ ーで指定 さ れた値 よ り も 小 さ な値を指す こ と にな り ます。 パラ メ ー タ ー 送り値 戻り値 オペレーション コード ポジション ブロック ○ ○ ○ データ バッ データ バッ ファー ファー長 ○ キー バッ ファー キー番号 ○ ○ ○ ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 フ ァ イ ルがデー タ オン リ ー フ ァ イ ルであ っ てはいけ ません。 手順 1 オペレーシ ョ ン コ ー ド に 8 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ー長に取得す る レ コ ー ド の長 さ 以上の値を設定 し ます。 4 キー バ ッ フ ァ ー パ ラ メ ー タ ーに目的のキー値を指定 し ます。 5 キー番号パ ラ メ ー タ ーに正 し いキー パス を設定 し ます。 シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ ) を使 用す る には、 125 を指定 し ます。 結果 Get Greater オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では要求 し た レ コ ー ド がデー タ バ ッ フ ァ ーに、 キー値がキー バ ッ フ ァ ーに、 さ ら にその レ コ ー ド の長 さ がデー タ バ ッ フ ァ ー長に格納 さ れます。 67 Btrieve API オペ レーシ ョ ン Get Greater オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 6 キー番号パ ラ メ ー タ ーが不正です。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 ポジ シ ョ ニ ング Get Greater オペレーシ ョ ン を実行す る と 、完全な論理カ レ ン シーお よ び物理カ レ ン シーが確立 し 、取得 し た レ コ ー ド が現在の レ コ ー ド にな り ます。 68 Get Greater Than or Equal (9) Get Greater Than or Equal (9) Get Greater Than or Equal オペレーシ ョ ン (B_GET_GE) では、 キー番号で指定 さ れた キーが、 キー バ ッ フ ァ ーに 指定 さ れた値 と 等 し いかそれ よ り も 大 き な値を持つレ コ ー ド を取得 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では まず、 等 し い と い う 条件を満たすレ コ ー ド が検索 さ れます。 キーの重複が可能な場合は、 同 じ キー値を持 つグループの中で先頭の レ コ ー ド (作成順) が取得 さ れます。 「Get Key (+50)」 バ イ ア ス を使 う と 、 フ ァ イ ル内 に値が存在す る か ど う か を検出す る こ と も で き ます。一般に、Get Key オペレーシ ョ ンの方が高速に処理 さ れます。 メ モ 降順キーで Get Greater Than or Equal オペレーシ ョ ン を実行す る 場合、 「次に大 き な値」 と い う のは、 実 際にはキー バ ッ フ ァ ーで指定 さ れた値 よ り も 小 さ な値を指す こ と にな り ます。 パラ メ ー タ ー 送り値 戻り値 オペレーション コード ポジション ブロック ○ ○ ○ データ バッ データ バッ ファー ファー長 ○ キー バッ ファー キー番号 ○ ○ ○ ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 フ ァ イ ルがデー タ オン リ ー フ ァ イ ルであ っ てはいけ ません。 手順 1 オペレーシ ョ ン コ ー ド に 9 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ー長に取得す る レ コ ー ド の長 さ 以上の値を設定 し ます。 4 キー バ ッ フ ァ ー パ ラ メ ー タ ーにキー値を指定 し ます。 5 キー番号パ ラ メ ー タ ーに正 し いキー パス を設定 し ます。 シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ ) を使 用す る には、 125 を指定 し ます。 結果 Get Greater Than or Equal オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では要求 し た レ コ ー ド がデー タ バ ッ フ ァ ーに、 キー値が キー バ ッ フ ァ ーに、 さ ら にその レ コ ー ド の長 さ がデー タ バ ッ フ ァ ー長に格納 さ れます。 69 Btrieve API オペ レーシ ョ ン Get Greater Than or Equal オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 6 キー番号パ ラ メ ー タ ーが不正です。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 ポジ シ ョ ニ ング Get Greater Than or Equal オペレーシ ョ ン を実行す る と 、 完全な論理カ レ ン シーお よ び物理カ レ ン シーが確立 し 、 取得 し た レ コ ー ド が現在の レ コ ー ド にな り ます。 70 Get Key (+50) Get Key (+50) Get Key バ イ ア ス を使用す る と 、実際にデー タ レ コ ー ド を取得する こ と な く Get オペレーシ ョ ン を実行で き ます。 Get Key を使っ て、 フ ァ イ ル内にあ る 値が存在す る か ど う か を検出で き ます。 一般に、 Get Key オペレーシ ョ ンは 対応す る Get オペレーシ ョ ン よ り も 高速に実行で き ます。Get Key オペレーシ ョ ンは、以下のいずれかの Get オペ レーシ ョ ン と 共に使用 し ます。 「Get Equal (5)」 「Get Next (6)」 「Get Previous (7)」 「Get Greater (8)」 「Get Greater Than or Equal (9)」 「Get Less Than (10)」 「Get Less Than or Equal (11)」 「Get First (12)」 「Get Last (13)」 「Get By Percentage (44)」 パラ メ ー タ ー パ ラ メ ー タ ーは対応す る Get オペ レ ーシ ョ ン と 同様です。 ただ し 、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では デー タ バ ッ フ ァ ー長の設定は無視 さ れ、 デー タ バ ッ フ ァ ーにはレ コ ー ド が返 さ れません。 前提条件 Get Key オペレーシ ョ ンの前提条件は、 対応する Get オペレーシ ョ ンの前提条件 と 同 じ です。 手順 1 対応す る Get オペレーシ ョ ンの場合 と 同 じ よ う にパ ラ メ ー タ ーを設定 し ます。 デー タ バ ッ フ ァ ー長を初期化 す る 必要はあ り ません。 2 オペレーシ ョ ン コ ー ド には、 実行す る Get オペレーシ ョ ンのオペレーシ ョ ン コ ー ド に 50 を加算 し た値を設 定 し ます。 た と えば、 Get Equal オペレーシ ョ ン (5) と 共に Get Key (+50) を実行す る には、 オペレーシ ョ ン コ ー ド に 55 を設定 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、Get Key オペレーシ ョ ン (+50) の後に Delete ま たは Update オペレー シ ョ ン を実行す る こ と はで き ません。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で、 Delete ま たは Update オペレー シ ョ ン を実行す る 前に、 変更 し よ う と し てい る デー タ ページの現在の使用回数 と 、 レ コ ー ド を読み取っ た時点の デー タ ページの使用回数が比較 さ れ ます。 使用回数を取得す る には、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が デー タ ページ を読み取 る 必要があ り ます。 Get Key オペレーシ ョ ンではデー タ ページ を読み取 ら ないので、 Delete ま たは Update オペレーシ ョ ン で比較す る ための使用回数が利用可能にな り ません。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 比較な し にパ ッ シブ並行 制御の矛盾チ ェ ッ ク を実行で き ないため、 Update ま たは Delete オペレーシ ョ ンは正常に実行 さ れません。 Update ま たは Delete オペレーシ ョ ン が正常に実行 さ れない と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら ス テー タ ス コ ー ド 8 が返 さ れます。 結果 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で要求 し た キーが検出 さ れ る と 、 そのキー値がキー バ ッ フ ァ ーに格納 さ れ、 ス テー タ ス コ ー ド 0 が返 さ れます。 そ う でない場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら キー値を 検出で き なか っ た理由を示すス テー タ ス コー ド が返 さ れます。 71 Btrieve API オペ レーシ ョ ン ポジ シ ョ ニ ング Get Key オペレーシ ョ ン を実行す る と 、 対応す る Get オペレーシ ョ ン と 同様の方法で現在のポジ シ ョ ニ ン グが確 立 さ れ ます。 ただ し 、 Get Key オペレーシ ョ ンの対象 と な る キーが重複を許可 し てい る 場合、 ト ラ ンザ ク シ ョ ナ ル イ ン タ ーフ ェ イ ス では取得 さ れた現在のキー値の重複 イ ン ス タ ン ス は無視 さ れます。 Get Key オペレーシ ョ ン の実行後、 論理位置の直前は次に小 さ な キー値を含むレ コ ー ド を指 し ます。 ま た、 論理位置の直後は次に大 き な キー値を含むレ コ ー ド を指 し ます。 た と えば、 Smith が 8 回 と Smythe が 1 回出現する 姓のキーを対象に、 Get Key を Get Equal オペレーシ ョ ン (55) と 共に実行 し た と し ます。 論理位置の直後は次の Smith ではな く 、 Smythe を指す こ と にな り ます。 Get Key オペ レ ーシ ョ ン では ど れか 1 つの レ コ ー ド が識別 さ れ る わけではないため、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では Get Key オペレーシ ョ ンに続けて Update ま たは Delete オペレーシ ョ ン を実行す る こ と はで き ま せん。 72 Get Last (13) Get Last (13) Get Last オペ レ ーシ ョ ン (B_GET_LAST) では、 指定 さ れた キーに基づいて末尾の論理レ コ ー ド を取得 し ま す。 末尾のキー値が重複 し てい る 場合は、 同 じ キー値を持つグループの中で末尾の レ コ ー ド が返 さ れます。 「Get Key (+50)」 バ イ ア ス を使 う と 、 フ ァ イ ル内に値が存在する か ど う か を検出する こ と も で き ます。 一般に、 Get Key オ ペレーシ ョ ンの方が高速に処理 さ れます。 パラ メ ー タ ー 送り値 オペレーショ ン コード ポジション ブロック ○ ○ 戻り値 データ バッ データ バッ ファー ファー長 ○ キー バッ ファー ○ ○ ○ キー番号 ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 フ ァ イ ルがデー タ オン リ ー フ ァ イ ルであ っ てはいけ ません。 手順 1 オペレーシ ョ ン コ ー ド に 13 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ー長に取得す る レ コ ー ド の長 さ 以上の値を設定 し ます。 4 キー番号にキー パ ス を設定 し ます。 シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ ) を使用する には、 125 を指 定 し ます。 結果 Get Last オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では要求 し た レ コ ー ド が デー タ バ ッ フ ァ ーに返 さ れ、対応す る キー値がキー バ ッ フ ァ ーに格納 さ れ、 さ ら にその レ コ ー ド の長 さ がデー タ バ ッ フ ァ ー長に返 さ れます。 Get Last オペ レ ーシ ョ ン が正常に実行 さ れなか っ た場合は、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 6 キー番号パ ラ メ ー タ ーが不正です。 9 オペレーシ ョ ンが EOF (end-of-file) を検出 し ま し た。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 73 Btrieve API オペ レーシ ョ ン ポジ シ ョ ニ ング Get Last オペレーシ ョ ン を実行す る と 、 完全な論理カ レ ン シーお よ び物理カ レ ン シーが確立 し 、 取得 し た レ コ ー ド が現在の レ コ ー ド にな り ます。 論理位置の直後は、 フ ァ イ ルの末尾 よ り も 後を指す こ と にな り ます。 74 Get Less Than (10) Get Less Than (10) Get Less Than オペレーシ ョ ン (B_GET_LT) では、 キー番号で指定 さ れた キーが、 キー バ ッ フ ァ ーに指定 さ れた 値 よ り も 次に小 さ な値を持つレ コ ー ド を取得 し ます。 キーの重複が可能な場合は、 同 じ キー値を持つグループの 中で末尾の レ コ ー ド (作成順) が取得 さ れます。 「Get Key (+50)」 バ イ ア ス を使 う と 、 フ ァ イ ル内に値が存在す る か ど う か を検出す る こ と も で き ます。 一般に、 Get Key オペレーシ ョ ンの方が高速に処理 さ れます。 メ モ 降順キーで Get Less Than オペレーシ ョ ン を実行する 場合、 「次に小 さ な値」 と い う のは、 実際にはキー バ ッ フ ァ ーで指定 さ れた値 よ り も 大 き な値を指す こ と にな り ます。 パラ メ ー タ ー 送り値 戻り値 オペレーション コード ポジション ブロック ○ ○ ○ データ バッ データ バッ ファー ファー長 ○ キー バッ ファー キー番号 ○ ○ ○ ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 フ ァ イ ルがデー タ オン リ ー フ ァ イ ルであ っ てはいけ ません。 手順 1 オペレーシ ョ ン コ ー ド に 10 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ー長に取得す る レ コ ー ド の長 さ 以上の値を設定 し ます。 4 キー バ ッ フ ァ ー パ ラ メ ー タ ーに目的のキー値を指定 し ます。 5 キー番号パ ラ メ ー タ ーにキー パス を設定 し ます。 シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ ) を使用す る には、 125 を指定 し ます。 結果 Get Less Than オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では レ コ ー ド がデー タ バ ッ フ ァ ーに、 その レ コ ー ド のキー値がキー バ ッ フ ァ ーに、 さ ら にその レ コ ー ド の長 さ がデー タ バ ッ フ ァ ー 長に返 さ れます。 75 Btrieve API オペ レーシ ョ ン Get Less Than オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 6 キー番号パ ラ メ ー タ ーが不正です。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 ポジ シ ョ ニ ング Get Less Than オペレーシ ョ ン を実行す る と 、 完全な論理カ レ ン シーお よ び物理カ レ ン シーが確立 し 、 取得 し た レ コ ー ド が現在の レ コ ー ド にな り ます。 76 Get Less Than or Equal (11) Get Less Than or Equal (11) Get Less Than or Equal オペレーシ ョ ン (B_GET_LE) では、 キー番号で指定 さ れた キーが、 キー バ ッ フ ァ ーに指 定 さ れた値 と 等 し いかそれ よ り も 小 さ な値を持つレ コ ー ド を取得 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では まず、 等 し い と い う 条件を満たすレ コ ー ド が検索 さ れます。 キーの重複が可能な場合は、 同 じ キー値を持つ グループの中で末尾の レ コ ー ド (作成順) が取得 さ れます。 「Get Key (+50)」 バ イ ア ス を使 う と 、 フ ァ イ ル内に 値が存在す る か ど う か を検出す る こ と も で き ます。 一般に、 Get Key オペレーシ ョ ンの方が高速に処理 さ れます。 メ モ 降順キーで Get Less Than or Equal オペレーシ ョ ン を実行する 場合、 「次に小 さ な値」 と い う のは、 実際 にはキー バ ッ フ ァ ーで指定 さ れた値 よ り も 大 き な値を指す こ と にな り ます。 パラ メ ー タ ー 送り値 戻り値 オペレーション コード ポジション ブロック ○ ○ ○ データ バッ データ バッ ファー ファー長 ○ キー バッ ファー キー番号 ○ ○ ○ ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 フ ァ イ ルがデー タ オン リ ー フ ァ イ ルであ っ てはいけ ません。 手順 1 オペレーシ ョ ン コ ー ド に 11 を設定 し ます。 オプシ ョ ンで、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ー長に取得す る レ コ ー ド の長 さ 以上の値を設定 し ます。 4 キー バ ッ フ ァ ー パ ラ メ ー タ ーにキー値を指定 し ます。 5 キー番号パ ラ メ ー タ ーにキー パス を設定 し ます。 シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ ) を使用す る には、 125 を指定 し ます。 結果 Get Less Than or Equal オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では レ コ ー ド がデー タ バ ッ フ ァ ーに、その レ コ ー ド のキー値がキー バ ッ フ ァ ーに、さ ら にその レ コ ー ド の長 さ がデー タ バ ッ フ ァ ー長に返 さ れます。 77 Btrieve API オペ レーシ ョ ン Get Less Than or Equal オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 6 キー番号パ ラ メ ー タ ーが不正です。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 ポジ シ ョ ニ ング Get Less Than or Equal オペレーシ ョ ン を実行する と 、 完全な論理カ レ ン シーお よ び物理カ レ ン シーが確立 し 、 取 得 し た レ コ ー ド が現在の レ コ ー ド にな り ます。 78 Get Next (6) Get Next (6) Get Next オペレーシ ョ ン (B_GET_NEXT) では、 指定 さ れた キーに基づいて、 論理位置で次にあ る レ コ ー ド を取 得 し ます。 Get Next オペレーシ ョ ン を使 う と 、 重複する キー値を持つレ コ ー ド のグループの中で レ コ ー ド を検索 で き ます。 「Get Key (+50)」 バ イ ア ス を使 う と 、 フ ァ イ ル内に値が存在す る か ど う か を検出す る こ と も で き ます。 一般に、 Get Key オペレーシ ョ ンの方が高速に処理 さ れます。 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ 戻り値 ○ データ バッ データ バッ ファー ファー長 ○ キー バッ ファー キー番号 ○ ○ ○ ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 フ ァ イ ルがデー タ オン リ ー フ ァ イ ルであ っ てはいけ ません。 アプ リ ケーシ ョ ンでは、 指定 し た キーに基づ く 次の論理位置を確立 し てお く こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 6 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ー長に取得す る レ コ ー ド の長 さ 以上の値を設定 し ます。 4 キー バ ッ フ ァ ーに前のオペレーシ ョ ンで取得 し た キー値を指定 し ます。 キー バ ッ フ ァ ーには、前の呼び出 し で ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 返 さ れた キー値 と ま っ た く 同 じ も のを渡 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 フ ァ イ ル内の現在の位置を決定す る ため に、 直前にキー バ ッ フ ァ ーに格納 さ れた情報が必要 と な る か ら です。 5 キー番号パ ラ メ ー タ ーに、 前の呼び出 し で使用 し た キー パ ス を設定 し ます。 Get Next オペレーシ ョ ン を使っ て キー パ ス を変更す る こ と はで き ません。 結果 Get Next オペ レーシ ョ ン が正常に終了 し た場合、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では レ コ ー ド がデー タ バ ッ フ ァ ーに、 その レ コ ー ド のキー値がキー バ ッ フ ァ ーに、 さ ら にその レ コ ー ド の長 さ がデー タ バ ッ フ ァ ー長に 返 さ れます。 Get Next オペ レーシ ョ ン が正常に実行 さ れなか っ た場合は、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 6 キー番号パ ラ メ ー タ ーが不正です。 79 Btrieve API オペ レーシ ョ ン 7 キー番号が変更 さ れま し た。 8 現在のポジシ ョ ンが不正です。 9 オペレーシ ョ ンが EOF (end-of-file) を検出 し ま し た。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 82 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス がポジシ ョ ニ ン グ を失い ま し た。 こ のオペレーシ ョ ンの実行に よ り 、 論理位置の直後が フ ァ イ ルの末尾 よ り も 後を指す場合は、 ス テー タ ス コ ー ド 9 が返 さ れます。 ポジ シ ョ ニ ング Get Next オペレーシ ョ ン を実行す る と 、 完全な論理カ レ ン シーお よ び物理カ レ ン シーが確立 し 、 取得 し た レ コ ー ド が現在の レ コ ー ド にな り ます。 80 Get Next Extended (36) Get Next Extended (36) Get Next Extended オペレーシ ョ ン (B_GET_NEXT_EXTENDED) では、 指定 さ れた キーに基づ き 、 論理位置の直 後か ら フ ァ イ ルの末尾へ向か っ て 1 つま たは複数の レ コ ー ド を検索 し ます。 検索 し た レ コ ー ド が フ ィ ル タ ー条件 を満た し てい る か ど う か をチ ェ ッ ク し た上で、 条件を満たすレ コ ー ド だけ を取得 し ます。 フ ィ ル タ ー条件は論理 式の形を取 り 、 キー フ ィ ール ド のみに制限 さ れません。 Get Next Extended オペレーシ ョ ンでは、レ コ ー ド か ら 指定 し た部分だけ を抽出 し 、その部分だけ を アプ リ ケーシ ョ ンに返す こ と も で き ます。 パラ メ ー タ ー 送り値 戻り値 オペレーション コード ポジション ブロック データ バッ データ バッ ファー ファー長 ○ ○ ○ ○ ○ キー バッ ファー キー番号 ○ ○ ○ ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 フ ァ イ ルがデー タ オン リ ー フ ァ イ ルであ っ てはいけ ません。 指定 し た キーに基づ く 次の論理位置を確立 し てお く こ と が必要です。 論理位置は、 Get Equal な ど の Extended でない Get オペレーシ ョ ン を どれか発行す る こ と に よ っ て確立で き ます。 手順 1 オペレーシ ョ ン コ ー ド に 36 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 入力デー タ バ ッ フ ァ ー と 戻 り デー タ バ ッ フ ァ ーの ど ち ら か大き い方を格納で き る よ う に、十分な長 さ のデー タ バ ッ フ ァ ーを指定 し ます。 表 21 に示す構造体に従っ て、 デー タ バ ッ フ ァ ーを初期化 し ます。 4 デー タ バ ッ フ ァ ー長に、入力構造体 (表 21) と 戻 り 構造体 (表 22) の ど ち ら か大 き い方の長 さ を指定 し ます。 5 キー バ ッ フ ァ ーに前のオペレーシ ョ ンで取得 し た キー値を指定 し ます。 キー バ ッ フ ァ ーには、前の呼び出 し で ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 返 さ れた キー値 と ま っ た く 同 じ も の を渡 し ま す。 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 フ ァ イ ル内の現在の位置を決定す る ために、直前にキー バ ッ フ ァ ーに格納 さ れた情報が必要 と な る か ら です。 6 キー番号パ ラ メ ー タ ーに、 前の呼び出 し で使用 し た キー パス を設定 し ます。 Get Next Extended オペレーシ ョ ン を使っ て キー パ ス を変更す る こ と はで き ません。 81 Btrieve API オペ レーシ ョ ン 詳細 次の表は、 入力デー タ バ ッ フ ァ ーの構造体を示 し てい ます。 表 21 Extended Get / Step オペ レーシ ョ ンの入力デー タ バ ッ フ ァ ー構造体 要素 長さ (バ イト単位) 説明 ヘ ッ ダー 2 デー タ バ ッ フ ァ ー全体の長 さ 。 2 2 つの文字列定数値のいずれか を指定 し ます (固定長で、 ヌ ル終端に し てはいけ ません)。 "EG" - ポジシ ョ ニ ン グ さ れてい る レ コ ー ド の次の レ コ ー ド か ら 検索を開始 し ます。 "UC" - ポジ シ ョ ニ ン グ さ れてい る レ コ ー ド か ら 検索を開始 し ます。 Step Next Extended オペレーシ ョ ンの場合は、 こ の値には常に "EG" を設定 し て く だ さ い。 フ ィ ル タ ー (固 定部分) フ ィ ル タ ー (論 理式の各項に ついて、 こ のセ グメントを 1 回繰 り 返す) 2 リ ジ ェ ク ト カ ウ ン ト の最大数。 こ れは、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で レ コ ー ド の 検索中に、 フ ィ ル タ ー条件を満た さ ない も の と し て ス キ ッ プで き る レ コ ー ド の件数です。 0 か ら 65,535 ま での範囲の値を指定で き ます (0 を指定す る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではシ ス テ ム定義の最大 リ ジ ェ ク ト カ ウ ン ト 、 4,095 が使用 さ れます)。 2 フ ィ ル タ ー条件 と し て使用す る 論理式の項の数。 (0 を指定す る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではフ ィ ル タ ー処理が実行 さ れません)。 項の数はデー タ バ ッ フ ァ ーのサ イ ズに よ っ てのみ制限 さ れます。Pervasive.SQL 2000i SP3 でのみ、項の数が 119 に制限 さ れてい ます。 1 フ ィ ール ド のデー タ 型。 表 11 に記載 さ れてい る コ ー ド のいずれか を使用 し ます。 2 フ ィ ール ド 長。 2 フ ィ ール ド のオ フ セ ッ ト (ゼ ロ を基準に し た相対的なオ フ セ ッ ト )。 1 比較演算子の コ ー ド を指定 し ます。 1 等しい 2 よ り 大きい 3 よ り 小さい 4 等 し く ない 5 以上 6 以下 フ ァ イ ルの既存の ACS のいずれか を使っ て文字列を比較す る には、+8 バ イ ア ス を加算 し ます。 フ ァ イ ルのデフ ォ ル ト の ACS を使っ て文字列を比較す る には、+32 バ イ ア ス を加算 し ます。デ フ ォ ル ト の ACS と は、 フ ァ イ ルで定義 さ れてい る 先頭の ACS の こ と です。 +8 バ イ ア ス と +32 バ イ ア ス の両方を使用す る と 、 +32 バ イ ア ス は無視 さ れます。 2 番目のオペ ラ ン ド が定数ではな く 、 レ コ ー ド 内の別の フ ィ ール ド の場合は、 +64 バ イ ア ス を 加算 し ます。 大文字 と 小文字を区別 し ないで文字列を比較す る には、 +128 バ イ ア ス を加算 し ます。 82 1 AND/OR 論理演算子を指定 し ます。 0 - 最後の項を示 し ます。 1 - 次の項を AND で結合 し ます。 2 - 次の項を OR で結合 し ます。 2 ま たは n 2 つの フ ィ ール ド を比較す る 場合は、 2 バ イ ト の、 2 番目の フ ィ ール ド に対す る ゼ ロ 基準の相 対的なオ フ セ ッ ト を指定 し ます (2 番目の フ ィ ール ド は、 同 じ デー タ 型かつ同 じ 長 さ でなけれ ばな り ません)。 ま たは フ ィ ール ド を 定数 と 比較す る 場合は、 定数の実際の値 を 指定 し ま す。 定数の長 さ (n) は、 フ ィ ール ド の長 さ と 等 し く なければな り ません。 0、5、9、17 名前に よ っ て ACS を指定 (バ イ ア ス +8) す る と き は、 表 12 に示 さ れてい る 名前の形式のい ずれかを使っ て、 ACS 識別子を指定 し ます。 Get Next Extended (36) 表 21 Extended Get / Step オペ レーシ ョ ンの入力デー タ バ ッ フ ァ ー構造体 要素 長さ (バ イト単位) 説明 ディ スク リプ タ ー (固 定 部 分) 2 取得す る レ コ ー ド 数。 レ コ ー ド のセ ッ ト ではな く 1 つの レ コ ー ド だけ を取得す る には、 1 を指 定 し ます。 2 各レ コ ー ド か ら 抽出す る フ ィ ール ド 数。 2 抽出す る フ ィ ール ド 長。 2 フ ィ ール ド のオ フ セ ッ ト (ゼ ロ を基準に し た相対的なオ フ セ ッ ト )。 ディ スク リプ タ ー (抽出 さ れ る 各 フ ィ ール ド について、 こ のセグ メ ン ト を繰 り 返す) ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では Extended Get お よ び Step オペレーシ ョ ンの フ ィ ル タ ーで使用 さ れて い る AND お よ び OR 演算子は、 厳密に左か ら 右へ向かっ て解釈 さ れます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は、 次の規則に従っ て フ ィ ル タ ー内の式の評価を続けてい き ます。 現在の レ コ ー ド に適用 さ れた式が真で、 次の演算子が OR の場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で はその レ コ ー ド はフ ィ ル タ ー条件を満たす も の と 見な さ れます。 式が真で、 次の演算子が AND の場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では次のいずれかの状況にな る ま で各式の評価が継続 さ れます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が次の OR 式に達す る 。 式の 1 つが偽 と 評価 さ れ る 。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が フ ィ ル タ ーの末尾に達す る 。 式が偽で、 次の演算子が OR の場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではフ ィ ル タ ー内の次の式が引 き 続き 評価 さ れます。 式が偽で、 次の演算子が AND の場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではその レ コ ー ド は拒否 さ れ ます。 次のいずれかの条件が成立す る と 、 レ コ ー ド の検索は中止 さ れます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で、 フ ィ ル タ ー条件を満たす、 指定 し た数の レ コ ー ド が検出 さ れ る 。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が フ ィ ル タ ー条件を満たすレ コ ー ド を検索 し てい る 間に、検索 し た レ コ ー ド 数が指定 し た リ ジ ェ ク ト カ ウ ン ト の最大数を超え る 。 現在のキー パ ス が フ ィ ル タ ー条件の フ ィ ール ド と し て使用 さ れてお り 、 それ以降フ ァ イ ルの残 り 部分に フ ィ ル タ ー条件を満たす レ コ ー ド はない と す る 、 拒否 レ コ ー ド に ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が達す る。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が フ ァ イ ルの末尾に達す る 。 例 フ ィ ル タ ー条件を満たす次の レ コ ー ド 全体を取得する には、 フ ィ ル タ ー部分を希望どお り に設定 し 、 次の よ う に デ ィ ス ク リ プ タ ー フ ィ ール ド を設定 し ます。 1 レ コ ー ド 数に 1 を設定 し ます。 2 フ ィ ール ド 数に 1 を設定 し ます。 3 フ ィ ール ド 長に取得す る レ コ ー ド 全体の長 さ を設定 し ます。 4 フ ィ ール ド のオ フ セ ッ ト に 0 を設定 し ます。 83 Btrieve API オペ レーシ ョ ン フ ィ ル タ ー条件を使わずに次の 12 件の レ コ ー ド を取得 し 、各レ コ ー ド か ら 4 つの フ ィ ール ド を抽出す る には、論 理式の項の数に 0 を設定 し 、 次の よ う にデ ィ ス ク リ プ タ ー フ ィ ール ド を設定 し ます。 1 レ コ ー ド 数に 12 を設定 し ます。 2 フ ィ ール ド 数に 4 を設定 し ます。 3 抽出す る 4 つの フ ィ ール ド ご と にフ ィ ール ド 長お よ びフ ィ ール ド のオ フ セ ッ ト パ ラ メ ー タ ーを設定 し ます。 レ コ ー ド からのフ ィ ール ド の取得 Extended オペレーシ ョ ン を使っ て レ コ ー ド の フ ィ ール ド (レ コ ー ド の一部) を取得す る と き は、デー タ バ ッ フ ァ ー がオペレーシ ョ ンか ら 返 さ れ る 情報を十分に格納で き る こ と を確認 し てお く 必要があ り ます。 表 22 は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 返 さ れ る デー タ バ ッ フ ァ ーの構造体を示 し てい ます。 表 22 Extended Get / Step オペ レーシ ョ ンの戻 り デー タ バ ッ フ ァ ー構造体 要素 長さ (バ イト単位) 説明 レ コー ド 数 2 返 さ れた レ コ ー ド 数。 繰 り 返 し 部分 (取得 さ れた レ コ ー ド ご と に 1 つあ り ます) 長さ 0 2 先頭レ コ ー ド の イ メ ージ(すべての フ ィ ール ド を結合 し た も の) の長 さ 。 位置 0 4 先頭レ コ ー ド の物理カ レ ン シー (ア ド レ ス)。 レ コー ド 0 n 先頭レ コ ー ド の イ メ ージ(すべての フ ィ ール ド を結合 し た も の)。 長さ x 2 末尾レ コ ー ド の イ メ ージ(すべての フ ィ ール ド を結合 し た も の) の長 さ (バ イ ト 単位)。 位置 x 4 末尾レ コ ー ド の物理カ レ ン シー (ア ド レ ス)。 レ コー ド x n 末尾レ コ ー ド の イ メ ージ(すべての フ ィ ール ド を結合 し た も の)。 . . . 返 さ れたすべての レ コ ー ド (ま たは レ コ ー ド の フ ィ ール ド ) が固定長で あ る 場合、 戻 り デー タ バ ッ フ ァ ー内の デー タ の位置は簡単に計算で き ま す。 し か し 、 Extended オペレ ーシ ョ ン か ら 返 さ れたデー タ バ ッ フ ァ ーか ら レ コ ー ド の可変長部分を抽出す る には、 さ ら に特別な手順を踏む必要があ り ます。 レ コ ー ド の可変長部分が返 さ れ る と き 、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は戻 り デー タ バ ッ フ ァ ー内に余分 な レ コ ー ド イ メ ージ を詰め込みません。 し たが っ て、 レ コ ー ド の可変長部分が占有す る 最大のバ イ ト 数を想定 し て戻 り デー タ バ ッ フ ァ ー内の領域を確保 し て も 、 実際に返 さ れたデー タ がその最大値を下回る 場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では次に返 さ れた フ ィ ール ド の フ ィ ール ド 記述は現在の フ ィ ール ド のデー タ の直後 か ら 始ま る こ と にな り ます。 た と えば、 固定レ コ ー ド 長が 100 バ イ ト で、 可変長部分は最大 300 バ イ ト にな る と 推定 さ れ る と き に、 5 件の レ コ ー ド の可変長部分だけ を取得 し たい と し ます。 入力バ ッ フ ァ ーのデ ィ ス ク リ プ タ ー要素を使っ て、 フ ィ ール ド 長に 300 を設定 し 、 フ ィ ール ド のオ フ セ ッ ト に 100 を設定 し ます。 戻 り バ ッ フ ァ ーについては、 次の計算式で示 す よ う に、 レ コ ー ド 数を示す 2 バ イ ト と 、 レ コ ー ド 当た り 306 バ イ ト (つま り 、 長 さ の 2 バ イ ト 、 ア ド レ ス の 4 バ イ ト 、 お よ びデー タ の 300 バ イ ト ) を加算する 必要があ り ます。 2 + ((2 バ イ ト + 4 バ イ ト + 300 バ イ ト ) * 5) = 1532 バ イ ト 84 Get Next Extended (36) し か し 、 返 さ れた先頭レ コ ー ド の可変長部分には 50 バ イ ト のデー タ し かなか っ た と し ます。 その結果、 2 バ イ ト か ら 成る 2 番目に返 さ れ る レ コ ー ド の長 さ は、デー タ バ ッ フ ァ ーのオ フ セ ッ ト 58、つま り 先頭レ コ ー ド の フ ィ ー ル ド イ メ ージの直後に格納 さ れ る こ と にな り ます。 こ う し た状況で も アプ リ ケーシ ョ ンでは、 ト ラ ンザ ク シ ョ ナ ル イ ン タ ーフ ェ イ ス か ら デー タ バ ッ フ ァ ーに返 さ れた長 さ 、位置、お よ びデー タ を正確に解析す る 必要があ り ま す。 結果 Get Next Extended オペレーシ ョ ンが正常に終了 し た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の情報 が返 さ れます。 デー タ バ ッ フ ァ ーには、取得 さ れた 1 つま たは複数の レ コ ー ド に含まれ る 1 つま たは複数の フ ィ ール ド が格 納 さ れます (表 22 を参照 し て く だ さ い)。 デー タ バ ッ フ ァ ー長には、 受け取っ た総バ イ ト 数が格納 さ れます。 キー バ ッ フ ァ ーには、 受け取っ た最後のデー タ レ コ ー ド のキー値が格納 さ れます。 Get Next Extended オペレーシ ョ ンが正常に実行 さ れなかっ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 6 キー番号パ ラ メ ー タ ーが不正です。 7 キー番号が変更 さ れま し た。 8 現在のポジシ ョ ンが不正です。 9 オペレーシ ョ ンが EOF (end-of-file) を検出 し ま し た。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 60 指定 さ れた リ ジ ェ ク ト カ ウ ン ト に達 し ま し た。 61 作業領域が小 さ すぎ ます。 62 デ ィ ス ク リ プ タ ーが不正です。 64 フ ィ ル タ ー制限に達 し ま し た。 65 フ ィ ール ド オ フ セ ッ ト が不正です。 82 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス がポジシ ョ ニ ン グ を失い ま し た。 134 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が イ ン タ ーナシ ョ ナル ソ ー ト 規則 (ISR) を読み取れません。 135 指定 さ れた イ ン タ ーナシ ョ ナル ソ ー ト 規則 (ISR) テーブルは破損 し てい る か、 ま たは不正です。 136 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は、 指定 さ れたオル タ ネー ト コ レーテ ィ ン グ シーケ ン ス を フ ァ イ ル内 に見つけ ら れません。 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 0 以外の ス テー タ ス コ ー ド が返 さ れて も 、 有効なデー タ がデー タ バ ッ フ ァ ーに返 さ れ る こ と があ り ます。 ただ し こ の場合、 返 さ れた最後の レ コ ー ド は不完全な も のであ る 可能性 があ り ます。デー タ バ ッ フ ァ ー長パ ラ メ ー タ ーに 0 を超え る 値が返 さ れてい る 場合は、デー タ バ ッ フ ァ ーに抽出 さ れたデー タ を確認 し て く だ さ い。 デー タ バ ッ フ ァ ーが短すぎ る ために フ ィ ール ド を部分的に し か格納で き ない場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではその一部だけの フ ィ ール ド も 含め、 格納で き る だけの レ コ ー ド 部分が返 さ れます。 部分フ ィ ー ル ド が抽出 さ れ る 最後の フ ィ ール ド であ る 場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではオペレーシ ョ ンが続 行 さ れます。 そ う でない場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではオペレーシ ョ ンは中止 さ れ、 ス テー タ ス コ ー ド 22 が返 さ れます。 た と えば、 2 件の可変長レ コ ー ド か ら 3 つの フ ィ ール ド を取得す る Get Next Extended オペレーシ ョ ン を考えてみ ま し ょ う 。 最初の レ コ ー ド は 55 バ イ ト で、 2 番目の レ コ ー ド は 50 バ イ ト の長 さ だ と し ます。 デー タ バ ッ フ ァ ー には 50 バ イ ト のデー タ を返す こ と がで き ます。 取得する 3 つの フ ィ ール ド は次の よ う に定義 さ れてい ます。 85 Btrieve API オペ レーシ ョ ン フ ィ ール ド 1 はオ フ セ ッ ト 2 か ら 始ま り 、 2 バ イ ト 長です。 フ ィ ール ド 2 はオ フ セ ッ ト 45 か ら 始ま り 、 10 バ イ ト 長です。 フ ィ ール ド 3 はオ フ セ ッ ト 6 か ら 始ま り 、 2 バ イ ト 長です。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で Get Next Extended オペレーシ ョ ンが実行 さ れ る と き 、最初の レ コ ー ド は 問題な く 返 さ れます。 し か し 、 2 番目の レ コ ー ド か ら フ ィ ール ド 2 の 10 バ イ ト を抽出 し よ う と す る と 、 オ フ セ ッ ト 45 と レ コ ー ド の末尾のオ フ セ ッ ト 49 の間では 5 バ イ ト し か取得で き ない こ と が ト ラ ンザ ク シ ョ ナル イ ン タ ー フ ェ イ ス に よ っ て検出 さ れます。 こ の時点で、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス はフ ィ ール ド 2 の不足 し て い る 5 バ イ ト 分を詰め込ま ないため、 フ ィ ール ド 3 は抽出で き な く な り ます。 その代わ り に、 ト ラ ンザ ク シ ョ ナ ル イ ン タ ーフ ェ イ ス か ら ス テー タ ス コ ー ド 22 が返 さ れ、 フ ィ ール ド 1 全体 と フ ィ ール ド 2 の先頭 5 バ イ ト が戻 り デー タ バ ッ フ ァ ーに格納 さ れます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではフ ィ ル タ ー条件で使用す る フ ィ ール ド と 演算子に よ っ て、要求を最適 化で き る 場合があ り ます。 拒否レ コ ー ド に達す る と 、 ス テー タ ス コ ー ド 64 が返 さ れ、 フ ァ イ ルの未検索の部分 にはフ ィ ル タ ー条件を満たすレ コ ー ド がそれ以上ない こ と が示 さ れます。 ポジ シ ョ ニ ング Get Next Extended オペレーシ ョ ン を実行す る と 、 完全な論理カ レ ン シーお よ び物理カ レ ン シーが確立 さ れ ます。 検索 さ れた最後の レ コ ー ド が現在の レ コ ー ド にな り ます。 こ の レ コ ー ド は、 フ ィ ル タ ー条件を満た し て取得 さ れ た レ コ ー ド か、ま たはフ ィ ル タ ー条件を満た さ ないために拒否 さ れたが、ま だ最適化の範囲を超えていない レ コ ー ド のいずれかです。 た と えば、 Extended オペ レ ーシ ョ ン が ス テー タ ス 9 を返 し た場合は、 フ ァ イ ルの末尾の レ コ ー ド が現在の レ コ ー ド にな り ます。 ス テー タ ス 60 ( リ ジ ェ ク ト カ ウ ン ト に達 し ま し た) が返 さ れた場合は、 拒 否 さ れた最後の レ コ ー ド が現在の レ コ ー ド です。 ス テー タ ス 64 (フ ィ ル タ ー制限に達 し ま し た) が返 さ れた場合 には、 最適化条件を満たす最後の レ コ ー ド が現在の レ コ ー ド にな り ます。 こ れ以降の レ コ ー ド は最適化の範囲を 超え てい る こ と を確認す る ために、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が次の レ コ ー ド を検索す る 必要があ っ た と し て も 、 現在の レ コ ー ド の設定は条件を満たす前の レ コ ー ド に戻 さ れます。 メ モ ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 Get Next Extended オペ レ ーシ ョ ン の後に Delete ま たは Update オペレーシ ョ ン を実行す る こ と はで き ません。 現在の レ コ ー ド は検索 さ れた最後の レ コ ー ド であ る た め、 アプ リ ケーシ ョ ンには、 意図 し た レ コ ー ド を適切に削除ま たは更新 し てい る か ど う か を確認す る 方法が あ り ません。 86 Get Position (22) Get Position (22) Get Position オペレーシ ョ ン (B_GET_POSITION) では、 4 バ イ ト で表 し た現在の レ コ ー ド の物理位置を返 し ます。 Get Position オペレーシ ョ ン を発行す る と き に物理カ レ ン シーが確立 さ れていない と 、 オペレーシ ョ ンは正常に実 行 さ れません。 レ コ ー ド の位置 (ア ド レ ス) を決定で き れば、 Get Direct/Record オペレーシ ョ ン (23) を使っ て、 フ ァ イ ル内の物理位置を基にその レ コ ー ド を直接取得で き る よ う にな り ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 Get Position 要求を処理す る ためにデ ィ ス ク I/O は行われません。 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ 戻り値 ○ データ バッ データ バッ ファー ファー長 キー バッ ファー ○ ○ キー番号 ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 アプ リ ケーシ ョ ンでは、 物理カ レ ン シーを確立 し てお く こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 22 を設定 し ます。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ー長に少な く と も 4 バ イ ト を設定 し ます。 4 キー番号に 0 を設定 し ます。 結果 Get Position オペレーシ ョ ンが正常に終了 し た場合は、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら レ コ ー ド の位置 がデー タ バ ッ フ ァ ーに返 さ れ ます。 位置は、 High-Low で記録 さ れ る 4 バ イ ト のバ イ ナ リ 値で、 フ ァ イ ル内での レ コ ー ド のオ フ セ ッ ト (バ イ ト 単位) を示 し ます。 ま た、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではデー タ バ ッ フ ァ ー長に も 4 バ イ ト が設定 さ れます。 Get Position オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 8 現在のポジシ ョ ンが不正です。 ポジ シ ョ ニ ング Get Position オペレーシ ョ ンは、 ポジシ ョ ニ ン グに ま っ た く 影響 し ません。 87 Btrieve API オペ レーシ ョ ン Get Previous (7) Get Previous オペレーシ ョ ン (B_GET_PREVIOUS) では、 指定 さ れた キーに基づいて、 論理位置で前にあ る レ コ ー ド を取得 し ます。 Get Previous オペレーシ ョ ン を使 う と 、 重複す る キー値を持つレ コ ー ド のグループの中で レ コ ー ド を検索で き ます。 「Get Key (+50)」 バ イ ア ス を使 う と 、 フ ァ イ ル内に値が存在す る か ど う か を検出す る こ と も で き ます。 一般に、 Get Key オペレーシ ョ ンの方が高速に処理 さ れます。 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ 戻り値 ○ データ バッ データ バッ ファー ファー長 ○ キー バッ ファー キー番号 ○ ○ ○ ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 フ ァ イ ルがデー タ オン リ ー フ ァ イ ルであ っ てはいけ ません。 アプ リ ケーシ ョ ンでは、 指定 し た キーに基づ く 前の論理位置を確立 し てお く こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 7 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ー長に取得す る レ コ ー ド の長 さ 以上の値を設定 し ます。 4 キー バ ッ フ ァ ーに前のオペレーシ ョ ンで取得 し た キー値を指定 し ます。 キー バ ッ フ ァ ーには、前の呼び出 し で ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が返 し た キー値 と ま っ た く 同 じ も のを渡 し ます。 ト ラ ンザ ク シ ョ ナ ル イ ン タ ーフ ェ イ ス では、 フ ァ イ ル内の現在の位置を決定す る ために、直前にキー バ ッ フ ァ ーに格納 さ れた 情報が必要 と な る か ら です。 5 キー番号パ ラ メ ー タ ーに、 前の呼び出 し で使用 し た キー パ ス を設定 し ます。 Get Previous オペレーシ ョ ン を 使っ て キー パ ス を変更す る こ と はで き ません。 結果 Get Previous オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではキー バ ッ フ ァ ー が新 し い レ コ ー ド のキー値を使っ て更新 さ れ、デー タ バ ッ フ ァ ーに前の レ コ ー ド が返 さ れ、デー タ バ ッ フ ァ ー長 にその レ コ ー ド の長 さ が返 さ れます。 Get Previous オペレーシ ョ ン が正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 88 3 フ ァ イ ルが開いてい ません。 6 キー番号パ ラ メ ー タ ーが不正です。 Get Previous (7) 7 キー番号が変更 さ れま し た。 8 現在のポジシ ョ ンが不正です。 9 オペレーシ ョ ンが EOF (end-of-file) を検出 し ま し た。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 82 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス がポジシ ョ ニ ン グ を失い ま し た。 こ のオペレーシ ョ ンの実行に よ り 、 論理位置の直前が フ ァ イ ルの先頭 よ り も 前を指す場合は、 ス テー タ ス コ ー ド 9 が返 さ れます。 ポジ シ ョ ニ ング Get Previous オペ レーシ ョ ン を実行す る と 、 完全な論理カ レ ン シーお よ び物理カ レ ン シーが確立 し 、 取得 し た レ コ ー ド が現在の レ コ ー ド にな り ます。 89 Btrieve API オペ レーシ ョ ン Get Previous Extended (37) Get Previous Extended オペレーシ ョ ン (B_GET_PREV_EXTENDED) では、 指定 さ れた キーに基づき 、 論理位置の 直前か ら フ ァ イ ルの先頭へ向か っ て 1 つま たは複数の レ コ ー ド を検索 し ます。 検索 し た レ コ ー ド が フ ィ ル タ ー条 件を満た し てい る か ど う か をチ ェ ッ ク し た上で、 条件を満たすレ コ ー ド だけ を取得 し ます。 フ ィ ル タ ー条件は論 理式の形を取 り 、 キー フ ィ ール ド のみに制限 さ れません。 Get Previous Extended オペレーシ ョ ンでは、 レ コ ー ド か ら 指定 し た部分だけ を抽出 し 、 その部分だけ を アプ リ ケー シ ョ ンに返す こ と も で き ます。 パラ メ ー タ ー 送り値 戻り値 オペレーション コード ポジション ブロック データ バッ データ バッ ファー ファー長 ○ ○ ○ ○ ○ キー バッ ファー キー番号 ○ ○ ○ ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 フ ァ イ ルがデー タ オン リ ー フ ァ イ ルであ っ てはいけ ません。 指定 し た キーに基づ く 前の論理位置を確立 し てお く こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 37 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 入力デー タ バ ッ フ ァ ー と 戻 り デー タ バ ッ フ ァ ーの ど ち ら か大き い方を格納で き る よ う に、十分な長 さ のデー タ バ ッ フ ァ ーを指定 し ます。 表 21 に示す構造体に従っ て、 デー タ バ ッ フ ァ ーを初期化 し ます。 4 デー タ バ ッ フ ァ ー長に、入力構造体 (表 21) と 戻 り 構造体 (表 22) の ど ち ら か大 き い方の長 さ を指定 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではバ ッ フ ァ ーを用意 し て、Extended オペレーシ ョ ンの ワー ク スペー ス と し て使用で き る よ う に し ます。 こ のバ ッ フ ァ ーのサ イ ズは、 [拡張オペレーシ ョ ン バ ッ フ ァ ー サ イ ズ] オプシ ョ ン を使っ て構成 し ま す。 デー タ バ ッ フ ァ ー構造体、 取得 さ れ る 最長の レ コ ー ド 、 お よ び リ ク エ ス タ ーのオーバーヘ ッ ド の 355 バ イ ト 、 こ れ ら の合計が設定 し たバ ッ フ ァ ー サ イ ズ を超え る こ と はで き ま せ ん。 ( リ ク エ ス タ ーのオーバーヘ ッ ド は、 DOS ワー ク ス テーシ ョ ンのエン ジ ンには適用で き ません。) 5 キー バ ッ フ ァ ーに前のオペレーシ ョ ンで取得 し た キー値を指定 し ます。 キー バ ッ フ ァ ーには、前の呼び出 し で ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 返 さ れた キー値 と ま っ た く 同 じ も の を渡 し ま す。 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 フ ァ イ ル内の現在の位置を決定す る ために、直前にキー バ ッ フ ァ ーに格納 さ れた情報が必要 と な る か ら です。 6 キー番号パ ラ メ ー タ ーに、 前の呼び出 し で使用 し た キー パ ス を設定 し ます。 Get Previous Extended オペレー シ ョ ン を使っ て キー パ ス を変更す る こ と はで き ません。 90 Get Previous Extended (37) 詳細 こ のオペレーシ ョ ンでは、 Get Next Extended オペレーシ ョ ンの場合 と 同 じ 入力デー タ バ ッ フ ァ ーお よ び戻 り デー タ バ ッ フ ァ ーを使用 し ます。 詳 し く は 「詳細」 を ご覧 く だ さ い。 結果 こ のオペレーシ ョ ンでは、 Get Next Extended オペレーシ ョ ン と 同様の結果が返 さ れます。 詳 し く は 「結果」 を ご 覧 く だ さ い。 ポジ シ ョ ニ ング Get Previous Extended オペレーシ ョ ン を実行す る と 、 完全な論理カ レ ン シーお よ び物理カ レ ン シーが確立 さ れ ま す。 検索 さ れた最後の レ コ ー ド が現在の レ コ ー ド にな り ます。 こ の レ コ ー ド は、 フ ィ ル タ ー条件を満た し て取得 さ れた レ コ ー ド か、 ま たはフ ィ ル タ ー条件を満た さ ないために拒否 さ れた レ コ ー ド のいずれかです。 メ モ ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、Get Previous Extended オペレーシ ョ ンの後に Delete ま たは Update オペレーシ ョ ン を実行す る こ と はで き ません。 現在の レ コ ー ド は検索 さ れた最後の レ コ ー ド であ る た め、 アプ リ ケーシ ョ ンには、 意図 し た レ コ ー ド を適切に削除ま たは更新 し てい る か ど う か を確認す る 方法が あ り ません。 91 Btrieve API オペ レーシ ョ ン Insert (2) Insert オペレーシ ョ ン (B_INSERT) では、 フ ァ イ ルに レ コ ー ド を挿入 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では新 し い レ コ ー ド のキー値を反映 し て、 キーの B-ツ リ ーが調整 さ れます。 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ 戻り値 データ バッ データ バッ ファー ファー長 ○ ○ キー バッ ファー ○ キー番号 ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 挿入す る レ コ ー ド は適切な レ コ ー ド 長を持つ必要があ り ます。 ま た、 キー値は対象 と な る フ ァ イ ルで定義 さ れてい る キー と 一致 し ていなければな り ません。 手順 1 オペレーシ ョ ン コ ー ド に 2 を設定 し ます。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ーに、 挿入す る レ コ ー ド を格納 し ます。 4 デー タ バ ッ フ ァ ー長を指定 し ます。 こ の値は、 少な く と も レ コ ー ド の固定長部分 と 同 じ 長 さ でなければな り ません。 5 ポジシ ョ ニ ン グ情報 (カ レ ン シー) の確立に ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が使用す る キー番号を指 定 し ます。 NCC オプシ ョ ン を使用す る には、 キー番号に -1 (0xFF) を指定 し ます。 シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ ) を使用す る には、 125 を指定 し ます。 メ モ NCC (No-currency-change : カ レ ン シー変更な し ) オプシ ョ ン を使用す る と 、 Insert オペレ ーシ ョ ンは キー バ ッ フ ァ ー パ ラ メ ー タ ーの値を更新 し ません。 つま り 、 キー バ ッ フ ァ ー パ ラ メ ー タ ーには何の情報 も 返 さ れません。 結果 Insert オペ レ ーシ ョ ン が正常に終了 し た場合、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では フ ァ イ ルに新 し い レ コ ー ド が挿入 さ れ、 新 し い レ コ ー ド を反映 し て キーの B ツ リ ーが更新 さ れます。 ま た、 指定 し た キーの値がキー バ ッ フ ァ ーに返 さ れます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 AUTOINCREMENT キーの値がバ イ ナ リ 0 に初期化 さ れてい る レ コ ー ド を挿入す る と 、 挿入 し た レ コ ー ド も デー タ バ ッ フ ァ ーに返 さ れ、 レ コ ー ド には ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て割 り 当て ら れた AUTOINCREMENT 値が入っ てい ます。 NCC Insert オペレーシ ョ ンでは、 キー バ ッ フ ァ ー パ ラ メ ー タ ーの値は変更 さ れません。 Insert オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 92 2 アプ リ ケーシ ョ ンで I/O エ ラ ーが発生 し ま し た。 3 フ ァ イ ルが開いてい ません。 Insert (2) 5 レ コ ー ド のキー フ ィ ール ド に重複す る キー値があ り ます。 18 デ ィ ス ク がいっぱいです。 21 キー バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 ポジ シ ョ ニ ング NCC オプシ ョ ン を指定 し ない Insert オペレーシ ョ ン を実行す る と 、 完全な論理カ レ ン シーお よ び物理カ レ ン シー が確立 し 、 挿入 し た レ コ ー ド が現在の レ コ ー ド にな り ます。 論理カ レ ン シーは指定 し た キーに基づ き ます。 NCC Insert オペレ ーシ ョ ン を実行す る と 、 論理カ レ ン シーは影響を受けずに、 物理カ レ ン シーが確立 さ れ ま す。 つま り 、 NCC Insert オペレーシ ョ ン を実行 し た アプ リ ケーシ ョ ン では、 フ ァ イ ル内の論理位置は Insert オペレー シ ョ ン を実行す る 前 と 変わ ら ない と い う こ と です。 こ の よ う な状況で、 NCC Insert オペレーシ ョ ンに続けて、 Get Next (6)、 Get Next Extended (36)、 Get Previous (7)、 お よ び Get Previous Extended (37) な ど のオペレーシ ョ ン を実行す る と 、 NCC Insert オペレーシ ョ ン実行以前のアプ リ ケーシ ョ ンの論理カ レ ン シーに基づ く 値が返 さ れま す。 メ モ ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 NCC Insert オペレーシ ョ ン を実行 し て も 、 その結果 と し て何の情報 も キー バ ッ フ ァ ーには返 さ れ ま せん。 し たが っ て、 論理カ レ ン シーの維持が必要な ア プ リ ケー シ ョ ンでは、 NCC Insert オペレーシ ョ ン後にキー バ ッ フ ァ ーの値を変更 し ないで く だ さ い。 変更する と 、 次 の Get オペレーシ ョ ンの結果は予測で き ない も のにな り ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では標準の Insert オペレーシ ョ ン と NCC Insert オペレーシ ョ ンの ど ち ら を 実行 し て も 、 新 し く 挿入 さ れた レ コ ー ド に対 し 物理カ レ ン シーが確立 さ れます。 NCC Insert オペレーシ ョ ンに続 く Step Next (24)、 Step Next Extended (38)、 Step Previous (35)、 Step Previous Extended (39)、 Update (3)、 Delete (4)、 お よ び Get Position (22) な ど のオペレーシ ョ ンは、 新 し い物理カ レ ン シーに基づいて機能 し ます。 93 Btrieve API オペ レーシ ョ ン Insert Extended (40) Insert Extended オペレーシ ョ ン (B_EXT_INSERT) では、 フ ァ イ ルに 1 つま たは複数の レ コ ー ド を挿入 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、新 し い レ コ ー ド のキー値を反映 し て、キーの B ツ リ ーが調整 さ れます。 パラ メ ー タ ー オペレーション コード ポジション ブロック ○ ○ ○ ○ ○ 送り値 戻り値 データ バッ データ バッ ファー ファー長 キー バッ ファー ○ キー番号 ○ ○ メ モ NCC (No-currency-change : カ レ ン シー変更な し ) オプシ ョ ン を使用す る と 、 Insert Extended オペレ ー シ ョ ンはキー バ ッ フ ァ ー パ ラ メ ー タ ーの値を更新 し ません。 つま り 、 キー バ ッ フ ァ ー パ ラ メ ー タ ーには何 の情報 も 返 さ れません。 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 挿入す る レ コ ー ド は適切な レ コ ー ド 長を持つ必要があ り ます。 ま た、 キー値は対象 と な る フ ァ イ ルで定義 さ れてい る キー と 一致 し ていなければな り ません。 手順 1 オペレーシ ョ ン コ ー ド に 40 を設定 し ます。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 表 23 に示す構造体に従っ て、 デー タ バ ッ フ ァ ーを指定 し ます。 4 デー タ バ ッ フ ァ ー長を指定 し ます。 こ の値は、デー タ バ ッ フ ァ ー構造体のサ イ ズ と 一致 し てい る こ と が必要 です。 5 カ レ ン シーの確立に ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が使用する キー番号を指定 し ます。NCC オプシ ョ ン を使用す る には、 キー番号に -1 (0xFF) を指定 し ます。 シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ ) を 使用す る には、 125 を指定 し ます。 詳細 次の表は、 デー タ バ ッ フ ァ ーの構造体を示 し てい ます。 表 23 Insert Extended オペ レーシ ョ ンのデー タ バ ッ フ ァ ー構造体 要素 長さ (バイト単位) 説明 固定部分 2 挿入す る レ コ ー ド 数。 繰 り 返 し 部分 (レ コ ー ド ご と に 1 つあ り ます) 94 2 レ コ ー ド イ メ ージの長 さ 。 n レ コ ー ド イ メ ージ。 Insert Extended (40) 結果 Insert Extended オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではフ ァ イ ルに新 し い レ コ ー ド が挿入 さ れ、 新 し い レ コ ー ド を反映 し てすべて の B ツ リ ーが更新 さ れ ま す。 さ ら に、 NCC Insert Extended オペレーシ ョ ンの場合を除 き 、 最後に挿入 し た レ コ ー ド か ら 、 指定 し た キーの値がキー バ ッ フ ァ ーに返 さ れます。 ま た、 戻 り デー タ バ ッ フ ァ ーの先頭 ワー ド には、 フ ァ イ ルに正常に挿入 さ れた レ コ ー ド の数が ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て格納 さ れます。デー タ バ ッ フ ァ ーの先頭ワー ド の後には、挿入 さ れた レ コ ー ド のア ド レ ス が ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て格納 さ れます。 オペレーシ ョ ン の一部 し か正常に実行 さ れず、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 0 以外の ス テー タ ス コ ー ド が返 さ れた場合、 デー タ バ ッ フ ァ ーの先頭 ワ ー ド の値は正常に挿入 さ れた レ コ ー ド の数 と 等 し く な り ま す。 エ ラ ーの原因 と な っ た レ コ ー ド は、 正常に挿入 さ れた レ コ ー ド 数 + 1 番目の レ コ ー ド です。 Insert Extended オペレーシ ョ ンが正常に実行 さ れなかっ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次 の ス テー タ ス コ ー ド のいずれかが返 さ れます。 2 アプ リ ケーシ ョ ンで I/O エ ラ ーが発生 し ま し た。 3 フ ァ イ ルが開いてい ません。 5 レ コ ー ド のキー フ ィ ール ド に重複す る キー値があ り ます。 18 デ ィ ス ク がいっぱいです。 21 キー バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 ポジ シ ョ ニ ング NCC オプシ ョ ン を指定 し ない Insert Extended オペレーシ ョ ン を実行する と 、 完全な論理カ レ ン シーお よ び物理カ レ ン シーが確立 し 、 挿入 さ れた レ コ ー ド のキー値が ヌ ルでなければ、 最後に挿入 さ れた レ コ ー ド が現在の レ コ ー ド にな り ます。 論理カ レ ン シーは指定 し た キーに基づき ます。 NCC Insert Extended オペレーシ ョ ン を実行す る と 、 論理カ レ ン シーは影響を受けずに、 物理カ レ ン シーが確立 さ れます。 つま り 、 NCC Insert Extended オペレーシ ョ ン を実行 し た アプ リ ケーシ ョ ンでは、 フ ァ イ ル内の論理位置 はオペレーシ ョ ン を実行す る 前 と 変わ ら ない と い う こ と です。 こ の よ う な状況で、 NCC Insert Extended オペレー シ ョ ンに続けて、 Get Next (6)、 Get Next Extended (36)、 Get Previous (7)、 お よ び Get Previous Extended (37) な ど のオペレーシ ョ ン を実行す る と 、 NCC Insert Extended オペレーシ ョ ン実行以前のアプ リ ケーシ ョ ンの論理カ レ ン シーに基づ く 値が返 さ れます。 メ モ ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 NCC Insert Extended オペレーシ ョ ン を実行 し て も 、 その 結果 と し て何の情報 も キー バ ッ フ ァ ーには返 さ れません。 し たがっ て、 論理カ レ ン シーの維持が必要な アプ リ ケーシ ョ ン では、 NCC Insert Extended オペレーシ ョ ン後にキー バ ッ フ ァ ーの値を変更 し ないで く だ さ い。 変更す る と 、 次の Get オペレーシ ョ ンの結果は予測で き ない も のにな り ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では標準の Insert Extended オペレーシ ョ ン と NCC Insert Extended オペレー シ ョ ン の ど ち ら を実行 し て も 、 新 し く 挿入 さ れた レ コ ー ド に対 し 物理カ レ ン シーが確立 さ れ ます。 し たが っ て、 NCC Insert Extended オペレーシ ョ ンに続 く Step Next (24) 、 Step Next Extended (38) 、 Step Previous (35) 、 Step Previous Extended (39)、 Update (3)、 Delete (4)、 お よ び Get Position (22) な ど のオペレーシ ョ ンは、 新 し い物 理カ レ ン シーに基づいて機能 し ます。 Get Next オペレーシ ョ ン (6) の よ う な、 元の論理カ レ ン シーに基づ く オペレーシ ョ ン を実行す る ために、 アプ リ ケーシ ョ ン で Insert Extended オペ レ ーシ ョ ン 実行前の フ ァ イ ルの論理位置 を 保存 し てお く 必要が あ る 場合に、 NCC Insert Extended オペレーシ ョ ンが役立ち ます。 95 Btrieve API オペ レーシ ョ ン NCC Insert Extended オペレーシ ョ ン を実行 し ないで同様の結果を得 る には、 アプ リ ケーシ ョ ン で以下の手順を実 行す る 必要があ り ます。 1 Get Position (22) - 現在の論理レ コ ー ド の、 4 バ イ ト 長の物理ア ド レ ス を取得 し ます。 アプ リ ケーシ ョ ン で こ の値を保存 し 、 手順 3 で こ れを渡 し て元に戻 し ます。 2 Insert Extended (40) - 新 し い レ コ ー ド を挿入 し ます。 こ のオペレーシ ョ ンに よ り 、 新 し い論理カ レ ン シーお よ び物理カ レ ン シーが確立 さ れます。 3 Get Direct/Record (23) - 手順 1 での状態に論理カ レ ン シー と 物理カ レ ン シーを戻 し ます。 NCC Insert Extended オペレーシ ョ ンは、 論理カ レ ン シーについては こ の手順 と 同様の結果を得 ら れますが、 物理 カ レ ン シーについては異な り ます。 た と えば、 こ れ ら 2 つの手順のいずれかに続けて Get Next (6) オペレーシ ョ ン を実行 し た場合は、 ど ち ら の手順で も 結果は変わ り ませんが、 Step Next (24) を実行 し た場合は、 異な る レ コ ー ド が返 さ れ る 可能性があ り ます。 96 Login/Logout (78) Login/Logout (78) Login/Logout オペレ ーシ ョ ン (B_LOGIN/B_LOGOUT) を使用す る と 、 ユーザーは自身のユーザー資格情報を指 定 し た り 、 デー タ ベース エン ジ ンか ら 認証 ト ー ク ンお よ び許可 ト ー ク ン を取得 し た り する こ と がで き ます。 こ の オペレーシ ョ ンでは、 ユーザーが自身の ロ グ イ ン資格情報を リ セ ッ ト す る こ と も 可能であ る ため、 デー タ ベース ヘのア ク セ ス を取得す る ために ロ グ イ ン資格情報を再入力する 必要があ り ます。 パラ メ ー タ ー オペレーション コード 送り値 ポジション ブロック ○ データ バッ データ バッ ファー ファー長 キー バッ ファー キー番号 ○ ○ 戻り値 前提条件 デー タ ベース名お よ びユーザー ID はあ ら か じ め定義 さ れてい る 必要があ り ます。 ログ イ ン手順 1 オペレーシ ョ ン コ ー ド に 78 を設定 し ます。 2 キー番号に 0 を設定 し ます。 3 デー タ ベース URI の形式を用いて、 キー バ ッ フ ァ ーにサーバー名、 デー タ ベース名、 ユーザー ID、 お よ び パス ワ ー ド を設定 し ます URI 接続文字列の詳細については、 『Pervasive PSQL Programmer's Guide』 の 「デー タ ベース URI」 を参照 し て く だ さ い。 ログアウ ト 手順 1 オペレーシ ョ ン コ ー ド に 78 を設定 し ます。 2 キー番号に 1 を設定 し ます。 3 デー タ ベース URI の形式を用いて、 キー バ ッ フ ァ ーにサーバー名、 デー タ ベース名、 ユーザー ID、 お よ び パス ワ ー ド を設定 し ます (『Pervasive PSQL Programmer's Guide』の「デー タ ベース URI」 を参照 し て く だ さ い)。 結果 Login ま たは Logout オペ レ ーシ ョ ン が正常に終了 し た場合は、 ス テー タ ス 0 が返 さ れ ま す。 正常に実行 さ れな か っ た場合は、 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 1 不正な操作です。 172 デー タ ベース名が見つか り ません。 3103 不明なサーバーです。 注記 デー タ ベース URI を結合 し た長 さ は 255 バ イ ト 未満でなければな り ません。こ れがキー バ ッ フ ァ ーの最大サ イ ズ だか ら です。 Login オペレーシ ョ ン ではパフ ォーマ ン ス に負荷がかか り ます。 アプ リ ケーシ ョ ン、 フ ァ イ ルご と に ロ グ イ ンお よ び ロ グ ア ウ ト す る よ う な コ ーデ ィ ン グ を し ないで く だ さ い。 代わ り に、 セ ッ シ ョ ンの始めに一度デー タ ベース に ロ グ イ ン し 、 デー タ ベース作業が完了 し た ら ロ グ ア ウ ト する よ う に し て く だ さ い。 97 Btrieve API オペ レーシ ョ ン ポジ シ ョ ニ ング Login/Logout オペレーシ ョ ンは、 フ ァ イ ルのカ レ ン シー情報には ま っ た く 影響 し ません。 98 Open (0) Open (0) Open オペレーシ ョ ン (B_OPEN) は、 フ ァ イ ルへのア ク セ ス を可能に し ます。 アプ リ ケーシ ョ ン で フ ァ イ ルにア ク セ スす る には、 まず Open オペレーシ ョ ン を実行す る 必要があ り ます。 フル パ ス名ま たは相対パ ス名を指定す る 限 り 、 対象 と な る フ ァ イ ルが現在のデ ィ レ ク ト リ に保存 さ れてい る 必要はあ り ません。 パラ メ ー タ ー オペレーション コード 送り値 戻り値 ポジション ブロック ○ データ バッ データ バッ ファー ファー長 ○ ○ キー バッ ファー キー番号 ○ ○ ○ 前提条件 開 く フ ァ イ ルは、 ア ク セ ス可能な論理デ ィ ス ク ド ラ イ ブ上にあ る こ と が必要です。 その フ ァ イ ルで使用可能な フ ァ イ ル ハン ド ルが存在す る こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 0 を設定 し ます。 2 フ ァ イ ルにオーナーが設定 さ れてい る 場合は、デー タ バ ッ フ ァ ー パ ラ メ ー タ ーにオーナー ネーム を指定 し 、 末尾にバ イ ナ リ 0 を付け ます。 3 デー タ バ ッ フ ァ ー長パ ラ メ ー タ ーに、 バ イ ナ リ 0 を含めたオーナー ネームの長 さ を指定 し ます。 キー バ ッ フ ァ ー パ ラ メ ー タ ーに、 開 く フ ァ イ ルのパス名を入れます。 埋め込みスペース の設定に応 じ て、 パ ス名の終端は ヌ ル (バ イ ナ リ ゼ ロ ) に し ます。 パ ス名は半角 255 文字ま での範囲で指定で き ます。 ヌ ル終端 文字を含む完全修飾 UNC (Unified Naming Convention) パ ス名は、 半角 255 文字ま での範囲で指定で き ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は通常、 フ ァ イ ル名を完全修飾 UNC フ ァ イ ル名に拡張 し ます。 た と えば、 J:\Data\File.dat は \\ サーバー名 \ 共有名 \Data\File.dat に変換 さ れます。 こ の拡張 さ れた フ ァ イ ル名 が、ヌ ル終端文字を含めて半角 255 文字ま でにな ら なければな り ません。『Pervasive PSQL Programmer's Guide』 の 「デー タ ベース URI」 も 参照 し て く だ さ い。 ただ し 、 Btrieve の Open 要求が ロ ーカル エン ジ ンに送 ら れ る 場合は、 MIF は ロ ーカルの ド ラ イ ブ文字を コ ン ピ ュ ー タ ー名お よ び共有名に置 き 換え ません。 ロ ーカルで開 く 場合に も っ と 長い名前で も 受け入れ ら れた と し て も 、 リ モー ト ク ラ イ ア ン ト ではその フ ァ イ ルを開けない こ と があ り ます。 ク ラ イ ア ン ト の設定オプシ ョ ン [スペース を含むフ ァ イ ル / デ ィ レ ク ト リ 名] に よ っ て、 埋め込みスペース を含むフ ァ イ ル名がサポー ト さ れます。 デフ ォ ル ト では、 こ の設定パ ラ メ ー タ ーはオンにな っ てい ます。 つ ま り 、 スペース はパ ス の一部 と 見な さ れます。 こ の設定がオンの場合、 フ ァ イ ル名は ヌ ル バ イ ト で区切 る 必 要があ り ます。 こ の設定がオ フ の場合、埋め込みスペース を含むフ ァ イ ル ("C:\My Folder\my file.mkd" な ど) を使用す る こ と はで き ません。 『Advanced Operations Guide』 の 「長い フ ァ イ ル名 と 埋め込みスペース のサポー ト 」 を参照 し て く だ さ い。 Pervasive PSQL ク ラ イ ア ン ト でサポー ト す る パ ス名の詳細については、 『Getting Started with Pervasive PSQL』 の 「Pervasive リ ク エ ス タ ーでサポー ト す る ネ ッ ト ワー ク パ ス の形式」 を参照 し て く だ さ い。 4 キー番号パ ラ メ ー タ ーに、 表 24 に記載 さ れてい る モー ド 値のいずれか を指定 し ます。 99 Btrieve API オペ レーシ ョ ン 詳細 こ こ では、 サポー ト さ れてい る オープン モー ド について説明 し ます。 注意 デー タ ベース エン ジ ンは、 ク ラ イ ア ン ト がア ク セ ラ レ イ テ ィ ド モー ド を使用 し てい る 間は、 ク ラ イ ア ン ト の ト ラ ンザ ク シ ョ ン ア ト ミ シテ ィ 、 ト ラ ンザ ク シ ョ ン一貫性保守、お よ びアーカ イ ブ ロ グの安全性を保 証で き ません。 こ の制約があ る のは、 ロ グか ら の復元が必要な場合に、 完全な復元を行 う ために十分な情報 が ロ グに含まれていない可能性があ る か ら です。 なぜな ら 、 ロ グは、 1 つのデー タ フ ァ イ ル上で行っ た操作 の部分的な記録で し かないか ら です。 た と えば、 ア ク セ ラ レ イ テ ィ ド モー ド を使用 し て追加を実行中の ク ラ イ ア ン ト と 、 ノ ーマル モー ド を使用 し て更新を実行中の ク ラ イ ア ン ト が同 じ フ ァ イ ルへア ク セ ス中にシ ス テ ム障害が発生 し た場合、 メ モ リ 上のア ク セ ラ レ イ テ ィ ド の追加操作はデ ィ ス ク に書き 出 さ れませんが、 ト ラ ンザ ク シ ョ ナルな更新操作は ト ラ ンザ ク シ ョ ン ロ グに書 き 込まれ る ため、デー タ フ ァ イ ルに ま だ存在 し ていない レ コ ー ド に対す る 更新が ト ラ ンザ ク シ ョ ン ロ グに含まれ る 可能性があ り ます。 こ の操作の組み合わせを含むアーカ イ ブ ロ グ を ロ ール フ ォ ワー ド し よ う と す る と 、 失敗 し ます。 フ ァ イ ルを開 く 際に、 オープ ン モー ド に よ っ て、 ロ ーカル エン ジ ン と リ モー ト エン ジ ンの ど ち ら を使用す る か を ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に指示で き ます。キー番号パ ラ メ ー タ ーにオープン モー ド の値を指定 し ます。 メ モ ロ ーカル エン ジ ンで フ ァ イ ルを開 く よ う に指定する 場合は、 ワー ク グループ エン ジ ンで も サーバー エ ン ジ ンで も 、 Open オペレーシ ョ ンに何 ら 違いはあ り ません。 表 24 オープ ン モー ド 説明 選択しない ローカル エンジ ンで実行 リモート エンジ ンで実行 ノ ーマル 0 6 99 アクセラ レイテ ィ ド 特定の フ ァ イ ルでのパフ ォ ーマ ン ス を向上す る ために、 フ ァ イ ルを ア ク セ ラ レ イ テ ィ ド モー ド で開 く こ と がで き ます (6.x ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で も ア ク セ ラ レ イ テ ィ ド モー ド で開 く こ と はで き ま し たが、 ノ ーマル モー ド で開いた も の と 解釈 さ れ ま し た) 。 ア ク セ ラ レ イ テ ィ ド モー ド で フ ァ イ ルを開 く と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は、 そ の フ ァ イ ルに対す る ト ラ ン ザ ク シ ョ ン ロ グ を実行 し ま せん。 上記の 「注 意」 を参照 し て く だ さ い。 -1 7 100 リ ー ド オン リ ー リ ー ド オ ン リ ー モー ド で フ ァ イ ルを開 く と 、フ ァ イ ルは読み取 る こ と し か で き ず、 更新で き な く な り ます。 こ のモー ド を使 う と 、 ト ラ ンザ ク シ ョ ナ ル イ ン タ ーフ ェ イ ス では自動的に回復で き ない破損デー タ を含む フ ァ イ ルを開 く こ と がで き ます。 フ ァ イ ルの イ ンデ ッ ク ス のデー タ が壊れてい る 場合は、 リ ー ド オ ン リ ー モー ド で フ ァ イ ル を開 き 、 Step Next (24) オペ レーシ ョ ン を使用す る こ と に よ っ て、 レ コ ー ド を取得で き ます。 -2 8 101 100 Open (0) 表 24 オープ ン モー ド 説明 選択しない ローカル エンジ ンで実行 リモート エンジ ンで実行 ベリ ファイ こ のモー ド は無視 さ れます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では こ のモー ド を指定 し て も 、 フ ァ イ ルは ノ ーマル モー ド で開かれます。 以前の バージ ョ ンの ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、ベ リ フ ァ イ モー ド を指定す る と 、 デ ィ ス ク に書 き 込ま れたデー タ が正 し いか ど う かが検証 さ れま し た。 -3 適用外 適用外 エ ク ス ク ルーシブ エ ク ス ク ルーシブ モー ド は フ ァ イ ルに対す る 排他的な ア ク セ ス を可能に し ま す。 あ る アプ リ ケーシ ョ ン が排他的にア ク セ ス し てい る フ ァ イ ルは、 閉 じ る ま で、 ほかのアプ リ ケーシ ョ ンか ら 開 く こ と がで き な く な り ます。 -4 10 103 開いてい る フ ァ イ ルの最大数について定め ら れた制限はあ り ま せん。 同時に開 く こ と がで き る フ ァ イ ルの数は、 使用可能な メ モ リ に応 じ て変わ り ます。 フ ァ イ ルは、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て 1 回だけ開かれます。( ト ラ ンザ ク シ ョ ナル イ ン タ ー フ ェ イ ス は、 複数の ク ラ イ ア ン ト が同時に 1 つの フ ァ イ ルを開いてい る 状況や、 単独の ク ラ イ ア ン ト が フ ァ イ ル のポジシ ョ ン ブ ロ ッ ク を複数持っ てい る 状況を認識 し 、処理 し ます。) 拡張フ ァ イ ルを開 く と き 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では 1 つのハン ド ルが使用 さ れ、 ベース フ ァ イ ル と すべてのエ ク ス テ ン シ ョ ン フ ァ イ ル が開かれます。 結果 Open オペレーシ ョ ン が正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では目的の フ ァ イ ルに フ ァ イ ル ハン ド ルが割 り 当て ら れ、 新 し く 開いた フ ァ イ ルの Open 呼び出 し で渡 し たポジシ ョ ン ブ ロ ッ ク が予約 さ れ て、 その フ ァ イ ルがア ク セ ス可能な状態にな り ます。 Open オペレーシ ョ ン が正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 2 アプ リ ケーシ ョ ンで I/O エ ラ ーが発生 し ま し た。 11 指定 さ れた フ ァ イ ル名は不正です。 12 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は指定 さ れた フ ァ イ ルを見つけ ら れません。 20 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ま たは Btrieve リ ク エ ス タ ーが非ア ク テ ィ ブです。 46 要求 し た フ ァ イ ルへのア ク セ ス は拒否 さ れま し た。 84 レ コ ー ド ま たはページが ロ ッ ク さ れてい ます。 85 フ ァ イ ルは ロ ッ ク さ れてい ます。 86 フ ァ イ ル テーブルがいっぱいです。 87 ハン ド ル テーブルがいっぱいです。 88 アプ リ ケーシ ョ ンでモー ド の不一致エ ラ ーが発生 し ま し た。 101 Btrieve API オペ レーシ ョ ン 次の表には、 ロ ーカル ク ラ イ ア ン ト で使用可能なオープン モー ド の組み合わせを示 し ます。 表 25 ロー カル ク ラ イ ア ン ト のオープ ン モー ド の組み合わせ ローカル クライアント 1 のオープン モード ローカル クライアント 2 のオープン モード 結果 ノ ーマル ノ ーマル 正常終了 リ ー ド オン リ ー 正常終了 エ ク ス ク ルーシブ ス テー タ ス コ ー ド 88 アクセラ レイテ ィ ド 正常終了 ノ ーマル 正常終了 リ ー ド オン リ ー 正常終了 エ ク ス ク ルーシブ ス テー タ ス コ ー ド 88 アクセラ レイテ ィ ド 正常終了 ノ ーマル ス テー タ ス コ ー ド 88 リ ー ド オン リ ー ス テー タ ス コ ー ド 88 エ ク ス ク ルーシブ ス テー タ ス コ ー ド 88 アクセラ レイテ ィ ド ス テー タ ス コ ー ド 88 ノ ーマル 正常終了 リ ー ド オン リ ー 正常終了 エ ク ス ク ルーシブ ス テー タ ス コ ー ド 88 アクセラ レイテ ィ ド 正常終了 リ ー ド オン リ ー エ ク ス ク ルーシブ アクセラ レイテ ィ ド ポジ シ ョ ニ ング Open オペレーシ ョ ン を実行 し て も 、 ポジシ ョ ニ ン グは確立 し ません。 ただ し 、 次の物理レ コ ー ド が フ ァ イ ルの先 頭の物理レ コ ー ド にな り ます。 102 Reset (28) Reset (28) Reset オペレーシ ョ ン (B_RESET) では、 ク ラ イ ア ン ト が保持 し てい る すべての リ ソ ース を解放 し ます。 こ のオ ペレーシ ョ ンは、 ク ラ イ ア ン ト が実行中の ト ラ ンザ ク シ ョ ン を中止 し 、 すべての ロ ッ ク を解除 し 、 さ ら に、 ク ラ イ ア ン ト が開いてい る フ ァ イ ルをすべて閉 じ ます。 パラ メ ー タ ー オペレーション コード 送り値 ポジション ブロック データ バッ データ バッ ファー ファー長 ○ キー バッ ファー キー番号 ○ ○ 戻り値 前提条件 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ま たは リ ク エ ス タ ーが ロ ー ド さ れていて、 Reset 呼び出 し を発行す る ク ラ イ ア ン ト が ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス と の接続を確立 し ていれば、 アプ リ ケーシ ョ ン ではいつで も Reset オペレーシ ョ ン を発行で き ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス と の接続は、 た と えば、 フ ァ イ ル を開いた り 、 Pervasive PSQL ユーテ ィ リ テ ィ を使っ て フ ァ イ ルの ス テー タ ス を要求 し た り す る こ と に よ り 確立 し ます。 手順 1 オペレーシ ョ ン コ ー ド に 28 を設定 し ます。 2 キー番号お よ びキー バ ッ フ ァ ー パ ラ メ ー タ ーに 0 を設定 し ます。 結果 Reset オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では指定 し た ク ラ イ ア ン ト 、 ウ ィ ン ド ウ、 ま たはセ ッ シ ョ ンに対 し て次の動作が実行 さ れます。 1 実行中の ト ラ ンザ ク シ ョ ンがすべて中止 さ れ る 。 2 保持 さ れてい る すべての ロ ッ ク が解除 さ れ る 。 3 開いてい る フ ァ イ ルがすべて閉 じ ら れ る 。 Reset オペレーシ ョ ンが正常に実行 さ れなかっ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 0 以外の ス テー タ ス コー ド が返 さ れます。 ポジ シ ョ ニ ング Reset オペレーシ ョ ン を実行す る と 、 開いてい る フ ァ イ ルがすべて閉 じ ら れ る ため、 すべてのカ レ ン シーが消去 さ れます。 103 Btrieve API オペ レーシ ョ ン Set Directory (17) Set Directory オペレーシ ョ ン (B_SET_DIR) では、 指定 し たパ ス名を現在のデ ィ レ ク ト リ と し て設定 し ます。 パラ メ ー タ ー オペレーション コード 送り値 ポジション ブロック データ バッ データ バッ ファー ファー長 キー バッ ファー ○ キー番号 ○ 戻り値 前提条件 対象 と な る 論理デ ィ ス ク ド ラ イ ブお よ びデ ィ レ ク ト リ がア ク セ ス可能であ る こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 17 を設定 し ます。 2 キー バ ッ フ ァ ーに、 論理デ ィ ス ク ド ラ イ ブお よ びデ ィ レ ク ト リ パ ス を、 最後にバ イ ナ リ 0 を付けて格納 し ます。 ド ラ イ ブ名を省略 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではデフ ォ ル ト の ド ラ イ ブが使用 さ れます。 デ ィ レ ク ト リ の絶対パ ス を指定 し なか っ た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではキー バ ッ フ ァ ーに指定 し たデ ィ レ ク ト リ パ ス が現在のデ ィ レ ク ト リ に追加 さ れます。 Pervasive PSQL ク ラ イ ア ン ト でサポー ト す る パ ス名の詳細については、 『Getting Started with Pervasive PSQL』 の 「Pervasive リ ク エ ス タ ーでサポー ト す る ネ ッ ト ワー ク パ ス の形式」 を参照 し て く だ さ い。 結果 Set Directory オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではキー バ ッ フ ァ ー に指定 し たデ ィ レ ク ト リ が現在のデ ィ レ ク ト リ にな り ます。 Set Directory オペレーシ ョ ンが正常に実行 さ れなか っ た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では現在の デ ィ レ ク ト リ は変更 さ れない ま ま で、 0 以外の ス テー タ ス コ ー ド が返 さ れます。 ポジ シ ョ ニ ング Set Directory オペレーシ ョ ンは、 ポジシ ョ ニ ン グに ま っ た く 影響 し ません。 104 Set Owner (29) Set Owner (29) Set Owner オペ レ ーシ ョ ン (B_SET_OWNER) では フ ァ イ ルにオーナー ネーム (パ ス ワ ー ド ) を割 り 当て ま す。 フ ァ イ ルにオーナー ネームが設定 さ れてい る 場合は、 ユーザーやアプ リ ケーシ ョ ンはその フ ァ イ ルにア ク セ スす る たびにオーナー ネーム を指定す る 必要があ り ます。 オーナー ネームがすべてのア ク セ ス権に対 し 、 あ る いは更 新権限だけに対 し 要求 さ れ る よ う に指定す る こ と がで き ます。 オーナー ネーム を割 り 当て る と き に、デ ィ ス ク 上の フ ァ イ ルのデー タ を暗号化する よ う ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に指示す る こ と も で き ます。 デー タ の暗号化を指定す る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では Set Owner オペレーシ ョ ンの実行中にすべてのデー タ が暗号化 さ れます。 こ のため、 フ ァ イ ル サ イ ズが大 き いほ ど、 Set Owner オペレーシ ョ ンの完了に要する 時間は長 く な り ます。 パラ メ ー タ ー 送り値 戻り値 オペレーション コード ポジション ブロック ○ ○ データ バッ データ バッ ファー ファー長 ○ ○ キー バッ ファー キー番号 ○ ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 ト ラ ンザ ク シ ョ ンが実行中でない こ と が必要です。 フ ァ イ ルに既にオーナ ネームが設定 さ れていてはいけ ません。 手順 1 オペレーシ ョ ン コ ー ド に 29 を設定 し ます。 オプシ ョ ンで、 +17000 のバ イ ア ス を含め る と 最長 24 バ イ ト (半角 24 文字) のオーナーネーム (「長い」 オー ナーネーム) を作成す る こ と がで き ます。 こ のバ イ ア ス は btrconst.h に B_LONG_OWNER_NAME_BIAS と し て も 定義 さ れてい ます。 Btrconst.h は、 Btriev ソ フ ト ウ ェ ア開発キ ッ ト (SDK) で提供 さ れます。 長いオーナー ネーム を指定 し た場合、 そのデー タ フ ァ イ ルは Pervasive PSQL v10 SP1 よ り 前のデー タ ベース エン ジ ンで読み取 る こ と はで き ません。 長いオーナー ネーム を使用 し たデー タ フ ァ イ ルは、v9.5 よ り 前の フ ァ イ ル形式に リ ビル ド し よ う と す る 場合、 そのオーナー ネーム を最初に削除 し ておかない と リ ビル ド す る こ と がで き ません。 2 保護す る フ ァ イ ルを識別す る ポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ー と キー バ ッ フ ァ ーの両方にオーナー ネーム を格納 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ー フ ェ イ ス は、 誤っ て不正な値を指定す る のを防 ぐ ために、 オーナー ネーム を両方のバ ッ フ ァ ーに格納す る こ と を要求 し ます。 +17000 のバ イ ア ス が指定 さ れない場合、 オーナー ネームは 8 バ イ ト (半角 8 文字) ま での範囲で指定可能 で、 末尾はバ イ ナ リ 0 にな っ てい る 必要があ り ます。 こ れは 「短い」 オーナー ネーム と 呼びます。 +17000 の バ イ ア ス が指定 さ れた場合、 オーナー ネームは 24 バ イ ト (半角 24 文字) ま での範囲で指定可能で、 末尾は バ イ ナ リ 0 にな っ てい る 必要があ り ます。 こ れは 「長い」 オーナー ネーム と 呼びます。 ど ち ら の場合 も 、 オー ナー ネーム をすべて スペース (0x20) で構成す る こ と はで き ません。 4 デー タ バ ッ フ ァ ー長パ ラ メ ー タ ーに、 バ イ ナ リ 0 を含めたオーナー ネームの長 さ を指定 し ます。 オーナー ネームが、 指定可能な最大長 (8 文字ま たは 24 文字) よ り も 短い場合、 その最大長に満たない部分には空白 が埋め込まれます。 105 Btrieve API オペ レーシ ョ ン 5 キー番号に、 フ ァ イ ルに対す る ア ク セ ス制限 と 暗号化の タ イ プ を指定する 整数を設定 し ます (表 26 を参照 し て く だ さ い)。 詳細 一度オーナー ネーム を指定す る と 、 「Clear Owner (30) 」 オペレーシ ョ ン を発行す る ま でそのオーナー ネームは 有効です。 次の表に、 キー番号に指定で き る ア ク セ ス制限コ ー ド の一覧を示 し ます。 表 26 ア ク セスおよび暗号化の コ ー ド コード 説明 0 すべてのア ク セ ス モー ド でオーナー ネームが必要にな り ます (デー タ は 暗号化 さ れません)。 1 読み取 り 専用ア ク セ ス はオーナ ネームがな く て も 許可 さ れます (デー タ は暗号化 さ れません)。 2 すべてのア ク セ ス モー ド でオーナー ネームが必要にな り ます (デー タ が 暗号化 さ れます)。 3 読み取 り 専用ア ク セ ス はオーナー ネームがな く て も 許可 さ れます (デー タ が暗号化 さ れます)。 結果 Set Owner オペレーシ ョ ンが正常に終了 し た場合、 それ以降のオペレーシ ョ ンでは正 し いオーナー ネームが指定 さ れない限 り 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で フ ァ イ ルへのア ク セ スやフ ァ イ ルの変更を行えな く な り ます。 唯一の例外は、 オーナー ネームの指定な し で読み取 り 専用ア ク セ ス が許可 さ れてい る 場合です。 さ ら に、 Set Owner オペレーシ ョ ンが正常に終了す る と 、暗号化が指定 さ れてい る 場合には、 ト ラ ンザ ク シ ョ ナル イ ン タ ー フ ェ イ ス で フ ァ イ ル内のデー タ が暗号化 さ れます。 暗号化は直ちに行われ、 フ ァ イ ル全体が暗号化 さ れ る ま では ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス の制御下にあ り ます。 フ ァ イ ル サ イ ズが大 き いほ ど、 暗号化処理にかか る 時間は長 く な り ます。 暗号化 さ れた フ ァ イ ルか ら の デー タ の読み取 り は、 暗号化 さ れていない フ ァ イ ルか ら デー タ を読み取 る 場合 よ り も 遅 く な り ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス はデ ィ ス ク か ら ページ を読み込む際にそのページ を解読 し 、デ ィ ス ク に書 き 込む際に 再度ページ を暗号化 し ます。 キ ャ ッ シ ュ が小 さ い場合、 あ る いは比較的大量の変更操作を行 う 場合には、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は暗号化ルーチン を さ ら に頻繁に実行 し なければな り ません。 Set Owner オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 41 実行 し よ う と し た操作は ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では許可 さ れてい ません。 50 フ ァ イ ルのオーナーは既に設定 さ れてい ます。 51 オーナー ネームが不正です。 ポジ シ ョ ニ ング Set Owner オペレーシ ョ ンは、 ポジシ ョ ニ ン グに ま っ た く 影響 し ません。 106 Stat (15) Stat (15) Stat オペレーシ ョ ン (B_STAT) では、 フ ァ イ ルに定義 さ れてい る 特性を取得 し ます。 ま た、 フ ァ イ ル内の レ コ ー ド 数、 フ ァ イ ルの各 イ ンデ ッ ク ス に格納 さ れてい る 重複のないキー値の数、 フ ァ イ ル内の未使用ページ数な ど、 フ ァ イ ルの内容についての情報 も 返 し ます。 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ 戻り値 データ バッ データ バッ ファー ファー長 キー バッ ファー キー番号 ○ ○ ○ ○ ○ ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 15 を設定 し ます。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 フ ァ イ ルに定義 さ れてい る 統計情報を格納する のに十分なデー タ バ ッ フ ァ ーを確保 し ます。 4 デー タ バ ッ フ ァ ー長を指定 し ます。 フ ァ イ ルの統計情報を十分に格納で き る 長 さ が必要です (詳細について は、 表 27 お よ び表 28 を参照 し て く だ さ い)。 5 少な く と も 255 バ イ ト のキー バ ッ フ ァ ーを指定 し ます。 6 次の よ う にキー番号を設定 し ます。 フ ァ イ ルのバージ ョ ンお よ び未使用の重複ポ イ ン タ ーについての情報を除外す る 場合は、 0 を指定 し ま す。 表 27 を参考に し て、 戻 り デー タ バ ッ フ ァ ーを解析 し ます。 フ ァ イ ルのバージ ョ ンお よ び未使用の重複ポ イ ン タ ーについての情報を含め る 場合は、 -1 (0xFF) を指 定 し ます。 表 28 を参考に し て、 戻 り デー タ バ ッ フ ァ ーを解析 し ます。 詳細 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 フ ァ イ ルの作成以降に追加 さ れた キー も 含めて、 フ ァ イ ル内のすべ て の キーについ て の情報が返 さ れ ま す。 こ の キー情報には、 適用可能な ACS 定義 も 含 ま れ ま す。 デー タ バ ッ フ ァ ー領域を確保す る 際、 こ の よ う な追加情報について考慮す る 必要があ り ま す。 特に、 こ こ では、 Create (0) オペレーシ ョ ンで使用 し た も の と 同 じ デー タ バ ッ フ ァ ーは使用 し ないで く だ さ い。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、フ ァ イ ルに最大 119 ま でのキー と 複数の ACS を定義で き る ため、可 能な最長デー タ バ ッ フ ァ ーは 33,455 バ イ ト にな り ます (つま り 、 16 + (119 * 16) + (119 * 265) です)。 し か し 、 こ れほ ど大 き なデー タ バ ッ フ ァ ーが必要にな る こ と はおそ ら く あ り ません。 実際、 あ る 特定の情報 し か必要ない場 合は、 デー タ バ ッ フ ァ ーを小 さ く し た方が良い場合があ り ます。 た と えば、 デー タ バ ッ フ ァ ー長を 1,920 バ イ ト (つま り 、 16 + (16 * 119)) に設定 し た と し ます。 実際、 こ の よ う な設定に し た場合、 キー情報はすべて返 さ れ ま すが、 ACS は必ず し も すべては返 さ れ ません。 アプ リ ケーシ ョ ン で ACS についての情報が必要ない場合は、 こ の方法を使 う こ と がで き ます。 107 Btrieve API オペ レーシ ョ ン キー番号パ ラ メ ー タ ーに値 0 を指定 し た場合、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では次の表に示す よ う な Stat 情報が返 さ れます。 表 27 フ ァ イルのバージ ョ ン情報を除外 し たデー タ バ ッ フ ァ ー 要素 説明 フ ァ イ ル仕様 レ コー ド 長 2 ページ サ イ ズ 2 イ ンデ ッ ク ス数 2 レ コー ド 数 4 フ ァ イル フ ラ グ 2 予約ワ ー ド 2 未使用ページ 2 キー ポジ シ ョ ン 2 キー長 2 キー フ ラ グ 2 重複のないキー値の数 4 拡張デー タ 型 1 ヌ ル値 1 予約済み 2 キー番号 1 ACS (オル タ ネー ト コ レーテ ィ ン グ シーケ ン ス) 番号 1 キー仕様 (各セ グ メ ン ト について繰 り 返 さ れ る ) 長さ (バイト単位) ACS 番号 0 ACS 265 ... ... ... ACS 番号 x ACS 265 キー番号パ ラ メ ー タ ーに値 -1 を指定 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では次の表に示す よ う な Stat 情報が返 さ れます。 表 28 フ ァ イルのバージ ョ ン情報を含むデー タ バ ッ フ ァ ー 108 要素 説明 長さ (バイト単位) フ ァ イ ル仕様 レ コー ド 長 2 ページ サ イ ズ 2 イ ンデ ッ ク ス数 1 フ ァ イ ルのバージ ョ ン番号 1 レ コー ド 数 4 Stat (15) 表 28 フ ァ イルのバージ ョ ン情報を含むデー タ バ ッ フ ァ ー 要素 説明 長さ (バイト単位) フ ァ イル フ ラ グ 2 未使用の重複ポ イ ン タ ー数 1 予約バ イ ト 1 未使用ページ 2 キー ポジ シ ョ ン 2 キー長 2 キー フ ラ グ 2 重複のないキー値の数 4 拡張デー タ 型 1 ヌ ル値 1 予約済み 2 キー番号 1 (キー仕様の最後の メ ンバー。 こ こ ま でが繰 り 返 さ れ る 要素) ACS (オル タ ネー ト コ レーテ ィ ン グ シーケ ン ス) 番号 1 ACS 番号 0 ACS 265 ... ... ... ACS 番号 x ACS 265 キー仕様(各キー セ グ メ ン ト について繰 り 返 さ れ る ) フ ァ イル仕様 戻 り デー タ バ ッ フ ァ ーのフ ァ イ ル仕様フ ィ ール ド は、 次の点を除いて、 「Create (14)」 で説明 し た も の と ま っ た く 同 じ です。 フ ァ イ ル仕様領域 デー タ バ ッ フ ァ ーに フ ァ イ ルのバージ ョ ン情報が含まれてい る 場合は、 イ ンデ ッ ク ス数が 1 バ イ ト 長に な り 、 その後に 1 バ イ ト の フ ァ イ ルのバージ ョ ン情報が続 き ます。 フ ァ イ ルのバージ ョ ン番号の値を 10 進数に変換 し ないで く だ さ い。 0x70 と い う 値はその フ ァ イ ルが v7.0 フ ァ イ ルであ る こ と を示 し 、 0x60 と い う 値はその フ ァ イ ルが v6.x フ ァ イ ルであ る こ と を示 し ます (以下同様)。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではフ ァ イ ルを作成する と き 、 フ ァ イ ルに定義 さ れてい る 属性に従っ てバージ ョ ン番号が 割 り 当て ら れます。 レ コ ー ド 数は、 フ ァ イ ル内の レ コ ー ド の数を表す 4 バ イ ト 長の値です。 フ ァ イ ル フ ラ グ ワ ー ド で、 ビ ッ ト 9 と 12 は次の よ う な意味を持ち ます。 ビ ッ ト 9 = 1 かつ ビ ッ ト 12 = 0 フ ァ イ ルはシ ス テ ム デー タ を使っ て作成 さ れま し た。 ( こ れは、 必ず し も シ ス テ ム定義の ロ グ キーが現在使用 さ れてい る こ と を意味 し ま せん。 削除 さ れた 可能性 も あ り ます。) ビ ッ ト 9 = 1 かつ ビ ッ ト 12 = 1 フ ァ イ ルはシ ス テ ム デー タ を使わずに作成 さ れま し た。 Stat オペレーシ ョ ンでは、 シ ス テ ム デー タ がデフ ォ ル ト で組み込まれたのか、 明示的に組み込まれたの かは示 さ れません。 109 Btrieve API オペ レーシ ョ ン デー タ バ ッ フ ァ ーに フ ァ イ ルのバージ ョ ン情報が含まれてい る 場合、 1 バ イ ト の未使用重複ポ イ ン タ ー の数が フ ァ イ ル フ ラ グ フ ィ ール ド に続 き 、フ ァ イ ル内に残っ てい る 未使用の重複ポ イ ン タ ーの数が示 さ れます。 予約領域が割 り 当て ら れますが、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ スは Stat オペレーシ ョ ン では こ の 領域を無視 し ます。 キー仕様 戻 り デー タ バ ッ フ ァ ーのキー仕様フ ィ ール ド は Table 10、 表 10 で説明 し た も の と 基本的には同 じ です。 ただ し 、 キー フ ラ グ フ ィ ール ド の後に 4 バ イ ト の重複のないキー値の数が続き 、指定 さ れた キーに対 し て一意で重複のな い値を持つレ コ ー ド の数が示 さ れ る 点が異な り ます。 ACS 戻 り デー タ バ ッ フ ァ ーの ACS 定義は、 「Create (14)」 で説明 し た も の と ま っ た く 同 じ です。 結果 Stat オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではフ ァ イ ルお よ びキーの特 性がデー タ バ ッ フ ァ ーに返 さ れ、デー タ バ ッ フ ァ ーの長 さ がデー タ バ ッ フ ァ ー長に返 さ れます。対象 と な る フ ァ イ ルが拡張フ ァ イ ルであ る 場合、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では先頭のエ ク ス テ ン シ ョ ン フ ァ イ ルの フ ァ イ ル名がキー バ ッ フ ァ ーに返 さ れます。 先頭のエ ク ス テ ン シ ョ ン フ ァ イ ルの フ ァ イ ル名が 63 バ イ ト を超え る 場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではフ ァ イ ル名が切 り 詰め ら れます。 フ ァ イ ルが拡張フ ァ イ ルで ない場合は、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではキー バ ッ フ ァ ーの先頭バ イ ト が 0 に初期化 さ れます(Stat Extended オペレーシ ョ ン を使 う と 、 拡張フ ァ イ ルに関す る 統計情報を取得で き ます)。 Stat オペレーシ ョ ンが正常に実行 さ れなかっ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 ポジ シ ョ ニ ング Stat オペレーシ ョ ンは、 ポジシ ョ ニ ン グに ま っ た く 影響 し ません。 110 Stat Extended (65) Stat Extended (65) Stat Extended オペ レ ーシ ョ ン (B_EXTENDED_STAT) にはい く つかのサブ フ ァ ン ク シ ョ ン が あ り ま す。 こ れ を 使っ て、 アプ リ ケーシ ョ ンは開いてい る フ ァ イ ルについての情報を収集す る こ と がで き ます。 表 29 Stat Extended (65) のサブ フ ァ ン ク シ ョ ン サブファンクション ID 説明 1 エ ク ス テ ン シ ョ ン フ ァ イ ル名の一覧表示 2 フ ァ イ ルのシ ス テ ム デー タ 情報 3 重複に よ る 競合レ コ ー ド お よ びキーの識別 4 フ ァ イ ル情報 5 ゲー ト ウ ェ イ の識別 6 ロ ッ ク オーナーの識別 7 セキ ュ リ テ ィ 情報 8 ス テー タ ス コ ー ド 71 (参照整合性の定義に違反があ り ます) の発生原因 と な る 、 テーブル名ま た はフ ァ イ ル名の一覧表示 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ ○ ○ ○ ○ ○ 戻り値 データ バッ データ バッ ファー ファー長 キー バッ ファー キー番号 ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 65 を設定 し ます。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ーに拡張 Stat 構造体を格納 し ます。各サブ フ ァ ン ク シ ョ ンで必要な拡張 Stat 構造体の詳細に ついては、 以降のセ ク シ ョ ン を参照 し て く だ さ い。 4 デー タ バ ッ フ ァ ー長を指定 し ます。 5 キー番号に 0 を設定 し ます。 サブ フ ァ ン ク シ ョ ン 1 : 拡張フ ァ イル情報 入力ポジシ ョ ン ブ ロ ッ ク で指定 さ れた フ ァ イ ルの場合、 こ のサブ フ ァ ン ク シ ョ ンは、指定デー タ フ ァ イ ル と 関連 付け ら れたエ ク ス テ ン シ ョ ン フ ァ イ ルについての情報を返 し ます。 返 さ れ る 情報には、 存在す る エ ク ス テ ン シ ョ ン フ ァ イ ルの数、 関数に よ っ て返 さ れた番号、 お よ び返 さ れた フ ァ イ ルの名前が含まれます。 111 Btrieve API オペ レーシ ョ ン 入力デー タ バ ッ フ ァ ー構造体 エ ク ス テ ン シ ョ ン フ ァ イ ルに関す る 情報を取得す る には、 デー タ バ ッ フ ァ ーに拡張フ ァ イ ル デ ィ ス ク リ プ タ ー を次の と お り に作成す る 必要があ り ます。 表 30 拡張 フ ァ イル デ ィ ス ク リ プ タ ー 要素 長さ (バ イト単位) 説明 識別バ イ ト 4 Stat Extended 呼び出 し の タ イ プ。 Extended Stat 呼び出 し を 示す 0x45、 0x78、 0x53、 0x74 の 4 バ イ ト を指定 し ます。 こ れ ら は ASCII の ExSt、 ま たは Intel 型、 LoHi お よ び リ ト ル エ ンデ ィ ア ン方式のハー ド ウ ェ アの値 0x74537845 に相当 し ます。 サブ フ ァ ン ク シ ョ ン 4 Stat Extended 呼び出 し の タ イ プ。 0x00000001 を指定 し ます。 名前空間 4 フ ァ イ ルの命名規則。 0x00000000 を指定 し ます。 フ ァ イ ルの最大数 4 返 さ れ る フ ァ イ ル名の最大数。 こ の値には、 拡張フ ァ イ ルを構成す る エ ク ス テ ン シ ョ ン フ ァ イ ルの数を超え る 値を設定で き ます (拡張フ ァ イ ルには最大 32 個のエ ク ス テ ン シ ョ ン フ ァ イ ルが含まれます)。 先頭フ ァ イ ルのシーケ ン ス 4 返 さ れ る 先頭の フ ァ イ ル名のシーケ ン ス 番号。 ベー ス フ ァ イ ルか ら 始め る に は 0 を指定 し 、 先頭のエ ク ス テ ン シ ョ ン フ ァ イ ルか ら 始め る には 1 を指定 し ます (以下同様) 。 エ ク ス テ ン シ ョ ン フ ァ イ ルの数を超え る 値を指定す る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら ス テー タ ス コ ー ド 0 が返 さ れます が、 フ ァ イ ル名は何 も 返 さ れません。 バ ッ フ ァ ー スペース n 戻 り デー タ 用に余分な空 き 領域を確保す る こ と がで き ま す。 ス テー タ ス コ ー ド 22 が返 さ れた場合は、も っ と 大 き なデー タ バ ッ フ ァ ー サ イ ズ を指定 し てオ ペレーシ ョ ン を再試行 し て く だ さ い。 出力デー タ バ ッ フ ァ ー構造体 拡張フ ァ イ ル サブ フ ァ ン ク シ ョ ンの場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではデー タ バ ッ フ ァ ー長パ ラ メ ー タ ーの値が更新 さ れ、表 31 で説明 さ れてい る よ う な拡張フ ァ イ ル構造体がデー タ バ ッ フ ァ ーに返 さ れます。 表 31 拡張 フ ァ イルの戻 り バ ッ フ ァ ー 要素 長さ (バ イト単位) 説明 フ ァ イ ル数 4 拡張フ ァ イ ルを構成す る オペレーテ ィ ン グ シ ス テ ム フ ァ イ ルの数。 エ ク ス テ ン シ ョ ン フ ァ イ ル数 4 返 さ れたエ ク ス テ ン シ ョ ン フ ァ イ ルの数。 フ ァ イル名部分 (返 さ れた各フ ァ イル名について繰 り 返 さ れる) フ ァ イ ル名の長 さ 4 エ ク ス テ ン シ ョ ン フ ァ イ ル名の長 さ 。 フ ァ イ ル名 n エ ク ス テ ン シ ョ ン フ ァ イ ル名。 サブ フ ァ ン ク シ ョ ン 2 : シス テム デー タ 情報 入力ポジシ ョ ン ブ ロ ッ ク で指定 さ れた フ ァ イ ルの場合、 こ のサブ フ ァ ン ク シ ョ ンは、 フ ァ イ ルに定義 さ れたシ ス テ ム キーがあ る か ど う か、 ま た、 その フ ァ イ ルは ロ グ可能 ( ト ラ ンザ ク シ ョ ン一貫性保守が可能) であ る か ど う かに関す る 情報を返 し ます。 112 Stat Extended (65) 入力デー タ バ ッ フ ァ ー構造体 フ ァ イ ルでのシ ス テ ム デー タ の使用に関す る 情報を取得す る には、 デー タ バ ッ フ ァ ーにシ ス テ ム デー タ デ ィ ス ク リ プ タ ーを次の と お り に作成する 必要があ り ます。 表 32 シ ス テム デー タ デ ィ ス ク リ プ タ ー 要素 長さ (バ イト単位) 説明 識別バ イ ト 4 Extended Stat 呼び出 し のための一意な識別子。 ExSt を指定 し ます。 表 30 を参 照 し て く だ さ い。 サブ フ ァ ン ク シ ョ ン 4 Stat Extended 呼び出 し の タ イ プ。 0x00000002 を指定 し ます。 出力デー タ バ ッ フ ァ ー構造体 シ ス テ ム デー タ サブ フ ァ ン ク シ ョ ン の場合、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では次の よ う な シ ス テ ム デー タ 構造体がデー タ バ ッ フ ァ ーに返 さ れます。 表 33 シ ス テム デー タ の戻 り バ ッ フ ァ ー 要素 長さ (バ イト単位) 説明 シ ス テ ム デー タ を持つ 1 フ ァ イ ルの レ コ ー ド にシ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ と も 言い ま す) が含ま れてい る か ど う かを示 し ます。 1 = Yes、 0 = No。 ロ グ キーを持つ 1 シ ス テ ム定義の ロ グ キーが現在使用 さ れてい る か、 それ と も 削除 さ れてい る か ど う かを示 し ます。 1 = Yes、 0 = No (削除 さ れた)。 ロ グ可能 1 ト ラ ン ザ ク シ ョ ン一貫性保守を実現す る ために使用で き る 重複のないキーが フ ァ イ ルにあ る か ど う かを示 し ます。 こ のキーは、 ユーザー定義の重複のない キーか、 シ ス テ ム定義の ロ グ キーのいずれかにな り ます。 1 = Yes、 0 = No。 ロ グ キー番号 1 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で ト ラ ンザ ク シ ョ ン ロ グ キー と し て現 在使用 さ れてい る キー番号。 シ ス テ ム定義の ロ グ キーが ト ラ ンザ ク シ ョ ン ロ グ キー と し て使用 さ れてい る 場合、 こ の値は 125 にな り ます。 シ ス テ ム デー タ のサ イ ズ 2 シ ス テ ム定義の ロ グ キーのサ イ ズで、 8 にな り ます。 シ ス テ ム デー タ のバージ ョ ン 2 デー タ ベース エン ジ ンの メ ジ ャ ー バージ ョ ン を含んでい る 2 バ イ ト フ ィ ール ド 。 た と えば、 バージ ョ ン 9.x な ら ば 0x0009、 バージ ョ ン 10.x な ら ば 0x000a と な り ます。 サブ フ ァ ン ク シ ョ ン 3 : 重複レ コ ー ド によ る競合情報 入力ポジシ ョ ン ブ ロ ッ ク で指定 さ れた フ ァ イ ルの場合、 こ のサブ フ ァ ン ク シ ョ ンは、指定デー タ フ ァ イ ル と 関連 付け ら れたエ ク ス テ ン シ ョ ン フ ァ イ ルについての情報を返 し ます。 返 さ れ る 情報には、 直前の失敗 し た挿入ま た は更新操作で ス テー タ ス コ ー ド 5 (重複キー) の発生原因 と な っ た、 レ コ ー ド ア ド レ スお よ びキー番号が含まれ ます。 113 Btrieve API オペ レーシ ョ ン 入力デー タ バ ッ フ ァ ー構造体 一番最近ス テー タ ス コ ー ド 5 (重複キー) を発生 さ せた レ コ ー ド ア ド レ スお よ びキー番号に関す る 情報を取得す る には、 デー タ バ ッ フ ァ ーに重複レ コ ー ド 情報デ ィ ス ク リ プ タ ーを次の と お り に作成す る 必要があ り ます。 表 34 重複レ コ ー ド によ る競合デ ィ ス ク リ プ タ ー 要素 長さ (バ イト単位) 説明 識別バ イ ト 4 Extended Stat 呼び出 し のための一意な識別子。 ExSt を指定 し ます。 表 30 を参 照 し て く だ さ い。 サブ フ ァ ン ク シ ョ ン 4 Stat Extended 呼び出 し の タ イ プ。 0x00000003 を指定 し ます。 出力デー タ バ ッ フ ァ ー構造体 シ ス テ ム デー タ サブ フ ァ ン ク シ ョ ン の場合、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では次の よ う な シ ス テ ム デー タ 構造体がデー タ バ ッ フ ァ ーに返 さ れます。 表 35 重複レ コ ー ド によ る競合の戻 り バ ッ フ ァ ー 要素 長さ (バ イト単位) 説明 重複レ コ ー ド ア ド レ ス 4 重複す る キー値を含んでい る レ コ ー ド の物理ア ド レ ス。 キー番号 4 重複す る 値を含んでい る キーのキー番号。 サブ フ ァ ン ク シ ョ ン 4 : フ ァ イル情報 入力ポジシ ョ ン ブ ロ ッ ク で指定 さ れた フ ァ イ ルの場合、 こ のサブ フ ァ ン ク シ ョ ンは、指定デー タ フ ァ イ ル と 関連 付け ら れたエ ク ス テ ン シ ョ ン フ ァ イ ルについての情報を返 し ます。 返 さ れ る 情報には次の も のが含まれます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が フ ァ イ ルの識別に使用する 内部フ ァ イ ル ID、 現在開いてい る フ ァ イ ル ハ ン ド ル数、 フ ァ イ ルが前回開かれた と き の タ イ ム ス タ ンプ、 お よ びフ ァ イ ル プ ロ パテ ィ を示す さ ま ざ ま な フ ラ グ があ り ます。 入力デー タ バ ッ フ ァ ー構造体 開いてい る フ ァ イ ルに関す る 情報を取得す る には、デー タ バ ッ フ ァ ーに フ ァ イ ル情報デ ィ ス ク リ プ タ ーを次の と お り に作成す る 必要があ り ます。 表 36 フ ァ イル情報デ ィ ス ク リ プ タ ー - 開いている フ ァ イル 要素 長さ (バ イト単位) 説明 識別バ イ ト 4 Extended Stat 呼び出 し のための一意な識別子。 ExSt を指定 し ます。 表 30 を参 照 し て く だ さ い。 サブ フ ァ ン ク シ ョ ン 4 Stat Extended 呼び出 し の タ イ プ。 0x00000004 を指定 し ます。 バ ッ フ ァ ー スペース 12 戻 り 情報に必要な追加バ イ ト 。 「出力デー タ バ ッ フ ァ ー構造体」 を参照 し て く だ さ い。 フ ァ イ ル情報サブ フ ァ ン ク シ ョ ン の場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではデー タ バ ッ フ ァ ーに フ ァ イ ル情報構造体が返 さ れます。 114 Stat Extended (65) 出力デー タ バ ッ フ ァ ー構造体 フ ァ イ ル情報サブ フ ァ ン ク シ ョ ンの場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では次の よ う な フ ァ イ ル情報構 造体がデー タ バ ッ フ ァ ーに返 さ れます。 表 37 フ ァ イル情報構造体 - 開いている フ ァ イル 要素 長さ (バ イト単位) 説明 フ ァ イ ル ID 4 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が フ ァ イ ルを識別す る ために使用す る 重複のない番号。 ハン ド ル数 4 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が こ の フ ァ イ ルで開いてい る 現在のハ ン ド ル数。 開かれた と き の タ イ ム ス タ ン プ 4 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が物理フ ァ イ ルを前回開いた と き のシ ス テ ム時間。 シ ス テ ム時間は、 世界協定時刻 (UTC) を基に 1970 年 1 月 1 日 の午前零時か ら の秒数で表 さ れます。 フ ァ イ ルの使用回数 4 各チ ェ ッ ク ポ イ ン ト ま たはシ ス テ ム ト ラ ンザ ク シ ョ ン ご と に こ の数が増加 し ます。 ま た使用回数は FCR に も 置かれ ます。 こ こ で返 さ れ る 数は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス のキ ャ ッ シ ュ 内で表 さ れ る フ ァ イ ルの使用回数 です。 チ ェ ッ ク ポ イ ン ト を開始す る と 、 こ の数が増加 し ます。 フラグ 4 さ ま ざ ま な値を設定で き る 4 バ イ ト の ビ ッ ト マ ッ プ。設定可能な値の説明につ いては、 次の表を参照 し て く だ さ い。 将来的には さ ら に多 く の フ ラ グが追加 さ れます。 フ ラ グ フ ィ ール ド に使用で き る 値については、 次の表で説明 し ます。 表 38 フ ァ イル情報 フ ラ グ 値 名前 説明 0x00000001 明示的 ロ ッ ク 現在フ ァ イ ル上で明示的 ロ ッ ク があ り ます。 0x00000002 ク ラ イ アン ト ト ラ ン ザクシ ョ ン 現在フ ァ イ ル上で、 ク ラ イ ア ン ト ト ラ ンザ ク シ ョ ンが少な く と も 1 つ開いて い ます。 0x00000004 読み取 り 専用 フ ァ イ ルは ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て読み取 り 専用で開 かれてい ます。 こ れは CD-ROM ド ラ イ ブ ま たは読み取 り 専用デ ィ レ ク ト リ で す。 0x00000008 Continuous オ ペ レ ー ション フ ァ イ ルは現在 Continuous オペレーシ ョ ン モー ド です。 0x00000010 参照整合性 フ ァ イ ルには参照整合性制約が設定 さ れてい ます。 0x00000020 オーナー読み取 り /書 き 込み フ ァ イ ルには読み取 り / 書 き 込みのオーナー ネームが割 り 当て ら れてい ます。 フ ァ イ ルの読み取 り / 書 き 込みにはオーナー ネームが要求 さ れます。 0x00000040 オーナー読み取 り OK 書 き 込みを行 う 場合にのみ要求 さ れ る オーナー ネーム を持ち ます。 読み取 り は、 オーナー ネーム な し で行 う こ と がで き ます。 0x00000080 不正な オーナーでの オープン こ の フ ァ イ ルには読み取 り OK のオーナー ネームが割 り 当て ら れてい ます。ハ ン ド ルが不正なオーナー ネームで開かれま し た。 0x00000100 オーナー暗号化 フ ァ イ ルにはオーナー ネームの暗号化フ ラ グが設定 さ れてい ます。 こ の フ ラ グは、フ ァ イ ル内のすべてのページは暗号化 さ れてお り 、テ キ ス ト エデ ィ タ ー では読み取れない こ と を意味 し ます。 115 Btrieve API オペ レーシ ョ ン サブ フ ァ ン ク シ ョ ン 5 : ゲー ト ウ ェ イ情報 入力ポジシ ョ ン ブ ロ ッ ク で指定 さ れた フ ァ イ ルの場合、 こ のサブ フ ァ ン ク シ ョ ンは、 フ ァ イ ルの制御を行 う ゲー ト ウ ェ イ エン ジ ンについての情報を返 し ます。 入力デー タ バ ッ フ ァ ー構造体 指定 さ れた フ ァ イ ルの処理を行 う ゲー ト ウ ェ イ エン ジ ンに関す る 情報を取得す る には、デー タ バ ッ フ ァ ーにゲー ト ウ ェ イ 情報デ ィ ス ク リ プ タ ーを次の と お り に作成する 必要があ り ます。 表 39 ゲー ト ウ ェ イ情報デ ィ ス ク リ プ タ ー 要素 長さ (バ イト単位) 説明 識別バ イ ト 4 Extended Stat 呼び出 し のための一意な識別子。 ExSt を指定 し ます。 表 30 を参 照 し て く だ さ い。 サブ フ ァ ン ク シ ョ ン 4 Stat Extended 呼び出 し の タ イ プ。 0x00000005 を指定 し ます。 バ ッ フ ァ ー スペース 最 低 で も 80 戻 り 情報に必要な追加バ イ ト 。 詳細については、 「出力デー タ バ ッ フ ァ ー構造 体」 を参照 し て く だ さ い。 出力デー タ バ ッ フ ァ ー構造体 ゲー ト ウ ェ イ 情報サブ フ ァ ン ク シ ョ ンの場合、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではデー タ バ ッ フ ァ ー長パ ラ メ ー タ ーが更新 さ れ、 次の よ う なゲー ト ウ ェ イ 情報構造体がデー タ バ ッ フ ァ ーに返 さ れます。 表 40 フ ァ イル情報構造体 - ゲー ト ウ ェ イ情報 要素 長さ (バ イト単位) 説明 メ ジ ャ ー バージ ョ ン 4 エ ン ジ ンの メ ジ ャ ー バージ ョ ン。 た と えば、 バージ ョ ン 7 ま たは 8 な ど です。 マ イ ナー バージ ョ ン 4 エ ン ジ ンのマ イ ナー バージ ョ ン。 た と えば、 05 ま たは 82 な ど です。 パ ッ チ レベル 4 エ ン ジ ンのパ ッ チ レベル。 た と えば、 1、 2、 ま たは 3 にな り ます。 プ ラ ッ ト フ ォ ーム 4 エ ン ジ ンが動作 し てい る オペレーテ ィ ン グ シ ス テ ム プ ラ ッ ト フ ォ ーム。 サーバー名 64 デー タ ベー ス エ ン ジ ン が動作 し て い る マ シ ン の名前を示す ヌ ル終端文字列。 Btrieve API 呼び出 し に よ っ て返 さ れ る デー タ バ ッ フ ァ ー長には、 サーバー名 と ヌ ル終端文字を含めた戻 り デー タ の実際の長 さ が格納 さ れます。 サブ フ ァ ン ク シ ョ ン 6 : ロ ッ ク オーナーの識別 入力ポジシ ョ ン ブ ロ ッ ク で指定 さ れた フ ァ イ ルの場合、 こ のサブ フ ァ ン ク シ ョ ンは、 一番最近フ ァ イ ルのア ク セ ス時に ス テー タ ス コ ー ド 84 ま たは 85 を発生 さ せた原因に関する 情報を返 し ます。 116 Stat Extended (65) 入力デー タ バ ッ フ ァ ー構造体 ス テー タ ス 84 ま たは 85 の原因に関す る 情報を取得す る には、デー タ バ ッ フ ァ ーに ロ ッ ク オーナー情報デ ィ ス ク リ プ タ ーを次の と お り に作成す る 必要があ り ます。 表 41 ロ ッ ク オーナー情報デ ィ ス ク リ プ タ ー 要素 長さ (バ イト単位) 説明 識別バ イ ト 4 Extended Stat 呼び出 し のための一意な識別子。 ExSt を指定 し ます。 表 30 を参 照 し て く だ さ い。 サブ フ ァ ン ク シ ョ ン 4 Stat Extended 呼び出 し の タ イ プ。 0x00000006 を指定 し ます。 バ ッ フ ァ ー スペース 最 低 で も 96 戻 り 情報に必要な追加バ イ ト 。 詳細については、 「サブ フ ァ ン ク シ ョ ン 7 : セ キ ュ リ テ ィ 情報」 を参照 し て く だ さ い。 出力デー タ バ ッ フ ァ ー構造体 ロ ッ ク オーナー情報サブ フ ァ ン ク シ ョ ンの場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではデー タ バ ッ フ ァ ー 長パ ラ メ ー タ ーが更新 さ れ、 次の よ う な ロ ッ ク オーナー情報構造体がデー タ バ ッ フ ァ ーに返 さ れます。 表 42 ロ ッ ク オーナー情報の戻 り バ ッ フ ァ ー 要素 長さ (バ イト単位) 説明 ク ラ イ ア ン ト ID 16 ブ ロ ッ ク し てい る ク ラ イ ア ン ト の 16 バ イ ト の ク ラ イ ア ン ト ID。 フラグ 4 発生 し た競合の タ イ プを示すフ ラ グ を含む 4 バ イ ト の ビ ッ ト マ ッ プ。各フ ラ グ の値の説明については、 次の表を参照 し て く だ さ い。 ト ラ ンザ ク シ ョ ン内での時間 4 ブ ロ ッ ク し た ク ラ イ ア ン ト が ト ラ ンザ ク シ ョ ン中に ロ ッ ク す る ミ リ 秒数。こ れ は、 オペレーシ ョ ン を再試行す る か ど う かを決定す る のに役立ち ます。 キー番号 4 競合が キー ページ上で発生 し た場合、 こ の要素は そ の競合に関与 し て い る キーを示 し ます。 こ の情報を確認すれば、 デー タ ベース の設計で予測 さ れ る 競 合を減 ら すのに役立ち ます。 ト ラ ンザ ク シ ョ ン レベル 4 こ の数がゼ ロ 以外の場合、 ブ ロ ッ ク し てい る ク ラ イ ア ン ト は現在 ト ラ ン ザ ク シ ョ ン中です。い く つかのページやレ コ ー ド は ト ラ ンザ ク シ ョ ンが完了す る ま で ロ ッ ク さ れ る ので、こ の情報はオペレーシ ョ ン を再試行す る か ど う かを決定 す る のに役立ち ます。 予約済み 8 今後の使用に備え て予約 さ れてい ます。ブ ロ ッ ク し てい る ク ラ イ ア ン ト に関 し て有用だ と 思われ る 情報が あ る 場合は、 Pervasive Software ま で ご連絡 く だ さ い。 表示名 64 こ れは ヌ ルで終了す る 文字列です。 こ れは Monitor 内で各 ク ラ イ ア ン ト ご と に 表示 さ れ る 識別名 と 同 じ です。 最低で も 現在の表示名の長 さ の最大値で あ る 64 バ イ ト を使用 し て く だ さ い。 Btrieve API 呼び出 し に よ っ て返 さ れ る デー タ バ ッ フ ァ ー長には、表示名 と ヌ ル終端文字を含めた戻 り デー タ の実際の長 さ が 格納 さ れます。 以前にブ ロ ッ ク し ていた ク ラ イ ア ン ト の記録が ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス にない場合、 出力デー タ バ ッ フ ァ ー長はゼ ロ に設定 さ れます。 117 Btrieve API オペ レーシ ョ ン フ ラ グ フ ィ ール ド に使用で き る 値については、 次の表で説明 し ます。 表 43 ロ ッ ク オーナーの フ ラ グ 値 名前 説明 0x00000001 暗黙 ロ ッ ク ブ ロ ッ ク し た ク ラ イ ア ン ト は暗黙 ロ ッ ク を使用 し てい ます。 0x00000002 明示的 ロ ッ ク ブ ロ ッ ク し た ク ラ イ ア ン ト は明示的 ロ ッ ク を使用 し てい ます。 0x00000010 フ ァ イル ロ ッ ク ブ ロ ッ ク し た ク ラ イ ア ン ト はフ ァ イ ル ロ ッ ク を使用 し てい ます。 0x00000020 ページ ロ ッ ク ブ ロ ッ ク し た ク ラ イ ア ン ト はページ ロ ッ ク を使用 し てい ます。 0x00000040 レ コー ド ロ ッ ク ブ ロ ッ ク し た ク ラ イ ア ン ト は レ コ ー ド ロ ッ ク を使用 し てい ます。 0x00000100 デー タ ページ 競合がページ ロ ッ ク の場合、 こ の フ ラ グは競合がデー タ ページで発生 し た こ と を示 し ます。 0x00000200 キー ページ 競合がページ ロ ッ ク の場合、 こ の フ ラ グは競合がキー ページで発生 し た こ と を示 し ます。 0x00000400 可変ページ 競合がページ ロ ッ ク の場合、こ の フ ラ グは競合が可変ページで発生 し た こ と を示 し ま す。 0x00000800 同じプロ セス こ の フ ラ グが設定 さ れた場合、ブ ロ ッ ク し てい る ク ラ イ ア ン ト ID の最初の 12 バ イ ト と 、 ブ ロ ッ ク さ れた ク ラ イ ア ン ト (Stat Extended 呼び出 し を発行 し た ク ラ イ ア ン ト ) の最初の 12 バ イ ト が同 じ です。 こ の場合、 同 じ コ ン ピ ュ ー タ ー上の同 じ プ ロ セ ス か ら ブ ロ ッ ク し た 2 つの ク ラ イ ア ン ト があ る こ と を意味 し ます。Btrieve API 呼び出 し を 行 う シ ン グル ス レ ッ ド のアプ リ ケーシ ョ ンの場合は、こ のオペレーシ ョ ン を再試行 し て も 役立ち ません。 ブ ロ ッ ク し てい る 動作を終了ま たは中止す る 必要があ り ます。 0x00001000 書 き 込み ノ ー ウェイ ト ブ ロ ッ ク し た ク ラ イ ア ン ト がバ イ ア ス 500 を使用 し てい る こ と を示 し ます。 0x00002000 書 き 込み保持 ブ ロ ッ ク し た ク ラ イ ア ン ト が、 ページへの変更を行っ て、 その ト ラ ンザ ク シ ョ ンが終 了す る ま でページ全体を ロ ッ ク し た こ と を示 し ます。 こ の状況は、 変更に よ っ て キー エ ン ト リ が別のページへ移動 し た場合に、 キー ページの暗黙 ロ ッ ク で発生 し ます。 0x00004000 読み取 り ノ ー ウェイ ト 明示的レ コ ー ド ロ ッ ク の場合、 こ の フ ラ グは、 ブ ロ ッ ク し た ク ラ イ ア ン ト が ロ ッ ク バ イ ア ス 200 ま たは 400 のいずれかを使用 し てい る こ と を示 し ます。 0x00008000 複数読み取 り 明示的レ コ ー ド ロ ッ ク の場合、 こ の フ ラ グは、 ブ ロ ッ ク し た ク ラ イ ア ン ト が ロ ッ ク バ イ ア ス 300 ま たは 400 のいずれかを使用 し てい る こ と を示 し ます。 サブ フ ァ ン ク シ ョ ン 7 : セキ ュ リ テ ィ 情報 こ のサブ フ ァ ン ク シ ョ ンは、 ク ラ イ ア ン ト が現在の フ ァ イ ルにア ク セ スす る ために、 ど の よ う に認証お よ び許可 さ れたかについての情報を返 し ます。 セキ ュ リ テ ィ に使用 さ れてい る 現在のデー タ ベース に関す る 情報 も 示 し ま す。 118 Stat Extended (65) 入力デー タ バ ッ フ ァ ー構造体 こ のハン ド ルが持っ てい る ど の ア ク セ ス 権が ど の よ う に認証 さ れたかについて セ キ ュ リ テ ィ 情報を取得す る に は、 デー タ バ ッ フ ァ ーにセキ ュ リ テ ィ 情報デ ィ ス ク リ プ タ ーを次の と お り に作成す る 必要があ り ます。 表 44 セキ ュ リ テ ィ 情報デ ィ ス ク リ プ タ ー 要素 長さ (バ イト単位) 説明 識別バ イ ト 4 Stat Extended 呼び出 し の タ イ プ。 0x45785374 を指定 し ま す。 ( こ れは、 ASCII の ExSt に相当 し ます。) 識別バ イ ト 4 Stat Extended 呼び出 し の タ イ プ。 0x00000007 を指定 し ます。 バ ッ フ ァ ー スペース 最 低 で も 142 戻 り 情報に必要な追加バ イ ト 。 詳細については 「結果」 を参照 し て く だ さ い。 出力デー タ バ ッ フ ァ ー構造体 セキ ュ リ テ ィ 情報サブ フ ァ ン ク シ ョ ンの場合、MicroKernel ではデー タ バ ッ フ ァ ー長パ ラ メ ー タ ーが更新 さ れ、次 の よ う なセキ ュ リ テ ィ 情報構造体がデー タ バ ッ フ ァ ーに返 さ れます。 表 45 セキ ュ リ テ ィ 情報の戻 り バ ッ フ ァ ー 要素 長さ (バ イト単位) 説明 ハン ド ルの フ ラ グ 4 こ のハ ン ド ルのセ キ ュ リ テ ィ に使用 さ れてい る メ ソ ッ ド を示すフ ラ グ を含む 4 バ イ ト の ビ ッ ト マ ッ プ。 各フ ラ グの値の説明については、 次の表を参照 し て く だ さ い。 ハン ド ルの フ ラ グ 4 こ の ク ラ イ ア ン ト の、 現在のデフ ォ ル ト デー タ ベース のセ キ ュ リ テ ィ に使用 さ れてい る メ ソ ッ ド を示すフ ラ グ を含む 4 バ イ ト の ビ ッ ト マ ッ プ。各フ ラ グの 値の説明については、 次の表を参照 し て く だ さ い。 ア ク セ ス権 4 こ れ ら は、こ のハン ド ルを使用す る ク ラ イ ア ン ト に与え ら れてい る ア ク セ ス権 です。 各フ ラ グの値の説明については、 ア ク セ ス権の表を参照 し て く だ さ い。 ハ ン ド ル デー タ ベー ス 名 の バッ フ ァー サイズ 2 ヌ ルで終わ る ハン ド ル デー タ ベー ス名文字列の格納に使用 さ れ る バ ッ フ ァ ー の長 さ 。 ハ ン ド ル テ ーブル名のバ ッ フ ァー サイ ズ 2 ヌ ルで終わ る ハン ド ル テーブル名文字列の格納に使用 さ れ る バ ッ フ ァ ーの長 さ 。 メ モ : テーブル名は、 フ ァ イ ルがデー タ ベース にバ イ ン ド さ れない限 り わ か り ません (た と えば参照制約) 。 つま り 、 フ ァ イ ルは、 フ ァ イ ルのテーブル 名で参照 さ れ る URI 接続文字列を使用 し て開かれてい ま す。 URI 接続文字列 の 詳細につい て は、 『Pervasive PSQL Programmer's Guide』 の 「デー タ ベー ス URI」 を参照 し て く だ さ い。 ハ ン ド ル ユ ー ザ ー名 の バ ッ フ ァー サイ ズ 2 ヌ ルで終わ る ハン ド ル ユーザー名文字列の格納に使用 さ れ る バ ッ フ ァ ーの長 さ。 現在のデー タ ベー ス 名のバ ッ フ ァー サイ ズ 2 ヌ ルで終わ る 現在のデー タ ベー ス 名文字列の格納に使用 さ れ る バ ッ フ ァ ーの 長さ。 現在のユーザー名のバ ッ フ ァー サイ ズ 2 ヌ ルで終わ る 現在のユーザー名文字列の格納に使用 さ れ る バ ッ フ ァ ーの長 さ 。 ハン ド ル デー タ ベース名 可変 こ のハン ド ルのセキ ュ リ テ ィ を確立す る ために使用 さ れ る デー タ ベース名。 ハン ド ル テーブル名 可変 こ のハン ド ル と 関連付け ら れてい る テーブル名。 119 Btrieve API オペ レーシ ョ ン 表 45 セキ ュ リ テ ィ 情報の戻 り バ ッ フ ァ ー 要素 長さ (バ イト単位) 説明 ハン ド ル ユーザー名 可変 こ のハン ド ルのセキ ュ リ テ ィ を確立す る ために使用 さ れ る ユーザー名。 現在のデー タ ベース名 可変 こ の ク ラ イ ア ン ト の、 現在のデフ ォ ル ト のデー タ ベース名。 現在のユーザー名 可変 こ の ク ラ イ ア ン ト の、 現在のデフ ォ ル ト デー タ ベース に関連付け ら れてい る ユーザー名。 2 つの Flags フ ィ ール ド で使用で き る 値については、 以下の表で説明 し ます。 表 46 セキ ュ リ テ ィ フ ラ グ 値 名前 説明 0x00000001 信頼 さ れ る こ のハン ド ルは信頼 さ れてい ます。 割 り 当て ら れたデー タ ベース はあ り ません。 0x00000002 暗黙 デー タ ベース ロ グ イ ンは暗黙です - 開いてい る 間。 0x00000004 明示的 デー タ ベース ロ グ イ ンは明示的です - Btrieve Login が実行 さ れま し た。 0x00000008 デー タ ベース に よ る 認証 認証はデー タ ベース セキ ュ リ テ ィ に よ っ て行われま し た。 こ の フ ラ グが設定 さ れていなければ、 認証はオペレーテ ィ ン グ シ ス テ ムのセ キ ュ リ テ ィ に よ っ て行 われま し た。 0x00000010 デー タ ベース に よ る 許可 許可はデー タ ベース セキ ュ リ テ ィ に よ っ て行われま し た。 こ の フ ラ グが設定 さ れていなければ、 許可はオペレーテ ィ ン グ シ ス テ ムのセ キ ュ リ テ ィ に よ っ て行 われま し た。 0x00000020 Windows 名前付 き パ イ プ 認証がオペレーテ ィ ン グ シ ス テ ムに よ る も のであ る 場合、 こ れはセキ ュ リ テ ィ に NT 名前付 き パ イ プが使用 さ れた こ と を示 し ます。 0x00000040 ワー ク グループ 認証がオペレーテ ィ ン グ シ ス テ ムに よ る も のであ る 場合、 こ れは ワ ー ク グルー プ エ ン ジ ン式のセ キ ュ リ テ ィ が行われた こ と を示 し ます。 つま り 、 認証 も 許可 も 行われていない と い う こ と です。 0x00000080 Btpasswd 認証が Linux オペ レ ーテ ィ ン グ シ ス テ ム に よ る も の で あ る 場合、 こ れは etc/ btpasswd フ ァ イ ルが使用 さ れた こ と を示 し ます。 0x00000100 PAM 認証が Linux オペレーテ ィ ン グ シ ス テ ムに よ る も のであ る 場合、 こ れは PAM 認 証が使用 さ れた こ と を示 し ます。 0x00000200 RTSS Complete 認証がオペレ ーテ ィ ン グ シ ス テ ム に よ る も ので あ る 場合、 こ れは、 "Complete" に設定 さ れた RTSS を使用 し て認証が行われた こ と を示 し ます。 0x00000400 RTSS Preauthorized 認証が オペ レ ー テ ィ ン グ シ ス テ ム に よ る も の で あ る 場 合、 こ れ は、 "Preauthorized" に設定 さ れた RTSS を使用 し て認証が行われた こ と を示 し ます。 0x00000800 RTSS Disabled 認証がオペレーテ ィ ン グ シ ス テ ムに よ る も のであ る 場合、 こ れは、 "Disabled" に 設定 さ れた RTSS を使用 し て認証が行われた こ と を示 し ます。 120 Stat Extended (65) 表 47 ア ク セス権 フ ラ グ 値 名前 説明 0x00000000 No Rights デー タ ベース オブジ ェ ク ト に対す る 権限があ り ません。 ア ク セ ス権は与え ら れ てい ません。 0x00000001 Open フ ァ イ ル を開 く ために与え ら れ る ア ク セ ス 権。 こ れは、 レ コ ー ド の読み取 り が 可能であ る こ と も 意味 し ます。 0x00000002 Insert レ コ ー ド を挿入す る ために与え ら れ る ア ク セ ス権。 0x00000004 Update レ コ ー ド を更新す る ために与え ら れ る ア ク セ ス権。 0x00000008 Create こ の フ ァ イ ルを作成す る ために与え ら れ る ア ク セ ス権。 0x00000010 Delete レ コ ー ド を削除す る ために与え ら れ る ア ク セ ス権。 0x00000020 Execute SQL で ス ト ア ド プ ロ シージ ャ を実行す る ために与え ら れ る ア ク セ ス権。 0x00000040 Alter SQL で こ の フ ァ イ ルを変更す る ために与え ら れ る ア ク セ ス権。 0x00000080 Refer SQL で こ の フ ァ イ ルを参照す る ために与え ら れ る ア ク セ ス権。 0x00000100 Create View SQL で こ の フ ァ イ ルのビ ュ ーを作成す る ために与え ら れ る ア ク セ ス権。 0x00000200 Create Stored Procedure SQL で こ の フ ァ イ ルの ス ト ア ド プ ロ シージ ャ を作成す る ために与え ら れ る ア ク セ ス権。 結果 Stat Extended オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 06 キー番号パ ラ メ ー タ ーが不正です。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 62 デ ィ ス ク リ プ タ ーが不正です。 121 Btrieve API オペ レーシ ョ ン Step First (33) Step First オペレーシ ョ ン (B_STEP_FIRST) では、 フ ァ イ ル内の先頭の物理レ コ ー ド を取得 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では こ の レ コ ー ド を取得す る ためにキー パス は使用 さ れません。 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ 戻り値 データ バッファー ○ データ バッ ファー長 キー バッ ファー キー番号 ○ ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 33 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ー長に取得す る レ コ ー ド の長 さ 以上の値を設定 し ます。 結果 Step First オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではフ ァ イ ル内の先頭の 物理レ コ ー ド がデー タ バ ッ フ ァ ーに返 さ れ、 返 さ れたバ イ ト 数がデー タ バ ッ フ ァ ー長に設定 さ れます。 Step First オペレーシ ョ ン が正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 9 オペレーシ ョ ンが EOF (end-of-file) を検出 し ま し た。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 ポジ シ ョ ニ ング Step First オペレーシ ョ ン を実行す る と 、 論理カ レ ン シーが消去 さ れます。 取得 し た レ コ ー ド を現在の物理レ コ ー ド と し て使用 し 、 物理カ レ ン シーが設定 さ れます。 物理位置の直前は、 フ ァ イ ルの先頭 よ り も 前を指す こ と にな り ます。 122 Step Last (34) Step Last (34) Step Last オペ レーシ ョ ン (B_STEP_LAST) では、 フ ァ イ ル内の末尾の物理 レ コ ー ド を取得 し ま す。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では こ の レ コ ー ド を取得す る ためにキー パス は使用 さ れません。 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ 戻り値 データ バッ データ バッ ファー ファー長 ○ キー バッ ファー キー番号 ○ ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 34 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ー長に取得す る レ コ ー ド の長 さ 以上の値を設定 し ます。 結果 Step Last オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではフ ァ イ ル内の末尾の 物理レ コ ー ド がデー タ バ ッ フ ァ ーに返 さ れ、 返 さ れたバ イ ト 数がデー タ バ ッ フ ァ ー長に設定 さ れます。 Step Last オペレ ーシ ョ ン が正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 9 オペレーシ ョ ンが EOF (end-of-file) を検出 し ま し た。 (フ ァ イ ルが空の場合) 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 ポジ シ ョ ニ ング Step Last オペレーシ ョ ン を実行す る と 、 論理カ レ ン シーが消去 さ れます。 取得 し た レ コ ー ド を現在の物理レ コ ー ド と し て使用 し 、 物理カ レ ン シーが設定 さ れます。 物理位置の直後は、 フ ァ イ ルの末尾 よ り も 後を指す こ と にな り ます。 123 Btrieve API オペ レーシ ョ ン Step Next (24) Step Next オペレーシ ョ ン (B_STEP_NEXT) では、 次の物理位置 と し て示 さ れ る レ コ ー ド を取得 し ます。 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では こ の レ コ ー ド を取得す る ためにキー パス は使用 さ れません。 Step Next オペレーシ ョ ン を任意の Get ま たは Step オペレーシ ョ ンの直後に実行する と 、前のオペレーシ ョ ン で取 得 さ れた レ コ ー ド の物理的に次にあ る レ コ ー ド が返 さ れます。 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ 戻り値 データ バッ データ バッ ファー ファー長 ○ キー バッ ファー キー番号 ○ ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 24 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ー長に取得す る レ コ ー ド の長 さ 以上の値を設定 し ます。 結果 Step Next オペレーシ ョ ンが正常に終了 し た場合、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではフ ァ イ ル内の次の物 理レ コ ー ド がデー タ バ ッ フ ァ ーに返 さ れ、 返 さ れたバ イ ト 数がデー タ バ ッ フ ァ ー長に設定 さ れます。 Step Next オペレーシ ョ ン が正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 9 オペレーシ ョ ンが EOF (end-of-file) を検出 し ま し た。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 ポジ シ ョ ニ ング Step Next オペレーシ ョ ン を実行 し て も 、 論理カ レ ン シーは確立 し ません。 取得 し た レ コ ー ド を現在の物理レ コ ー ド と し て使用 し 、 物理カ レ ン シーが設定 さ れます。 Delete オペレーシ ョ ン (4) の直後に Step Next オペレーシ ョ ン を発行す る と 、 Delete の前のオペレーシ ョ ンで次 の物理レ コ ー ド と し て確立 さ れた レ コ ー ド が返 さ れます。 Open オペレーシ ョ ン (0) の直後に Step Next オペレーシ ョ ン を発行する と 、 フ ァ イ ル内の先頭レ コ ー ド が返 さ れ ます。 124 Step Next Extended (38) Step Next Extended (38) Step Next Extended オペレーシ ョ ン (B_STEP_NEXT_EXT) では、 物理位置の直後か ら フ ァ イ ルの末尾へ向か っ て 1 つま たは複数の レ コ ー ド を検索 し ます。 検索 し た レ コ ー ド が フ ィ ル タ ー条件を満た し てい る か ど う か をチ ェ ッ ク し た上で、 条件を満たすレ コ ー ド だけ を取得 し ます。 フ ィ ル タ ー条件は論理式の形を取 り 、 キー フ ィ ール ド の みに制限 さ れません。 Step Next Extended オペレーシ ョ ンでは、 既存の レ コ ー ド の中か ら 指定 し た フ ィ ール ド を抽出 し 、 抽出 し た フ ィ ー ル ド だけ を含む新 し い レ コ ー ド のセ ッ ト を返す こ と も で き ます。 パラ メ ー タ ー 送り値 戻り値 オペレーション コード ポジション ブロック データ バッ データ バッ ファー ファー長 ○ ○ ○ ○ ○ ○ ○ キー バッ ファー キー番号 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 次の物理位置を確立 し てお く こ と が必要です。 (た と えば、 Delete オペレーシ ョ ンの次に Step Next Extended オペレーシ ョ ン を実行す る こ と はで き ません。) 手順 1 オペレーシ ョ ン コ ー ド に 38 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 入力デー タ バ ッ フ ァ ー と 戻 り デー タ バ ッ フ ァ ーの ど ち ら か大き い方を格納で き る よ う に、十分な長 さ のデー タ バ ッ フ ァ ーを指定 し ます。 表 21 に示す構造体に従っ て、 デー タ バ ッ フ ァ ーを初期化 し ます。 4 上記の手順に従っ て、 デー タ バ ッ フ ァ ー長に適切な値を指定 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではバ ッ フ ァ ーを用意 し て、Extended オペレーシ ョ ンの ワー ク スペー ス と し て使用で き る よ う に し ます。 こ のバ ッ フ ァ ーのサ イ ズは、 [拡張オペレーシ ョ ン バ ッ フ ァ ー サ イ ズ] オプシ ョ ン を使っ て構成 し ま す。 デー タ バ ッ フ ァ ー構造体、 取得 さ れ る 最長の レ コ ー ド 、 お よ び リ ク エ ス タ ーのオーバーヘ ッ ド の 355 バ イ ト 、 こ れ ら の合計が設定 し たバ ッ フ ァ ー サ イ ズ を超え る こ と はで き ま せ ん。 ( リ ク エ ス タ ーのオーバーヘ ッ ド は、 DOS ワー ク ス テーシ ョ ンのエン ジ ンには適用で き ません。) 詳細 Step Next Extended オペレーシ ョ ンの 「詳細」 の内容は、 Get Next Extended オペレーシ ョ ン と 同 じ です。 詳 し く は 「詳細」 を ご覧 く だ さ い。 125 Btrieve API オペ レーシ ョ ン 結果 Step Next Extended オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では表 22 に示 す と お り 、取得 さ れた 1 つま たは複数の レ コ ー ド に含まれ る 1 つま たは複数の フ ィ ール ド がデー タ バ ッ フ ァ ーに 返 さ れます。 さ ら に ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 、 デー タ バ ッ フ ァ ー長パ ラ メ ー タ ーには、 デー タ バ ッ フ ァ ーに返 さ れたバ イ ト 数が設定 さ れます。 Step Next Extended オペレーシ ョ ンが正常に実行 さ れなかっ た場合は、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 9 オペレーシ ョ ンが EOF (end-of-file) を検出 し ま し た。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 60 指定 さ れた リ ジ ェ ク ト カ ウ ン ト に達 し ま し た。 61 作業領域が小 さ すぎ ます。 62 デ ィ ス ク リ プ タ ーが不正です。 64 フ ィ ル タ ー制限に達 し ま し た。 65 フ ィ ール ド オ フ セ ッ ト が不正です。 82 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス がポジシ ョ ニ ン グ を失い ま し た。 134 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス が イ ン タ ーナシ ョ ナル ソ ー ト 規則 (ISR) を読み取れません。 135 指定 さ れた イ ン タ ーナシ ョ ナル ソ ー ト 規則 (ISR) テーブルは破損 し てい る か、 ま たは不正です。 136 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は、 指定 さ れたオル タ ネー ト コ レーテ ィ ン グ シーケ ン ス を フ ァ イ ル内 に見つけ ら れません。 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 0 以外の ス テー タ ス コ ー ド が返 さ れて も 、 有効なデー タ がデー タ バ ッ フ ァ ーに返 さ れ る こ と があ り ます。 ただ し こ の場合、 返 さ れた最後の レ コ ー ド は不完全な も のであ る 可能性 があ り ます。デー タ バ ッ フ ァ ー長パ ラ メ ー タ ーに 0 を超え る 値が返 さ れてい る 場合は、デー タ バ ッ フ ァ ーに抽出 さ れたデー タ を確認 し て く だ さ い。 レ コ ー ド が短すぎ て フ ィ ール ド の一部 し か使用 さ れない場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら は、 一部のみ使用 さ れた フ ィ ール ド も 含めて、 レ コ ー ド か ら 抽出で き た も ののみを返 し ます。 部分フ ィ ール ド が抽出 さ れ る 最後の フ ィ ール ド で あ る 場合、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではオペ レ ーシ ョ ン が続行 さ れ ま す。 そ う でない場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではオペレーシ ョ ンは中止 さ れ、 ス テー タ ス コ ー ド 22 が返 さ れます。 た と えば、 2 件の可変長レ コ ー ド か ら 3 つの フ ィ ール ド を取得する Step Next Extended オペレーシ ョ ン を考えてみ ま し ょ う 。 最初の レ コ ー ド は 55 バ イ ト で、 2 番目の レ コ ー ド は 50 バ イ ト だ と し ます。 取得す る フ ィ ール ド は次 の よ う に定義 さ れてい ます。 フ ィ ール ド 1 はオ フ セ ッ ト 2 か ら 始ま り 、 2 バ イ ト 長です。 フ ィ ール ド 2 はオ フ セ ッ ト 45 か ら 始ま り 、 10 バ イ ト 長です。 フ ィ ール ド 3 はオ フ セ ッ ト 6 か ら 始ま り 、 2 バ イ ト 長です。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で Step Next Extended オペレーシ ョ ンが実行 さ れ る と き 、 最初の レ コ ー ド は問題な く 返 さ れます。 し か し 、 2 番目の レ コ ー ド のフ ィ ール ド 2 か ら 10 バ イ ト を抽出 し よ う と す る と 、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではオ フ セ ッ ト 45 と レ コ ー ド の末尾のオ フ セ ッ ト 49 の間では 5 バ イ ト し か取得 で き ない こ と が検出 さ れます。 こ の時点で、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではフ ィ ール ド 2 の不足 し て い る 5 バ イ ト 分は詰め込まれないため、 フ ィ ール ド 3 は抽出で き な く な り ます。 その代わ り に、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら ス テー タ ス コ ー ド 22 が返 さ れ、 フ ィ ール ド 1 全体 と フ ィ ール ド 2 の先頭 5 バ イ ト が 戻 り デー タ バ ッ フ ァ ーに格納 さ れます。 126 Step Next Extended (38) ポジ シ ョ ニ ング Step Next Extended オペレーシ ョ ン を実行 し て も 、 論理カ レ ン シーは確立 し ませんが、 検索 さ れた最後の レ コ ー ド が現在の物理レ コ ー ド にな り ます。 なお、 こ の レ コ ー ド は取得 さ れてい る と は限 り ません。 こ の レ コ ー ド は、 フ ィ ル タ ー条件を満た し て取得 さ れた レ コ ー ド か、 ま たはフ ィ ル タ ー条件を満た さ ないために拒否 さ れた レ コ ー ド の いずれかです。 メ モ ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 Step Next Extended オペレーシ ョ ン の後に Delete ま たは Update オペレーシ ョ ン を実行す る こ と はで き ません。 現在の レ コ ー ド は検索 さ れた最後の レ コ ー ド であ る た め、 アプ リ ケーシ ョ ンには、 意図 し た レ コ ー ド を適切に削除ま たは更新 し てい る か ど う か を確認す る 方法が あ り ません。 127 Btrieve API オペ レーシ ョ ン Step Previous (35) Step Previous オペレーシ ョ ン (B_STEP_PREVIOUS) では、 前の物理位置 と し て示 さ れ る レ コ ー ド を取得 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では Step Previous オペレ ーシ ョ ン で レ コ ー ド を取得す る ために イ ンデ ッ ク ス パ ス は使用 さ れません。 Step Previous オペレーシ ョ ン を任意の Get ま たは Step オペレーシ ョ ンの直後に実行す る と 、 前のオペレーシ ョ ン で取得 さ れた レ コ ー ド の物理的に前にあ る レ コ ー ド が返 さ れます。 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ 戻り値 データ バッ データ バッ ファー ファー長 ○ キー バッ ファー キー番号 ○ ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 前の物理位置を確立 し てお く こ と が必要です(た と えば、Delete オペレーシ ョ ンの次に Step Previous オペレー シ ョ ン を実行す る こ と はで き ません)。 手順 1 オペレーシ ョ ン コ ー ド に 35 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ー長に取得す る レ コ ー ド の長 さ 以上の値を設定 し ます。 結果 Step Previous オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではフ ァ イ ル内の前 の物理レ コ ー ド がデー タ バ ッ フ ァ ーに返 さ れ、 返 さ れたバ イ ト 数がデー タ バ ッ フ ァ ー長に設定 さ れます。 こ のオペレーシ ョ ンが正常に実行 さ れなか っ た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 3 フ ァ イ ルが開いてい ません。 9 オペレーシ ョ ンが EOF (end-of-file) を検出 し ま し た。 (フ ァ イ ルの先頭で実行 し た場合) 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 ポジ シ ョ ニ ング Step Previous オペレーシ ョ ン を実行 し て も 、 論理カ レ ン シーは確立 し ません。 取得 し た レ コ ー ド を現在の物理レ コ ー ド と し て使用 し 、 物理カ レ ン シーが設定 さ れます。 128 Step Previous Extended (39) Step Previous Extended (39) Step Previous Extended オペレーシ ョ ン (B_STEP_PREVIOUS_EXT) では、 物理位置の直前か ら フ ァ イ ルの先頭へ 向か っ て 1 つま たは複数の レ コ ー ド を検索 し ます。 検索 し た レ コ ー ド が フ ィ ル タ ー条件を満た し てい る か ど う か をチ ェ ッ ク し た上で、条件を満たすレ コ ー ド だけ を取得 し ます。フ ィ ル タ ー条件は論理式の形を取 り 、キー フ ィ ー ル ド のみに制限 さ れません。 Step Previous Extended オペ レ ーシ ョ ン では、 既存の レ コ ー ド の中か ら 指定 し た フ ィ ール ド を抽出 し 、 抽出 し た フ ィ ール ド だけ を含む新 し い レ コ ー ド のセ ッ ト を返す こ と も で き ます。 パラ メ ー タ ー 送り値 戻り値 オペレーション コード ポジション ブロック データ バッ データ バッ ファー ファー長 ○ ○ ○ ○ ○ ○ ○ キー バッ ファー キー番号 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 前の物理位置を確立 し てお く こ と が必要です (た と えば、Delete オペレーシ ョ ンの次に Step Previous Extended オペレーシ ョ ン を実行す る こ と はで き ません)。 手順 1 オペレーシ ョ ン コ ー ド に 39 を設定 し ます。 オプシ ョ ン で、 ロ ッ ク バ イ ア ス も 指定で き ます。 +100 - 単一レ コ ー ド ウ ェ イ ト ロ ッ ク +200 - 単一レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク +300 - 複数レ コ ー ド ウ ェ イ ト ロ ッ ク +400 - 複数レ コ ー ド ノ ー ウ ェ イ ト ロ ッ ク ロ ッ ク の詳細については、 『Pervasive PSQL Programmer's Guide』 を参照 し て く だ さ い。 2 フ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 入力デー タ バ ッ フ ァ ー と 戻 り デー タ バ ッ フ ァ ーの ど ち ら か大き い方を格納で き る よ う に、十分な長 さ のデー タ バ ッ フ ァ ーを指定 し ます。 表 21 に示す構造体に従っ て、 デー タ バ ッ フ ァ ーを初期化 し ます。 4 上記の手順に従っ て、 デー タ バ ッ フ ァ ー長に適切な値を指定 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではバ ッ フ ァ ーを用意 し て、Extended オペレーシ ョ ンの ワー ク スペー ス と し て使用で き る よ う に し ます。 こ のバ ッ フ ァ ーのサ イ ズは、 [拡張オペレーシ ョ ン バ ッ フ ァ ー サ イ ズ] オプシ ョ ン を使っ て構成 し ま す。 デー タ バ ッ フ ァ ー構造体、 取得 さ れ る 最長の レ コ ー ド 、 お よ び リ ク エ ス タ ーのオーバーヘ ッ ド の 355 バ イ ト 、 こ れ ら の合計が設定 し たバ ッ フ ァ ー サ イ ズ を超え る こ と はで き ま せ ん。 ( リ ク エ ス タ ーのオーバーヘ ッ ド は、 DOS ワー ク ス テーシ ョ ンのエン ジ ンには適用で き ません。) 詳細 こ のオペレーシ ョ ンでは、 Get Next Extended オペレーシ ョ ンの場合 と 同 じ 入力デー タ バ ッ フ ァ ーお よ び戻 り デー タ バ ッ フ ァ ーを使用 し ます。 詳 し く は 「詳細」 を ご覧 く だ さ い。 129 Btrieve API オペ レーシ ョ ン 結果 こ のオペレーシ ョ ンでは、 Step Next Extended オペレーシ ョ ン と 同様の結果が返 さ れます。 詳 し く は 「結果」 を ご 覧 く だ さ い。 ポジ シ ョ ニ ング Step Previous Extended オペレーシ ョ ン を実行 し て も 、論理カ レ ン シーは確立 し ませんが、検索 さ れた最後の レ コ ー ド が現在の物理レ コ ー ド にな り ま す。 なお、 こ の レ コ ー ド は取得 さ れてい る と は限 り ま せん。 こ の レ コ ー ド は、 フ ィ ル タ ー条件を満た し て取得 さ れた レ コ ー ド か、 ま たはフ ィ ル タ ー条件を満た さ ないために拒否 さ れた レ コ ー ド のいずれかです。 メ モ ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 Step Previous Extended オペレーシ ョ ンの後に Delete ま た は Update オペレーシ ョ ン を実行す る こ と はで き ません。現在の レ コ ー ド は検索 さ れた最後の レ コ ー ド であ る ため、 アプ リ ケーシ ョ ンには、 意図 し た レ コ ー ド を適切に削除ま たは更新 し てい る か ど う か を確認す る 方法 があ り ません。 130 Stop (25) Stop (25) Stop オペレーシ ョ ン (B_STOP) では、 ク ラ イ ア ン ト に対 し てい く つかの終了ルーチン を実行 し ます。 終了ルー チンには、 すべての ロ ッ ク を解除す る 、 開いてい る フ ァ イ ルでその ク ラ イ ア ン ト に関連付け ら れてい る フ ァ イ ル をすべて閉 じ る な ど のルーチンがあ り ます。 パラ メ ー タ ー オペレーション コード 送り値 ポジション ブロック データ バッ データ バッ ファー ファー長 キー バッ ファー キー番号 ○ 戻り値 手順 オペレーシ ョ ン コ ー ド に 25 を設定 し ます。 結果 Stop オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では次の よ う な動作が実行 さ れます。 1 実行中の ト ラ ンザ ク シ ョ ンがすべて中止 さ れ る 。 2 ク ラ イ ア ン ト に よ っ て保持 さ れてい る すべての ロ ッ ク が解除 さ れます。 3 ク ラ イ ア ン ト が開いてい る フ ァ イ ルがすべて閉 じ ら れます。 4 ほかの ク ラ イ ア ン ト ( ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に登録 さ れてい る ほかのアプ リ ケーシ ョ ン) が 存在 し ない場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス の設定に も よ り ますが、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス の実行が終了 し 、 い く つかの リ ソ ース が解放 さ れます。 Stop オペレーシ ョ ン が正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 0 以外の ス テー タ ス コ ー ド が返 さ れます。最 も よ く あ る のは ス テー タ ス コ ー ド 20 (MicroKernel ま たは Btrieve リ ク エ ス タ ー が非ア ク テ ィ ブ) です。 こ の ス テー タ ス は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ま たは リ ク エ ス タ ーが ロ ー ド さ れていないために発生 し ます。 ポジ シ ョ ニ ング Stop オペレーシ ョ ン を実行す る と 、 開いてい る フ ァ イ ルがすべて閉 じ ら れ る ため、 すべてのカ レ ン シーが消去 さ れます。 131 Btrieve API オペ レーシ ョ ン Unlock (27) Unlock オペ レ ーシ ョ ン (B_UNLOCK) では、 明示的に ロ ッ ク さ れてい る 1 つ ま たは複数の レ コ ー ド (つ ま り 、 ロ ッ ク バ イ ア ス +100、 +200、 +300 ま たは +400 を使っ て ロ ッ ク さ れた レ コ ー ド ) の ロ ッ ク を解除 し ます。 Unlock オペレーシ ョ ンは指定 し たポジシ ョ ン ブ ロ ッ ク で保持 さ れてい る ロ ッ ク を解除す る ので、同一フ ァ イ ルを複数回 開いた場合は、 ポジシ ョ ン ブ ロ ッ ク ご と に Unlock オペレーシ ョ ン を発行 し なければ、 レ コ ー ド の ロ ッ ク は完全 に解除 さ れ ません。 同様に、 フ ァ イ ル内の レ コ ー ド に対 し ロ ッ ク を保持 し てい る 各 ク ラ イ ア ン ト が Unlock オペ レーシ ョ ン を発行 し なければ、 レ コ ー ド の ロ ッ ク は完全に解除 さ れません。 パラ メ ー タ ー 送り値 オペレーション コード ポジション ブロック ○ ○ データ バッ データ バッ ファー ファー長 ○ キー バッ ファー ○ キー番号 ○ 戻り値 前提条件 少な く と も 1 つの レ コ ー ド が ロ ッ ク さ れてい る こ と が必要です。 手順 ¾ 単一レ コ ー ド ロ ッ ク を解除するには、 次の手順に従います。 1 オペレーシ ョ ン コ ー ド に 27 を設定 し ます。 2 ロ ッ ク さ れた レ コ ー ド を含むフ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 キー番号に正の値ま たはゼ ロ を設定 し ます。 ¾ 複数レ コ ー ド ロ ッ ク が設定 さ れている 1 つのレ コ ー ド のロ ッ ク を解除するには、まずそのレ コ ー ド を対象に Get Position オペ レーシ ョ ン (22) を発行 し 、 ロ ッ ク を解除する レ コ ー ド の 4 バイ ト 物理位置を取得 し ます。 その後、 次の手順に従 っ て Unlock オペ レーシ ョ ン を発行 し ます。 1 オペレーシ ョ ン コ ー ド に 27 を設定 し ます。 2 ロ ッ ク さ れた レ コ ー ド を含むフ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 返 さ れ る 4 バ イ ト の物理位置をデー タ バ ッ フ ァ ーに格納 し ます。 4 デー タ バ ッ フ ァ ー長に 4 を設定 し ます。 5 キー番号パ ラ メ ー タ ーに -1 を設定 し ます。 ¾ フ ァ イル上の複数レ コ ー ド ロ ッ ク をすべて解除するには、 次の手順に従います。 1 オペレーシ ョ ン コ ー ド に 27 を設定 し ます。 2 複数の ロ ッ ク を含むフ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 キー番号パ ラ メ ー タ ーに -2 を設定 し ます。 結果 Unlock オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではオペレーシ ョ ン で指定 し た ロ ッ ク がすべて解除 さ れます。 Unlock オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 0 以外の ス テー タ ス コ ー ド 、 たいていは ス テー タ ス コ ー ド 81 が返 さ れます。 132 Unlock (27) ポジ シ ョ ニ ング Unlock オペレーシ ョ ンは、 ポジシ ョ ニ ン グに ま っ た く 影響 し ません。 133 Btrieve API オペ レーシ ョ ン Update (3) Update オペレーシ ョ ン (B_UPDATE) では、 既存の レ コ ー ド の情報を変更 し ます。 パラ メ ー タ ー 送り値 戻り値 オペレーション コード ポジション ブロック ○ ○ データ バッ データ バッ ファー ファー長 ○ キー バッ ファー ○ ○ キー番号 ○ ○ メ モ NCC (No-currency-change : カ レ ン シー変更な し ) オプシ ョ ン を使用する と 、 Update オペレーシ ョ ンは キー バ ッ フ ァ ー パ ラ メ ー タ ーの値を更新 し ません。 つま り 、 キー バ ッ フ ァ ー パ ラ メ ー タ ーには情報は返 さ れません。 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 フ ァ イ ルの物理カ レ ン シーを確立 し てお く こ と が必要です。 (Extended Get、 Extended Step、 ま たは Get Key オ ペレーシ ョ ンで も 物理カ レ ン シーは確立 し ますが、こ れ ら のオペレーシ ョ ンの後に Update オペレーシ ョ ン を 実行す る こ と はで き ません。) 手順 1 オペレーシ ョ ン コ ー ド に 3 を設定 し ます。 2 レ コ ー ド を含むフ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 デー タ バ ッ フ ァ ーに更新後のデー タ レ コ ー ド を格納 し ます。 4 デー タ バ ッ フ ァ ー長に更新後の レ コ ー ド の長 さ を設定 し ます。 5 キー番号に、 レ コ ー ド の取得に使用 し た キー番号を設定 し ます。 NCC オプシ ョ ン を使用す る には、 キー番号 に -1 (0xFF) を指定 し ます。シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ ) を使用す る には、125 を指定 し ます。 Get オペレーシ ョ ンの直後に NCC オプシ ョ ン を使用 し ない Update オペレーシ ョ ン を実行す る と き 、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では Get オペレ ーシ ョ ン で取得 し た も の と ま っ た く 同 じ キー番号を渡 し ま す。 そ う し ない と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で レ コ ー ド は正常に更新 さ れますが、 更新後に実 行す る 最初の Get オペレーシ ョ ン で ス テー タ ス コ ー ド 7 が返 さ れます。 結果 Update オペレーシ ョ ンが正常に終了 し た場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではフ ァ イ ル内に格納 さ れ てい る レ コ ー ド がデー タ バ ッ フ ァ ー内の新 し い値を使っ て更新 さ れ、 キー値の変更を反映 し て イ ンデ ッ ク ス が調 整 さ れ ます。 ま た、 指定 し た キーの値がキー バ ッ フ ァ ーに返 さ れます。 NCC Update オペレーシ ョ ンでは、 キー バ ッ フ ァ ー パ ラ メ ー タ ーの値は更新 さ れません。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、アプ リ ケーシ ョ ンが更新する レ コ ー ド に単一レ コ ー ド ロ ッ ク を設定 し てい る 場合は、 ロ ッ ク が解除 さ れ ます。 し か し 、 複数レ コ ー ド ロ ッ ク は Update オペレーシ ョ ン を実行 し て も 解除 さ れません。 134 Update (3) Update オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 5 レ コ ー ド のキー フ ィ ール ド に重複す る キー値があ り ます。 8 現在のポジシ ョ ンが不正です。 10 キー フ ィ ール ド は変更で き ません。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 80 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で レ コ ー ド レベルの矛盾が発生 し ま し た。 ポジ シ ョ ニ ング Update オペレーシ ョ ン も NCC Update オペレーシ ョ ン も 、 物理カ レ ン シーには影響 し ません。 更新 さ れた キーの値に よ っ て イ ンデ ッ ク ス 内の レ コ ー ド が再配置 さ れ る 場合は、 NCC オプシ ョ ン を使用 し ない Update オペレーシ ョ ン が論理カ レ ン シーに影響を与え る こ と があ り ます。 た と えば、 INTEGER キーの現在の論 理レ コ ー ド がそのキーに対 し て 1 と い う 値を持つ場合を考えてみま し ょ う 。 こ れ と 同 じ キーについて、 次の論理 レ コ ー ド は 2 と い う 値を持ち ます。 こ の と き 1 を 4 に更新する と 、 次の論理レ コ ー ド が変わ り ます。 こ の例では、 Update オペレーシ ョ ンの実行後、 次の論理レ コ ー ド は 4 よ り も 大 き い値を持つ こ と にな り ます。 NCC Update オペレーシ ョ ンは論理カ レ ン シーに影響 し ません。 つま り 、 NCC Update オペレーシ ョ ン を実行 し た アプ リ ケーシ ョ ンでは、フ ァ イ ル内の論理位置は Update オペレーシ ョ ン を実行す る 前 と 変わ ら ない と い う こ と で す。 こ の よ う な状況で、 NCC Update オペレーシ ョ ンに続けて、 Get Next (6)、 Get Next Extended (36)、 Get Previous (7)、 お よ び Get Previous Extended (37) な ど のオペレーシ ョ ン を実行す る と 、 NCC Update オペレーシ ョ ン実行以 前のアプ リ ケーシ ョ ンの論理カ レ ン シーに基づ く 値が返 さ れます。 メ モ ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では、 NCC Update オペレーシ ョ ン を実行 し て も 、 その結果 と し て何の情報 も キー バ ッ フ ァ ーには返 さ れ ま せん。 し たが っ て、 論理カ レ ン シーの維持が必要な ア プ リ ケー シ ョ ンでは、 NCC Update オペレーシ ョ ン後にキー バ ッ フ ァ ーの値を変更 し ないで く だ さ い。 変更す る と 、 次 の Get オペレーシ ョ ンの結果は予測で き ない も のにな り ます。 135 Btrieve API オペ レーシ ョ ン Update Chunk (53) Update Chunk オペレーシ ョ ン (B_CHUNK_UPDATE) では、 レ コ ー ド の 1 つま たは複数の部分 (チ ャ ン ク ) の情 報を変更で き ます。 ま た、 既存の レ コ ー ド に情報を追加 し て レ コ ー ド を長 く し た り 、 既存の レ コ ー ド を指定 し た オ フ セ ッ ト で切 り 詰め る こ と も で き ます。 パラ メ ー タ ー 送り値 戻り値 オペレーション コード ポジション ブロック ○ ○ データ バッ データ バッ ファー ファー長 ○ ○ キー バッ ファー ○ キー番号 ○ ○ 前提条件 対象 と な る フ ァ イ ルが開いてい る こ と が必要です。 フ ァ イ ルの現在の物理レ コ ー ド ま たは論理レ コ ー ド を確立 し てお く こ と が必要です。 メ モ Extended オペレーシ ョ ン ま たは Get Key オペレーシ ョ ン (+50) で も 必要な位置は確立 し ますが、 こ れ ら のオペレーシ ョ ンの直後に Update Chunk オペレーシ ョ ン を発行す る こ と はで き ません。 それは、 こ れ ら の オペレーシ ョ ンでは単独の レ コ ー ド が返 さ れないか ら です。 手順 1 オペレーシ ョ ン コ ー ド に 53 を設定 し ます。 2 レ コ ー ド を含むフ ァ イ ルのポジシ ョ ン ブ ロ ッ ク を渡 し ます。 3 「詳細」 の説明に従っ て、 デー タ バ ッ フ ァ ーを指定 し ます。 4 デー タ バ ッ フ ァ ー長に、 デー タ バ ッ フ ァ ーに格納する バ イ ト 数以上の値を設定 し ます。 デー タ バ ッ フ ァ ー 長の計算の詳細については、 「詳細」 を参照 し て く だ さ い。 5 レ コ ー ド の取得に使用 し た キー番号を キー番号パ ラ メ ー タ ーに設定 し ます。 シ ス テ ム定義の ロ グ キー (シ ス テ ム デー タ ) を使用す る には、 125 を指定 し ます。 詳細 デー タ バ ッ フ ァ ーでは、 次のチ ャ ン ク デ ィ ス ク リ プ タ ーのいずれか を使用 し ます。 ラ ン ダ ム チ ャ ン ク デ ィ ス ク リ プ タ ー - オペレーシ ョ ンに付 き 1 つのチ ャ ン ク を更新する ため、ま たはチ ャ ン ク が レ コ ー ド 全体にわた っ て ラ ン ダ ムに配置 さ れてい る と き に、 1 回のオペレーシ ョ ンで複数のチ ャ ン ク を 更新す る ために使用 し ます。 矩形チ ャ ン ク デ ィ ス ク リ プ タ ー - 各チ ャ ン ク の長 さ が同 じ で、 チ ャ ン ク が レ コ ー ド 内に等間隔に配置 さ れて い る と き に、 1 回のオペレーシ ョ ンで複数のチ ャ ン ク を更新す る ために使用 し ます。 切 り 捨てチ ャ ン ク デ ィ ス ク リ プ タ ー - 指定 さ れたオ フ セ ッ ト で レ コ ー ド を切 り 捨て る ために使用 し ます。 136 Update Chunk (53) ラ ン ダム チ ャ ン ク デ ィ ス ク リ プ タ ー構造体 次の例は、 ラ ン ダ ムに配置 さ れてい る 3 つのチ ャ ン ク ([*] があ る 部分) を含むレ コ ー ド を示 し てい ます。 チ ャ ン ク 0(バ イ ト 0x12 か ら 0x16)、チ ャ ン ク 1(バ イ ト 0x2A か ら 0x31)お よ びチ ャ ン ク 2(バ イ ト 0x41 か ら 0x4E)です。 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 [*] [*] [*] [*] [*] 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 [*] [*] [*] [*] [*] [*] [*] [*] 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] 4F ラ ン ダ ム チ ャ ン ク デ ィ ス ク リ プ タ ーを定義す る には、 次の表に基づいてデー タ バ ッ フ ァ ーに構造体を作成す る 必要があ り ます。 表 48 ラ ン ダム チ ャ ン ク デ ィ ス ク リ プ タ ー構造体 要素 長さ (バイト単位) 説明 サブフ ァ ン ク シ ョ ン 4 チ ャ ン ク デ ィ ス ク リ プ タ ーの種類。 次のいずれかを指定 し ます。 0x80000000(直接 ラ ン ダ ム チ ャ ン ク デ ィ ス ク リ プ タ ー) - デー タ バ ッ フ ァ ー に直接格納 さ れてい る チ ャ ン ク を更新 し ます。先頭のチ ャ ン ク を更新す る た めのデー タ は、 デー タ バ ッ フ ァ ー内の最後のチ ャ ン ク 定義 (チ ャ ン ク n) の 直後に格納 し ま す。 ま た、 2 番目のチ ャ ン ク デー タ は先頭のチ ャ ン ク デー タ の直後に、 と 順次格納 し ます。 0x80000001 (間接 ラ ン ダ ム チ ャ ン ク デ ィ ス ク リ プ タ ー) - チ ャ ン ク 定義で指 定 さ れた ア ド レ ス にあ る デー タ を基にチ ャ ン ク を更新 し ます。 チャ ン ク数 4 更新す る チ ャ ン ク 数。 こ の値は少な く と も 1 であ る こ と が必要です。 明確な最 大値はあ り ませんが、チ ャ ン ク デ ィ ス ク リ プ タ ーはデー タ バ ッ フ ァ ーに収ま ら なければな り ません。 デー タ バ ッ フ ァ ーのサ イ ズは、 表 18 の説明の と お り 制 限 さ れてい ます。 チ ャ ン ク 定義 (各チ ャ ン ク につい て繰 り 返す) 12 (32 ビ ッ ト アプ リ ケーシ ョ ン用) 各チ ャ ン ク 定義は、 以下に示す よ う に、 4 バ イ ト のチ ャ ン ク オ フ セ ッ ト 、 それ に続 く 4 バ イ ト のチ ャ ン ク 長、 さ ら に 32 ビ ッ ト アプ リ ケーシ ョ ンの場合は 4 バ イ ト のユーザー デー タ 、 ま たは 64 ビ ッ ト アプ リ ケーシ ョ ンの場合は 8 バ イ ト のユーザー デー タ か ら 構成 さ れます。 16 (64 ビ ッ ト アプ リ ケーシ ョ ン用) チ ャ ン ク オ フ セ ッ ト - チ ャ ン ク の開始地点を、 レ コ ー ド の先頭か ら のオ フ セ ッ ト (バ イ ト 単位) で示 し ます。 最小値は 0、 最大値はレ コ ー ド の末尾の バ イ ト のオ フ セ ッ ト + 1 です。 チ ャ ン ク 長 - チ ャ ン ク 内のバ イ ト 数を示 し ます。最小値は 0、最大値は 65,535 です。 ただ し 、 チ ャ ン ク 定義はデー タ バ ッ フ ァ ーに収ま ら な ければな り ま せん。 デー タ バ ッ フ ァ ーのサ イ ズは、 表 18 の説明の と お り 制限 さ れてい ま す。 ユーザー デー タ - (間接デ ィ ス ク リ プ タ ーでのみ使用 し ます。) 32 ビ ッ ト ア プ リ ケーシ ョ ンの場合、実際のチ ャ ン ク デー タ への 32 ビ ッ ト ポ イ ン タ ーで す。64 ビ ッ ト アプ リ ケーシ ョ ンの場合、実際のチ ャ ン ク デー タ への 64 ビ ッ ト ポ イ ン タ ーです。 使用すべ き 形式は、 オペレーテ ィ ン グ シ ス テ ムに よ っ て異な り ます。1 直接チ ャ ン ク デ ィ ス ク リ プ タ ーのサブ フ ァ ン ク シ ョ ンの場 合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では こ の要素は無視 さ れます。 1 DOS アプ リ ケーシ ョ ンの場合、 ユーザー デー タ は 16 ビ ッ ト オ フ セ ッ ト お よ び 16 ビ ッ ト セグ メ ン ト と し て初期化 し て く だ さ い。 ユーザー デー タ では、 そのセグ メ ン ト の最後を越え て メ モ リ を ア ド レ ス指定す る こ と はで き ません。 チ ャ ン ク 長を ユーザー デー タ のオ フ セ ッ ト 部分に加算 し た と き 、 その結果は、 ユーザー デー タ に よ っ て定義 さ れ る セ グ メ ン ト の範囲内 でな ければな り ま せん。 デフ ォ ル ト で、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では こ の規則に対す る 違反はチ ェ ッ ク さ れ ず、 こ の よ う な違反は適切に処理 さ れません。 137 Btrieve API オペ レーシ ョ ン 次の表は、32 ビ ッ ト アプ リ ケーシ ョ ン用の直接 ラ ン ダ ム チ ャ ン ク デ ィ ス ク リ プ タ ー構造体の例を示 し てい ます。 要素 サンプル値 長さ (バイト単位) サブ フ ァ ン ク シ ョ ン 0x8000000 4 チャ ン ク数 3 4 チャ ン ク オフセ ッ ト 0x12 4 チャ ン ク長 0x05 4 ユーザー デー タ 適用外 4 チャ ン ク オフセ ッ ト 0x2A 4 チャ ン ク長 0x08 4 ユーザー デー タ 適用外 4 チャ ン ク オフセ ッ ト 0x41 4 チャ ン ク長 0x0E 4 ユーザー デー タ 適用外 4 チ ャ ン ク 0 用デー タ 適用外 5 チ ャ ン ク 1 用デー タ 適用外 8 チ ャ ン ク 2 用デー タ 適用外 14 チャンク 0 チャンク 1 チャンク 2 矩形チ ャ ン ク デ ィ ス ク リ プ タ ー構造体 同 じ 長 さ のチ ャ ン ク が レ コ ー ド 全体にわた っ て等間隔に配置 さ れてい る 場合は、矩形チ ャ ン ク デ ィ ス ク リ プ タ ー を使っ て、 更新す る すべてのチ ャ ン ク を記述する こ と がで き ます。 た と えば、 次の よ う な図を考えてみま し ょ う 。 こ の図は、 レ コ ー ド 内のオ フ セ ッ ト 0x00 か ら 0x4F ま でを表 し てい ます。 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 [*] [*] [*] [*] 1D 1E 1F 20 21 22 23 24 25 26 27 28 [*] [*] [*] [*] 2D 2E 2F 30 31 32 33 34 35 36 37 38 [*] [*] [*] [*] 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F こ の レ コ ー ド には 3 つのチ ャ ン ク ([*] があ る 部分) が含まれてい ます。 チ ャ ン ク 0 (バ イ ト 0x19 か ら 0x1C) 、 チ ャ ン ク 1 (バ イ ト 0x29 か ら 0x2C)、 お よ びチ ャ ン ク 2 (バ イ ト 0x39 か ら 0x3C) です。 各チ ャ ン ク はどれ も 4 バ イ ト の長 さ で、 チ ャ ン ク 同士は、 各チ ャ ン ク の先頭か ら 計算す る と 、 いずれ も 合計 16 (0x10) バ イ ト ずつ離れ てい ます。 138 Update Chunk (53) 1 つの矩形デ ィ ス ク リ プ タ ーを使っ て、 3 つのチ ャ ン ク をすべて更新で き ます。 矩形チ ャ ン ク を更新す る には、 表 49 に基づいてデー タ バ ッ フ ァ ーに構造体を作成する 必要があ り ます。 表 49 矩形チ ャ ン ク デ ィ ス ク リ プ タ ー構造体 要素 長さ (バイト単位) 説明 サブフ ァ ン ク シ ョ ン 4 チ ャ ン ク デ ィ ス ク リ プ タ ーの種類。 次のいずれかを指定 し ます。 0x80000002 (直接矩形チ ャ ン ク デ ィ ス ク リ プ タ ー) - デー タ バ ッ フ ァ ーに直 接格納 さ れてい る チ ャ ン ク を更新 し ます。先頭のチ ャ ン ク を更新す る ための デー タ は、 デー タ バ ッ フ ァ ー内の最後のチ ャ ン ク 定義 (チ ャ ン ク n) の直後 に格納 し ます。 ま た、 2 番目のチ ャ ン ク デー タ は先頭のチ ャ ン ク デー タ の 直後に、 と 順次格納 し ます。 0x80000003 (間接矩形チ ャ ン ク デ ィ ス ク リ プ タ ー) - チ ャ ン ク 定義で指定 さ れた ア ド レ ス にあ る デー タ を基にチ ャ ン ク を更新 し ます。 行数 4 矩形チ ャ ン ク デ ィ ス ク リ プ タ ーの操作対象 と す る チ ャ ン ク 数。 最小値は 1 で す。 明確な最大値はあ り ません。 位置 (オ フ セ ッ ト ) 4 更新す る 最初のバ イ ト の、 レ コ ー ド の先頭か ら のオ フ セ ッ ト 。 最小値は 0、 最 大値は レ コ ー ド の末尾のバ イ ト のオ フ セ ッ ト + 1 です。 レ コ ー ド が 1 つの矩形 と し て表 さ れ る 場合、 こ の要素は、 更新 さ れ る 先頭行にあ る 先頭バ イ ト のオ フ セ ッ ト を指 し ます。 行のバ イ ト 数 4 各チ ャ ン ク で更新す る バ イ ト 数。 最小値は 0、 最大値は 65,535 です。 ただ し 、 チ ャ ン ク 定義はデー タ バ ッ フ ァ ーに収 ま ら な ければな り ま せん。 デー タ バ ッ フ ァ ーのサ イ ズは、 表 18 の説明の と お り 制限 さ れてい ます。 行間隔 4 チ ャ ン ク の先頭か ら 次のチ ャ ン ク の先頭ま でのバ イ ト 数。 ユーザー デー タ 4 (32 ビ ッ ト アプ リ ケーシ ョ ン用) (間接デ ィ ス ク リ プ タ ーでのみ使用 し ます。 ) 32 ビ ッ ト アプ リ ケーシ ョ ンの場 合、 実際のチ ャ ン ク デー タ への 32 ビ ッ ト ポ イ ン タ ーです。 64 ビ ッ ト アプ リ ケーシ ョ ンの場合、 実際のチ ャ ン ク デー タ への 64 ビ ッ ト ポ イ ン タ ーです。 使 用すべ き 形式は、 オペレーテ ィ ン グ シ ス テ ムに よ っ て異な り ます。 1 直接矩形 デ ィ ス ク リ プ タ ーの場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では こ の要素 は無視 さ れ ます。 ただ し それで も 、 こ の要素を割 り 当て、 0 に初期化 し てお く 必要があ り ます。 8 (64 ビ ッ ト アプ リ ケーシ ョ ン用) アプ リ ケーシ ョ ン の行間隔 4 (間接矩形デ ィ ス ク リ プ タ ーでのみ使用 し ます。) 矩形がアプ リ ケーシ ョ ンの メ モ リ (つま り 、 ユーザー デー タ で指定 し た ア ド レ ス) に格納 さ れ る と き の、 矩 形内のチ ャ ン ク の先頭か ら 次のチ ャ ン ク の先頭ま でのバ イ ト 数。 直接矩形デ ィ ス ク リ プ タ ーの場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では こ の要素は無 視 さ れ ます。 ただ し それで も 、 こ の要素を割 り 当て、 0 に初期化 し てお く 必要 があ り ます。 1 DOS アプ リ ケーシ ョ ンの場合、 ユーザー デー タ は 16 ビ ッ ト オ フ セ ッ ト と それに続 く 16 ビ ッ ト セグ メ ン ト で表 し て く だ さ い。 矩形が メ モ リ 内にあ る と き 、 各行の間隔が レ コ ー ド と し て格納 さ れてい る と き と 同 じ バ イ ト 数にな る 場合は、 ア プ リ ケーシ ョ ンの行間隔に行間隔 と 同 じ 値を設定 し ます。 し か し 、 矩形がアプ リ ケーシ ョ ンの メ モ リ 内で再配置 さ れ、 行の間隔が何バ イ ト か増減す る 場合は、 アプ リ ケーシ ョ ンの行間隔に よ り 、 その情報を ト ラ ンザ ク シ ョ ナ ル イ ン タ ーフ ェ イ ス に渡す こ と がで き ます。 間接矩形デ ィ ス ク リ プ タ ーを使用す る と き は、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス はユーザー デー タ 要素お よ びアプ リ ケーシ ョ ンの行間隔要素を使っ て、 更新のためにデー タ を読み取 る 場所を決定 し ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では先頭行のデー タ はユーザー デー タ のオ フ セ ッ ト 0 か ら 読み取 ら れ ます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では 2 行目のデー タ は、 ユーザー デー タ + アプ リ ケーシ ョ ンの行間隔で指定 さ れ る ア ド レ ス か ら 読み取 ら れます。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では 3 行目のデー タ は、 ユーザー デー タ + ( アプ リ ケーシ ョ ンの行間隔 * 2) で指定 さ れ る ア ド レ ス か ら 読み取 ら れ、 以下同様です。 139 Btrieve API オペ レーシ ョ ン 次の表は、 32 ビ ッ ト アプ リ ケーシ ョ ン用の直接矩形チ ャ ン ク デ ィ ス ク リ プ タ ー構造体の例を示 し てい ます。 要素名 サンプル値 長さ (バイト単位) サブ フ ァ ン ク シ ョ ン 0x80000002 4 行数 3 4 位置 (オ フ セ ッ ト ) 0x19 4 行のバ イ ト 数 0x04 4 行間隔 0x10 4 ユーザー デー タ 0 4 アプ リ ケーシ ョ ンの行間隔 0 4 デー タ (行 0) 適用外 4 デー タ (行 1) 適用外 4 デー タ (行 2) 適用外 4 切 り 捨てデ ィ ス ク リ プ タ ー構造体 切 り 捨てデ ィ ス ク リ プ タ ーを使 う と 、 指定 し たオ フ セ ッ ト で レ コ ー ド を切 り 捨て る こ と がで き ます。 こ の種類の チ ャ ン ク デ ィ ス ク リ プ タ ーを使用す る には、次の表に基づいてデー タ バ ッ フ ァ ーに構造体を作成す る 必要があ り ます。 表 50 切 り 捨てデ ィ ス ク リ プ タ ー構造体 要素 長さ (バイト単位) 説明 サブフ ァ ン ク シ ョ ン 4 チ ャ ン ク デ ィ ス ク リ プ タ ーの種類。 0x80000004 を指定 し ます。 チ ャ ン ク オフ セ ッ ト 4 切 り 捨て を開始す る 位置の、 レ コ ー ド 内でのバ イ ト オ フ セ ッ ト 。 指定 し たバ イ ト と 、 それ以降のバ イ ト がすべて削除 さ れ ま す。 最小値は 4、 最大値は レ コ ー ド の末尾のバ イ ト のオ フ セ ッ ト です。 ネ ク ス ト イ ン レ コ ー ド サブ フ ァ ン ク シ ョ ン バイ ア ス こ れ ま でに述べたサブ フ ァ ン ク シ ョ ンの値にバ イ ア ス 0x40000000 を加算す る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ー フ ェ イ ス ではレ コ ー ド 内の物理カ レ ン シー (つま り 、レ コ ー ド 内の現在の物理位置) に基づいてサブ フ ァ ン ク シ ョ ンのオ フ セ ッ ト 要素の値が算出 さ れます。 ネ ク ス ト イ ン レ コ ー ド サブ フ ァ ン ク シ ョ ン を使用する 場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではチ ャ ン ク デ ィ ス ク リ プ タ ーのオ フ セ ッ ト 要素は無視 さ れます。 こ のバ イ ア ス を ラ ン ダ ム チ ャ ン ク デ ィ ス ク リ プ タ ー と 組み合わせて使用 し 、1 回のオペレーシ ョ ン で複数のチ ャ ン ク を更新す る 場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では前のチ ャ ン ク の長 さ に前のチ ャ ン ク のオ フ セ ッ ト が加算 さ れ、 先頭のチ ャ ン ク を除 く すべてのチ ャ ン ク に対す る オ フ セ ッ ト が自動的に計算 さ れ ま す。 つ ま り 、 ネ ク ス ト イ ン レ コ ー ド バ イ ア ス は、 オペレ ーシ ョ ン の対象 と な る すべてのチ ャ ン ク に適用 さ れ る と い う こ と で す。 追加サブ フ ァ ン ク シ ョ ン バイ ア ス バ イ ア ス 0x20000000 を ラ ン ダ ム チ ャ ン ク デ ィ ス ク リ プ タ ーのサブ フ ァ ン ク シ ョ ン ま たは矩形チ ャ ン ク デ ィ ス ク リ プ タ ーのサブ フ ァ ン ク シ ョ ンの値に加算する と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではそのサブ フ ァ ン ク シ ョ ンのオ フ セ ッ ト 要素の値が レ コ ー ド の末尾の次のバ イ ト と な る よ う に計算 さ れます。 140 Update Chunk (53) メ モ こ のバ イ ア ス は、 ネ ク ス ト イ ン レ コ ー ド バ イ ア ス ま たは切 り 捨てサブ フ ァ ン ク シ ョ ン と 共に使用 し な いで く だ さ い。 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で、 こ のバ イ ア ス を ラ ン ダ ム チ ャ ン ク デ ィ ス ク リ プ タ ー と 組み合わせて 使用 し 、 1 回のオペレーシ ョ ンで複数のチ ャ ン ク を更新す る 場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス では前 のチ ャ ン ク の追加後の レ コ ー ド の長 さ に基づいて、 先頭のチ ャ ン ク を除 く すべてのチ ャ ン ク に対す る オ フ セ ッ ト が自動的に計算 さ れます。 結果 Update Chunk オペ レ ーシ ョ ン が正常に終了 し た場合、 ト ラ ン ザ ク シ ョ ナル イ ン タ ー フ ェ イ ス ではデー タ バ ッ フ ァ ーのチ ャ ン ク デ ィ ス ク リ プ タ ー部分でチ ャ ン ク と し て識別 さ れた レ コ ー ド の部分が更新 さ れます。 チ ャ ン ク を更新す る ための新 し いデー タ は、直接チ ャ ン ク デ ィ ス ク リ プ タ ーのサブ フ ァ ン ク シ ョ ン を使用 し た場合はチ ャ ン ク デ ィ ス ク リ プ タ ー自体に、間接チ ャ ン ク デ ィ ス ク リ プ タ ーのサブ フ ァ ン ク シ ョ ン を使用 し た場合は、各チ ャ ン ク のユーザー デー タ 要素の 32 ビ ッ ト ポ イ ン タ ーで指定 さ れた メ モ リ ア ド レ ス に格納 さ れてい ます。 Update Chunk オペレーシ ョ ンが完了す る と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではキー値の変更を反映 し て キー イ ンデ ッ ク ス が調整 さ れ、 必要に応 じ て キー バ ッ フ ァ ー パ ラ メ ー タ ーが更新 さ れます。 さ ら に、 アプ リ ケーシ ョ ンが更新す る レ コ ー ド に単一レ コ ー ド ロ ッ ク を設定 し てい る 場合は、 ト ラ ンザ ク シ ョ ナ ル イ ン タ ーフ ェ イ ス では ロ ッ ク が解除 さ れます。 し か し 、 複数レ コ ー ド ロ ッ ク は Update Chunk オペレーシ ョ ン を実行 し て も 解除 さ れません。 Update Chunk オペレーシ ョ ンが正常に実行 さ れなか っ た場合は、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら 次の ス テー タ ス コ ー ド のいずれかが返 さ れます。 5 レ コ ー ド のキー フ ィ ール ド に重複す る キー値があ り ます。 8 現在のポジシ ョ ンが不正です。 10 キー フ ィ ール ド は変更で き ません。 22 デー タ バ ッ フ ァ ー パ ラ メ ー タ ーが短すぎ ます。 58 圧縮バ ッ フ ァ ー長が短すぎ ます。 62 デ ィ ス ク リ プ タ ーが不正です。 80 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス で レ コ ー ド レベルの矛盾が発生 し ま し た。 97 デー タ バ ッ フ ァ ーが小 さ すぎ ます。 103 チ ャ ン ク オ フ セ ッ ト が大 き すぎ ます。 106 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス は、 Get Next Chunk オペレーシ ョ ン を実行で き ません。 ポジ シ ョ ニ ング Update Chunk オペレーシ ョ ン を実行 し て も 、 物理カ レ ン シーお よ び現在の論理レ コ ー ド は変わ り ません。 メ モ Get オペレーシ ョ ンに続けて Update Chunk オペレーシ ョ ン を実行す る 場合は、直前の Get オペレーシ ョ ンで指定 し た キー番号 と 異な る 値を Update Chunk オペレーシ ョ ンに渡 さ ないで く だ さ い。異な る キー番号を 渡す と 、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に よ っ て確立 さ れ る ポジシ ョ ニ ン グが予測で き ない も のにな り ます。 141 Btrieve API オペ レーシ ョ ン Version (26) ク ラ イ ア ン ト ア プ リ ケーシ ョ ン の場合、 Version オペ レ ーシ ョ ン (B_VERSION) では、 ロ ーカルの ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス のバージ ョ ンお よ び、 適用可能であれば、 リ ク エ ス タ ーのバージ ョ ン が返 さ れ ます。 ま た、ク ラ イ ア ン ト アプ リ ケーシ ョ ンがサーバー上の フ ァ イ ルを開いていた り 、キー バ ッ フ ァ ーにサーバー フ ァ イ ル パ ス名を指定 し てい る と 、 そのサーバー上で実行 さ れてい る ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス のバー ジ ョ ン も 返 さ れます。サーバーベース アプ リ ケーシ ョ ンの場合は、サーバーベース ト ラ ンザ ク シ ョ ナル イ ン タ ー フ ェ イ ス のバージ ョ ンお よ び リ ビ ジ ョ ン番号が返 さ れます。 パラ メ ー タ ー オペレーション コード 送り値 ポジション ブロック データ バッ データ バッ ファー ファー長 ○ 戻り値 キー バッ ファー キー番号 ○ ○ ○ 前提条件 Version オペレーシ ョ ン を発行す る には、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ま たは リ ク エ ス タ ーの ど ち ら か が ロ ー ド さ れてい る こ と が必要です。 手順 1 オペレーシ ョ ン コ ー ド に 26 を設定 し ます。 2 デー タ バ ッ フ ァ ー長に少な く と も 15 を設定 し ます (詳細については、 表 51 を参照 し て く だ さ い)。 3 サーバーベース ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス のバージ ョ ン番号を取得する には、そのサーバー上で 開いてい る フ ァ イ ルの有効なポジシ ョ ン ブ ロ ッ ク を指定す る か、キー バ ッ フ ァ ーに有効なパ ス名を指定す る 必要があ り ます。 結果 ワ ー ク ス テーシ ョ ン ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス と ク ラ イ ア ン ト リ ク エ ス タ ーの両方にア ク セ ス で き る よ う に環境設定 さ れてお り 、 Version オペレーシ ョ ンが正常に終了 し た場合は、 ワ ー ク ス テーシ ョ ン ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス、ク ラ イ ア ン ト リ ク エ ス タ ー、お よ びサーバーベース ト ラ ンザ ク シ ョ ナル イ ン タ ー フ ェ イ ス のバージ ョ ン情報が返 さ れます。 こ の場合、 15 バ イ ト のデー タ バ ッ フ ァ ー と デー タ バ ッ フ ァ ー長を指定 し て く だ さ い。 ク ラ イ ア ン ト リ ク エ ス タ ー と ワー ク ス テーシ ョ ン ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス の両方が ロ ー ド さ れて お り 、 デー タ バ ッ フ ァ ー と デー タ バ ッ フ ァ ー長に 5 バ イ ト し か指定 し ていない と 、 ク ラ イ ア ン ト リ ク エ ス タ ー のバージ ョ ン情報だけが返 さ れます。 10 バ イ ト し か指定 し て し ない場合は、 ク ラ イ ア ン ト リ ク エ ス タ ー と ロ ーカル ワー ク ス テーシ ョ ン エン ジ ンが返 さ れます。 デー タ バ ッ フ ァ ー と デー タ バ ッ フ ァ ー長に 15 バ イ ト を指定 し た場合は、 ク ラ イ ア ン ト リ ク エ ス タ ー、 ロ ーカル ワ ー ク ス テーシ ョ ン エン ジ ン、 お よ びサーバー エン ジ ン (適用可能な場合) が返 さ れます。 142 Version (26) デー タ バ ッ フ ァ ーには、 表 51 の形式に従っ て、 Version オペレーシ ョ ンか ら ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ま たは リ ク エ ス タ ーご と に 5 バ イ ト のバージ ョ ン ブ ロ ッ ク が返 さ れます。 各ブ ロ ッ ク の 5 バ イ ト 目に よ り 、 そ れぞれの ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ま たは リ ク エ ス タ ーを識別で き ます。 表 51 バージ ョ ン ブ ロ ッ ク 要素 長さ (バイト単位) 説明 バージ ョ ン番号 2 Pervasive PSQL のバージ ョ ン番号。 リ ビ ジ ョ ン番号 2 Pervasive PSQL の リ ビ ジ ョ ン番号。 リ クエス ターまた はエン ジ ンの種類 1 エン ジ ン ま たは リ ク エ ス タ ーの種類は、 次のいずれかにな り ます。 9 (0x39) は ワー ク グループ デー タ ベース エ ン ジ ン、 ま たは ワー ク グルー プの認証モー ド を使用 し てい る Linux デー タ ベース サーバー D (0x44) は DOS ワー ク ス テーシ ョ ン N (0x4E) は ク ラ イ ア ン ト リ ク エ ス タ ー T (0x54) は Windows サーバー エ ン ジ ン U (0x55) は PAM ま たは BTPASSWD 認証を使用 し てい る Linux サーバー た と えば、 Pervasive.SQL v8.10 for Windows を実行 し てい る 場合は、 デー タ バ ッ フ ァ ーに次の よ う な 16 進の値が 返 さ れます。 08 00 0A 00 54 こ れ ら の値を 10 進に変換す る と 、 バージ ョ ン番号は 8 で、 リ ビ ジ ョ ン番号は 10 にな り ます。 Version オペレー シ ョ ンが正常に実行 さ れなか っ た場合、ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら は 0 以外の ス テー タ ス コ ー ド が返 さ れます。 ポジ シ ョ ニ ング Version オペレーシ ョ ンは、 ポジシ ョ ニ ン グに ま っ た く 影響 し ません。 143 Btrieve API オペ レーシ ョ ン 144 Btrieve オペ レーシ ョ ンのク ィ ッ ク リ フ ァ レンス A 本付録では、 オペレーシ ョ ン コ ー ド の番号順に Btrieve API オペレーシ ョ ン を要 約 し ます。 Btrieve API オペ レーシ ョ ン一覧 表 52 Btrieve API オペ レーシ ョ ンのク ィ ッ ク リ フ ァ レ ン ス オペ レーシ ョ ン コー ド 定数 説明 Open 0 B_OPEN フ ァ イ ルを ア ク セ ス可能な状態に し ます。 Close 1 B_CLOSE フ ァ イ ルを ア ク セ ス可能な状態か ら 解放 し ます。 Insert 2 B_INSERT フ ァ イ ルに新 し い レ コ ー ド を挿入 し ます。 Update 3 B_UPDATE 現在の レ コ ー ド を更新 し ます。 Delete 4 B_DELETE フ ァ イ ルか ら 現在の レ コ ー ド を削除 し ます。 Get Equal 5 B_GET_EQUAL 指定 さ れた キー値に等 し いキー値を持つレ コ ー ド を返 し ます。 Get Next 6 B_GET_NEXT イ ンデ ッ ク ス パス で現在の レ コ ー ド の次にあ る レ コ ー ド を返 し ます。 Get Previous 7 B_GET_PREVIOUS イ ンデ ッ ク ス パス で現在の レ コ ー ド の前にあ る レ コ ー ド を返 し ます。 Get Greater Than 8 B_GET_GT 指定 さ れた キー値 よ り 大 き いキー値を持つレ コ ー ド を返 し ます。 Get Greater Than or Equal 9 B_GET_GE 指定 さ れた キー値 よ り 大 き い ま たは等 し いキー値を持つ レ コ ー ド を返 し ます。 Get Less Than 10 B_GET_LT 指定 さ れた キー値 よ り 小 さ いキー値を持つレ コ ー ド を返 し ます。 Get Less Than or Equal 11 B_GET_LE 指定 さ れた キー値 よ り 小 さ い ま たは等 し いキー値を持つ レ コ ー ド を返 し ます。 Get First 12 B_GET_FIRST 指定 さ れた イ ンデ ッ ク ス パ ス の先頭の レ コ ー ド を返 し ま す。 Get Last 13 B_GET_LAST 指定 さ れた イ ンデ ッ ク ス パ ス の末尾の レ コ ー ド を返 し ま す。 Create 14 B_CREATE 指定 さ れた特性を持つフ ァ イ ルを作成 し ます。 Stat 15 B_STAT フ ァ イ ルお よ び イ ンデ ッ ク ス の特性 と レ コ ー ド の数を返 し ます。 Extend 16 B_EXTEND デー タ フ ァ イ ル を 2 つ以上の論理デ ィ ス ク ド ラ イ ブに 分割 し ます。 こ のオペレーシ ョ ンは、 Btrieve 6.0 以降では サポー ト さ れません。 145 Btrieve オペ レーシ ョ ンのク ィ ッ ク リ フ ァ レ ン ス 表 52 Btrieve API オペ レーシ ョ ンの ク ィ ッ ク リ フ ァ レ ン ス オペ レーシ ョ ン コー ド 定数 説明 Set Directory 17 B_SET_DIR 現在のデ ィ レ ク ト リ を指定 さ れたパ ス名に設定 し ます。 Get Directory 18 B_GET_DIR 指定 さ れた論理デ ィ ス ク ド ラ イ ブの現在のデ ィ レ ク ト リ を返 し ます。 Begin Transaction 19 1019 B_BEGIN_TRAN 論理的に関連 し てい る 一連のオペレーシ ョ ン の開始を指 定 し ます。 オペレーシ ョ ン 19 は排他 ト ラ ンザ ク シ ョ ン を 開始 し ます。 オペレーシ ョ ン 1019 は並行 ト ラ ンザ ク シ ョ ン を開始 し ます。 End Transaction 20 B_END_TRAN 論理的に関連 し てい る 一連のオペレーシ ョ ン の終了を指 定 し ます。 Abort Transaction 21 B_ABORT_TRAN 完了 し な か っ た ト ラ ン ザ ク シ ョ ン 中に実行 さ れ た オペ レーシ ョ ン を取 り 消 し ます。 Get Position 22 B_GET_POSITION 現在の レ コ ー ド の位置を返 し ます。 Get Direct/Chunk 23 B_GET_DIRECT 指定 さ れた位置に あ る レ コ ー ド の指定部分 (チ ャ ン ク ) か ら デー タ を返 し ます。 Get Direct/Record 23 B_GET_DIRECT 指定 さ れた位置にあ る レ コ ー ド を返 し ます。 Step Next 24 B_STEP_NEXT 物理的に現在の レ コ ー ド の次に あ る レ コ ー ド を 返 し ま す。 Stop 25 B_STOP ワ ー ク ス テーシ ョ ン ト ラ ン ザ ク シ ョ ナル イ ン タ ー フ ェ イ ス を終了 し ます (サーバー ベース の ト ラ ンザ ク シ ョ ナ ル イ ン タ ーフ ェ イ ス では使用で き ません)。 Version 26 B_VERSION ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス のバージ ョ ン番号 を返 し ます。 Unlock 27 B_UNLOCK レ コ ー ド の ロ ッ ク を解除 し ます。 Reset 28 B_RESET ク ラ イ ア ン ト に よ っ て保持 さ れてい る すべての リ ソ ー ス を解放 し ます。 Set Owner 29 B_SET_OWNER フ ァ イ ルにオーナー ネーム を割 り 当て ます。 Clear Owner 30 B_CLEAR_OWNER フ ァ イ ルか ら オーナー ネーム を削除 し ます。 Create Index 31 B_BUILD_INDEX イ ンデ ッ ク ス を作成 し ます。 Drop Index 32 B_DROP_INDEX イ ンデ ッ ク ス を削除 し ます。 Step First 33 B_STEP_FIRST フ ァ イ ル内で物理的な先頭位置にあ る レ コ ー ド を返 し ま す。 Step Last 34 B_STEP_LAST フ ァ イ ル内で物理的な末尾位置にあ る レ コ ー ド を返 し ま す。 Step Previous 35 B_STEP_PREVIOUS 物理的に現在の レ コ ー ド の前に あ る レ コ ー ド を 返 し ま す。 Get Next Extended 36 B_GET_NEXT_EXTENDED イ ンデ ッ ク ス パ ス で現在の レ コ ー ド の次にあ る 1 つま た は複数の レ コ ー ド を返 し ま す。 フ ィ ル タ ー条件を適用で き ます。 Get Previous Extended 37 B_GET_PREV_EXTENDED イ ンデ ッ ク ス パ ス で現在の レ コ ー ド の前にあ る 1 つま た は複数の レ コ ー ド を返 し ま す。 フ ィ ル タ ー条件を適用で き ます。 146 表 52 Btrieve API オペ レーシ ョ ンの ク ィ ッ ク リ フ ァ レ ン ス オペ レーシ ョ ン コー ド 定数 説明 Step Next Extended 38 B_STEP_NEXT_EXT 物理的に現在の レ コ ー ド の次の位置か ら 1 つま たは複数 の連続す る レ コ ー ド を返 し ま す。 フ ィ ル タ ー条件を適用 で き ます。 Step Previous Extended 39 B_STEP_PREVIOUS_EXT 物理的に現在の レ コ ー ド の前の位置か ら 1 つま たは複数 の連続す る レ コ ー ド を返 し ま す。 フ ィ ル タ ー条件を適用 で き ます。 Insert Extended 40 B_EXT_INSERT フ ァ イ ルに 1 つま たは複数の レ コ ー ド を挿入 し ます。 Continuous Operation 42 B_CONTINUOUS ア ク テ ィ ブ な ト ラ ン ザ ク シ ョ ナル イ ン タ ー フ ェ イ ス フ ァ イ ルを閉 じ ずに、 シ ス テ ム バ ッ ク ア ッ プを実行で き る よ う に し ます。 Get By Percentage 44 B_SEEK_PERCENT 指定 さ れたパーセ ン テージ値に よ っ て示 さ れ る 位置の最 も 近 く にあ る レ コ ー ド を返 し ます。 Find Percentage 45 B_GET_PERCENT フ ァ イ ル内におけ る 現在の レ コ ー ド 位置に基づいたパー セ ン テージ値を返 し ます。 Get Key +50 KEY_BIAS 実際の レ コ ー ド を 返す こ と な く 、 フ ァ イ ル内に特定の キー値が存在す る か ど う かを検出 し ます。 Update Chunk 53 B_CHUNK_UPDATE 現在の レ コ ー ド の指定 さ れた部分 (チ ャ ン ク ) を更新 し ます。 こ のオペレーシ ョ ン では、 レ コ ー ド にデー タ を追 加 し た り 、 レ コ ー ド を切 り 詰め る こ と も で き ます。 Stat Extended 65 B_EXTENDED_STAT 拡張 フ ァ イ ル の 構成要素 の パ ス と フ ァ イ ル名 を 返 し 、 フ ァ イ ルがシ ス テ ム定義の ロ グ キーを使用 し てい る か ど う かを報告 し ます。 単一レ コ ー ド の ウ ェ イ ト ロック -100 S_WAIT_LOCK 一度に 1 つの レ コ ー ド だけ を ロ ッ ク し ま す。 レ コ ー ド が 既に ロ ッ ク さ れ て い る 場合、 ト ラ ン ザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではオペレーシ ョ ンが再試行 さ れます。 単一レ コ ー ド の ノ ー ウェイ ト ロッ ク -200 S_NOWAIT_LOCK 一度に 1 つの レ コ ー ド だけ を ロ ッ ク し ま す。 レ コ ー ド が 既に ロ ッ ク さ れ て い る 場合、 ト ラ ン ザ ク シ ョ ナル イ ン タ ー フ ェ イ ス か ら エ ラ ー ス テー タ ス コ ー ド が返 さ れ ま す。 複数レ コ ー ド の ウ ェ イ ト ロック -300 M_WAIT_LOCK 同一 フ ァ イ ルの複数の レ コ ー ド を 並行的に ロ ッ ク し ま す。 レ コ ー ド が既に ロ ッ ク さ れてい る 場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス ではオペレーシ ョ ンが再試行 さ れます。 複数レ コ ー ド の ノ ー ウェイ ト ロッ ク -400 M_NOWAIT_LOCK 同一 フ ァ イ ルの複数の レ コ ー ド を 並行的に ロ ッ ク し ま す。 レ コ ー ド が既に ロ ッ ク さ れてい る 場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス か ら エ ラ ー ス テー タ ス コ ー ド が返 さ れます。 ノ ーウ ェ イ ト ページ ロック -500 NOWRITE_WAIT 並行 ト ラ ンザ ク シ ョ ン で、 変更 し よ う と し たページがア ク テ ィ ブな別の並行 ト ラ ンザ ク シ ョ ン に よ っ て既に変更 さ れてい る 場合、 ト ラ ンザ ク シ ョ ナル イ ン タ ーフ ェ イ ス に ウ ェ イ ト し な い よ う に指示 し ま す。 こ のバ イ ア ス は、 ど の レ コ ー ド ロ ッ ク バ イ ア ス (+100、+200、+300、+400) と で も 組み合わせ る こ と がで き ます。 147 Btrieve オペ レーシ ョ ンのク ィ ッ ク リ フ ァ レ ン ス 148
© Copyright 2024 ExpyDoc