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.