home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of A1200
/
World_Of_A1200.iso
/
programs
/
database
/
isam
/
isamchanges.doc
< prev
next >
Wrap
Text File
|
1995-02-27
|
6KB
|
116 lines
CHANGES TO ISAM SINCE 1.00
--------------------------
1.01
----
The Link Library was replaced with a Resident Library, and the support
and example programs were modified to use the new library.
Calls to OpenLibrary()/CloseLibrary() need to be added to your code.
A file of #pragma statements and an .fd (function description) file have
been added. The C prototype files have had an #include statement added to
pull in the #pragma file. For those that cannot use #pragma statements or
or whose compiler cannot handle #pragma's for functions of more than four (4)
parameters, a link library of stub functions is also provided.
Previously, in order to make sure that files/records were unlocked/closed/
etc. an exit trap was in place that called DisConnectISAM upon program
exit. This has been removed. DisConnectISAM will now be called auto-
matically when CloseLibrary is called. DisConnectISAM is no longer
user-callable, and has been removed from the AutoDocs. The error message
referring to the exit trap should be considered obsolete, and will not be
returned by any function.
The "Maximum Different Simultaneously Open ISAM Files" figure, which was
defaulted to 50, but which was user-configurable, has been removed.
Our compiler handles open files diffently now (linked list vs. static
array). (There still IS a maximum, but it's in the billions, so don't
worry about it.). Because of this, the instructions for locating/changing
the "MAXFILES=" Workbench ToolType have been removed, as has the ToolType
itself.
From the CLI/Shell, the <maxfiles> parameter has been removed, leaving
<quiet> the only parameter.
After being recompiled with our language upgrade, the server seems to be
about 10K smaller. Also, utilizing the Resident Library, the main support
programs are about 1/2 of their former size, since they consist mostly of
ISAM calls.
A bug has been fixed at the point where the server determined whether a file
was open already by comparing the name of the data file being opened with the
names of currently open files. The comparison is now case-insensitive.
This would only have been a problem if two programs used two different specs
files to refer to the same ISAM file (which is unlikely, not to mention unwise,
anyway) and the data file names were not identically cased.
1.02
----
The ISAM resident library was modified to work in the case that the user
opened the library twice from the same program.
Example: the user has a link-library function, that handles ISAM error
messages, that calls ISAMWhy. This makes opening the library necessary
for the function. Any main program that uses ISAM would, of course,
also open the library. This caused a problem with the automatic closing
of files, which occurs when CloseLibrary is called. In this case, when
the error-handling function exited, the files were closed, even when the
main program had not called its closedown function.
The count of OpenLibrary/CloseLibrary calls is now kept for each user, and
the auto-close feature is only activated at the last CloseLibrary.
1.03
----
A new function, GetFirstLastISAMKeyValues, has been added. Given an ISAM
Handle and a Key Number, this function will return the first and last
key values for that key. Whether first is greater or less than last is,
of course, dependent on whether the key is an ascending or descending key.
The record numbers of the records having the first and last key values will
also be returned.
This function has been added to the end of the library, so that no re-
compilation is necessary for programs that used a previous library version.
ISAM is now usable from ARexx. A new function library, rexxisam.library,
has been added (the main library, isam.library, is still necessary, as
rexxisam.library opens it). All ISAM functions may be called from ARexx,
as well as two ARexx-only functions that help in making/using records.
For complete details, see the file RexxISAM.doc.
If the ReportISAMStatus Command is run from the CLI/Shell, it now types the
report file (RAM:ISAMStatus) to the CLI/Shell after the file is created
(thus it is no longer necessary to "Type RAM:ISAMStatus" after calling
ReportISAMStatus in order to actually see the report). This is done only
if Report... is run from the CLI/shell. The ReportISAMStatus function is
unchanged - only the command has changed.
ReIndexISAMFile's Counter Window has been enlarged slightly, and a message
indicating completion is now displayed at the end of the ReIndexing. The
highest count remains visible for 5 seconds, as before.
The CreateISAMFile function now complains if a key length is greater than the
maximum possible size.
Two files useful for assembler programmers have been kindly provided by
Koen Peetermans. One (ISAM_Lib.i) gives the _LVO offsets for isam.library;
the other (ISAMErrDefs.i) provides the error return EQU's. He has used them
with a non-SAS/Lattice assembler, but feels that little/no modification
would be necessary with that or other assemblers.
These files have been modified slightly to reflect the current version.
[A user has reported a situation that we have been unable to duplicate: when
storing the SECOND (2nd) record of a file, the error IERROR_NOT_DELETED_RECORD
was returned. Whether this occurred or not was apparently related to the
record size. Using the ISAM files that the user provided, we don't get any
error no matter what the record size (in fact, we have never received that
particular error message). The user had this problem several times, but
reports that in each case, after ReIndexing, all was well. Since we don't get
the error, perhaps it is a machine- or OS-specific problem. I believe the
user has an A4000; ISAM has been developed on an A1000/A3000-030/16.
In any event, if you have this problem, just ReIndex the file.]