Announce: Release 0.70 of BDB-BASIC is now available



Release 0.70 of BDB-BASIC is now available for download here:

http://sourceforge.net/project/showfiles.php?group_id=213049

Platforms:
==========

- Linux
- Cygwin
- HPUX
- Solaris
- AIX

Feature and Change Summary for 0.70:
====================================

- Database functionality has been tested and bug fixed.
Extensive tests are now included in the test suite.
- Related to the above, transactional capabilities have
been disabled by default, due to bugs in Berkeley's
DB (provoked perhaps by BDB-Basic's use of its own
key compare routines, which is required).
- Colours have been added to interactive mode messages.
- Hexadecimal constants are now supported.
- VARYING string support in the database indexes and
binary file I/O has been enhanced to be varying.
- Several functions added.
- Ability to declare new records like existing ones (clone)
- Dynamic array resizing is fully supported.

BDB Note:

Due to the suspension of transactional capabilities (above)
BDB-BASIC at present cannot support a multi-user
application on the same database. How this issue will
be resolved is unknown at the moment.

Any code using a COMMIT TRANSACTION will always succeed.
Release 0.70 will always raise an error if the
ABORT TRANSACTION statement is used.

Change Details:
===============

- Added colour to prompt, error messages, STATUS, SHOW FILE
and SHOW STACK commands.
- Hexadecimal constants may be entered into the program as
%00F008 for example.
- Added attribute and colour mask constants needed for information
returned by CHRAT(Y,X). These are defined as CRT.AM_ATTRIBUTES
etc.
- Function CHRAT(Y,X) added to return character and
attribute information about screen location Y,X.
- LISTP command now shows date, bytes, line count and the program
name.
- SAVE/RESAVE/LOAD now store some program header information,
which will make the program version and the date created/
modified
available to LISTP.
- Changed SYS.STATEMENTS so that it is modifyable by the program.
- Date/time created is now saved in the binary executable
for a basic program.
- LOAD/SAVE now reports the date/time created (date is also
saved within the binary "file" when saved outside of the
database).
- Added sh environment variables BB_DTFORMAT and BB_DFORMAT to
allow user customization of the interpreter date/time
formats. These affect the command interface only (not the
executing BASIC programs).
- Fake data added for database tests.
- PRINT CRT(CS) now sets the screen background colour to the
last PRINT BG(COLOUR) settting used.
- Enhanced the PRINT statement to allow slashes to specify
newlines.
- Changed the way VARYING length strings are stored in the
database, and used by the primary and secondary indexes.
The variable length string content is now preceded by a 1
to 5 byte length prefix. One byte is used for lengths less
than or equal to 127 bytes, etc. This corrects secondary
index issues that were occurring. This also improves the
density of indexed data leading to much better
performance.
- Binary file I/O now properly writes VARYING length strings
in varying lengths, in the same way that they are used by
the Berkeley DB index and record data.
- Ported to AIX 5.x port (in 64 bit mode using gcc &
bison).
- Added missing string function TRIM$(S$) to trim trailing
blanks.
- The function LENGTH may be used on a record now.
LENGTH(RECD) now returns the binary length of the record
as it would be written to file (or a database row).
- Added a ROT13$() function for simple encryption, or
obfuscation.
- When the project is compiled with the default of
EN_REWRITE_CURRENT set to zero, the REWRITE CURRENT()
statement will automatically recover from the error when
secondary index cursors are used. Refer to the online
change log for more specific details.
- Added test suite module for TEMP tables and HASH tables.
- Fixed the creation of and opening of HASH tables.
- Fixed error handling in OPEN CREATE TABLE operations.
Previously the OPEN CREATE would succeed, even when the
table already existed. This now raises the error
ERRS.EEXIST when the table previously exists.
- Added the ROUND(FVAL,DEC) function to allow rounding of
values.
- The SHORT, LONG, DIM and VARYING statements now support
"resizing" of arrays.
- Lifted syntax restrictions on PRINT statement expressions.
Now the only restriction is within the CRT() function
calls that are unique to the PRINT statement. Now it is
possible to use PRINT A+B*D,Z,ETC
- Now supports cloning of existing records with a modified
RECORD statement format.
- The ENTER and MERGE commands have been enhanced to report
any lines that get replaced (due to duplicate line
numbers).

BUG FIX HIGHLIGHTS:

- Bug fix: When OUTPUT statement is to the screen, perform a
flush to force the I/O.
- Bug fix: Continuation of the May 27th bug fix, which was
incomplete.
- Bug fix: READ from DATA statements bug fixed. Previously,
if there were non-DATA statements in between, an abort
would occur.
- Bug fix: related to PRIMARY and SECONDARY database indexes.
- Bug fix: Now allows parentheses around relational
expressions in the IF statement (these were being
erroneously flagged as syntax errors).
- Fixed the attribute resetting bug: like PRINT CRT(ABO0).
Previously the attribute was not being turned off.
- Fixed bug where COMMON statement aborts when an undefined
variable is used.
- Fixed formatting bug between right bracket and ON in START
FIRST statement.
- Bug fixes for secondary index data when variable length
strings were used in the index.
- Bug fix: OPEN CREATE HASH() tables are now supported.
- Fixed a bug where a VARYING string could be declared
within a RECORD DECLARE statement that was not a string
name (didn't end in a dollar sign).
- Fixed WRITE TABLE/DELETE TABLE statement so that the ON
KEY GOTO ... clause worked when required.

A full description of all changes are found here:

http://bdbbasic.wiki.sourceforge.net/ChangeLog

What is BDB-BASIC?
==================

In a nutshell, BDB-BASIC is designed to be an open sourced POSIX
friendly BASIC interpreter, supporting database functionality and
business related functions. It can be operated as a shell script,
or as a subsystem.

It is targeted at small business owners, scientists, experimenters,
ham
radio operators and hobbyists. It also should make a great environment
for those wishing to learn about programming.

See http://bdbbasic.wiki.sourceforge.net for more information.

--
Warren.
.



Relevant Pages

  • Re: Novice needs help - solution questions
    ... Jim Y wrote: ... I don't know enough about DAO database programming to ... don't think that it is a bug that you have, ... "bug fix" of destroying a form does not cause more issues, ...
    (microsoft.public.vb.database.dao)
  • Re: crashes when copied...
    ... Might be this bug: ... You might try importing everything into another database. ... 304548 ACC2000: Error Message: Error Accessing File. ... Open Form/Report in design view and select menu option View> Code ...
    (microsoft.public.access.formscoding)
  • Re: From CB8 to CB9
    ... Its not the money that matters, playing tournaments, you know the best tools ... > NEVER experienced a corrupted database so far in SCID. ... > experience any grave bug and never lost any data... ...
    (rec.games.chess.computer)
  • Re: Problem with email attachment, 1 becomes 10
    ... My CV should be attached as a pdf-file. ... One piece of advice which has been useful to me which I learnt from the posting guidelines for this group is, before posting, to always try to reduce the problem to the minimum possible, let's say ten or twenty lines of code: ... In the case of your program there are two big chunks: first, lots of stuff involving reading lines from the database, which is where I suspect the problem has occurred, probably some kind of slip-up, but I can't prove this because I don't have the database available, and then there is an almost separate piece of code which involves sending a mail with an attachment, which might be where the bug happened, although I think it's unlikely. ... I have repeatedly had problems in Perl which I thought were incredibly difficult, ended up frustrated enough to want to post them here, and in the business of reducing them into a short newsgroup post as described, I ended up surprising myself by working out what the bug was without having to post it. ...
    (comp.lang.perl.misc)
  • Re: Error when binding value to prepared statement with SQL Server 2005
    ... I have reproduced the problem and filed a bug. ... |> latestjdbc driver. ... |>>>2005 database. ...
    (microsoft.public.sqlserver.jdbcdriver)