
      $read.me (c)Copyright Sequiter Software Inc., 1992-1993.
      All rights reserved.
      ----------------------------------------------------------
      
          README -  Table of Contents
      
      I.    Introduction
      
      II.   CodeBase++ Electronic Documentation Files       

      III.  CodeBase++ Manual and Code Revisions 
      
      IV.   Examples 
   
      V.    CodeBase++ Public-Access: Sequiter BBS and Compuserve Access 

      VI.   Accessing More Than 20 Files in DOS or Windows 
      
      ----------------------------------------------------------
      
      I.    Introduction
      
         In order to use CodeBase++, it is necessary to have a C++ 
      compiler and it is necessary to have some knowledge of the C++
      programming language.
      
         To accommodate users requiring DOS screen management 
      capabilities, a C software library called 'CodeScreens' is 
      available.  CodeScreens features pop-up and pull-down window 
      support, color screen design capabilities, and print functions, 
      plus much more.
      
         CodeBase++ 5.1 serial and version numbers can be found on the
      inside-front covers of the supplied Reference Manual.
      
      ----------------------------------------------------------
      
      II.   CodeBase++ Electronic Documentation Files 
      
         It is highly recommended that any installed documentation
      files be read in addition to the CodeBase++ manuals. 
      
         The various documentation files provide additional specific
      information not found in the CodeBase++ manual.  Please note
      that only documentation files relevant to the options
      installed will be present on your drive after installation.
      
         All electronic documentation files have been suitably 
      formatted for hard-copy printing.  To print any document, 
      simply direct that file to your printer, using the 'print' 
      command.
      
         The complete list of documentation files that are present 
      on the CodeBase++ disk are:

      
      GENERAL DOCUMENTATION:
      
      $READ.ME        General user information, manual changes/updates,
                      and installation information. Always installed.
      
      INSTALL.DOC     Information on CodeBase++ installation.  Includes
                      manual unfolding documentation.
      
      COMPILER DOCUMENTATION:
      
      COMPILER.DOC    Compiler specific documentation.  There is one 
                      COMPILER.DOC file in each CodeBase++ compiler 
                      subdirectory (i.e. in \BOR31, \MSC7)
      
      EXAMPLES.DOC    Information on usage of the provided source code
                      examples.
      
      CONVERT.DOC     CodeBase 5.1 to CodeBase++ 5.1 translation information.
      
      ----------------------------------------------------------
      
      III.  CodeBase++ Manual and Code Revisions

      Following are corrections to the CodeBase++ 5.1 printed documentation:

      CodeBase++ 5.0 USER'S GUIDE:

       No current critical addendum.

      CodeBase++ 5.0 REFERENCE GUIDE:

      1. Conditional Compilation Switch addendum (page 6)
         New Conditional Compilation Switch.  'S4FLUSH' may be defined
         if a hard-flush is required when writing data to disk:

         S4FLUSH   This switch automatically calls function file4flush()
                   whenever a write() occurs.  It is set automatically
                   whenever S4WINDOWS, S4DLL or S4DLL_BUILD is defined.
                   This switch is not usually required, since a write()
                   should perform a flush, but some environments do not
                   flush data immediately.  S4FLUSH is meant to be used
                   with these environments.   See function file4flush().


      2. Code4::lockAttempts Clarification (page 25)

         If Code4::lockAttempts is greater than zero, it is the
         number of times a CodeBase++ function will attempt to lock before
         returning r4locked.

         If Code4::lockAttempts is (int) -1, CodeBase++ retries until
         it succeeds.

         Any other value for Code4::lockAttempts is undefined.


      3. Sort4::assignCmp (page 323)
         
         This function is not available to Microsoft compiler users
         under Windows.


      CodeBase++ SOURCE CODE CHANGES:
      
      Note: Notices of fixes to CodeBase++ 5.1 will be 
            updated on files contained on Sequiter's BBS system. 
            For more information, refer to 'Section V:
            CodeBase++ Public-Access Bulletin Board System'.

      ----------------------------------------------------------

      IV.    Examples
      
          There are three sources of CodeBase++ 5.1 examples:
      
          1.  The manual, for short examples of function (and class)
              usage.
      
          2.  The examples present on the CodeBase++ 5.1 diskette.
              All examples installed are placed on the CodeBase++
              \EXAMPLES subdirectory.  Examples from the manual
              can be found in \EXAMPLES.  See EXAMPLES.DOC in this
              subdirectory for more information.
           
      
          3.  Our BBS, which contains new examples produced by our
              developers and examples which users have uploaded.
              Please see 'Section V: CodeBase++ Public-Access
              Bulletin Board System (BBS)' for more information.
      
      ----------------------------------------------------------
      
      V.   CodeBase++ Public-Access: Sequiter BBS and Compuserve Access 
      
         Any user with a modem may connect with the Sequiter
      Bulletin Board System.  Connection to the BBS is free, 
      although all users are responsible for their own long-
      distance toll charges.  The BBS operates twenty-four hours
      a day, seven days-a-week, excluding maintenance periods.  
      The BBS operates under the DOS environment, running
      WildCat(c) communications software.
      
         Code updates for CodeBase++ 5.1 can be accessed from the BBS
      through the use of patch files, which may be downloaded freely.  
      These files are .ZIP files containing instructions and the patch 
      utility.  The patch utility requires an existing copy of 
      CodeBase++ 5.1 and works by updating your existing source and header
      modules to the latest version.  The patch utility can also be
      obtained from Compuserve (see below) .


         The BBS also contains several CodeBase++-related files and
      documents that may be downloaded.  There is also a message
      system so that electronic correspondence may be left for
      Sequiter staff, or other BBS users.  The files include example
      programs, utilities, add-ons and enhancements, written by
      both Sequiter developers and CodeBase++ users.  Users are
      invited to upload interesting CodeBase++-related files for the
      use of all BBS users.  A list of the latest enhancements, fixes 
      and additions for all Sequiter products is also maintained on
      the Sequiter BBS.  Users are encouraged to periodically
      download these files, and make the appropriate changes.
      
         The phone number for the BBS is found on the back outside
      cover of the CodeBase++ manual.  The phone number is currently
      (403)-437-2229.
      
         Settings for the connection are:
      
              1200, 2400 or 9600 baud
              ANSI terminal type.
              No parity.
              8 bits.
              1 stop bit.
      
         Upon connection to the Sequiter BBS, a new user will be
      prompted for some information and the selection of a private
      password.  After selection of your password, please memorize
      it since you will be asked for that password on future
      connections to the BBS.

         Sequiter Software is a registered member of the 'Data Based
      Advisor Forum' on CompuServe.  Through this forum, messages can
      be sent to Sequiter Technical Support.  Also, support and demonstration 
      files can be downloaded from the DBA library area.  To access the
      DBA forum, type 'GO DBA' at any CompuServe exclamation (!) prompt.
      Messages can be directed to Sequiter using the following CIS ID
      number:

              71321,1306

         This account is monitored for messages a minimum of three times
      a week.

         The patch file discussed above (paragraph two) can be obtained 
      from the DBA library area.  

         The following are detailed instructions as to how our customers
      can access Sequiter through the DBA Forum on Compuserv (CIS).
      
       1 - Once user is logged on to CIS, he or she can get to the DBA Forum
           from any "!" prompt by entering the command "GO DBA".
      
       2 - This will bring the user into the DBA top menu, at which time the
           user selects menu item " 1 Data Based Advisor Forum ".
      

       3 - The next screen is the Welcome Screen, at which the user
           presses the <ENTER>, which then takes the user into the "Forum
           Menu".
      
       4 - If menu item " 3 LIBRARIES (Files) " is selected, the next
           menu to come up is one which lists all 17 library areas.  All
           Sequiter files will be located in area " 6 Libs, Addons, Tools".
      
       5 - After selecting this area, the user can then browse through
           this area, searching by a key word which identifies our
           packages (i.e. SEQUITER, CodeBase++, CODEBASIC, etc.), or if the
           user knows the name of the file he wants to download, he can
           simply select download.

      --------------------------------------------------------------------

      VI.  Accessing More Than 20 Files in DOS or Windows 

         Due to a default imposed by most compilers and DOS, no more
      than  twenty files can be opened during the execution of any
      one single process by default.  And since the file streams 'stdout',
      'stprn', 'stdin', 'stderr' and 'stdaux' count as files, and
      your executing application counts as well, this leaves only
      fourteen database, index  and memo files that are allowed to
      be opened by any one application.  CodeBase++ has no inherent
      limit to the number of files opened, but will display an error
      because of the failure of the system function call 'sopen()'.      

         Several compilers have patches available for increasing the
      file limit.  However, because of the nature of these patches,
      Sequiter does not provide technical support regarding this issue.
       Please consult  your compiler's manufacturer for information.
       Again, CodeBase++ has no inherent file limit, but will produce
      an error message when it receives an 'error' return from any
      C library function that is called.     

         Don't forget to increase the number of file handles in your 
      CONFIG.SYS file.  To open more than 20 files (eg. 100), you
      need to also modify your CONFIG.SYS file :

                 eg.  set  'FILES=100'

      
         Please note the above config.sys setting will only affect
      files opened on your local drives.  If you are operating on
      a network drive, note that there is a default setting to the
      number of files specified by your network software.  For example,
      Novell's default setting is 40 files. If you want to increase
      this limit in Novell, create or edit the file 'SHELL.CFG',
      which should be located together with 'IPX.COM' and 'NETX.COM'.
      Add  'FILEHANDLES = n', where  'n' is the maximum number of
      file handles required, into  SHELL.CFG.  Other LAN software
      users should consult their LAN documentation.

         Under Microsoft Windows 3.x, you need to also make a call

      to the function SetHandleCount (eg. SetHandleCount( 100 )).
      If you are using CodeBase++ 5.1 as a DLL, then you need to add
      this function call to the beginning of the d4init function in
      c4code.c.  This requires you to alter the source code, then 
      to rebuild the DLL and its import library.  If you are using
      CodeBase++ statically, then all you need to do is add the 
      'SetHandleCount()' function call to your application program.         

         General outines of the patches provided by the more popular
      compilers is provided below.  This includes Microsoft C 6.00a
      and 7.0, Borland C++ 3.1, Turbo C++ 3.0 / 3.1.

      Microsoft C patch:
      ------------------

         By default, Microsoft is hardcoded to only allow 20 file handles.  
      This limit can be increased by altering the 'startup' code in 
      Microsoft C and is outlined in the 'readme.doc' file supplied with
      Microsoft C.

         You will need to alter the following files:

           _FILE.C      (source\startup)
           crt0dat.asm  (source\startup\dos)
      
           1.   _FILE.C :
                           line 18  :  from :  #define _NFILE_ 20
                                       to   :  #define _NFILE_ 100
      
                crt0dat.asm :
                           line 17  :  from :  _NFILE_ = 20
                                       to   :  _NFILE_ = 100

           2.   If Microsoft C 6.0 is being used, also make the
                following changes:
      
                           line 259 :  (comment this line out)
                           line 731 :  (comment this line out)
                                       - these were commented out because of
                                         an unresolved external. This didn't 
                                         seem to affect the example.
      
                           line 319 - 321 :  (uncomment these lines)
      
           3.   Compile _FILE.C and crt0dat.asm :
      
                 cl -c -AL -W2 -Gsw -Owd _FILE.C
                 masm -Mx -Dmem_L crt0dat.asm

           4.   The compiled .OBJs need to be put in the appropriate library.

                 DLL :     lib ldllcew-+_FILE;     
                           lib ldllcew-+crt0dat;
            
                 NONDLL :  lib llibcew-+_FILE;

                           lib llibcew-+crt0dat;
      


      Borland C++ 3.1 patch:
      ----------------------

         This patch was obtained directly from Borland International Inc.
      This patch involves changes to one file from the RTL ( Run-Time
      Library ): _NFILE.H

      A change to this file affects these files: FILES.C and FILES2.C .    
      Therefore, FILES.C and FILES2.C must be recompiled and re-linked.

         Please note that this fix has not been extensively tested
      by Sequiter.       

           1.   _NFILE.H:

                // _NFILE.H
                // Copyright (C) 1992 Borland International, Inc.
                // All Rights Reserved

                // Maximum number of open FILES
                #define _NFILE_ 20       /* change 20 to larger value */

                //........................................................


         You will now have to replace the files FILES.C and FILES2.C in
      the standard library with the patched files.  You must first compile
      FILES.C and FILES2.C.  You can do this as follows:

            bcc -c -mX FILES.C FILES2.C

     where the X in -mX is the memory model being used.  Each memory
     model used must have these changes made to each repective memory model
     library.

     eg.  For large model usage:

            bcc -c -ml FILES.C FILES2.C


        Now link the new modules into the library.  For example, the large
     model link would be:

            tlib cX.lib -+FILES.OBJ -+FILES2.OBJ   
            tlib cwX.lib -+FILES.OBJ -+FILES2.OBJ  

     where the X is the memory model being used.  Each memory
     model used must have these changes made to each repective memory model
     library.

     eg.  For large model usage:


            tlib cl.lib -+FILES.OBJ -+FILES2.OBJ   
            tlib cwl.lib -+FILES.OBJ -+FILES2.OBJ  


     Both of these lines should be executed.  'CL.LIB' is a Borland DOS   
     library, and 'CWL.LIB' is a Borland Windows library.

        Once completed, you should now be able to open more than twenty
     files.  

                  ------   END   ------

