Delphi 3.0 Support - The Delphi Component has been upgraded to work in a package for version 3.0 and the extended predicate support has been modified to support version 3.0. All the Delphi samples have been upgraded to 3.0, and the Prolog Expert System (ProXS) and Sports Scheduler (SSched) have been added.
Borland C++ Builder Support - The Amzi! Logic Server now supports Borland's new C++ Builder. See the new hello program in \AMZI4\SAMPLES\CPP\HELLO\BORLAND C++ BUILDER.
Visual Basic 5.0 and Extended Predicate Support - The VB module now supports extended predicates so that Amzi! Prolog modules can call functions written in VB 5.0. A sample demonstrating this has been added, and the remaining VB samples have been upgraded to 5.0.
Multifile and Discontiguous Support - It is no longer required to have all of the clauses for a compiled predicate to be either discontiguous or in the same file. This applies both to consulted source files and loaded compiled files. However, the directive 'multifile' must be added to the top of the file for clause that will be defined in multiple files, and/or 'discontiguous' for discontiguous clauses in the same file.
PLM Unload - It is now possible to unload all the clauses previously loaded from a PLM file by using unload/1. This feature, along with the multifile feature, makes it possible to create applications that dynamically load and unload .PLM files containing definitions of the same predicates. For example, a technical support expert system might have a predicate called rule/3 which is defined in separate files for printer problems and video monitor problems. The system can dynamically load the correct .plm file and unload it when done, waiting for the next problem.
Removed Support for WinCGI ** - The CGI interface has been greatly simplified by removing support for the Windows CGI quasi-standard in favor of the widely support Standard CGI interface.
Projects Use Relative Pathnames - Prolog projects now use relative pathnames for files located in or below the project directory. This makes them much each to move to other computers.
ODBC Supports Floats/Doubles and Sample Demonstrates Dates/Times - The ODBC LSX has been enhanced to support floating point and double fields (type specifiers f and g). A new sample, Events, illustrates the use of date and time fields.
cSTR and cATOM are Set Properly for ASCII and Unicode - When using the LSAPI constants cSTR and cATOM, theywill be automatically mapped to cASTR and cAATOM. for ASCII implementations and cWSTR and cWATOM for Unicode (wide) implementation.
Strings and Atoms Unify with Each Other - A term containing strings that have the same values as atoms in another term will unify. This makes it easier to interface with databases using ODBC.
New Predicate curdir/1 - curdir/1 returns the current directory as a string and is included in A4WIN.LSX which must be loaded before curdir/1 can be used.
New Predicate chdir/1 - chdir/1 succeeds if it can change to the directory specified by the string, atom or character list passed to it. This predicate is included in A4WIN.LSX, which must be loaded before the chdir/1 can be used.
Visual Basic Declarations Modified from Integers to Longs - Most of the LSAPI functions that passed integers have been changed to longs to match the parameter types properly. In general, programs will work under the IDE with the old definitions, but not as stand-alone EXEs.
Operator Precedences Conform to ISO Standard - The precedences of Prolog operators in Amzi! now match the ISO standard. This affects the following operators: - ** @ : \.
IDE Save As Defaults to .PRO - The File/Save As command in the Windows IDE now automatically adds a 'pro' suffix if none is specified.
Fixed findfiles/3 - Under Windows 95, findfiles stopped working. Under NT it was returning incorrect file dates/times. Both problems have been fixed.
(Note: Microsoft's Java does not, at this writing, support the 1.1 JNI, however, Java still supports the old-style Java native methods used in the Amzi! 1.0 Java interface. For this reason, and to continue support for JDK 1.0 applications, Amzi! will continue to distribute its 1.0 Java interface as well.)
There are some external improvements in the Amzi! Java Interface as well:
For example, if the clauses of the predicate duck/1 are discontiguous within a file, then add the directive:
Some Visual Basic programs ran differently under the Developer Studio
as compared with a stand-alone program. These problems were caused by some
type mismatches between AMZI4.BAS and AMZI4.DLL. As a result, bINT and
bSHORT are now defined the same; as 16-bit values. Functions that used
to return integers now return longs, and arities are now bytes.