



                           FTP Client Engine

                           Library for Delphi


                               (FCE4D)



                            USERS MANUAL



                            Version 1.2

                          September 29, 1999




                     This software is provided as-is.
              There are no warranties, expressed or implied.




                           Copyright (C) 1999
                           All rights reserved



                       MarshallSoft Computing, Inc.
                           Post Office Box 4543
                           Huntsville AL 35815


                           Voice : 256-881-4630
                             FAX : 256-880-0925
                           email : info@marshallsoft.com
                             web : www.marshallsoft.com

                               _______
                          ____|__     |                (R)
                       --+       |    +-------------------
                         |   ____|__  |  Association of
                         |  |       |_|  Shareware
                         |__|   o   |    Professionals
                       --+--+   |   +---------------------
                            |___|___|    MEMBER


      MARSHALLSOFT is a registered trademark of MarshallSoft Computing.



     FCE4D Users Manual                                        Page 1

                            C O N T E N T S



        Chapter                                     Page

       1.0 Introduction................................................3
           1.1 User Support............................................5
           1.2 ASP Ombudsman...........................................5
           1.3 Installation............................................6
           1.4 Uninstalling............................................6
       2.0 Library Overview............................................7
           2.1 Dynamic Link libraries..................................7
           2.2 Compiling Programs......................................7
           2.3 Delphi Notes............................................7
       3.0 Using the FCE Library.......................................8
           3.1 Using FCEF..............................................8
       4.0 Application Notes...........................................9
           4.1 FTP Basics..............................................9
           4.2 Auto Dial...............................................9
           4.3 Key Codes...............................................9
       5.0 Theory of Operation........................................10
       6.0 Versions of FCE............................................11
           6.1 Shareware Version......................................11
           6.2 Student Version........................................11
           6.3 Professional Version...................................11
       7.0 Using FCE with Other Languages.............................12
       8.0 Problems...................................................12
       9.0 Example Programs...........................................13
      10.0 Registration...............................................14
           10.1 Professional Version..................................14
           10.2 Student Version.......................................14
           10.3 Updates...............................................14
      11.0 Payment....................................................15
      12.0 Legal Issues...............................................16
           12.1 License...............................................16
           12.2 Warranty..............................................16
      13.0 Summary....................................................17
           13.1 Revision History......................................17
           13.2 FCE Function Summary..................................17
           13.3 FCE Error Return Code List............................18

















     FCE4D Users Manual                                        Page 2

      1.0 Introduction

      FCE4D is the easiest way to write FTP applications in Delphi! FCE can
      be used for both anonymous and private FTP sessions.

      The FTP Client Engine (FCE) is a library of functions providing
      direct and simple control of the FTP protocol.

      A simple interface allows connecting to a FTP server, navigating its
      directory structure, listing files, sending files, deleting files,
      and receiving files using the FTP protocol.

      With FCE4D, you can write programs that easily:

      (1) Connect to any FTP server.
      (2) Get a list of files on the server.
      (3) Navigate the server directories.
      (4) Specify ASCII or BINARY transfer mode.
      (5) Download files.
      (6) Upload files.
      (7) Delete files.
      (8) Create and remove server directories.

      FCE4D supports all versions of Delphi.

      Both Win16 and Win32 DLLs (Dynamic Link Libraries) are provided.
      FCE4D can be used with Windows 3.X, 95/98, and NT.

      When comparing FCE against our competition, note that:

      (1) FCE4D is a standard Windows DLL (NOT an OCX or ActiveX control)
          and is much smaller than a comparable OCX or ActiveX control.
      (2) Both WIN16 and WIN32 DLLs are included.
      (3) FCE4D does NOT depend on ActiveX or Microsoft Foundation Class
          (MFC) libraries or similar "support" libraries.
      (4) The WIN32 version of FCE is fully threadable.
      (5) The FCE functions can be called from applications not capable of
          using controls.

      Versions of FCE for C/C++ (FCE4C), Visual Basic (FCE4VB), and
      PowerBASIC (FCE4PB) are also available. All use the same DLL's.

      In the first example program below (next page), fAttach is called to
      initialize FCE, then fConnect is called to connect to the FTP server
      as user "anonymous" with password "msc@traveller.com". The connection
      to the FTP server is then closed and FCE is released.

      The second program does the same thing as the first, except that it
      calls FCE functions directly, rather than FCEF functions, which are
      wrappers for FCE functions. See section 3.1 "Using FCEF".

      Refer to the FCE4D Reference Manual for individual function details.






     FCE4D Users Manual                                        Page 3

      1.0 Introduction (continued)

      +-------------------------------------------------------------------+
      | var                                                               |
      |   Code : Integer;                                                 |
      | begin                                                             |
      |   {attach FCE}                                                    |
      |   Code := fAttach(1, FCE_KEY_CODE)                                |
      |   if Code < 0 then                                                |
      |     begin                                                         |
      |       {Error connecting}                                          |
      |       exit                                                        |
      |     end;                                                          |
      |   {connect to server}                                             |
      |   Code := fConnect(0, 'ftp.marshallsoft.com', 'anonymous',        |
      |                       'msc@traveller.com');                       |
      |   if Code < 0 then                                                |
      |     begin                                                         |
      |       {Error code returned}                                       |
      |       exit                                                        |
      |     end;                                                          |
      |   {quit}                                                          |
      |   fClose(0);                                                      |
      |   fRelease()                                                      |
      | end;                                                              |
      +-------------------------------------------------------------------+

      The same program using FCE.PAS rather than FCEF.PAS.

      +-------------------------------------------------------------------+
      | var                                                               |
      |   Code : Integer;                                                 |
      |   Host, User, Pass : PChar;                                       |
      | begin                                                             |
      |   {attach FCE}                                                    |
      |   Code := fceAttach(1, FCE_KEY_CODE)                              |
      |   if Code < 0 then                                                |
      |     begin                                                         |
      |       {Error connecting}                                          |
      |       exit                                                        |
      |     end;                                                          |
      |   {connect to server}                                             |
      |   GetMem(Host,64); StrPCopy(Host,'ftp.marshallsoft.com');         |
      |   GetMem(User,64); StrPCopy(User,'anonymous');                    |
      |   GetMem(Pass,64); StrPCopy(Pass,'msc@traveller.com');            |
      |   Code := fceConnect(0, Host, User, Pass);                        |
      |   if Code < 0 then                                                |
      |     begin                                                         |
      |       {Error code returned}                                       |
      |       exit                                                        |
      |     end;                                                          |
      |   {quit}                                                          |
      |   fceClose(0);                                                    |
      |   fceRelease()                                                    |
      | end;                                                              |
      +-------------------------------------------------------------------+


     FCE4D Users Manual                                        Page 4

      1.1 User Support

      We want you to be successful in developing your applications using
      FCE4D! We are committed to providing the best library that we can.
      If you have any suggestions or comments, please let us know.

      If you are having a problem using FCE4D, email us at

         support@marshallsoft.com

      You can also reach us at 256-881-4630 between 7:00 AM and 7:00 PM CST
      Monday through Friday. You can also often contact us on the weekend.

      The latest versions of our products are available on our web site at

         http://www.marshallsoft.com

      and on our anonymous FTP site at

         ftp://ftp.marshallsoft.com/marshallsoft

      The MarshallSoft Computing newsletter "Comm Talk" is published
      quarterly on our web site.  It discusses various communications
      problems and solutions using our products as well as related
      information.

      1.2 ASP Ombudsman

      MarshallSoft Computing, Inc. is a member of the Association of
      Shareware Professionals (ASP).  ASP wants to make sure that the
      shareware principle works for you.  If you are unable to resolve a
      shareware-related problem with an ASP member by contacting the member
      directly, ASP may be able to help. The ASP Ombudsman can help you
      resolve a dispute or problem with an ASP member, but does not provide
      technical support for members' products. Please write to the ASP
      Ombudsman at 157-F Love Ave., Greenwood, IN 26142 USA, FAX
      317-888-2195, or send email to omb@asp-shareware.org.





















     FCE4D Users Manual                                        Page 5

      1.3 Installation

      (1) Unzip FCE4D12.ZIP into a project directory.

      (2) Execute INSTAL16.BAT or INSTAL32.BAT, which will copy the proper
          files.

          INSTAL16    ++ for Win16 (Delphi 1)
          INSTAL32    ++ for Win32 (Delphi 2 and above)

          Alternatively, one can run INSTALL.BAT:

          INSTALL 16   ++ for Win16
          INSTALL 32   ++ for Win32

      (3) You're ready to compile & run!

          The INSTALL.BAT program (called by INSTAL16.BAT or INSTAL32.BAT)
          copies FCE32.DLL (or FCE16.DLL) to either C:\WINDOWS (for Windows
          3.1/95/98) or C:\WINNT (for Windows NT 4.0).

      The Windows registry is NOT modified.

      1.4 Uninstalling

      Uninstalling FCE4D is very easy. FCE4D does NOT modify the
      registry. First, delete the FCE4D project directory created when
      installing FCE4D. Second, delete FCE16.DLL and FCE32.DLL from your
      Windows directory, typically C:\WINDOWS for Windows 3.1/95/98 or
      C:\WINNT for Windows NT. That's it!




























     FCE4D Users Manual                                        Page 6

      2.0 Library Overview

      2.1 Dynamic Link Libraries

      FCE4D includes both Win16 [FCE16.DLL] and Win32 [FCE32.DLL] dynamic
      link libraries. A DLL is characterized by the fact that it need not
      be loaded until required by an application program and that only one
      copy of the DLL is necessary regardless of the number of application
      programs that use it. Contrast this to a static library which is
      bound at link time to each and every application that uses it.

      2.2 Compiling Programs

      The example programs are compiled from the Delphi development
      environment using the provided Delphi project files (*.DPR). Be sure
      to run the install program (INSTAL16.BAT or INSTAL32.BAT) before
      compiling. Recall that Delphi 1 generates a Win16 application while
      Delphi 2 and above generates a Win32 application.

      The example programs will compile and run with any version of Delphi.
      They have each been tested using Delphi 1 through Delphi 5.

      Respond with "OK" to the message "Cannot find resource file..." and
      it will be properly rebuilt.

      See section 9.0 "Example Programs" for more details on each of the
      example programs.

      FCE4D may also be used with "Borland Pascal for Windows".

      2.3 Delphi Notes

      The FCE is written in ANSI C (like Windows itself). In C, strings are
      zero terminated. Note the manner in which strings are passed to FCE
      functions.

         var
           Text : String;
           Host : PChar;

         begin
           {allocate Memory (128 bytes) and copy string to it}
           GetMem(Host, 128);
           StrPCopy(Host, 'ftp.marshallsoft.com');
           {pass Host to FCE function}
           Code := fceConnect(0,Host,...);
           {free Memory}
           FreeMem(Host, 128);

      FCE buffers can also be converted to Delphi strings with StrPas. For
      example:

           Text := StrPas(Host);

      Also see section 3.1 "Using FCEF", in which the calls to GetMem and
      FreeMem are done in FCEF.PAS rather than your application.


     FCE4D Users Manual                                        Page 7

      3.0 Using the FCE Library

      The FCE library is divided into nine classes of functions:

      (1) The fceAttach and fceRelease functions are used to initialize and
      terminate the FCE system. fceAttach should be the very first FCE
      function called and fceRelease must be the last FCE function called.

      The first argument to fceAttach is the maximum number of threads that
      will be started. Use 1 for non-threaded applications. The first
      argument to most of the other FCE functions will be the channel (or
      thread) number. Up to 32 threads can be run simultaneously. Threads
      are numbered starting at 0. The second argument to fceAttach is the
      keycode.  See Section 4.3, "Key Codes".

      (3) The fceConnect function is used to connect to a FTP server. The
      fceClose function terminates the connection to the FTP server, after
      which another connection can be made. There should be one fceClose
      for every fceConnect.

      (4) The FCE functions fceSetLocalDir and fceGetLocalDir are used to
      set and display the local directory to be used for uploading and
      downloading files. They affect only the client computer. Nothing is
      sent or received from the FTP server.

      (5) The FCE function fceSetServerDir and fceGetServerDir are used to
      set and display the server directory from which all subsequent
      uploads and downloads will occur. The FCE functions fceMakeServerDir
      and fceDelServerDir are used to create and delete server directories.

      (6) The FCE function fceGetList is used to get a list of files from
      the FTP server. Both name lists and full directory lists can be
      retrieved.

      (7) The FCE function fceSetMode is used to set the transfer mode to
      either ASCII or binary for all subsequent file transfers.

      (8) The FCE functions fceGetFile and fcePutFile are used for
      downloading and uploading files. Note that the default is ASCII.

      (9) The FCE functions fceMakeServerDir and fceDelServer directory are
      used to create and remove directories on the server. Of course, this
      requires that you have permission. This is almost never the case when
      connecting as an anonymous user.

      3.1 Using the FCEF

      The FCEF.PAS module is a "wrapper" for FCE.PAS that allows you to
      pass Delphi strings directly rather than having to first convert them
      to PCHAR variables.

      Compare the example program FFTP_PGM.PAS to FTP_PGM.PAS. Observe
      that FFTP_PAS.PAS has "uses fcef" while FTP_PGM.PAS has "uses fce".

      Note that FCEF.PAS is easier to use while FCE.PAS has less overhead.



     FCE4D Users Manual                                        Page 8

      4.0 Application Notes

      4.1 FTP Basics

      The FTP (File Transfer Protocol) protocol is defined by Internet
      document RFC 959. It is used to copy files between a FTP client and a
      FTP server over a TCP/IP connection using well known port 21.

      In order to connect to a FTP server, the server name (or IP address),
      the user name, and the user password must be known. This is known as
      private (or protected) access.

      Some FTP servers allow "anonymous" access, which is usually download
      only. The convention for anonymous access is to use the word
      "anonymous" for the user name, and the callers email address for the
      password. Many FTP servers will also accept "ftp" instead of
      "anonymous".

      FCE4D supports "Passive" mode. Passive mode is often necessary in
      order to get past a firewall to access the server. Passive mode can
      be enabled by calling fceSetInteger(Chan, FCE_SET_PASSIVE, 1).

      4.2 Auto Dial

      To allow Dial-Up Networking (DUN) to dial up your ISP when you access
      the Winsock:

      (1) Open the DUN folder in "My Computer", and choose
      "Connections/Settings" from menu bar. Uncheck "prompt for information
      before dialing" and choose "Don't prompt to use Dial-Up Networking".

      (2) Use the Windows REGEDIT program to change value "00 00 00 00" to
      the value "00 00 00 01" in the Windows Registry for the entry
      HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet
      Settings/EnableAutodial.

      (3) Use the Windows REGEDIT program to change value "00 00 00 00" to
      the value "00 00 00 01" in the Windows Registry for the entry
      HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet
      Settings/EnableAutodisconnect.

      (4) Use the Windows REGEDIT program to change value "14 00 00 00" to
      the value "01 00 00 00" in the Windows Registry for the entry
      HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet
      Settings/DisconnectIdleTime. This changes the idle time (until
      disconnect) from 20 minutes (hex 14) to one minute.

      Windows NT Users can use the RAS dialer.

      4.3 Key Codes

      When you register FCE, you will receive a new set of DLL's and a key
      code for your DLL's. Pass this keycode as the second argument to
      fceAttach. The keycode will be found in the file KEYCODE.PAS. The
      keycode for the shareware version is 0.



     FCE4D Users Manual                                        Page 9

      5.0 Theory Of Operation

      The FTP Client Engine is state driven. This means that each call to
      FCE functions (that access the server) is broken down into sequential
      steps, each of which can be performed within a second or two.

      There are two ways in which FCE is used: (1) indirect use of the
      state engine, and (2) direct use of the state engine.

      5.1 Indirect Method

      The first (or "indirect") way to use the FCE library is to allow all
      FCE function calls to automatically call the FCE driver (fceDriver)
      before returning. This is the default way that FCE operates.

      The major advantage of this approach is that each FCE function
      returns only after it has completely finished. The disadvantage of
      this approach is that some functions may run for a considerable
      amount of time during which time the calling application must wait.

      Refer to the sample program FTP_PGM for an example of this approach.

      5.2 Direct Method

      The second (or "direct") way that the FCE state driver is used is to
      call it (fceDriver) directly. In order to operate this way, the
      function fceSetInteger must be called which sets the AUTO_CALL flag
      to off:

         Code := fceSetInteger(Chan, FCE_AUTO_CALL_DRIVER, 0)

      After the above statement is executed, the state driver (fceDriver)
      must be called after all other FCE functions that access the server.
      For example,

         Code := fceConnect(...);
         If Code < 0 Then
           begin
             {handle error here . . .}
           end;
         Repeat   {call the driver}
           Code := fceDriver();
           If Code < 0 Then
             begin
               {handle error here . . .}
               exit;
             end;
           {do something here . . .}
         Until Code = 0;

      The major advantage of the direct approach is that the calling
      application can perform other work such as reporting the progress of
      large downloads. The disadvantage is the extra code that must be
      written to call fceDriver.




     FCE4D Users Manual                                        Page 10

      6.0 Versions of FCE

      The FTP Client Engine (FCE) library is available in three versions.
      All three versions have identical functionality.

      6.1 Shareware Version

      The shareware version can be differentiated from the other two
      versions by:

      (1) The shareware reminder screen is displayed at startup.

      (2) The DLL is branded with "SHAREWARE VERSION".

      The Shareware version may NOT be used for commercial purposes.

      6.2 Student Version

      The student version can be differentiated from the other two versions
      by:

      (1) There is no shareware reminder screen.

      (2) The DLL is branded with "STUDENT VERSION".

      The Student version may NOT be used for commercial purposes. Refer to
      Section 10.3, Student Version.

      6.3 Professional Version

      The professional version can be differentiated from the other two
      versions by:

      (1) There is no shareware reminder screen.

      (2) The DLL is branded with your company name.

      The professional version may be distributed with your application as
      specified by the software license.



















     FCE4D Users Manual                                        Page 11

      7.0 Using FCE with Other Languages

      The FTP Client Engine DLLs can be used with any application written
      in any language capable of calling the Windows 16-bit or 32-bit API.

      There are versions of FCE for C/C++ (FCE4C), Visual Basic (FCE4VB),
      and PowerBASIC (FCE4PB). We also have declaration files and example
      programs for Visual FoxPro, Visual dBase, and Fujitsu COBOL.

      If you have interfaced FCE to an unusual language, email us the
      declaration file!

      8.0 Problems

      Before attempting to run any of the example programs, you should
      already be able to connect to the Internet.

      If you cannot get your application to run properly, first compile and
      run the example programs. If you call us to report a possible bug in
      the library, the first thing we will ask is if the example programs
      run correctly.

      Be sure to test the code returned from FCE functions. Then, call
      fceErrorText to get the text associated with the error code.

      For example:

         var
           Text : String;
           Ptr  : PChar;

         begin
           if Code < 0 then
             begin
               GetMem(Ptr,120);
               Code := fceErrorText(0,Code,Ptr,120);
               Text := Format(' FCE Error %d: %s',[Code,StrPas(Ptr)])
               {display Text}
             end;

      If you encounter a problem that you cannot resolve, give us a call or
      email us at support@marshallsoft.com.
















     FCE4D Users Manual                                        Page 12

      9.0 Example Programs

      Several example programs are included in FCE4D. Before writing your
      own programs, compile and run the example programs.

      9.1 VER_PGM

      The first example program is the program VER_PGM (Version Program)
      which displays the FCE library version number and registration
      string. A TCP/IP connection is not made. The project files are:

         VER_PRJ.DPR : Project file.
         VER_PAS.PAS : Program file.
         VER_PAS.DFM : Delphi Form file.

      9.2 FTP_PGM

      FTP_PGM is an example FTP application which can be used to connect to
      any FTP server and upload, download, and delete files. The project
      files are:

         FTP_PRJ.DPR : Project file.
         FTP_PAS.PAS : Program file.
         FTP_PAS.DFM : Delphi Form file.

      9.3 GET_PGM

      GET_PGM is a example program that connects to the MarshallSoft
      FTP server at ftp://ftp.marshallsoft.com and downloads PRODUCTS.TXT
      from server directory pub/other. The project files are:

         GET_PRJ.DPR : Project file.
         GET_PAS.PAS : Program file.
         GET_PAS.DFM : Delphi Form file.

      9.4 FFTP_PGM

      FFTP_PGM is the same program as FTP_PGM except that it calls
      functions in FCEF (which in turn call FCE functions) rather than FCE
      functions directly. The project files are:

         FFTP_PRJ.DPR : Project file.
         FFTP_PAS.PAS : Program file.
         FFTP_PAS.DFM : Delphi Form file.














     FCE4D Users Manual                                        Page 13

      10.0 Registration

      10.1 Professional Version

      The professional version of FCE4D may be registered for $95 plus $8
      S&H ($14 outside of North America). Shipping and handling charges
      include the cost of the printed manuals.  The professional version
      DLL is also branded with your company name and may be distributed
      with your applications.

      10.2 Student Version

      We offer an "academic price" of 40% off the normal price for prepaid
      email orders to faculty and full time students currently enrolled in
      any accredited high school, college, or university. To qualify for
      the discount, your school must have a web site and you must have an
      email address at your school.

      When ordering, ask for the "academic discount", or enter "student
      at" (or "faculty at") and your schools web site address (URL) in the
      comments field of the order form on our web site order page. Your
      order will be sent to your email address at your school.

      Products bought with academic pricing can not be used for any
      commercial purpose.

      10.3 Updates

      When you order FCE4D, you will receive a license file FCExxxx.LIC
      where xxxx is your customer number. Save this file!

      Updates are $20 by email if you attach your license file FCExxxx.LIC
      to the email, and $30 otherwise. There is an additional $8 charge
      ($14 outside of North America) if you want a disk and printed manuals
      mailed.























     FCE4D Users Manual                                        Page 14

      11.0 Payment

      All prices are guaranteed for one year from the release date.
      Multiple copy discounts (3 or more) and site licenses are available.
      Please call for details.

      We accept American Express, VISA, MasterCard, Discover, checks in US
      dollars drawn on a US bank, International Postal Money Orders, and
      purchase orders (POs) within the USA from recognized US schools and
      companies listed in Dun & Bradstreet.

      For credit card orders, be sure to include the account number, the
      expiration date, the exact name on the card, and the complete card
      billing address (the address to which the credit card bill is
      mailed).

      Print the file INVOICE.TXT if a "Pro Forma" invoice is needed. The
      registered package includes:

         o  Win16 & Win32 FCE4D Libraries w/o shareware screens.
         o  Printed Users Manual & Reference Manual.
         o  Telephone and email support for one year.

      FCE4D is shipped on a 3.5" HD diskette.

      There are several ways to place your order:

      (1) Using our secure server at www.marshallsoft.com
      (2) Email INVOICE.TXT to sales@marshallsoft.com
      (3) FAX INVOICE.TXT to 256-880-0925 (24 hours).
      (4) Call us at 256-881-4630 (7 AM to 7 PM CST Monday through Friday).
      (5) Mail INVOICE.TXT to

               MarshallSoft Computing, Inc.
               POB 4543
               Huntsville AL 35815
               USA





















     FCE4D Users Manual                                        Page 15

      12.0 Legal Issues

      12.1 License

      MarshallSoft Computing, Inc. grants the registered user of FCE4D the
      right to use one copy of the FCE4D DLL's on a single computer in the
      development of any software product. The user may not use the library
      on more than one computer at the same time.

      The "student" ($57) registered DLL's may not be distributed under any
      circumstances, nor may they be used for any commercial purpose.

      The "professional" ($95) registered DLL's may be distributed (without
      royalty) in object form only, as part of the user's compiled
      application. The registered DLL's may NOT be distributed as part of
      any software development system (compiler or interpreter) without our
      express written permission.

      When you register, you will be sent a "key code" which enables access
      to the registered DLL's. You may NOT distribute or make known this
      key code. (see section 4.3 "Key Code").

      12.2 Warranty

      MARSHALLSOFT COMPUTING, INC.  DISCLAIMS ALL WARRANTIES RELATING TO
      THIS SOFTWARE, WHETHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
      LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
      A PARTICULAR PURPOSE, AND ALL SUCH WARRANTIES ARE EXPRESSLY AND
      SPECIFICALLY DISCLAIMED. NEITHER MARSHALLSOFT COMPUTING, INC.  NOR
      ANYONE ELSE WHO HAS BEEN INVOLVED IN THE CREATION, PRODUCTION, OR
      DELIVERY OF THIS SOFTWARE SHALL BE LIABLE FOR ANY INDIRECT,
      CONSEQUENTIAL, OR INCIDENTAL DAMAGES ARISING OUT OF THE USE OR
      INABILITY TO USE SUCH SOFTWARE EVEN IF MARSHALLSOFT COMPUTING, INC.
      HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR CLAIMS. IN NO
      EVENT SHALL MARSHALLSOFT COMPUTING, INC.'S LIABILITY FOR ANY SUCH
      DAMAGES EVER EXCEED THE PRICE PAID FOR THE LICENSE TO USE THE
      SOFTWARE, REGARDLESS OF THE FORM OF THE CLAIM. THE PERSON USING THE
      SOFTWARE BEARS ALL RISK AS TO THE QUALITY AND PERFORMANCE OF THE
      SOFTWARE.

      Some states do not allow the exclusion of the limit of liability for
      consequential or incidental damages, so the above limitation may not
      apply to you.

      This agreement shall be governed by the laws of the State of Alabama
      and shall inure to the benefit of MarshallSoft Computing, Inc.  and
      any successors, administrators, heirs and assigns.  Any action or
      proceeding brought by either party against the other arising out of
      or related to this agreement shall be brought only in a STATE or
      FEDERAL COURT of competent jurisdiction located in Madison County,
      Alabama. The parties hereby consent to in personam jurisdiction of
      said courts.






     FCE4D Users Manual                                        Page 16

      13.0 Summary


      13.1 Revision History


      Version 1.2: September 29, 1999

          o  The initial release of the Delphi version of FCE.

      13.2 FCE4D Function Summary

      Refer to the FCE4D Reference Manual (FCE4D_R.TXT) for detailed
      information on the communications and support functions.  A one line
      summary of each function follows.

      There are 24 functions in the FCE library.

      +-------------------------------------------------------------------+
      |         fceAbort : Aborts download or upload in progess.          |
      |        fceAttach : Attaches FCE.                                  |
      |         fceClose : Closes connection opened by fceConnect.        |
      |       fceCommand : Sends user specified command to the server.    |
      |       fceConnect : Connects to FTP server and logs on.            |
      |       fceDelFile : Deletes file on server.                        |
      |        fceDriver : Executes next FCE state.                       |
      |       fceExtract : Extracts strings.                              |
      |     fceErrorText : Formats error message.                         |
      |       fceGetFile : Downloads file.                                |
      |    fceGetInteger : Gets numeric parameter.                        |
      |   fceGetLocalDir : Gets local directory.                          |
      |  fceGetServerDir : Gets server directory.                         |
      |     fceGetString : Gets string parameter.                         |
      |       fceGetList : Lists files on server.                         |
      | fceMakeServerDir : Make server directory.                         |
      |       fcePutFile : Uploads file.                                  |
      |       fceRelease : Releases FCE.                                  |
      |  fceDelServerDir : Deletes server directory.                      |
      |    fceSetInteger : Set numeric parameter.                         |
      |   fceSetLocalDir : Sets local directory.                          |
      |       fceSetMode : Sets transfer mode (ASCII or BINARY).          |
      |  fceSetServerDir : Sets server directory.                         |
      |     fceSetString : Sets string parameter.                         |
      +-------------------------------------------------------------------+














     FCE4D Users Manual                                        Page 17


      13.3 FCE Error Return Code List


      The complete list of FCE error codes follows.


      +-----------------------+-----------------------------------------+
      | FCE_NO_ERROR          | No error.                               |
      | FCE_CANNOT_COMPLY     | Cannot comply. Not always an error.     |
      +-----------------------+-----------------------------------------+
      | FCE_ABORTED           | Internal checksum fails!                |
      | FCE_ALREADY_ATTACHED  | Already attached.                       |
      | FCE_BAD_KEY_CODE      | Bad key code (2nd argumnet in fceAttach)|
      | FCE_BAD_STATUS_FLAG   | Bad status flag passed to fceStatus.    |
      | FCE_CANNOT_ALLOC      | Cannot allocate memory.                 |
      | FCE_CANNOT_COMPLY     | Cannot comply.                          |
      | FCE_CANNOT_CREATE_SOCK| Cannot create socket.                   |
      | FCE_CHAN_OUT_OF_RANGE | Channel out of range.                   |
      | FCE_CONNECT_ERROR     | Error attempting to connect.            |
      | FCE_EOF               | Socket has been closed.                 |
      | FCE_SERVER_ERROR      | FTP server returned error.              |
      | FCE_INVALID_SOCKET    | Invalid socket.                         |
      | FCE_IS_BLOCKING       | WINSOCK is currently blocking.          |
      | FCE_NO_HOST           | No host name.                           |
      | FCE_NO_SERVER         | Cannot find FTP server.                 |
      | FCE_NO_SOCK_ADDR      | No available sockaddr structures.       |
      | FCE_NOT_ATTACHED      | Must call fceAttach first.              |
      | FCE_NOT_SERVER        | Illegal chars in server name.           |
      | FCE_PASS_NULL_ARG     | PASSWORD not specified.                 |
      | FCE_SERVER_NULL_ARG   | SERVER not specified.                   |
      | FCE_TIMED_OUT         | Socket timed out.                       |
      | FCE_USER_NULL_ARG     | USER name not specified.                |
      | FCE_MODE_NOT_AB       | Must specify 'A' or 'B' for mode.       |
      | FCE_LISTEN_ERROR      | Listen error.                           |
      | FCE_LISTENER_SILENT   | No response of listener socket.         |
      | FCE_ACCEPT_SILENT     | Timed out waiting for accept.           |
      | FCE_SOCK_READ_ERROR   | Socket read error.                      |
      | FCE_NOT_COMPLETED     | Last GET or PUT not completed.          |
      +-----------------------+-----------------------------------------+

      NOTES:
      (1) All error codes are negative.
      (2) FCE_ABORTED will be returned if the DLL has been modified. You
          should never get this message!













     FCE4D Users Manual                                        Page 18

