home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / DATABASE / BLTC17.ZIP / !WHATIS.TXT < prev    next >
Encoding:
Text File  |  1993-08-31  |  5.5 KB  |  96 lines

  1. What is BULLET?
  2.  
  3. If you've been wanting to create the ultimate database program, or just a simple
  4. mailing list to handle your holiday cards, BULLET is the programming library for
  5. you. BULLET is a library module for programmers developing in MS-DOS. What
  6. language you ask? Would you believe most any? That's right, BULLET is designed
  7. to operate as-is with most compilers* available for DOS (DOS 3.3 or above is
  8. required). This is possible because BULLET is written entirely in assembly
  9. langauge. Everything it needs it has built in, so no specific compiler run-time
  10. library is required. Your compiler simply needs to be able to:
  11.  
  12.  1. Perform a far call to an external routine using the Pascal calling
  13.     convention.
  14.  2. Build a parameter pack, as in a C struct or BASIC TYPE, for example.
  15.  3. Pass a single far pointer by value (of the parameter pack) to the external
  16.     routine.
  17.  4. Accept a return integer value from the external routine (optional).
  18.  
  19. BULLET uses high-speed b-tree indexes and the industry-standard DBF data file
  20. format to quickly and easily move data to and from disk. The BULLET API includes
  21. over 65 functions to perform tasks from low-level direct DOS file I/O to
  22. high-level transaction-based updates to network routines that let you control
  23. who has access to your files and when. National Language Support (NLS) is built
  24. into each key file. This allows you to properly sort mixed-case and/or foreign
  25. language alphabets. BULLET supports character keys up to 64 bytes as well as
  26. 16-/32-bit integer keys (signed or unsigned). Index files specify if duplicate
  27. keys are allowed or whether unique keys are to be enforced. And although dBASE
  28. DBF data file compatiblility is standard, you can create non-standard DBF files,
  29. such as having fields contain binary data. Key expressions are specified using
  30. text, as in kx = "SUBSTR(Fieldname,1,10)+Fieldname+SUBSTR(Fieldname,10,3)". Keys
  31. may be composed of up to 16 separate fields, located anywhere within the record.
  32.  
  33. The transaction nature of BULLET greatly simplifies what is required of the
  34. programmer. For example, let's say you have a 100,000-record data file with 12
  35. active index files and need to insert a new record. With BULLET, you simply
  36. build the data record and call the InsertXB routine. InsertXB adds the record to
  37. the data file, builds all 12 keys and inserts each into the appropriate index
  38. file. If an error occured, say, while inserting the 11th key, BULLET
  39. automatically backs-out all changes just made to the key files and data file. As
  40. another example, say, updating an exisiting data record, you'd make any
  41. modifications to the data record and call the UpdateXB routine. UpdateXB updates
  42. the record in the data file and automatically updates all 12 index files. If an
  43. error occured, say, with the 5th key, BULLET automatically backs-out all changes
  44. made to the key files and data file.  In addition, transaction-based network
  45. routines are available. These high-level lock/unlock routines also automatically
  46. handle the necessary reloading and flushing of file headers. And what  about
  47. performance? Read on.
  48.  
  49. * BULLET has been tested and used successfully under QuickBASIC 4.5, BASIC 7.1
  50.   (w/QBX), Turbo C 2.0, and QuickC 2.50.
  51.  
  52.  
  53. BULLET is fast! The ReindexXB routine indexes your DBF data files in no time
  54. flat: that 100,000 record .DBF can be completely reindexed in under 30 seconds
  55. on a fast computer system. The InsertXB routine can add 1,000 new records and
  56. keys to that 100,000 record database at a rate of over 50 new inserts per
  57. second. This isn't inserting into an empty database, it's inserting into a
  58. database that's already 100,000 records large. UpdateXB can update
  59. 1,000 records in that database at a rate of 20 updates/second. And what about
  60. access speed? How fast can you get to your data once it's in the database? Real
  61. fast! To access from first key to last all 100,000 keys takes less than
  62. 25 seconds (4500+/sec). That shows how fast you can find keys. To access the
  63. keys and also access each data record associated with that key takes a bit
  64. longer. Accessing all 100,000 keys and records takes just over a minute
  65. (1400+/sec). This is in-order access. Incredible. And if you wanted to access
  66. from the last key to the first (reverse-order), the times are just as fast.
  67. What do you get with the BULLET package?
  68.  
  69.  - The BULLET library module, 19K of code and static data space (small indeed)
  70.  - Sample program in C plus an interactive demo for browsing any DBF
  71.  - 200K of documentation, source examples, and a tutorial, all online
  72.  - CZ, the 15K online, context-sensitive, hyper-text help manager
  73.  - Royalty-free use of BULLET in your programs
  74.  
  75. Routines by category:
  76.  
  77. SYSTEM: InitXB, ExitXB, AtExitXB, MemoryXB, BreakXB, BackupFileXB, StatHandleXB,
  78. GetExtErrorXB
  79.  
  80. MID-LEVEL RECORD/KEY ACCESS: CreateDXB, OpenDXB, CloseDXB, StatDXB, ReadDHXB,
  81. FlushDHXB, CopyDHXB, ZapDHXB, CreateKXB, OpenKXB, CloseKXB, StatKXB, ReadKHXB,
  82. FlushKHXB, CopyKHXB, ZapKHXB, GetDescriptorXB, GetRecordXB, AddRecordXB,
  83. UpdateRecordXB, DeleteRecordXB, UndeleteRecordXB, PackRecordsXB, FirstKeyXB,
  84. EqualKeyXB, NextKeyXB, PrevKeyXB, LastKeyXB, StoreKeyXB, DeleteKeyXB,
  85. BuildKeyXB, CurrentKeyXB
  86.  
  87. HIGH-LEVEL ACCESS: GetFirstXB, GetEqualXB, GetNextXB, GetPrevXB, GetLastXB,
  88. InsertXB, UpdateXB, ReindexXB
  89.  
  90. NETWORK: LockXB, UnlockXB, LockKeyXB, UnlockKeyXB, LockDataXB, UnlockDataXB,
  91. DriveRemoteXB, FileRemoteXB, SetRetriesXB
  92.  
  93. LOW-LEVEL DOS ACCESS: DeleteFileDOS, RenameFileDOS, CreateFileDOS,
  94. AccessFileDOS, OpenFileDOS, SeekFileDOS, ReadFileDOS, ExpandFileDOS,
  95. WriteFileDOS, CloseFileDOS, MakeDirDOS
  96.