Release 2.8 - 4/12/93
  Original README below is followed by update info at end of this file.
***************************************************************************
*
*           Release 2.0 of NCBI Software Toolkit Available
*                             10/92
*
***************************************************************************

	This is to announce the availability of release 2.0 of the NCBI
Software Development Kit.  This includes the version of the ASN.1
specification which will be "frozen" for the next 12 months.  No changes
will be made to data produced by NCBI which is incompatible with that
specification for one year.  This means that the software in release 2.0
will be able to read and write NCBI data for one year as well without
change.

	We expect to adding functionality to the software tools over the course
of this year, and these additions will be made part of periodic software
releases.  However, if you do not care for the additional functionality
you do not need to change your software.

	In six months we will solicit and propose changes in the ASN.1
specification for next year.  In nine months we will freeze the proposals
and produce sample data files and software that conforms to the new spec.
In twelve months we will begin producing data releases that conform to the
new spec.

	Of course, in the event of an unforseen, catastrophic bug, we will be
forced to make an emergency release, but we will do everything in our
power to avoid this.  And, there are always new releases of operating systems
and compilers, which may uncover or create new problems, but unfortunately
this sort of thing is beyond our control.  However, it is in our interest
(and yours) to keep this to an absolute minimum, and that is what we will
do.

	The release is available for anonymous ftp from ncbi.nlm.nih.gov.
cd toolbox\ncbi_tools
bin
get ncbi.tar.Z
quit

	There is also a self-extracting Mac version (ncbi.sea.hqx) and a self-
extracting PC version (ncbiZ.exe) in the same directory.  All three versions
contain source code for ALL supported hardware platforms.

	In toolbox\vms_utils are a readme file and source code for a number
of utilities to facilitate transfer of the source code onto VMS systems.

	The documentation has not caught up with the software and specification.
However, now that it is frozen, documentation writing has begun.  It will
be announced on BITS when it is complete.

	The README file from ncbi.tar.Z follows:
Release 2.8 - Update history at end of this file.

                         Introduction

    This distribution is release 2.0 of the NCBI core library for building
portable software, and AsnLib, a collection of routines for handling ASN.1
data and developing ASN.1 software applications.  AsnLib and the asntool
application are built using the CoreLib routines.  This software supports
release 1.0 of the Entrez cdrom.


The lowest layer of code is the CoreLib [chapter 2].  These are multi-
platform functions for memory allocation (including byte stores), string 
manipulation, file input and output, error and general messages, and 
time and date notification.  These functions have been written only 
where we found that the existing ANSI functions were not sufficiently 
multi-platform or well- behaved among all of the platforms that we 
support.  For each platform (a combination of processor, operating 
system, compiler, and windowing system), we supply a specific ncbilcl.h 
file, which contains typedefs and defines for multi-platform symbols, 
and includes a number of standard header files.  (For example, 
ncbilcl.msw is used for the Microsoft C compiler under Microsoft Windows 
on the PC.)  Use of these symbols, and of the functions in the CoreLib, 
allow us to write multi-platform source code for a variety of disparate 
platforms.

The next layer of code is the AsnLib stream reader [chapter 5].  This is 
used in conjunction with a header file and a parse table loader file, 
both of which are produced by processing the formal ASN.1 specification 
with the AsnTool application [chapter 4]. The symbolic defines in the 
header file are pointers into the parse table, in which the ASN.1 
specification is represented.  To read at the stream reader level, a 
program alternates between calls to AsnReadId and AsnReadVal.  AsnReadId 
returns a pointer into the parse table, which can be compared against 
the defines in the AsnTool-generated header.  For example, in the 
specification for MEDLINE records, the Medline-entry section has an item 
called "uid", for the unique ID of the record.  This is symbolized in 
the header file as MEDLINE_ENTRY_uid.  When AsnReadId returns this 
symbol, the program calls AsnReadVal to obtain the uid for that record. 
AsnKillValue is also needed to free any memory allocated by AsnReadVal, 
which occurs when the value is a string and not an integer.  The entire 
set of records on the Entrez CD-ROM can be read as a single stream with 
the AsnLib functions.

The ASN.1 records may be accessed at a higher level through the object 
loaders [chapter 6], which utilize the stream processing functions to 
load C memory structures with the contents of the ASN.1 objects. For 
each ASN.1 object we specify, we also define an equivalent C memory 
structure.  The object loader level of code contains functions to read 
and write each ASN.1 object.  These are hierarchical, as are the ASN.1 
specifications.  Calling the top level loader, SeqEntryAsnRead, will 
load an entire SeqEntry from an open AsnIo channel, and will return a 
pointer to the loaded memory structure.  The read function for an AsnIo 
channel can be swapped to refer to a normal disk file, a network socket, 
or to compressed data, which it automatically decompresses.  The object 
loader code can interconvert between the highly-branched memory object 
and a linear ASN.1 message with complete fidelity.  The object loaders 
have additional functions, including the ability to explore the 
structure and notify the program when particular data elements are 
encountered.  The entire contents of the Entrez CD-ROM can also be 
streamed through the object loaders.  However, most calls to the object 
loaders for simply reading a particular record are done via the data 
access functions (see below).

The data access functions allow a program to call the object loaders on 
a sequence or MEDLINE record given the uid of the record [chapter 7].  
This will get the data into memory regardless of whether the data are 
compressed on the Entrez CD-ROM or are obtained through a service over 
the Internet. This means that a detailed understanding of the files and 
formats on the Entrez disc is not needed by application programmers. The 
function to load a sequence record, SeqEntryGet, needs the uid to 
retrieve and a complexity code parameter. A sequence record is in the 
form of a NucProt set.  This contains a nucleotide (which may itself be 
composed of segments) and all of the proteins it is known to encode.  
The set of segments is called a SegSet, and the individual sequences are 
called BioSeqs.  We have taken the liberty of producing this integrated 
view, but the complexity code parameter allows the record to be easily 
loaded in a simpler, more traditional form, if desired.  The accession 
number term list is built to supply the proper uids to support this 
facility.  This access library is compatible with Entrez release 1.0 or
later only.

The sequence utilities and application programmer interface layer 
[chapter 7] allows exploration of the loaded memory structures and 
generation of standard literature or sequence reports from those 
objects.  For example, a BioSeq can be converted to FASTA or GenBank 
flat file formats and saved to a file, and a MEDLINE record can be saved 
in MEDLARS format, which is suitable for entry into personal 
bibliographic database programs.  A sequence port can be opened that 
gives a simple, linear view of a segmented sequence, converting 
alphabets, merging exon segments, and dealing with information on both 
strands of the DNA.  This layer also includes some functions to explore 
the NucProt set.  The explore functions visit each individual BioSeq in 
the set, calling a callback function for each sequence node so that a 
program can examine feature tables and other information that are 
associated with the NucProt or SegSets or with the individual sequences.

Vibrant is a multi-platform user interface development library that runs 
on the Macintosh, Microsoft Windows on the PC, or X11 and OSF/Motif on 
UNIX and VAX computers [separate documentation].  It is used to build 
the graphical interface for the Entrez application (whose source code is 
in the browser directory). The philosophy behind Vibrant is that 
everything in the published user interface guidelines (the generic 
behavior of windows, menus, buttons, etc.), as well as positioning and 
sizing of graphical control objects, is taken care of automatically.  
The program provides callback functions that are notified when the user 
has manipulated an object. Vibrant and Entrez code are not supported, 
but are provided on an as-is basis.

The advantage of using AsnLib and the object loaders, as they are 
implemented, is that application program developers merely need to 
recompile their programs with the new (AsnTool-generated) header files 
and load the new parse tables (included with the Entrez software) in 
order to be able to read the new data.  This process is straightforward, 
and will not break existing program code.  The application is free to 
ignore new fields if it does not choose to take advantage of the new 
kinds of information.

The documentation is currently being brought up to date.  The programs 
in the demo directory are designed to teach the proper use of many of 
the functions discussed above.  Many of these programs are not yet 
documented.  The simplest is testcore.c, which tests various functions 
in the CoreLib.  The most complex is getfeat.c, which takes an accession 
number of locus name, determines the unique seq ID, retrieves the entry 
from the Entrez CD-ROM using the data access library, locates all coding 
region features using the explore functions, and prints the DNA 
sequences of all exons using sequence port functions.  If you cannot 
extract and print the doc.tar.Z file, please send an email message with 
your land mailing address and phone number to toolbox@ncbi.nlm.nih.gov, 
and we will mail a copy to you.

The contents of the ncbi directory (the highest level, containing the 
NCBI Software Development Kit source code in several subdirectories) is 
shown below.  The readme file contains instructions on copying the 
appropriate make files to be built in the build directory.  The makeall 
file copies headers to the include directory builds four libraries 
(ncbi, ncbiobj, ncbicdr and vibrant), copying them to the lib directory.  
The makedemo file builds the demo programs and the Entrez application:

  api           Application Programmer Interface, Sequence Utilities
  asn           ASN.1 specifications for publications and sequences
  asnlib        Source code for AsnLib and asntool
  asnload       AsnLib headers and dynamic parse tables (Mac and PC)
  asnstat       AsnLib headers that use static memory (UNIX and VMS)
  bin           Asntool executable copied here
  browser       Source code for Entrez application
  build         Empty directory for building tools and libraries
  cdromlib      Access routines for data on the Entrez CD-ROM
  config        Configuration files for NCBI software:
    dos
    mac
    unix
    vms
    win
  corelib       Source code for NCBI Core Software Library
  data          Data files used for sequence conversion
  demo          AsnLib and sequence utility demonstration programs
  doc           Documentation in ASCII files
  include       Include files required by applications are copied here
  lib           Libraries copied here
  link          Contains three subdirectories with build accessory files:
    macmpw        Macintosh MPW C
    msdos         Microsoft C and Borland C for DOS
    mswin         Microsoft C and Borland C for Windows
  make          Make files for various systems
  network       Network version of data access (to be added later)
    apple
    entrcli
    entrserv
    ncsasock
    netmanag
    nsclilib
    nsconfig
    nsdaemon
    nsdemocl
  object        Functions for reading and writing complex objects
  readme        File that contains important building instructions
  vibrant       Source code for Vibrant portable interface package

The platforms that are supported (as indicated by the suffix on the 
relevant ncbilcl.h file) are shown below.  Those marked with an asterisk 
(*) are available as-is:

  370*          IBM 370
  acc           SUN acc compiler
  alf           DEC Alpha under OSF/1
  aov           DEC Alpha under AXP/OpenVMS
  aux*          Macintosh A/UX
  bor           Borland for DOS
  bwn           Borland for Microsoft Windows
  ccr           CenterLine CodeCenter
  cpp           SUN C++
  cra*          Cray
  cvx*          Convex
  gcc           Gnu gcc
  hp *          Hewlett Packard
  mpw           Macintosh Programmer's Workshop
  msc           Microsoft C for DOS
  msw           Microsoft for Windows
  nxt*          NeXT
  r6k*          IBM RS 6000
  sgi           Silicon Graphics
  thc           THINK C on Macintosh
  ult           DEC ULTRIX
  vms           DEC VAX/VMS

Questions or comments can be directed to toolbox@ncbi.nlm.nih.gov.

It is our intent that the ASN.1 specifications [chapter 3] will be 
frozen for at least 12 months (through September of 1993).  As molecular 
biology progresses, new features (e.g., RNA editing) will need to be 
represented in the ASN.1 specifications.  Proposed additions will be 
made available for evaluation (with code and sample records included) in 
April of 1993, and the specifications will be finalized in July of 1993.  
Changes will be made with every effort given to backward compatibility 
with data.  We expect to add only new choices and optional fields.  
Existing records will thus continue to be valid instances of the new 
specification, eliminating the need for us to reprocess the databases.

	While we feel confident we can to hold to this schedule, we hope users
will understand if events force us to make an interim release of some sort.
In addition, we will make releases of software with additional features over
the next year, but the use of such releases will be at the option of the
software developer.

ANSI C:

    This software requires an ANSI C compiler.  This will be no problem at
all except to people on Sun machines, where the bundled C compiler, cc, is
non-ansi.  However, you can use the Sun unbundled compiler, acc, or the Gnu
compiler, gcc (which is free) and that works just fine.  If you have written
applications on the Sun with non-ANSI functions, the ANSI compilers will
complain.  See the notes below if this is a problem.


                         Installation
ALL -
     change to the build subdirectory

MS-DOS
    (Also see NEW MAKEFILES, below)
     Microsoft C version 7.00
          copy ..\make\*.dos
          ren makeall.dos makefile
          nmake MSC=1       [note: nmake requires windows or DPMI]
		  copy ..\config\ncbi.dos ncbi.cfg  
          check paths in ncbi.cfg file
             [see section on CONFIGURATION]
          Optional:
             edit AUTOEXEC.BAT with "set NCBI=[path to directory containing
                    ncbi.cfg".
             reboot to activate
          To make demo programs:
             nmake -f makedemo.dos MSC=1
     Microsoft Windows version 7.00
          copy ..\make\*.dos
          ren makeall.dos makefile
          nmake MSW=1      [note: nmake requires windows or DPMI]
          check paths in "ncbi.ini" as above
          copy ncbi.ini to your windows directory
          To make demos:
             nmake -f makedemo.dos MSW=1
     Borland C++ 3.1
        copy ..\make\*.dos
        ren makeall.dos makefile
        make -DBOR
        then set paths as in Microsoft C, above.
        To make demos:
           make -f makedemo.dos -DBOR
     Borland C++ 3.1 for Windows
        copy ..\make\*.dos
        ren makeall.dos makefile
        make -DBWN
        then set paths as in Microsoft Windows, above.
        To make demos:
            make -f makedemo.dos -DBWN

Mac
     tested on THINK C 5.0.4 and MPW C 3.2
     Both - copy config:mac:ncbi.cnf to your System Folder, or to the
                 System Folder:Preferences subfolder
                 edit the "ASNLOAD" line in "ncbi.cnf" to point to the
                   ncbi:asnload directory in this release
                 edit the "DATA" line to point to the ncbi/data directory
     Think C - rename corelib:ncbimain.mac ncbimain.c
               rename corelib:ncbienv.mac ncbienv.c
               rename corelib:ncbilcl.thc ncbilcl.h
               build separate projects, allocating .c files as described
               in the makeall.thc document.
     MPW C -   copy make:makeall.mpw build:makeall.make
               copy make:makedemo.mpw build:makedemo.make
               set directory to build
               build makeall
               build makedemo

Unix
     tested on Sun Sparc, Silicon Graphics, IBM 3090 with AIX
     Sun (with gcc version 2.2 but not Vibrant)
          cp ../make/*.unx .
          mv makeall.unx makefile
          make LCL=gcc CC=gcc RAN=ranlib
          To make demos:
             make -f makedemo.unx CC=gcc
     Sun (with gcc version 2.2 with Vibrant)
          cp ../make/*.unx .
          mv makeall.unx makefile
          source ../make/viball.gcc
          To make demos:
             source ../make/vibdemo.gcc
     Silicon Graphics (no Vibrant)
          cp ../make/*.unx .
          mv makeall.unx makefile
		  [ edit makefile to delete make $(LIB4) ]
          make LCL=sgi OTHERLIBS="-lm -lPW -lsun"
          To make demos:
            make -f makedemo.unx LCL=sgi OTHERLIBS="-lm -lPW -lsun"
     Silicon Graphics (with Vibrant)
          cp ../make/*.unx .
          mv makeall.unx makefile
          source ../make/viball.sgi
          To make demos:
            source ../make/vibdemo.sgi

    Other UNIX: AIX, ULTRIX, NeXt, Sun acc, DEC Alpha OSF/1
          Follows models above.  Read header in makeall.unx and makedemo.unx
    for details.  Look at viball.* and vibdemo.* for model shell scripts for
    Vibrant versions.

    for all UNIX, edit .ncbirc as described above for MSC.
    optional edit .login to "setenv NCBI=[path to .ncbirc file"

VMS (without Vibrant) on VAX
     $set def [ncbi.build]
     $copy [-.make]*.dcl *.com
     $@makeall

     check ncbi.cfg as described above for MSC.
     edit LOGIN.COM to "define NCBI [path to ncbi.cfg file]"

    To make demos:
        $@makedemo

VMS (with Vibrant) on VAX
     $set def [ncbi.build]
     $copy [-.make]*.dcl *.com
     $@viball

     check ncbi.cfg as described above for MSC.
     edit LOGIN.COM to "define NCBI [path to ncbi.cfg file]"

    To make demos:
        $@vibdemo

                            Testing

VMS only:  look in rundemo.dcl in [make] to see how to give command
    line arguments.  Not all demo programs are shown. Run at least testcore.

All else:

    In build should be a program called testcore.  Type "testcore -" and
it should show you some default arguments.  Type "testcore" and it will
run through a variety of functions in CoreLib, prompting you for responses
along the way.  It should run without a crash or error report.  If you made
Vibrant versions all demos will have startup dialog boxes.  If not, they
take command line arguments.

    If testcore runs, read the documentation for CoreLib and for AsnLib. 
In the AsnLib documentation are instructions for running asntool itself.
for running a few of the demo programs.  There are a large number of demo
programs now (including Entrez itself, if you made the Vibrant versions).



CONFIGURATION OR SETTINGS FILES:

    One of the fundamental problems in writing portable software concerns
configuration issues.  Each individual user's computer will have its own
particular hardware and software environment, and each machine will have
its disk file  hierarchy set up in a unique manner.  A program that needs 
accessory information, such as help files, parse tables, or  format
converters, must be given a means of finding the data regardless of where
the user has placed the files.  The difficulty is compounded by the different
conventions for naming files and specifying paths on each class of machine.  
For example, the name of a CD-ROM on the Macintosh is fixed, determined by
information on the CD itself, whereas on the PC it is addressed by a drive
letter, which can be assigned by the user, but which cannot be reconciled
with the name the Macintosh sees.

    An associated problem is that many programs will want to allow the user
to make persistent changes to parameters.  These parameters typically involve
numbers or font specifications, but may also include paths to data files.  
Some platforms supply such configuration information in preferences files,
others in environment variables.  Manipulating these settings is platform
dependent, as is the format in which the preference is specified.

    The NCBI Software Toolkit core library addresses these problems by
providing configuration or settings files.  These are modeled after the .INI
files used by Microsoft Windows.  Settings files are plain ASCII text files
that may be edited by the user or modified by the program.  They are divided 
into sections, each of which is headed by the section name enclosed in square
brackets.  Below each section heading is a series of key=value strings, somewhat
analogous to the environment variables that are used on many platforms.

    The ncbi configuration file supplies general purpose configuration
information on paths for commonly used data files.  The typical file set up for
the Entrez application running on the PC under Microsoft Windows is shown below:

[NCBI]
ROOT=D:
ASNLOAD=C:\ENTREZ\ASNLOAD\
DATA=C:\ENTREZ\DATA

    The only section is entitled NCBI.  The ROOT entry refers to the path to
the Entrez CD-ROM.  In this example, the user has configured the machine to
use drive letter D.  (On the Macintosh, the name of the disc is SEQDATA, which
cannot be changed by the user.)  The ASNLOAD specifies the path to the ASN.1
parse tables.  These files are required by the AsnLib functions, and all
higher-level procedures that call them,  including the Object Loader, Sequence
Utility, and Data Access functions.  Files pointed to by the DATA entry contain 
information necessary to convert biomolecule sequence data into different
alphabets (e.g., unpacking the 2-bit nucleotide code stored on the Entrez CD
into standard IUPAC letters).

    Although the contents of a configuration file is similar regardless of
platform, the name of the file and its location is platform dependent.  If the
base name of the configuration file is xxx, then the actual file name is shown
below for each platform:

Macintosh                   xxx.cnf
Microsoft Windows           xxx.INI
MS-DOS (without Windows)    xxx.CFG
UNIX                        .xxxrc
VMS                         xxx.cfg

	Samples of such files are in subdirectories of \config.  The UNIX version
does not have the leading '.' in filename so you can see it.  Since VMS and
DOS both use the same file name (ncbi.cfg) the DOS version was called ncbi.dos.
You will have to rename it.  Remember these are just models.  You will have to
set the paths appropriately for your machine yourself.

    The location in which these files must reside is also platform dependent,
and the functions that manipulate the contents may look in several places to
find these files.

    On the Macintosh, the function first looks in the System Folder, then in the
Preferences folder within the System Folder.  Under Microsoft Windows, the file
must be in the Windows directory, along with all of the other .INI files.  Under
DOS without Windows, the function first looks in the current working directory,
then in the directory whose path is specified in the NCBI environment variable.
Under UNIX and VMS, the current working directory is first checked, then the
user's home directory, and finally the directory specified by the NCBI environment
variable.  (Under UNIX, when it uses the environment variable, it will check for
configuration files first without and then with the initial dot.)  On the multi-
user platforms (UNIX and VMS), the use of the NCBI environment variable allows a
common settings file to be used  as the default by multiple users.  If such a
settings file is  changed under program control, it is copied over into the user's
home directory, and the new copy is modified.  The  order of searching for settings
files ensures that this new copy is used in all subsequent operations.


contents of ASNLOAD are in ncbi/asnload
contents of DATA are in ncbi/data

MAJOR CHANGES FROM DOCUMENTATION:

    AsnNode structures have proved to be generally useful and moved from AsnLib
to ncbimisc.  In addition, some elements of structs used in the object loaders
were called "class" to match the ASN.1 names.  Class is a C++ reserved word,
so all instances of "class" have been changed to "_class".

    To conform to our naming conventions, we have changed the names appropriately:

AsnValue = DataVal
AsnNode = ValNode
class = _class

    A global search and replace of your code with these strings (not restricted
to words... we want to change AsnNodePtr = ValNodePtr as well) should fix
any problems.  Field names within structures have not been changed.  If your
code uses only the object loaders, you may not find these strings in your
code at all.

DATA ACCESS LIBRARIES

    cdromlib contains data access routines compatible with release 1.0-6.0
of the Entrez CDROM.  The documentation for these functions are out of
date.  The routines in cdromlib have been split into entrez, sequence, and
medline access functions.  The interface you should normally program to is
defined in accentr.[ch], accseq.[ch], and accml.[ch].  The form of this
calls has been changed to make them compatible with the NCBI network server,
a client/server version of data access.  A program written to use these
calls can access the the cdrom data, the network data, a combination, or
that plus a local database by just fiddling with defines.  The form of the
api for these functions has also been changed to hide the details of storage
and caching more so that the different optimizations done to support cdrom
and network access are transparent to the application programmer.  The end
user tool called "Entrez" now uses these libraries as it's only means of
data access (i.e., you can write an application of your own with any or all
of Entrez's functionality using just these routines).

DOCUMENTATION

    We are rewriting the documentation to conform with all the new features
contained in this software.  We will add it to the package as soon as possible.

DEMO PROGRAMS

    As in the tools, there are a number of undocumented programs in the demo
directory as well, that use a number of the utility functions in api.  There
is also a demo program called "getseq" in the cdromlib directory which
retrieves a sequence from the cdrom given any valid sequence id.  These will
be described in more detail in the next set of documentation. Briefly:

asn2gnbk.c      converts ASN.1 to GenBank flatfile
asn2rpt.c       converts ASN.1 to human readable report
dosimple.c      converts ASN.1 to a "simple sequence"
getseq.c        gets sequence from Entrez Cdrom using data access library,
                writes to disk
getfeat.c       ditto, but writes sequence of any CdRegion features to
                 "test.out"
getmesh.c       documented
getpub.c        documented
indexpub.c      documented
seqtest.c       reads ASN.1 sequence, converts to iupac, reports segmented
                sequences, outputs fasta format to seqtest.out
testcore.c      documented
testobj.c       tests Medline object loader, demonstrates error checking using
                NULL asnio stream.
entrez          If Vibrant is installed, the full Entrez program is made.
asndhuff		Demonstrates streaming ASN.1 data from the huffman compressed
				Entrez CDROM (only works on release 1.0 or later).



Update History of this release from 2.0

Release 2.8 - 4/12/93
    many small fixes and improvements
	performance improvements in cdromlib
	vibrant improvements
	improvements to toreport and togenbk

Release 2.7 - 3/12/93
    continued refinement of access functions
        accentr made "stand-alone" with no dependency on accml, accseq
        See changes in demo program, getseq.c
    minor bug fixes in object loaders
    refinements in tognbk
    many improvements and refinements to vibrant
    bug fix to asnlex.c for piping text asn1 streams
    changed SeqFeat.except to SeqFeat._except to avoid reserved word in
       Win32

Release 2.6 - 2-16-93
    much internal rearrangement of access functions at low levels to
        accommodate 2 cdrom, and network data access. Invisible to
        applications
    access.doc - a brief writeup on data access and exploring in /doc
    improvements to toreport and tognbk for more sequence data sources
Release 2.5 - 1-4-93
	many small fixes and improvements
	asnlib: added generic copy (through file) AsnIoCopy(), copy (in memory)
		AsnIoMemCopy(), and compare in memory, AsnIoMemComp() for any object
		define in object/*.h
	vms version: (Will Gilbert)
		a new Makefile which compiles the sources from there native directory
		This version also checks to see if the user's system has the proper
		 include file to make the vibrant library.
		Support for OpenVMS on DEC Alpha machine added.
	data access libraries:
		Changed data access library so that CD-only, network only, or Net+Cd
		  may be built from the same baseline.
		Eliminated memory leaks in data access library.
	environment:
		Modified ncbienv.* so that GetAppParam() holds the last-read configuration
		  file in a cache. Also modified GetAppParam() and SetAppParam() so that
		  they can read all the keys in a section, or destroy a section, if the
		  key parameter is NULL.
	files:
		Modified ncbifile.c so that EjectCd() takes the raw device name as an
		  extra parameter.
	configuration files:
		Added VMS ncbi config files for the various multi-CD/hard disk configurations,
		  and moved all ncbi and entrez config files into their appropriate config
		  subdirectories (vms, unix, win, etc.).
	demo programs:
		Will Gilbert added many tutorial comments to getseq.c, getfeat.c, and
		  seqtest.c

Release 2.4 - 12-3-92
	sequtil.c - improvements to BioseqContextGetSeqFeat() and SeqIdPrint().
	toreport.c - improvements for PDB data
	togenbnk?.c - improvements for unusual ASN.1
	objloc.c  - bug fix in reading release date for PDB id.
	seqport.c - addition of translation routine given CdRegion

	data access libraries -
      support for pre-release 0.6 removed
      support for multiple CDROM's (Entrez:Sequences and Entrez:MEDLINE) at
         once.
    vibrant - performance improvements

Release 2.3 - 
	ncbimain.xxx - GetArgs now handles negative numbers correctly

Release 2.2 - 10-29-92
	objfeat.c - write to uninitialized memory when reading a tRNA feature
				which contains codon, but no amino acid transferred.

Release 2.1 - 10/22/92
	ncbifile.c - VMS open did not work correctly on CDROM.
	objseq.c   - Seq-hist incorrectly read
.
