CHRONOLOGY OF DCCONNECT, DCTPB AND TC FIXES AND ENHANCEMENTS
------------------------------------------------------------
This file catalogs fixes made to the DCConnect products since we
shipped the 1.4.0 revisions of the following DCConnect product CDs in
August 1999 and continues through to the present day:

  DCConnect Server
  DCConnect Toolkit
  Transaction Connection
  DCConnect Transaction Building Tool
  LoadODBC database loading tool

Note 1: Prior to fix pack E, fixes for the DCConnect Transaction Building
      Tool were included in a separate fix pack.

Note 2: Fixes for the DCConnect Client (formerly '752X Emulator for DOS')
      and for the JD Edwards adapter are provided in a separate fix packages.

Note 3: The method / format for distributing fixes has evolved over time.

Each fix pack that we create is assigned a letter.  The first is A,
the second is B, ...

Each fix pack is set up as a self-extracting zip file.  There is one fix
pack file for OS/2 and one for Windows/NT.

The self-extracting zip file for OS/2 is called:

  OS2F140n.EXE

where 'n' is the fix pack letter (A, B, ...)

The self-extracting zip file for Windows/NT is called:

  NTF140n.EXE

where 'n' is the fix pack letter (A, B, ...)

The rest of this document will refer to these self-extracting zip files as
OS2F140n.EXE and NTF140n.EXE rather than specifying a particular fix pack
letter for 'n'.  But when performing any steps below that use these file
names, be sure to use the appropriate fix pack letter in place of 'n'.  For
example, for version D of the fix pack, use OS2F140D.EXE and NTF140D.EXE.

In addition to describing the fixes made, this file explains how to
install the OS/2 fixes from the OS2F140n.EXE self-extracting zip file and
the NT fixes from the NTF140n.EXE self-extracting zip file.

See the bottom of the file for the date of the last change.

All fix packs are cumulative; you need only install the latest fix pack in
order to get all fixes that apply to the products on the 1.4.0 versions of the
DCConnect products.

If you have the file OS2F140n.EXE or NTF140n.EXE you can either create
diskettes from which to install the fixes or you can expand the
file on the hard drive into any empty subdirectory and run the installation
from that subdirectory.


IMPORTANT NOTE FOR ALL USERS:
-----------------------------
These fixes can only be installed if your PC has been rebooted since you
installed from the 1.4.0 version of the DCConnect CDs.  The installation makes
use of some operating system environment variables (e.g. DCCONN).  In addition,
these fixes CANNOT be applied to the -03 revision of the DCConnect CD or any
prior version.


EXPANDING AND INSTALLING OS/2 FIXES FROM THE HARD DRIVE
-------------------------------------------------------
To expand and install OS2F140n.EXE from somewhere on your hard drive,
perform the following steps:

1) Create or choose an empty directory anywhere on your harddrive.  For
   example: C:\TEMP

2) Copy or download OS2F140n.EXE to that directory

3) Make sure that directory is the current directory and then run the
   executable by typing:

     OS2F140n

   This will expand all the files into the current directory.

4) To install the fixes, first make sure none of the DCConnect products are
   running and that the current directory is the one containing the expanded
   contents of the OS2F140n executable.  Issue the following command:

     INSTALL

5) Continue with the section below marked: CHRONOLOGICAL SUMMARY OF
   FIXES/CHANGES


EXPANDING AND INSTALLING OS/2 FIXES USING DISKETTES
---------------------------------------------------
If you need to update several OS/2 DCConnect machines with fixes and you want
to run the fix pack installation from diskette, you can use the MAKEDSKS.CMD
command file to create the diskette.  Perform the following steps:

1) Create or choose an empty directory anywhere on your harddrive.  For
   example: C:\TEMP

2) Copy or download OS2F140n.EXE to that directory

3) Make sure that directory is the current directory and then run the
   executable by entering:

     OS2F140n

   This will expand all the files into the current directory.

4) To create the diskettes, first get three completely blank, formatted 1.44
   3.5 in. diskettes.  Then run the following command file from the current
   directory:

     MAKEDSKS

   This will prompt you for the diskettes that are needed and copy the
   appropriate files to them.

5) To install the fixes contained on the fix diskette, first make sure none
   of the DCConnect products are running and make sure the first fix
   diskette is in drive A:  Issue the following command:

     A:\INSTALL

   If additional diskettes are needed, they will be prompted for. (Of
   course, drive B: could be used for the installation as well).

   Note: Once you have created the diskettes, you could also copy the contents
   of the diskettes to an empty directory on the target system and then run the
   installation from that directory.  In fact this is probably faster than
   running the installation directly from diskette.

6) Continue with the section below marked: CHRONOLOGICAL SUMMARY OF
   FIXES/CHANGES


EXPANDING AND INSTALLING WINDOWS/NT FIXES FROM THE HARD DRIVE
-------------------------------------------------------------
To expand and install NTF140n.EXE from somewhere on your hard drive,
perform the following steps:

1) Create or choose an empty directory anywhere on your harddrive.  For
   example: C:\TEMP

2) Copy or download NTF140n.EXE to that directory

3) Make sure that directory is the current directory and then run the
   executable by typing:

     NTF140n

   This will expand all the files into the current directory.

4) To install the fixes, first make sure none of the DCConnect products are
   running and that the current directory is the one containing the expanded
   contents of the NTF140n executable.  Issue the following command:

     SETUP

5) Continue with the section below marked: CHRONOLOGICAL SUMMARY OF
   FIXES/CHANGES


EXPANDING AND INSTALLING NT FIXES USING DISKETTES
-------------------------------------------------
If you need to update several NT DCConnect machines with fixes and you want
to run the fix pack installation from diskette, you can use the MAKEDSKS.BAT
command file to create the diskette.  Perform the following steps:

1) Create or choose an empty directory anywhere on your harddrive.  For
   example: C:\TEMP

2) Copy or download NTF140n.EXE to that directory

3) Make sure that directory is the current directory and then run the
   executable by entering:

     NTF140n

   This will expand all the files into the current directory.

4) To create the diskettes, first get five completely blank, formatted 1.44
   3.5 in. diskettes.  Then run the following command file from the current
   directory:

     MAKEDSKS

   This will prompt you for the diskettes that are needed and copy the
   appropriate files to them.

5) To install the fixes contained on the fix diskette, first make sure none
   of the DCConnect products are running and make sure the first fix
   diskette is in drive A:  Issue the following command:

     A:\SETUP

   If additional diskettes are needed, they will be prompted for. (Of
   course, drive B: could be used for the installation as well).

   Note: Once you have created the diskettes, you could also copy the contents
   of the diskettes to an empty directory on the target system and then run the
   installation from that directory.  In fact this is probably faster than
   running the installation directly from diskette.  However, you will be
   prompted to insert the additional diskettes as they are needed by the
   installation.  The prompting dialog box will contain the current drive and
   path which should be where the files were copied.  You can accept that
   location, and the installation will continue.

6) Continue with the section below marked: CHRONOLOGICAL SUMMARY OF
   FIXES/CHANGES

CHRONOLOGICAL SUMMARY OF FIXES/CHANGES
--------------------------------------
For each change, a two character ID will be given indicating which product
had the change.  Here are the IDs:

  UI: DCConnect User Interface
  SV: DCConnect Server - includes API code
  TC: Transaction Connection
  PB: DCConnect Transaction Building Tool (DCTPB)
  IS: 7524 Interface Support
  IN: Installation
  HP: Help and online documentation
  TL: Tools
  SM: Sample
  OD: LoadODBC

------------------------------------------------------------------------------
Prior to fix pack E, the fixes for DCConnect Transaction Building Tool were in
a separate fix pack.  So before listing the fixes/changes for the DCConnect/TC
fix packs, we'll list the fixes that were in the separate DCTPB fix packs A-D.
------------------------------------------------------------------------------

9-10-97:  PB: DCTPB32.EXE and BPTCD32.EXE no longer require the Visual Age C++
          DLLs.  The C library functions are now statically linked to these
          executables.  Executables are a little larger as a result, but they
          can now run without any other files required (except the license
          file).

9-20-97:  PB: Fixed bug generating APND command with new parameters in BPTCD32.EXE.
          You'd end up with an APND command containing only the last three
          parameters.

9-23-97:  PB: Checking for unreferenced labels is now done before checking for
          unresolved labels.  Unreferenced labels generate warnings while
          unresolved labels generate errors.

9-24-97:  PB: DCTPB32.EXE and BPTCD32.EXE now will use the environment variable
          DCTPB to look for the license file if that license file is not found
          in the current directory.

9-26-97:  PB: Fixed problem processing ONKEY/ONSUB with maximum of 20 branches.
          Increased maximum command length to 1024.  Also fixed problem
          processing commands that are split across multiple lines.  A cause
          for a trap was fixed as a result of these changes.

9-29-97:  PB: Fixed bug processing CLRP command.  In the terminal the CLRP would
          work, but it would be followed immediately by a message indicating
          the 'Parameter string is invalid'.

9-29-97:  PB: Fixed bug generating CLRP command in BPTCD32.EXE.  It used to show
          up as a CLRS command with the 3 parameters for CLRP.

----------------------------------------------------------------------------
End of changes in version A of fix package for DCTPB (November 1997).
----------------------------------------------------------------------------

12-3-97:  PB: SEND command for 7524 terminals now allows RS_232 as a target.

1-28-98:  PB: GOSUB, ONSUB and RETURN are now allowed for 7524 programs.

1-28-98:  PB: Added optional second parameter to the TERMTYPE command.  It is
          called ENFORCE_BINDINGS and it requires the use of the KEY command
          to start programs instead of using the PROGRAM command.  If
          ENFORCE_BINDINGS is used, then for 7527/7524 programs, DCTPB
          will resolve labels for branches between programs.  Of course this
          requires that when binding your programs in DCConnect, you do it
          exactly as stated in all the KEY commands dictate.  (Without the
          ENFORCE_BINDINGS parameter, branches to other programs for 7527/7524
          must use a step number).  See DCTPB32.RME for more details.

2-27-98:  PB: KEY and ENDKEY commands are now allowed in imbedded scripts if
          the ENFORCE_BINDINGS parameter was specified on the TERMTYPE
          command.  The TERMTYPE command must still be in the highest level
          file; it can't be in an imbedded file.

2-27-98:  PB: The KEY command will now accept a number for the key name parameter -
          just like ONKEY, ONSUB, GOTO, GOSUB, and BRAUV commands.

3-5-98:   PB: Refixed the 9-20-97 fix regarding a bug generating APND command with
          new parameters in BPTCD32.EXE.  You'd end up with an APND command
          containing only the last three parameters.  This fix got lost while
          making other fixes.

3-9-98:   PB: BPTCD32.EXE no longer traps if no command line parameters are given.

----------------------------------------------------------------------------
End of changes in version B of fix package for DCTPB (June 1998).
----------------------------------------------------------------------------

4-7-99:   PB: The second parameter for the GOTO command is now optional if the
          first parameter is END_OF_PROGRAM.

4-18-99:  PB: Due to a typo, the program number TCH12 was flagged as invalid for
          the GOTO, GOSUB, ONKEY and ONSUB commands even though all other
          TCHxx regions were valid.  This was also a problem on the KEY
          command when bindings were being enforced.

4-19-99:  PB: Documentation (DCTPB32.HTM) enhanced with HTML skeleton so it can
          be viewed in browser with links to each section from the table of
          contents as well as other references.  This updated documentation
          is now included in the fix pack.

----------------------------------------------------------------------------
End of changes in version C of fix package for DCTPB (May 1999).
----------------------------------------------------------------------------

NOTE: FIX PACK D AND BEYOND CAN ONLY BE APPLIED IF YOU HAVE INSTALLED FROM
      THE 1.4.0 CD FOR THE DCCONNECT TRANSACTION BUILDING TOOL.


9-27-99:  PB: Fixed problem ignoring tabs between an ending double quote and
          a comma that is the delimiter before the next parameter.

5-11-00:  PB: Inline messages and messages from MESSAGE commands can now be
          used at the same time.  The message numbers in MESSAGE commands
          no longer need to be sequential either - although for maintenance
          purposes, it is probably a good idea to organize them that way.

5-12-00:  PB: Redid WARNING 117 about unreferenced labels so that the individual
          references are only written to dctpb.err and not to the screen -
          since most of the time these are harmless

5-17-00:  PB: The APNDSTR command now accepts 0 for the length, indicating that
          the exact length of the text should be used.  Always using 0 for the
          length is now recommended - so that counting errors are avoided.

10-19-00: PB: Corrected problem with line number referenced in warning/error
          messages.  In 5-11-00 change, a two pass approach for parsing the
          file was implemented.  However, the line number for the highest
          imbed level was not reset to 1 between the two passes.

          Also fixed problem where line number was always 1 more than it
          should be.

02-13-01: PB: Added a utility which, given the top level script name, generates
          a single listing file containing all imbedded files.  The listing
          includes the line numbers for all imbedded files as well as
          a letter indicating at what level each file is imbedded.  The
          utility as the following syntax:

            imbedscr filename.scr

          Where filename.scr is the name of the script file that you would
          specify when invoking dctpb32.exe.

          The output file name will have the same 'filename' portion as the
          input file name but will have the extension .LST.

          Having a single listing file is useful when you have lots of
          imbedded scripts and you need to search them or analyze them.

          Note: This same tool can be used with Transaction Connection scripts!

02-27-01: PB: The maximum number of keys allowed for an ONKEY or ONSUB command
          is now 50.

02-27-01: PB: Comments starting with double slash (//) are no longer automatically
          included in the .PGM file during compile.  If you want double-slash
          comments to be included, you must specify a second command line
          parameter, INCLUDE_COMMENTS, when running DCTPB32.EXE.

          You may want to use the INCLUDE_COMMENTS parameter if you want them
          to show up when the program is viewed using, for example, the
          DCConnect Toolkit.  However, comments that are included in the .PGM
          file result in a larger download to 7524/7527 terminals (2 extra
          bytes per comment).

----------------------------------------------------------------------------
End of changes in version D of fix package for DCTPB (March 2001).
----------------------------------------------------------------------------
.
.
.
----------------------------------------------------------------------------
Start of changes for version A of DCConnect/TC fix pack (August 1999)
----------------------------------------------------------------------------

7-01-99:  UI/SV: The Poll Cycle and Slow Poll Rate parameters on the
          Polling page of the Node notebook have been removed and these
          parameters can now be changed in the Line Settings notebook (before
          they were read-only in the Line Settings notebook).  So these
          parameters can now be different for each line.

          In addition, the granularity of the Slow Poll Rate was changed from
          1 minute to 1 second with graduated values up to 15300 seconds (255
          minutes).

7-09-99:  TC: Commas are now allowed within parameters that are delimited
          by double quotes.  For example, you can now specify:

            Format_UV (UV1, STRIP_ALL_CHARS, ",")

7-13-99:  UI: Changed the 0 value for the good and bad transaction beep
          durations to show as 0.00 instead of 0.0.  Prior to this change
          the GUI could actually trap when the Terminal Settings notebook
          was brought up if the value from the file was '0'.

7-13-99:  UI: (NT Only) Added in DLLs from a Visual Age's 3rd addendum to
          the fix pack we built with.  This takes care of part of the
          problem with linking and dropping transaction programs on the
          Terminal Settings notebook bindings page.  Without these DLLs
          the program would show up two or more positions above where the
          mouse was clicked.

          This is an old problem that was previously fixed by Visual Age and
          now has come back.  Unfortunately, these new DLLs don't fix the
          problem 100%.  The first click that is done after another window
          has focus will have the same problem.  All subsequent drops will
          not have the problem - until you click on another window and
          come back.  The problem is you generally will drop one copy of
          each program, so each time you link a new program and come back
          to the notebook to drop it you will have a problem.

          To work around that for now, before clicking to drop the program
          on the desired line, click once with the left mouse button in the
          grey area of the notebook and then click to drop the program on
          the desired line.  We are working with the Visual Age group to
          get a complete fix.

7-14-99:  SV: Changed the state that a terminal is put into if a download
          fails because the terminal did not respond.  In the past all
          failed downloads left the terminal in the STOPPED or LOAD FAILED
          state.  Now the terminal will be put into the BAD RESPONSE state
          right away and a slow poll will be kicked off to see if the terminal
          is even responding.  If the terminal does not respond to the slow
          poll, it will be put in the NO RESPONSE.  In either the BAD or NO
          RESPONSE states, the terminal will be slow polled (except in the
          case of RF where it is not necessary).  When the terminal begins
          to respond properly again, the download that had failed previously
          will automatically be started again.

          As part of this change, eliminated an old, small possibility of
          having the terminal left in a download state at the lower levels
          while the upper levels thought the terminal was no longer
          downloading.

7-20-99:  SV: Changed the Serial Terminal Driver so that it looks to see
          if is attached via modem.  If it detects that it is, it will not
          attempt to write to the port unless the modem has a connection.
          The driver assumes a modem is attached if it finds DSR on and it
          gets an OK response to an AT command.

          Prior to making this change, the driver's normal slow polls that
          were written to the port would abort any dial-up attempt that
          was being made to the modem at the same time.

          Note: this change has only been made in the Windows/NT version of
          the code so far.  It is not in the OS/2 code or the ARTIC code.

8-11-99:  TC: (NT only) CheckColor may return incorrect branch response. The
          CheckColor color compare test was failing to check if the screen
          position being tested had the reverse image attribute bit set.

8-12-99:  TC: (NT only) Fixed the slow middle list box update problem - which
          would occur after it filled up.  This problem was introduced when
          we went to latest Visual Age fix pack.  It was fixed by the latest
          Visual Age PTF to that fix pack.

8-16-99:  SV: Included latest version of the ARTIC-resident communications
          driver (RICCS.COM) for support of the latest Interface Boards where
          the number of RS-232 and RS-485 ports is configurable.

8-17-99:  UI: The 'Please wait' window now shows before the Communications
          System (DAE) is started.

8-21-99:  UI/SV: Changes made to support .DLLs for CFRs and for downloading
          CFRs as-is instead of fixing them up first.  This is in anticipation
          of a 32-bit version of the 752x Emulator for use on Windows NT/95/98
          and ultimately Windows/CE systems.  It will also facilitate the
          ability for the DOS-based emulator to save all files locally thus
          eliminating the need to have the terminal downloaded after a reboot.
          All of these are possible (probable) future enhancements to our
          752x Emulator product - but no guarantees should be assumed by this
          statement.

8-23-99:  IS: (NT only) The default NUIF_CFG file has been changed to have the
          'Verbosity level' set to 1 instead of 2.  At level 2, if terminal
          generated data contains a %B, %E or %G, NUI_SERV.EXE will either
          trap (%B) or report a 'R6002 - Floating point not loaded' error and
          then terminate itself and NUI_COMM.EXE.  At a 'Verbosity level' of
          0 or 1, this problem does not occur.

          This problem does not occur for this kind of data string if that
          string originates from the PC.

8-25-99:  IN: (OS/2 only) An update was made to the license checking
          program DCCLUM.EXE to take care of the 40+ second delay that occurs
          when running on a system in which TCP/IP is not installed.

8-30-99:  SV: Fixed problem in Norand RF terminal driver concerning regaining
          communications with a terminal after it had gone out of range for
          a long enough period of time to have DCConnect put the terminal in
          the not-responding state.  The problem resulted because the
          controller buffers commands that cannot be sent to terminals when
          they are out of range.  These commands are sent when the terminal
          comes back into range but the responses to these commands are
          misinterpreted as responses to other commands that DCConnect sends
          at the time that the terminal begins to respond again.  Symptoms of
          this problem include a sequence of the following messages in the
          message log for a particular terminal:

            DCR0111: Terminal xxx is not responding to commands; will keep
                     trying . . .
            DCR0261: Received unexpected data from terminal nnn, length
                     is 13: CLRUTHERE6B.
            DCR0112: Terminal xxx has wrong type, is starting up, or is in a
                     bad state.
            DCR0261: Received unexpected data from terminal nnn, length
                     is 17: CJ9(.
            DCR0141: Terminal xxx is now responding properly.

          This sequence caused the reestablishing process to take a minute or
          two instead of the normal 5 to 10 seconds.

          The code has been fixed to filter out the latent Are-you-there
          responses so that they are not misinterpreted as responses to
          other commands.

          However it is important to note that the occurrence of this problem
          indicates a possible coverage problem because it means there are
          periods of at least 1 or 2 minutes where terminals are not
          communicating with any access point.

          This problem did not occur if the terminal is simply powered off and
          on - whether or not the terminal was communicating at the time of
          power off and on.  This is because when the terminal is powered up,
          the controller deletes any messages that were buffered for that
          terminal.

----------------------------------------------------------------------------
End of fixes in version A of 1.4.0 DCConnect/TC fix package (August 1999).
----------------------------------------------------------------------------

9-08-99:  SV: (NT only) The serial port task was enhanced to issue a modem
          hangup command when a live modem connection has 10 consecutive
          commands that get no response.

9-20-99:  UI: (NT only) Found a workaround for the drop problem on the
          bindings page of the terminal notebook.  See the 7-13-99 problem
          description above for all the details.

10-5-99:  TL: Enhanced the LINETRAC.EXE utility so that it can write the
          trace data to a set of cycling logfiles.  Four new command line
          parameters are used to accomplish this.  In order for any logging
          to be done, the F= parameter must be used.  The new parameters are
          all case-insensitive:

            F=filename     where 'filename' is the base filename WITHOUT ANY
                           extension.  A path can be specified as part of
                           the file name - such as: f=c:\trace or f=..\trace
                           or f=c:trace

                           LINETRAC.EXE will use the base name and append to
                           it unique extensions in the range 000-999 for the
                           various log files it creates.

                           If this parameter is not specified, no logging to
                           file is done.

            C=capacity     where 'capacity' specifies the maximum number of
                           bytes each logfile can hold.  Valid values are in
                           the range 10000 through 10000000.  If this parameter
                           is not specified, the default capacity is 1000000.

            #=number       where 'number' specifies the maximum number of old
                           logfiles that will exist at one time.   When a new
                           file is created (because the previous one filled up
                           to the specified capacity), if more logfiles than
                           'number' already exist, the oldest one is deleted.

                           This 'number' does not include the file that is
                           currently being written to.  So in the case #=1
                           one old logfile will exist while a new one is being
                           filled up.  When that new one fills up, the old one
                           is deleted and the next one is created.

                           Valid values are 1 through 999.  If this parameter
                           is not specified, a value of 10 is used.

            NOT_TO_SCREEN  specify this parameter if the trace data should
                           not be written to the screen.  Note, if you specify
                           this parameter and do not specify an F=filename
                           parameter, trace data will not be written to screen
                           or file.

          An example command line, specifying trace files to go in the
          c:\temp directory with the name trace.nnn (where 'nnn' will be in
          the range '000' to '999') and specifying up to 5 saved logfiles
          would be:

            linetrac tcp f=c:\temp\trace #=5

          NOTE: In Windows/NT it may be necessary to enclose in double quotes
          any parameter that includes an equal sign.  For example:

            linetrac tcp "f=c:\temp\trace" "#=5"

          In this case, the default capacity of 1 million bytes per logfile
          would be in effect.  When LINETRAC starts up, the first file it
          writes to will be C:\TEMP\TRACE.001, when that fills up *.001 will
          remain and *.002 will be created and filled up.  This continues
          until *.001 through *.005 are all filled up and *.006 is being
          written to and is about to become filled.  When *.006 does fill up,
          *.001 is deleted and then *.007 is created and begins to fill up.
          When *.007 fills up, *.002 is deleted and *.008 is created.   File
          creation and deletion continues in this manner until LINETRAC is
          ended.  Should the file extension reach *.999, the next value will
          wrap to *.000 and continue with *.001, *.002, ...

          Whenever LINETRAC starts up, it looks for existing trace files and
          determines which one is latest.  Then, based on the '#=' parameter,
          any extra trace files are deleted.  New trace data will be written
          to a new empty file - as opposed to being written to the end of the
          latest file.  For example, if LINETRAC starts with #=5 and the
          following logfiles exist: *.025 *.026 *.027 *.028 *.029 and *.030,
          *.025 would be deleted and new trace data would start in *.031.  If
          other trace files existed in addition to these (which could happen
          if you used a larger #= parameter the previous time LINETRAC was
          run) the extra files would be deleted.

10-15-99: SV: Fixed problem download 7527 ETS that was introduced with fix
          pack A.  The change that was made to allow downloading of CFR DLLs
          (8/21/99) broke the fixup/downloading for 7527 ETS.  When the
          problem occurs, the download fails with the message:

            DCR0035E: Error reading from %s, errno = %s.

11-02-99: SV: Reading of keywords in DCX2.INI file and EXTRA.CFG file is now
          case-insensitive.

11-02-99: SV: Fixed problem in handling multiple data request applications.
          If two apps were started and the first one shut down, requests to the
          second app would get a -209 return code (DCX_APPL_NOT_REGISTERED).

11-15-99: TC: Fixed several year 2000 problems - all of which resulted in
          the year showing up as the 4 digit value minus 1900.  This is fine
          through 1999, but for 2000 you get 100, for 2001 you get 101, etc.
          The areas affected are:

          - The data part CURRENT_YEAR
          - The data part CURRENT_DATE
          - For the command Write_Xact, if no transaction date was explicitly
            specified as the last parameter.  In this case, all attempts to
            write a transaction would fail because the date put into the
            transaction by TC would be invalid.  The first attempt would
            result in a TC error which stated the Write_Xact command failed
            with a -506 error from DCConnect (-506 is DCX_INVALID_DATETIME).
          - Dates that were shown on the screen and the trace data.

11-15-99: TC: Fixed two date related problems with the Xact_Age command - which
          were not specific to the year 2000:

          - Year wrap problem: for any year, if the transaction was dated from
            the prior year, (for example 12/31/98 23:59:00) and it arrived in
            TC the next year (for example 1/1/99 00:00:05) the calculation for
            the age of the transaction would yield a negative value - which
            translated to the transaction always being considered 'young'
            enough even if in fact it was too old.
          - In any leap year, after February 29, Xact_age would indicate all
            transactions were too old because it was one day ahead of where
            it should have been.

11-18-99: SV: The 7-1-99 change to move the poll cycle and slow poll rate
          to each line - rather than having one setting from the node was
          not done entirely correctly.  Due to a typo in the code, the poll
          cycle was taking the value of the slow poll rate.

11-19-99: TC: Added handling of SQL_CODE value of -30081 so that it is handled
          in the same way as -30080.  In the past, if this SQL_CODE was
          received TC would shut itself down.

----------------------------------------------------------------------------
End of fixes in version B of 1.4.0 DCConnect/TC fix package (November 1999).
----------------------------------------------------------------------------

12-09-99: SV: In the past if a mailbox's .LOG file was deleted and the
          pointers into it indicated there were transactions to read, the
          next time the server was started, a new .LOG file was created but
          the pointers were not reset.  This would result in empty or garbage
          transactions.   The server now resets the pointers in any case
          where it has to create a mailbox.

12-09-99: TC: The Xact_Age feature added in April 1999 that allowed the
          AGE_SECONDS to be set to -1 did not always work.  -1 is supposed
          to force the branch to always be taken.  This has been fixed.

12-22-99: SV: Fixed problem which could result in a terminal being locked
          from processing any commands; the server would have to be shut
          down and restarted to fix the situation.

          The failing scenario was extremely rare.  One layer of DCConnect
          would have to be in the middle of a command and get an invalid
          response to a status command immediately after another layer of
          DCConnect had just determined that the terminal was not responding.

01-24-00: SV: Added support for stream sockets to the TCP/IP terminal driver.
          This enables support of the Intermec Antares line of terminals which
          do not support the pure UDP protocol that is used for all of the
          other TCP/IP terminals that we support.  The same port number (7500
          by default) is used for all terminals attaching via UDP and all
          attaching via TCP stream sockets.  Due to the way the Antares
          terminals are designed, they must use the same port number as
          DCConnect.

          The server code was written so that you do not have to specify in
          the configuration which terminals are attaching via UDP and which
          are attaching via TCP stream sockets.  By default all are considered
          to be UDP.  But if a terminal initiates contact requesting a stream
          socket, the server will begin to communicate with that terminal
          using a newly created stream socket.

01-31-00: SV: Fix for APAR PQ35298: problems after starting the Server when
          it was already running.  Prior to the fix, starting it a second time
          would prevent the User Interface from starting and it would prevent a
          shutdown from being done - although other APIs worked fine.

01-31-00: TC: Transactions with a transaction ID greater than 121 are now
          ignored if no StartMatch script is set up to handle them.  In the
          past, although the StartKey script command restricted the IDs to
          a certain set whose corresponding IDs were in the range 1-121 (F1,
          F2, F3, ..., ADDL7, ADDL8, TOD), if a transaction came in with an
          ID greater than 121 and that transaction was not handled by a
          StartMatch script, then TC would go off the ends of internal arrays,
          jumping clusters to try to process the transaction.

02-18-00: SV: Changed the download process to encode the download size of
          files going to terminals of the 7524 type if the size exceeds
          99999 bytes.  5 bytes are used to specify the size.  If the size
          is > 99999, the first byte is 'A' to 'Z' indicating a multiple of
          65536, where 'A' is a multiple of 1.  The remaining 4 bytes is
          a hex value from 0x0000 to 0xFFFF specifying the remainder value to
          be added to the value derived from the first byte - resulting in
          the true file size.

          Although this was done for the 7524 file type, only terminals
          running 752x Emulator for DOS built after 2-18-2000 can take
          advantage of this.  True 7524 terminals (Norand 11xx, 17xx, 59xx)
          do not support files bigger than approximately 65500 in length.

03-03-00: TL: Fix for APAR PQ36218: User Interface not refreshing because
          the Node name started with a number rather than a letter.  The
          DCConnect Configuration tool will now only allow an alphabetical
          character as the first letter in the Server Node name.  Any other
          characters in the name can be a mix of alphabetical or numerical
          characters. This change had to be made because of the Node name
          requirements of the underlying DAE product.

03-27-00: TL: Fixed problem handling long file names in backup/restore utility
          and elsewhere.  Problem was fixed in DCXUTILS.DLL.

04-04-00: TC: Added more control characters to the set available for the
          commands Set / Append_Kbd_UV_Data.  Names for all characters from
          0x01 to 0x1F are now available.  The documentation has been
          updated as well - with the following table:

            CTRL_CODE     Description              Hex Value
            ---------     -----------              ---------
            SOH           Start of heading         01h
            STX           Start of text            02h
            ETX           End of text              03h
            EOT           End of transmission      04h
            ENQ           Enquiry                  05h
            ACK           Acknowledge              06h
            BEL           Bell                     07h
            BS            Backspace                08h
            HT            Horizontal tab           09h
            LF            Line feed                0Ah
            VT            Vertical tab             0Bh
            FF            Form Feed (page feed)    0Ch
            CR            Carriage return          0Dh
            SO            Shift out                0Eh
            SI            Shift in (condensed)     0Fh
            DLE           Data link escape         10h
            DC1           Device control 1         11h
            DC2           Device control 2         12h
            DC3           Device control 3         13h
            DC4           Device control 4         14h
            NAK           Negative Acknowledgement 15h
            SYN           Synchronize              16h
            ETB           End transmitted block    17h
            CAN           Cancel                   18h
            EM            End of medium            19h
            SUB           Substitute               1Ah
            ESC           Escape                   1Bh
            FS            File separator           1Ch
            GS            Group separator          1Dh
            RS            Record separator         1Eh
            US            Unit separator           1Fh
            CRLF          CR and LF together       0D0Ah

            COMMA         The character (,)        2Ch
            DOUBLE_QUOTE  The character (")        22h

4-04-00:  TL: Fixed a problem that may cause the DCConnect User Interface to
          trap at start up. The problem can only happen on systems that have
          DOS/Windows Terminal Services configured. If a DOS/Windows terminal
          name is defined that is a subset of another terminal name, such as
          "Terminal" and "Terminal1", the TCP/IP hosts file can become
          corrupted and cause the DCConnect User Interface trap.

4-06-00:  TC: Changed automatic recovery upon -911 Timeout/Rollback error.  TC
          used to re-execute the script commands starting with the last commit/
          rollback step -- not a good idea in practice when you have
          complicated scripts with subrs, logic, etc. .  It now does a variable
          delay (0.5 S + 0.5 S * (CONTROLLER ID LETTER - 48)) and then
          retries the SQL again.  This variable back-off is an attempt to avoid
          having yet another contention problem for record(s).  To provide the
          best response time during deadlocks, use controller ID '1' - '9'  for
          DCT-interactive TC sessions.

4-13-00:  TC: Changed the format of the transaction record that is shown when
          tracing is turned on; where we used to include the terminal address
          character, we now include the terminal name.

----------------------------------------------------------------------------
End of fixes in version C of 1.4.0 DCConnect/TC fix package (April 2000).
----------------------------------------------------------------------------

5-8-00:   UI: Corrected some typos on the Polling tab of the Line Settings
          notebook.

5-8-00:   UI: On the Program Binding page of the various Terminal Settings
          notebooks, many of the transaction ID names were changed from
          "nnn: Transaction ID nnn" to the appropriate event name with an
          asterisk in front.  This makes it easier when binding programs that
          were created in Transaction Program Builder for a particular key ID.

6-27-00:  SV: Fixed problem with time being updated one hour early (1:00AM) on
          the morning of the start of USA daylight savings time. This update
          was taking place no matter what time zone it is running under. In the
          case of a location outside of the USA that starts daylight saving
          time on a different date than the USA, the update takes place twice,
          once during their normal daylight saving time date and again on the
          USA daylight savings date. The fix requires that the TZ environment
          variable must be correctly set to the local time zone value.

          This problem resulted from a bug in the Visual Age compiler with
          which the Server is built.

7-18-00:  TL: The TESTTERM.EXE utility would report erroneous data for the Get
          User Variable option and others if the actual terminal response
          returned no data or data that was shorter than a previous response.
          The buffer containing the data to be shown was not being cleared
          before sending the command to the terminal.

8-25-00:  SV: The code for handling DwsSetUserVariable and DwsGetUserVariable
          calls from DOS/Windows terminals was not handling the case where the
          data being set/retrieved was the maximum length (118 bytes).  The
          trailing null was being read/written past the end of the buffer.

          The clients have the same problem.  If you are experiencing this
          problem, contact IBM for updated clients - or don't use data longer
          than 117 bytes.

8-29-00:  SV: Fixed problem detecting duplicate transactions from DOS/Windows
          terminals.  In addition, when a duplicate is detected, the return
          code to DwsSendTransaction will now be DWS_DUPLICATE_TRANS (which has
          a value of 32).

8-30-00:  SV: The download process now looks for APNDSTR commands that have a
          length of 0 specified for the data.  If found, a message is logged
          showing the offending command and the download is aborted.  Before
          this change, an access violation could occur if a 0-length was found
          in the APNDSTR command and the data contained a semicolon or colon.

9-07-00:  TL: The backup/restore utility now turns off the read-only file
          attribute during a restore operation. In cases where the restore
          is being done from a backup CD all files being restored will have
          the read-only attribute set. This was causing DCConnect to fail to
          successfully start up.

10-17-00: TC: The Transaction Connection trace program now does a trace file
          close and re-open every two seconds. This makes available the trace
          information in the current trace file. Before this change, the file
          length of the current trace file would be zero and the data would
          not be available for viewing until either the trace file was full
          or TC was terminated.

10-20-00: SV: Fixed problem in 2-18-00 change to support download of files
          greater than 99999 bytes in size.

10-30-00: TC: Fixed problem that could generate empty transactions if
          attempts to read transactions/validation requests/data requests
          returned certain errors.  TC could even trap when attempting to
          process these empty transactions.  The cause for the trap was
          fixed along with the elimination of the generation of empty
          transactions.

10-30-00: TC: Logging of message "Starting ProcessTh" in error log now done a
          little bit later so that it ends up in the proper log file - based
          on the controller ID.  Before this change, this message always
          ended up in the error log for controller ID Z.

          Also removed code that prevented the logging of some messages
          that should be logged when errors with DCConnect APIs occur.

10-30-00: TC: Removed need to add Silent command to script.  Default is now
          always silent and can't be changed.  Startup was too annoying
          otherwise.

11-01-00: TC: The Transaction Connection trace program will now allow multiple
          Transaction Connection copies using the same CNTLR switch/script
          command.  The first copy's trace file will be named TC2TRCx0 (where
          the x would be the CNTLR value). If a second TC2 copy is started
          using the same CNTLR its trace file name would be TC2TR2x0 and a
          third would be TC2TR3x0...

11-02-00: TL: New tool, FILTER.EXE, available to filter a line trace file
          to view only those messages that apply to a specific terminal or
          set of terminals.  At a mimimum, you must provide two parameters:

            Name of the line trace file to be filtered
            A terminal address to use when filtering

          For example, to get all messages from LINETRAC.OUT that were sent
          to/from the terminal with address 10.73.3.112, you would enter
          the following:

            filter linetrac.out 10.73.3.112

          The output of the utility goes to the screen.  If you want it to
          go to a file instead, use the redirection symbol > and a file name.
          For example:

            filter linetrac.out 10.73.3.112 > linetrac.112

          To include the messages for more than one terminal, list the
          additional terminal addresses on the command line.  For example,
          to filter messages for the terminals with addresses 10.73.3.112
          and 10.73.3.115:

            filter linetrac.out 10.73.3.112 10.73.3.115

11-29-00: UI: Validation objects are now dealt with without sensitivity to
          case.  In the past, if DCVALDTN.DAT stored a validation object with
          one case and the actual file in \DCCONN\VAL had a different case, two
          different validation objects would be created.

12-01-00: SV: (NT only) Created a new DLL VBDCX.DLL which allows Microsoft
          Visual Basic applications to call DCConnect APIs.  The API names
          within this DLL have the same names as those in DCX.DLL except that
          they all start with 'vb'.

          Here's an example of how you might call the DCConnect APIs from
          Visual Basic, using VBDCX.DLL:

            Declare Function DcxQueryJobList Lib "vbdcx.dll" _
                             Alias "vbDcxQueryJobList" (listLen As Integer, _
                             ByVal joblist As String, _
                             listCnt As Integer) As Integer

            Global Const DCX_NO_ERROR = 0

            ...


            Dim dcxRc As Integer
            Dim listLen As Integer
            Dim listCnt As Integer
            Dim nameList As String

            listLen = 0 ' Tells API just to give us length and count for list
            listCnt = 0

            dcxRc = DcxQueryJobList(listLen, nameList, listCnt)
            If (dcxRc = DCX_NO_ERROR) Then
              ' Now make sure 'nameList' has enough space allocated. Then
              ' call the API again to have 'nameList' filled in.
              nameList = Space(listLen)
              dcxRc = DcxQueryJobList(listLen, nameList, listCnt)
            End If

          The returned list contains 'listCnt' job names, each terminated
          by a Chr(0) character.  An additional Chr(0) character follows
          the terminating character of the last name in the list.

12-06-00: TC: A couple of changes made to better handle bad return codes
          from DCConnect APIs.  One, in particular, involved the
          Cycle_Mailbox() command.  If the reopening of the mailbox got a
          bad return code, an invalid mailbox handle was later used to try
          and read new transactions - which resulted in further errors.

12-18-00: TC: The data parts SESSION_STATUS, XACT_AGE and LAST_ERROR were
          mistakenly considered invalid when running in Data Request mode.

12-20-00: SV: (OS/2 only) Removed a debug message (DCCONN return code is nn)
          from the 16-bit mapping API DLLs: DCCGEN.DLL, DCCNEW.DLL, DCCTERM.DLL
          and DCCTRANS.DLL.

01-31-01: TC: Fixed a potential cause for TC to trap in the case that a data
          request was received but no StartMatch script matched that request.
          Similar check is now also made for validation requests that do not
          match any StartMatch or StartVal script. TC now logs an error message
          if it gets a transaction/validation request/data request for which it
          cannot find a script to handle the processing of that transaction/
          request.

02-01-01: UI: Fixed problem using the feature where you can attach validation
          files to a CFR - on the CFR configuration screen.  Prior to the fix,
          attached validation files would automatically show up as files that
          should be downloaded in the Terminal Settings notebook and the link
          between validation files and CFRs was not saved to disk in any way.
          So the association was lost when the user interface shut down.

          With the fix in place, when a validation file is attached to a CFR,
          there is no change as to whether the validation file should be
          downloaded to each terminal or not.

02-02-01: TC: Several minor fixes:
          - If no script replies to a data request, TC will send back the
            response "No script handled last request.".
          - Corrected problem where error message showed up duplicated in
            error log if return code was negative and less than -99.
          - Changed message that shows if a data request script tries to use
            an application name that is already in use.
          - Fixed potential for trap - or just disappearance of program - if
            invalid message number is referenced internally.

02-08-01: TC: Added support to handle BIGINT and REAL number data types. The
          REAL number types are formatted as a FLOAT type.

02-08-01: TC: Changes made to handling of StartTime scripts so that a time
          change (e.g. due to daylight savings time) is detected within 5
          seconds and the next scheduled StartTime script(s) are recalculated
          accordingly.

          Also changed compiling of StartTime command to be more tolerant of
          imbedded blanks and values less than 10 that do not have leading
          zeros.

02-13-01: TC: Increased the number of subroutines allowed from 125 to 250.

02-13-01: TC: Added a utility which, given the top level script name, generates
          a single listing file containing all imbedded files.  The listing
          includes the line numbers for all imbedded files as well as
          a letter indicating at what level each file is imbedded.  The
          utility as the following syntax:

            imbedscr filename.scr

          Where filename.scr is the name of the script file that you would
          specify when invoking tc2.exe.

          The output file name will have the same 'filename' portion as the
          input file name but will have the extension .LST.

          Having a single listing file is useful when you have lots of
          imbedded scripts and you need to search them or analyze them.

          Note: This same tool can be used with DCTPB scripts!

----------------------------------------------------------------------------
End of fixes in version D of 1.4.0 DCConnect/TC fix package (March 2001).
----------------------------------------------------------------------------

03-09-01: SV: Change made to terminal drivers to be more tolerant of a busy
          system during startup.  Without this change, terminal drivers were
          more likely to timeout on startup if the system had a high amount
          of activity.

03-19-01: SV: The server now keeps track of every type of download request
          on disk so that they are not lost if the server is shutdown and
          restarted.  When a download request is made for a given file, a
          file is created in the \DCCONN\DATA directory with the name of the
          terminal and the extension .STT.   This file contains information
          about any download pending or in progress, if any.

03-22-01: TC: Compiling of a script now handles the case where a file ends
          with a line containing all blanks and/or tabs with no carriage
          return or line feed at the end.  Before this change, if the file
          that had this problem was the last one imbedded and the imbed
          statement in the top level TC script had no other valid TC
          commands following it, TC would give the following compile error:

            XIS013:Command file did not contain a program.

04-14-01: SV: In VBDCX.DLL, the DLL needed by Visual Basic applications in
          order to call DCConnect APIs, added an alternative to
          vbDcxSetNTermUserVariables called vbDcxSetNTermUserVariables2.  The
          difference is that the final parameter is of the type PLISTZ (a
          series of concatenated strings) instead of PSZ [] (an array of
          pointers to strings).

          We could not figure out how to set up Visual Basic to successfully
          pass an array of strings to C.  So this alternative method was
          created.  Here is a snippet of Visual Basic code that shows how
          to call vbDcxSetNTermUserVariables2:

            Declare Function DcxSetNTermUserVariables Lib "vbdcx.dll" _
              Alias "vbDcxSetNTermUserVariables2" (ByVal termname As String, _
              ByVal acquire As Long, ByVal numvars As Long, varArray As Any, _
              ByVal varText As String) As Integer

            ...

            Dim dcxRc As Integer
            Dim uvNums(5) As Integer
            Dim uvText As String

            uvNums(0) = 13
            uvNums(1) = 23
            uvNums(2) = 64
            uvNums(3) = 48
            uvNums(4) = 18

            uvText =          "UV 13 has been set: XIII"   + Chr(0)
            uvText = uvText + "UV 23 has been set: XXIII"  + Chr(0)
            uvText = uvText + "UV 64 has been set: LXIV"   + Chr(0)
            uvText = uvText + "UV 48 has been set: XLVIII" + Chr(0)
            uvText = uvText + "UV 18 has been set: XVIII"  + Chr(0) + Chr(0)

            dcxRc = DcxSetNTermUserVariables("TermA", 0, 5, uvNums(0), uvText)

05-03-01: TL: Added an optional second parameter, RUNNABLE, to the IMBEDSCR.EXE
          utility that is used for creating a single listing file from a set
          of files that are imbedded.  If RUNNABLE (case-insensitive) is
          specified as the second parameter, the output file can actually be
          run with Transaction Connection.

05-03-01: PB: Added an optional second parameter, RUNNABLE, to the IMBEDSCR.EXE
          utility that is used for creating a single listing file from a set
          of files that are imbedded.  If RUNNABLE (case-insensitive) is
          specified as the second parameter, the output file can actually be
          compiled.

05-07-01: TC: Added support for ODBC connections to databases.  See the updated
          documentation for all the details.

06-21-01: TL: The FILTER.EXE utility could generate garbage output when the
          input data contained % followed by certain characters.  (Internally
          the call to printf() was thinking there was formatting to be done.
          printf() changed to puts() to resolve problem).

06-28-01: TC: The TC windows now properly start minimized if /MIN is specified
          on the command line.  Before this fix, use of the /MIN command line
          parameter only caused the About dialog to be minimized.

06-29-01: TC: Fixed cosmetic problem introduced with 2-2-01 change for
          formatting logged messsages; added space between message number and
          message text.

07-18-01: SV: The DOS/Windows Terminal Services terminal driver no longer
          needs to find an entry for 'dcconn' in the services file in order to
          figure out the port number to use.  Instead the value is taken from
          the DAE_PORT keyword under the [NODE] configuration section of
          DCX2.INI.  This value is set up in DCX2.INI by the DCConnect
          Configuration Utility.

08-01-01: TC: Fixed problem with most XML commands when using multiple user
          variables.  If there was more than one user variable in addition to
          the XML handle, the value used for each user variable was the value
          of the last user variable.  For instance:

             XML_AddField (UV1, UV2, UV3)

          would create a field named UV3 with a value of UV3 instead of a field
          named UV2 with a value of UV3.  The behavior is now correct.

08-09-01: TC: Fixed problem getting TERM_NAME or ORIGINATOR data part when in
          data request mode.  Before the fix, you would get XIS123 error if the
          specifed start and length were 0,0.

08-29-01: PB: Fixed problem where BPTCD32.EXE would be stuck in an infinite loop
          if a path was specified for the .PGM file name on the command line.

08-30-01: SV: Changed API code in the way it uses the underlying DAE product
          in order to solve problem where API calls would intermittently
          return a -1 return code when a Visual Basic program was makin the
          API calls.

09-01-01: TC: New feature allows passing of parameters to subroutines using
          new alternatives to CallSubroutine and StartSubroutine: Call and Sub.
          See the documentation for all the details.

09-06-01: PB: Changes to the way comments are handled when uncompiling (BPTCD32).
          Now a blank line is inserted before only the first of a series of
          comments; before it was inserted before every comment line.  Also,
          if the comment text already starts with //, we no longer add the
          // prefix characters.

09-15-01: TC: If and While commands can now be written more naturally, without
          the need for all the extra commas and zeros.  See the updated
          documentation for all the details.

09-28-01: UI: Terminal notebook pages reorganized to change the Miscellaneous
          tab to a Time tab.  The fast clocking page is now the last one on
          the Time tab and the Sensor Badge Length page is now the first on
          the Devices tab.

10-01-01: UI/SV: Added the ability to specify which time zone terminals are
          in relative to the Server.  A new Time Zone page (3 on the Time
          tab) in all the different Terminal Settings notebooks, including
          DWTS, lets you specify how many hours before or after the Server the
          terminal is.  Whenever the Server has to set the time for a
          terminal, it adjusts the outgoing set time command by the specified
          number of hours.  However, the Server does not adjust the timestamp
          of incoming transactions; transactions received will reflect the
          time zone of the terminal from which they originated.

10-01-01: TC: New feature allows the declaration of local variables in Start...
          scripts and subroutines using the new script command Declare.  See
          the documentation for all the details.

10-03-01: UI: Changes made to have the User Interface handle white space before
          and after the equal sign for all parameters in DCX2.INI and
          EXTRA.CFG.

10-03-01: UI: In most cases, when an item is linked to the mouse pointer and
          is then successfully dropped on to a target, it no longer remains
          linked to the mouse pointer.  Therefore you no longer have to click
          on the Arrow button to clear the mouse pointer.

10-04-01: UI: The User Interface will now warn about changes not being saved
          in the following two new situations: when the DCConnect Server is
          started and whenever a terminal download is started.

10-04-01: UI: In the Terminal Settings notebook on the first page, the Job
          Name field is now a static text field instead of a read-only entry
          field.  As an entry field it appeared as if it could be changed when
          in fact it was always read-only.

10-04-01: UI: Added the Time Formats page to the 7524/Client notebook since
          the DCConnect Client now supports showing the idle date and/or time.

10-08-01: TC: Cleaned up reporting of several possible compile error situations,
          including unresolved labels, so that they are properly shown on the
          screen and so that Close_When_Complete() is properly ignored.
          Close_When_Complete() should only come into play after a successful
          compile.

10-10-01: SM: Created a Microsoft Visual Basic sample application that
          demonstrates how to call DCConnect C APIs from VB.  This application
          shows the real-time status of the DCConnect Server using the
          'blue-man' icons and it lets you list all terminals or all mailboxes
          and their current status.  This application was built using
          Microsoft Visual Basic 6.0 with Service Pack 3.

          The files that are part of this sample are found in \DCCONN\SAMPLES
          and they are: DCCONN.BAS, DCCSAMP.FRM, DCCSAMP.FRX, DCCSAMP.VBP,
          DCCSAMP.VBW, RUNNING.BMP, STARTING.BMP, STOPPED.BMP and STOPPING.BMP.

10-12-01: UI: Support added for up to 8 COMx lines.  Maximum used to be 4.

10-15-01: UI: References to 7524 Terminals are now '7524/Client'.  References
          to DOS terminals are now DWTS.

10-15-01: TC: New feature makes it easier to build up a user variable composed
          of other user variables and constants.  The new scripts commands
          Begin_UV and End_UV are used to accomplish this.  See the
          documentation for all the details.

11-05-01: SV: The download of the validation mapping file to the terminal
          would sometimes include both upper and lower case versions of the
          same name.  This could cause validation to fail in the terminal.
          This has been fixed.

11-26-01: UI: On the bindings page in terminal notebooks, in the routing group
          notebook and on pop-ups for transaction program commands such as AKA
          and ONKEY, the transaction IDs that are shown now indicate that A=F1,
          B=F2, C=F3, ...  They also indicate, where appropriate, that F1-F12
          on non-752x terminals are equal to PF1-PF12 on 752x terminals.

12-03-01: TC: The function UV_Math can now handle 19 digit values.  The
          previous limit was 15 digits.

12-07-01: TC: Corrected problem with Set_UV_File_Data() command.  It was
          acting like Append_UV_File_Data - not clearing the UV first.

12-11-01: TC: Reworked the showing of user variables in a trace to limit
          those shown to only be ones that apply to the current command.

          Added new Dump_UVs() command so that the entire set of non-empty
          user variables, global and local, can be dumped do the trace
          file at any point in the script.  This command has no parameters.

12-11-01: TC: Better checking is now done for the UV/constant parameter
          for UV_Math(), XML_EnterElement(), and XML_SendBOD.  Before this
          change, if a UV name was specified but it was not typed correctly,
          the error would not be flagged.

          Also changed XML_EnterElement to allow double quotes around the
          5th parameter - occurrence.

12-14-01: PB: BPTCD32 was not inserting labels for 7524 programs with GOSUB and
          ONSUB commands - only GOTO and ONKEY commands.  In addition, if
          there was a branch to the step after the last in the program, a
          label was not being added after the last step.  These have both
          been fixed.

12-18-01: TC/PB: Fix to IMBEDSCR.EXE tool - it was not properly handling
          the case when IMBED statements contained a comment at the end
          of the line and that command also included a right parenthesis.

01-11-02: TC/PB: Another fix to IMBEDSCR.EXE tool - it was not properly handling
          lines that contained percent signs.

01-11-02: PB: Now when the message "Command too long; missing semi-colon" is
          given the compiler will also print out the entire contents of what
          it thinks is a single line.  This makes it easier to spot the
          error - which is usually a missing ending double quote near the
          beginning of that printed out line.

          Also, now if an APNDSTR command is found where the length parameter
          does not match the length of the string itself (and the length
          parameter is not 0) an error is generated.

01-28-02: TC: Added XML_Parse command to allow parsing of an XML message from any
          source (database, file, etc.).  The returned handle can be used in any
          other XML command to manipulate the message.

01-31-02: TC: Fixed problem where the 121st subroutine encountered in the script
          would not have any of its commands performed.  This would occur only
          when the first subroutine was defined before any StartMatch,
          StartKey, StartVal, StartTime and StartFunctionGroup/StartCluster
          command.

02-01-02: TC: Added new DEADLOCK_TIMEOUT command used for changing the default
          number of minutes TC will wait for an apparent deadlock to timeout
          before rollback the operations and shutting down TC.  The default is
          1 minute.  Valid choices are 1 to 60 minutes.  For example:

            Deadlock_Timeout (2)  // 2 minutes

02-06-02: SV: We now filter out the logging of the message:

             DCR0276E: Error reading from TCP/IP socket; TCP/IP error = 10054

          only in the case that the error is 10054 (which means 'connection
          reset').

02-26-02: UI: Found more instances where validation file names, CFR names and
          graphics file names were being handled case sensitively; e.g. if a
          job file used the name "CFRERP24.EXE" and when read from the
          \DCCONN\CFR folder the executable name was read in as "cfrerp24.exe",
          two CFR objects were created, one with the upper case name and one
          with the lower case name.  This could cause odd behavior such as
          the GUI not acting on a request to download just a CFR to a terminal.

02-27-02: UI: Found that there were several notebooks which would not
          keep track when changes were made (OK button pressed) and thus
          if the GUI were closed without saving those changes, no warning was
          given.  The problem existed for Adapter Settings, Graphics Settings,
          Node Settings, and DWTS Terminal Settings notebooks.

02-28-02: UI: References to "TCP/IP DOS" changed to "TCP/IP DWTS"

03-14-02: SV: The serial port driver will now close and reopen the serial port
          if there is nothing received on the port during a period of time
          that is the slow poll rate times 3.  This was done to better handle
          connections via modems and the Lantronix network-serial device.

03-29-02: PB: DCTPB32.EXE now looks for duplicate use of the same 'binding
          event' in Key() commands and flags an error if any duplicates are
          found. (e.g. PF8 being used in more than one Key() command).   Prior
          to this change, these errors were not caught, resulting in an invalid
          .PGM file that when attempted to be downloaded by DCConnect connect
          would generate strange errors such as: DCR212 "... invalid attempt to
          access element nnn of message array ..."

04-04-02: TC: Fixed problem with local variables getting out of synch when a
          subroutine was called due to an On_Error_Goto execution or any error
          label branch that was actually a subroutine name.

          Also reduced the number of startup messages that list the DLL
          function addresses.  There is now only one printed per DLL.

05-17-02: SV/TC: Another attempt to fix the time zone problem that should have
          been fixed by the 6-27-00 fix described above.  This time the use of
          the failing compiler function was replaced by an operating system-
          specific call to get the date and time.   Setting of the TZ
          environment variable is not required either.

          As of this date, there is still a problem on the Time tab of the Node
          Settings notebook if you try to change the time during the Daylight
          Savings Time changeover interval.  The compiler functions being
          used need to be replaced.  As a work around, change the time using
          operating system instead of the DCConnect User Interface.

05-23-02: PB: Added the ability to specify environment variables in the
          MakePGM() and Imbed() commands.  For example:

            MakePGM(%dcconn%\job\time_att.pgm)

          Or of you had an environment variable ONEWORLD_SRC defined to be
          g:\oneworld\v2-0-0 and your .cod files were contained in the
          .\programs directory underneath that, you could use the following:

            Imbed(%oneworld_src%\programs\time_att.cod)

06-19-02: TL: Time zone problem was not fixed for the output of LINETRAC.EXE.
          With new scheme, setting of time must be done twice in a row on NT
          in order to have time update successfully.

06-20-02: SV: Enhancement to the 3-14-02 change for cycling the serial port.
          Cycling was never being done after startup if no terminal was
          responding at the time.  A delay of 1 second was added between
          the close and reopen during the cycling process.  The cycle period
          was also changed from 3 times the slow poll rate to 5 times.

-------------------------------------------------------------------------------
End of fixes in version E of 1.4.0 DCConnect/TC/DCTPB fix package (June 2002).
-------------------------------------------------------------------------------

09-16-02: TC: Problem with Clear_UV() used in a subroutine when the UV being
          cleared is a global UV that was passed to the subroutine.  Memory
          corruption can result which can manifest itself in many
          unpredictable ways, including TC aborting with an access violation.

09-19-02: TC: In Run_Without_Connect mode, commands that failed which result
          in the action RECONNECT_DB or RESET_RECONNECT_DB would incorrectly
          retry the command that just failed.

09-19-02: TC: It is no longer necessary to create a dummy mailbox or dummy
          validation script when a TC script is only using calls to
          DCConnect such as Submit_Validation or Write_Xact.  This used to
          be necessary in order for TC to load the correct DCX.DLL.

09-20-02: TC: Added the UPPER_CASE option to the Format_UV command to tell
          TC to convert to upper case, all lower case characters in a UV.
          For example:

            Format_UV(UV1, UPPER_CASE)

09-20-02: TC: Whitespace characters, such as tabs, found at the end of
          parameters are ignored.  Previously, only trailing blanks were
          ignored.

09-20-02: TC: Created aliases Set_UV_Data_Part / Append_UV_Data_Part /
          Send_Host_Data_Part for Set_UV_Xact_Data / Append_UV_Xact_Data /
          Send_Host_Xact_Data since the latter handle more than just 
          transaction data parts.

09-27-02: SV: Fixed problem with DcxSetNTermUserVariables when the length
          of all UVs approached the internal message maximum of a little
          more than 1000 bytes.

10-01-02: TC: Added Query_Mailbox command.  Can take 1 to 5 parameters
          specifying the UVs in which to store the following parameters
          (in this order): Number to Read, Number to Release, Active,
          Capacity, LogFile Name.  The 'Active' value set up in the
          specified UV will be "0" for inactive or "1" for active.

            Query_Mailbox("Sample_DCC", uvNumToRead)
            Query_Mailbox("Sample_DCC", uvNumToRead, uvNumToRel)
            Query_Mailbox("Sample_DCC", uvNumToRead, uvNumToRel, uvActive)
            Query_Mailbox("Sample_DCC", uvNumToRead, uvNumToRel, uvActive, uvCap)
            Query_Mailbox("Sample_DCC", uvNumToRead, uvNumToRel, uvActive, uvCap, uvLogFileName)

          The first parameter can also be a UV containing the mailbox name.

10-03-02: TC: Added the following Format_UV options:

            Format_UV(UV, TAKE_LEADING_CHARS,  length*)
            Format_UV(UV, DROP_LEADING_CHARS,  length*)
            Format_UV(UV, TAKE_TRAILING_CHARS, length*)
            Format_UV(UV, DROP_TRAILING_CHARS, length*)

            Format_UV(UV, PAD_LEADING,  padChar, length*)
            Format_UV(UV, PAD_TRAILING, padChar, length*)

            Format_UV(UV, TAKE_MID_CHARS, start*, length*)
            Format_UV(UV, DROP_MID_CHARS, start*, length*)

          See the documentation for all the details.

10-04-02: TC: In traces, relevant empty user variables will now be shown for
          commands that don't show all user variables.

          Also, the display of UVs in a trace for the Send_Named_Term_UV_Data
          and Send_Term_UV_Data commands is now limited to the actual UVs
          that are used by the command.

10-04-02: TC: Added the Parse_UV command:

             Parse_UV (uvInputUV,
                       DISCARD | uvFirstPart,
                       "delimiter" | control Constant | uvDelimiter,
                       DISCARD | uvLastPart)

10-07-02: TC: No longer does TC terminate if an attempt to set a user variable
          results in an error.  Before there were 4 error cases that caused TC
          terminating.

10-09-02: SV: Fixed problem creating message log greater than 32767 records.

10-15-02: TC: No longer does TC give a compiler error if // is found in the
          middle of a command such as:

            Set_UV_Kbd_Data(UV1, "//") // This is really the comment

10-15-02: TC: Fixed problem using CURRENT for the terminal name in the
          Write_Xact command when in REMOTE_VALIDATION mode.  Use of CURRENT
          is now flagged as a compile error if in data request mode.  The
          trace of a Write_Xact name now shows [ignored] for the function
          group name because it is not really used by the DCConnect Server.
          If a user variable and/or the keyword CURRENT are used for the
          terminal name, the trace will now show what the final terminal
          name resolves to using the format:

             [ UVName: ] [ CURRENT: ] Termname

          The documentation has been updated to reflect that a user variable
          can be used for the terminal name and/or function group name (the
          capability has been there since December 1997!)

10-16-02: TC: Changed the way Declare statements and the local variable
          stack are handled so that TC can handle such (not recommended)
          behavior as branching into the middle of another script or
          subroutine.   Traps and unintended UV modification could occur
          before this change.  TC now processes all Declare statements
          for a given script whenever that script is entered, whether at
          the beginning or the middle; the Declare statements are no
          longer executed during the processing of the commands in the
          script.

          TC will terminate with an error if an attempt is made to access
          a parameter for a subroutine in the case that the subroutine was
          not called but instead execution branched somewhere into the
          middle of that subroutine from another subroutine or script.

10-23-02: TC: Commands may now be split across multiple lines and 
          trailing comments may be at the end of any line that is a
          partial command.   Commands must be split on a white space
          character and the opening parenthesis for a command must
          be on the first line for the command.  Any string enclosed in
          double quotes must be entirely on a single line.

          For example:

            Set_UV_Kbd_Data (uvThisIsALongVariableName,      // Long UV Name
                             "antidisestablishmentarianism") // Long word

10-24-02: TC: Added support for the use of AND, OR and NOT in IF and 
          WHILE statements.  The symbols && or & can be used instead of
          AND.  The symbols || or | can be used instead of OR.  The
          symbol ! can be used instead of NOT.

          All operations (e.g. uv1 <= uv2) must be enclosed in 
          parentheses.  For example:

            If (NOT ((UV1 < UV2) AND (UV3 > UV4)) OR (UV5 == UV6))
             {
              ...
             }

10-24-02: TC: Improved tracing in order to eliminate some cases where
          trace information would stop being generated.

10-28-02: TC: Checking for a mismatch in the number of parameters used in
          corresponding Call/Sub commands is now performed during compilation
          of the scripts.

10-30-02: TC: When DBTYPE=ODBC, fetches of NULL columns that were of the
          type VARCHAR, CHAR or LONGVARCHAR did not properly result in
          the setting of the proper NULL indicator.  Instead, the value of
          the previous column was returned.  This has been corrected.

10-30-02: UI: Generation of the command line parameter string in the
          Application Setting notebook was not always correct when 
          the type was TC (e.g. when mode was Data Request).

12-12-02: TC: Fixed some cases where TC would loop endlessly if a database
          error occurred while shutting down.

01-08-03: TC: The displaying of large user variables would cause internal
          memory corruption if the length of the data in the user 
          variable exceeded 1000 bytes, more or less - depending on
          the length of the user variable name and current indentation 
          level.  Symptoms of the failure included access violations and 
          floating point exceptions.  

01-22-03: TC: Set/Append_UV_File_Data was incorrectly setting the return code
          to 234 for an empty file.  The return code is now properly set to 2.

01-24-03: TC: (Windows NT/2000 only) Added the ability to configure the size 
          and number of trace files that TC generates when tracing is turned on.  
          Using the optional TCTRACE.INI file you can specify NUM_TRACE_FILES 
          and/or TRACE_FILE_SIZE.  For example:

             NUM_TRACE_FILES = 20
             TRACE_FILE_SIZE = 5
         
          NUM_TRACE_FILES can be in the range 1 to 999.  This actually specifies 
          number of trace files that are preserved; the currently growing file
          is not included in that count.  If this keyword is not included, the
          default number of files is as it was in the past (9). Although in the
          past, the currently growing file was not treated separately.
          
          TRACE_FILE_SIZE specifies a multiple of Megabytes (0x100000 = 1048576 bytes).
          It can be in the range from 1 to 99 MB.  If this keyword is not included, 
          the default size is what it was in the past (0xfa0000 = 1024000 bytes).

          The values specified in TCTRACE.INI apply to all sessions that are tracing.
          However, individual TC sessions can override those values using the
          new TRACE_SIZE command in the script.  It has the format:

            TRACE_SIZE ( num_files [, file_size ])

          These values have the same limits as in TCTRACE.INI.  Here's an example
          of how to specify 100 trace files of size 10 MB:

            TRACE_SIZE (100, 10)

          If you just want to specify 100 files using whatever size TCTRACE.INI
          specifies (or the default if TCTRACE.INI doesn't specify the size or doesn't
          exist), enter the following command in your script:

            TRACE_SIZE (100)

          Note: You must also specify the TRACE command in your script or turn it
                on via the TC GUI; simply specifying the TRACE_SIZE command does 
                not actually turn on tracing.
         
          These changes necessitated a change in the naming convention of the
          trace files.  All trace files start with:
      
            TC2TRCx
        
          where 'x' is the controller ID of the TC session to which it correlates.
          The extension will be a number from 000 through 999.  The first one 
          generated will be *.001 but after reaching .999 the extension will wrap
          back to .000.
        
          If more than one TC session is using the same controller ID, an
          additional character is added after the controller ID so that each
          session uses a unique file name.  In the past a digit from '0' to '9' 
          was used.  Now a lower case letter from 'a' to 'z' will be used 
          (to allow for more sessions and so as not to be confused with the
          number in the extension).  However, because there is no good way
          to determine which TC session is assigned which letter, it is
          recommended that you give each TC session a unique controller ID.
          Then you can be sure which trace files go with each TC session.

01-24-03: TC: TCTRACE now has more error checking and will log any errors to 
          TCTRACE.LOG.  This file is never deleted by TCTRACE - but it 
          should not be written to very often either.

01-26-03: TC: Changes made to tracing code to eliminate some (if not all) 
          causes of 0 length trace files - which also could coincide with
          tracing stopping altogether.

02-03-03: TC: Added "Shutdown When Idle" so that you could ensure that TC
          shuts down after any currently executing script completes.  
          (Shutdown Normal stops immediately, even in the middle of a script).

02-10-03: TC: A message is now logged if an attempt to write the pipe of the
          asynch set user variable queue takes longer than 1 second.  If this 
          does occur, it probably indicates that the pipe is temporarily full.

02-13-03: TC: Fixed problem with first Name_UV command if it specified
          NEXT_UV as the first parameter.  This was introduced when support 
          of local user variables was added.  Before the fix, TC would give
          a compile error indicating the UV was already named.

02-25-03: TC: Fixed problem with tracing the Check_????? commands if they 
          branched to the error label and that label was not in the same script
          as the command.  The wrong command/garbage would show up in the trace.
          This could lead to strange behavior - even the abending of TC - 
          because garbage data was trying to be interpreted for the trace output.

          This problem was introduced with the 10-16-02 fix that attempted to
          better handle the branching into the middle of a script/subroutine.

02-25-03: TC: Setting of controller ID and/or title is immediately reflected
          in the session title when the Cntlr or Title command is encountered
          on the command line (Cntlr only) or in the script.

02-26-03: TC: Added process ID to title so that TC sessions can easily be 
          identified in the Windows Task List.

03-04-03: TC: Windows NT/2000 only: Added a new debug command WATCH_MEMORY.  
          When included in the script, TC watches for changes in that TC 
          session's use of memory.  The resolution of change is 4K - the same 
          that Windows Task Manager shows.  A warning message is logged 
          whenever a change is detected - whether it is an increase or a 
          decrease.  Note: an increase is not necessarily a problem.  For
          example, any time a message is written to the TC listboxes, a small
          amount of memory is consumed - until the maximum list size is 
          reached.

          This was added due to the occurrence of a memory leak that showed up
          when TC was used with DB2 8.1.

03-04-03: TC: Fixed problem detecting SELECT statements when other non-
          alphabetic characters (such as a left parenthesis) preceded the 
          word SELECT in the SQL text.

04-02-03: TC: Fixed Send_Term_UV_Data / Send_Named_Term_UV_Data when 
          asynchronously sending from 11 to 15 UVs at once.  As of fix pack E
          the compile allowed it and synchronous sending worked but 
          the asynch thread still only sent up to 10; the rest were ignored
          without any message.  This has been fixed.

04-02-03: TC: Fixed parsing of IF / WHILE statements when an AND or OR
          operation was immediately followed by a NOT operator that was 
          not in parenthesis and at least 2 left parenthesis immediately
          followed the NOT operator.

04-09-03: TC: Multiple threads are now deployed to handle the issuing of
          ASYNCH requests to set terminal user variables.  If the attempt
          to set UVs for a terminal takes more than 2 seconds, a new
          thread is started to handle a new request.  TC will continue to
          start a new thread if it takes more than 2 seconds for any new
          request to find a free thread to handle the request.  TC will
          automatically shut down threads that have not handled any
          requests in the last 5 minutes.  TC also makes sure that any
          set UV requests for the same terminal are sent out in the order
          received.
          
04-17-03: TC: The Write_Xact command now accepts a numeric value from 1-255
          or a user variable for the Event_ID parameter. If a user variable
          is used, when the Write_Xact command is executed, the specified
          user variable must contain either a value from 1-255 or one of
          valid Event ID constants (e.g. F1, BADGE, Shift_PF1, RGN1, ...)

04-18-03: TC: The LAST_ERROR data part is now set for a number of different 
          commands, not just Host Screen Interface functions 
          (e.g. Check_Color, Send_Host_UV_Data).  The additional
          commands include XML Functions (e.g. XML_CreateBOD, 
          XML_LeaveElement), Database commands - stores the SQLSTATE value 
          (e.g. Begin/End_SQL, Perform_Insert), commands that interface to 
          DCConnect (e.g. Submit_Validation, Reply_To_Data_Request), 
          plus the following miscellaneous commands: Append_UV_File_Data, 
          Log_Data, Open_File_Data, and System.  For all successful executions 
          of these commands, this value is set to the appropriate good return 
          code value for that command (usually 0).

04-18-03: TC: Process ID now written to trace

04-18-03: TC: When label references are unresolved TC now gives the file 
          and line number of the offending label reference.

04-21-03: TC: Anything found after the closing parenthesis of a command is
          now ignored.  This was originally true until the 10-23-02 change
          that allowed commands to be split across lines.  Now it is true
          again.

04-24-03: TC: New date/time data parts added for support of 4-digit year:

            TIMESTAMP4         = YYYYMMDDHHmmSS
            DATE4              = YYYYMMDD
            YEAR4              = YYYY
            CURRENT_TIMESTAMP4 = MM/DD/YYYY HH:mm:SS or MM.DD.YYYY HH:mm:SS
            CURRENT_DATE4      = MM/DD/YYYY
            CURRENT_YEAR4      = YYYY

          The following data part is also new:

            CURRENT_TIMESTAMP  = MM/DD/YY HH:mm:SS or MM.DD.YY HH:mm:SS

05-01-03: TC: Added new command Set_Xact_Time_Of_Origin in order to change the
          time that TC uses for handling the Xact_Age command as well as
          the data parts: TIMESTAMP, TIMESTAMP4, DATE, DATE4, YEAR, YEAR4,
          MONTH, DAY, HOUR, MINUTE, SECOND, and XACT_AGE.

          Please see the documentation for a complete description of how
          to use this command.

05-01-03: TC: Added the command XML_Send to go along with XML_SendBOD for use
          when sending XML messages that do not conform to the BOD structure.

05-01-03: TC: Added the command XML_Create to go along with XML_CreateBOD for use
          when creating XML messages that do not conform to the BOD structure.

05-15-03: TC: Increased maximum number of local variables allowed from 250 to
          1024.  Fixed logging of message when this maximum is reached.

          Also compiling of the Send_To_Host was not properly checking for
          0-length string or string too long.

05-20-03: TC: Corrected 1 byte buffer overrun problem in TCDB2.DLL.  However, 
          we know of no specific incident where this actually caused a problem.

05-30-03: TC: Problem showing the command Get_Term_UV_Data in the trace.  Could
          have resulted in an access violation.

06-05-03: TC: Added to the UV_Math command to new operators: integer divide (\) and
          modulus (%).  Modulus gives the remainder after an integer divide operation.

06-06-03: TC: Added support for using environment variables in the commands Imbed,
          Open_File_Data, Log_Xact, Log_Data, Append_UV_Kbd_Data, Set_UV_Kbd_data
          and Submit_Validation.  TC assumes it has found an environment variable 
          when it finds the opening and closing % characters.  It assumes that 
          between those % characters is the environment variable name.  It then 
          asks the operating system for the definition of that variable and replaces 
          everything starting with and including the opening % up to and including 
          the ending %.

          Multiple environment variables may be used in the same string.

          For Imbed, Open_File_Data, Log_Xact, Log_Data and Submit_Validation, if a 
          literal string is provided for the file name and it contains an environment 
          variable TC does the environment variable resolution at compile time.  For 
          the commands that take user variables for the file name (Log_Data and 
          Open_File_Data), TC will look for environment variables to be resolved at 
          execution time.

          For the Set/Append_UV_Kbd_Data commands, TC will only resolve the 
          environment variable if the second parameter starts and ends with the
          % character.  This is done at compile time.  There could actually be 
          multiple environment variables in the middle.  If you don't want TC to 
          resolve the environment variables at compile time in Set/Append_UV_Kbd_Data
          commands, then enclose the string in double quotes.  Only if the target
          user variable is ultimately used as the file name parameter in the 
          Log_Data or Open_File_Data command will the environment variable(s) in 
          the user variable data be resolved.

06-08-03: TC: Fixed problem where TC was using a pointer that had been deallocated
          when retrieving messages to be logged.  This could have resulted in a number
          of problems - including an access violation.

06-09-03: TC: More checking is now done at compile time for improper use of 
          open and close braces.  Opening braces may only be used immediately
          after an If, Else or Do command (including commands of the type: 
          If Check_MW, If Check_Highlight, If Check_Color, ...).  Closing braces
          are not valid immediately after an If, Else or Do command.

06-10-03: TC: Better error messages now given when application name is not defined
          when it is needed, when commands are found outside of the script, and 
          when end of file is encountered before the end of a script/subroutine.

06-10-03: TC: 'Shutdown when Idle' option now works when TC is waiting for 
          DCConnect to start.  (Retrying every 5 seconds).

06-12-03: TC: Optional string parameters are now properly processed when commas
          are found within double quotes.  Use of tabs in other situations is  
          now handled properly.

07-07-03: PB: The APNDSTR command now accepts a series of ASCII values in hex
          representation, each preceded by a backslash.  This is an alternative
          to a string enclosed in double quotes.  For example, to append the 
          CR (0x0d) and LF (0x0a) characters to UV1, use the command:

            APNDSTR(UV1, 0, \0d\0a)
 
          There can be whitespace before each backslash.  For example:

            APNDSTR(UV1, 0, \0d \0a)

          If double quotes surround the series of ASCII values, DCTPB will
          not convert the characters in the string.

07-08-03: TC: Fixed problem where use of COUNT_TXNFIELDS would result in an
          error and termination when the transaction/validation/request data
          had no data.

07-08-03: TC: The commands Call, Append/Set_UV_Kbd_Data, If, While, Send_To_Host
          and Send_Host_Kbd_Data all now accept numeric constants without needing
          to be enclosed in double quotes for the parameter(s) that can be a 
          literal string.          

07-14-03: TC: Fixed buffer overrun problem when trying to log a message about 
          a Send_Term_UV_Data / Send_Named_Term_UV_Data command that tried
          to send too much data to the terminal.

08-13-03: TC: Fixed problem with wildcard matching in DBTYPE.INI.  Before the
          fix, "ORACLE" was not considered a match for "ORACLE*".

09-09-03: TC: Fixed problem with Check_Screen command introduced with 7-8-03
          change; literal strings for the first parameter were being parsed
          incorrectly - including the other parameters as part of the string.

          Also moved some large variables off the stack.

10-06-03: PB: The reverse compile (BPTCD32.EXE) was not properly generating
          APND commands when the source was a PF or TOUCH string.  The second
          parameter was being generated as SRC_TRANSACTION instead of SRC_OTHER.

          Also the compile of the APND command was showing the parameter after
          the one with the problem when an invalid parameter was found.

10-08-03: TC: Fixed problem handling certain if-else constructs with brackets.
          The following construct would produce a compile error:

            IF (comparison 1) 		   
             {
              IF (comparison 2)
                command_a
              ELSE
                IF (comparison 3)                     
                  command b
             } 

          Prior to the fix a workaround would be to insert a line with an 
          opening brace after the ELSE and insert line with a matching 
          closing brace after 'command b'.

10-08-03: TC: Changed the 04-09-03 enhancement for having multiple threads
          handle Asynch Set User Variable requests so that a new thread is
          started if 50ms elapses without a thread freeing up.  The previous
          delay of 2 seconds is too long for high transaction volumes.  

10-31-03: TC: Fixed buffer overrun problem that would occur if more than 50
          parameters were passed to a subroutine and tracing was active.

10-31-03: TC: Fixed buffer overrun problem that would occur if tracing and 
          the contents of a variable referenced by a parameter exceeded 1000 
          bytes or so.

11-04-03: SV: 255 is now considered a valid octet in a TCP/IP address for 
          terminals.  

11-04-03: TC: Made changes to prevent TCTRACE.EXE from running more than once;
          one instance should handle tracing for all TC sessions.

12-02-03: TC: Fixed the reporting of the error value (via the LAST_ERROR
          data part) when Log_Data fails to open a file and the 4th parameter 
          (return code variable) is used.  Before the fix, even though the open 
          failed, an attempt was made to write and close the file and the 
          error value was always 43 indicating a bad file handle.  The error
          value from the failed open was not reported.

12-09-03: TC: Parsing of parameters for the Call command was not properly flagging
          misspelled user variables as invalid; it was treating them as text string
          parameters.  This problem was introduced with the 07-08-03 change.

12-10-03: SV: Can now handle multiple simultaneous requests from the same DWTS
          terminal to wait for a user variable to become non-empty.  (DWTS 
          terminal support was upgraded as well to accomplish this).

01-02-04: TC: Fixed problem with Xact_Age during first two months of a leap year.
             
01-07-04: TC: Fixed problem where TC would trap if the amount of data used in
          the Write_Xact command exceeded what the transaction structure could 
          accommodate: 108.

-------------------------------------------------------------------------------
End of fixes in version E** of 1.4.0 for Transaction Connection (January 2004).
Note: Only TC fixes were part of the fix package that was built for this release.
-------------------------------------------------------------------------------

02-03-04: SV: Added support for dynamically configured DWTS terminals - ones
          that are not defined in the DCX2.INI configuration.    (DWTS terminal
          support was upgraded as well to accomplish this).
         
02-11-04: SV: Fixed cause of DCXVH.EXE trapping on start up when long file names
          are in the \DCCONN\VAL directory.

03-12-04: TC: Fixed problem where TC no longer automatically replied to data and
          validation requests that were not replied to by the script.  This would
	  result in TC scripts aborting after 11 consecutive -201 errors.

03-26-04: SV: New API DcxForwardDataRequest allows an application which has just
          received a data request via a call to DcxReadDataRequest to pass that
          request to another application that is reading data requests.  The 
          target application must then be the one to reply to that request - or
          forward to another application.

03-26-04: TC: Added new command SQL_Buffer_Size to allow scripts to override the
          default size of 4000 bytes that is allocated for building SQL statements.
          See the latest documentation for all the details.
         
03-26-04: TC: Added new command Forward_Data_Request to allow data requests to be
          forwarded to other applications, rather than having to reply to them.
          Use of this command requires that the DCConnect Server be from 3/26/2004
          or later.  See the latest documentation for all the details.

03-26-04: TC: Added new command Write_To_Event_Log so that TC scripts can write
          messages to the Windows Event Log.   See the latest documentation for
          all the details.

04-23-04: TC: Fix for possible hang when the attempt to log a message failed
          due to an error accessing the TCTRACE process.

05-13-04: SV/UI: Added support for hostnames instead of dotted IP addresses in
          the terminal configuration.

          As part of this change, the linetrac output will now show the terminal
          name after the address, at the end of the first line of each message.

05-15-04: SV: If the DCConnect Server is unable to identify the ARTIC card type,
          it will now look for one of the following files in \DCCONN\BIN in 
          order to identify how the ARTIC adapter should be treated: artic.ini, 
          multiport.ini, multiport_2.ini, model_2.ini or portmaster.ini.  The file
          can contain any data, it merely has to exist.

06-01-04: SV/TC: The maximum terminal user variable size that can now be handled 
          is 975 bytes provided the target/source terminal is running at least
          version 2.10 of the DCConnect Client/DWTS.

06-01-04: SV/PB: Support for the new transaction programming enhancements in the
          version 2.10 release of the DCConnect Client.  Please see the DCConnect
          Client fix pack readme (clientfx.htm) for details about all of those 
          enhancements.

-----------------------------------------------------------------------------------
End of fixes in version F of 1.4.0 DCConnect/TC/DCTPB fix package (September 2004).
-----------------------------------------------------------------------------------

09-22-04: PB: Fixed corruption problem that results for first subroutine assigned
          to a transaction program key, if that key has a program assigned as 
          well and that first subroutine has more than one local variable declared.

	  Could result in a Parameter out of Range error on the terminal or
          manifest itself in other ways.

09-29-04: PB: Fixed problem doing variable name substitution (to variable number)
          for CCFR commands.

09-29-04: PB: Fixed problem naming user variable 99.

10-12-04: SV/TC/UI - Added support for transaction with up to 750 bytes of data.
          Other changes that go along with this include:
          - Transaction logfile now contains variable length records instead of 
            fixed length records.
          - Mailbox logfile capacity is now specified as number of bytes and
            can be in the range from 100,000 - 25,000,000 bytes.  
          - The Server will automatically convert logfiles in the original 
            fixed length format to the new variable length format and will adjust
            to the minimum size as necessary.  However, as has always been the
            case, logfiles are not resized if they contain transactions at startup
            of the Server.
          - On the Mailbox Configuration screen the 'Capacity' column is now 
            called 'Capacity Used' and it shows the usage in the format "xx% of yyyyy"
            where 'xx' is a percentage from 0-100 and 'yyyyy' is the defined capacity
            in bytes.   The other columns (Mailbox Name, Status, Read and Release)
            still show the same information.
          - For all devices running version 2.10c of the DCConnect Client or later,
            the logfile size for that device can now be set from the DCConnect User
            Interface in the Terminal Settings notebook (just like was done years
            ago for the IBM 7525, 7526 and 7527 terminals).   Go to the second page
            of the General Tab and look for the Buffer Size box.  You can choose
            "Don't Change" or you can choose "Size (Kbytes)" and then select a value
            from 1-64 indicating the number of Kbytes (1024 byte chunks) that should
            be allocated on the terminal's 'hard drive'.
          - There will always be at least 1 unused byte in the logfile.
          - If you are writing your own C / Basic / Rexx / ... server-side applications
            there are now new structures and APIs defined in DCX.H that are available
            in order to take advantage of the longer transaction features:
            - TRF2 is the new transaction structure.  It not only allows up to 750 bytes
              of data in the .txdata field but it now uses a long integer for the .datalen
              field and it has six new fields for the adjusted date/time:
              - .yearAdj
              - .monthAdj
              - .dayAdj
              - .hourAdj
              - .minuteAdj
              - .secondAdj
              These size fields are for storing the adjusted date/time for transactions 
              that come from terminals in time zones that are different from the server's
              time zone (as defined by each terminal's configuration).  The original 
              date/time fields (.year, .month, .day, .hour, .minute, and .second) contain
              the data/time for the originating terminal's time zone.  The server takes
              that date/time and adjusts it to the Server time zone and stores those 
              values in the adjusted date/time fields.

              Both of the year fields (.year and .yearAdj) now store the 4-digit year
              instead of just the 2-digit year.
            - DcxReadTransactionEx is the new counterpart API to DcxReadTransaction and
              it must be used in order to read in the longer transaction structure
            - DcxWriteTransactionEx is the new counterpart API to DcxWriteTransaction and 
              it must be used in order to write transactions with longer data or with a
              4-digit year or with the new adjusted date/time fields.  

              DcxWriteTransactionEx now has an extra parameter that allows you to specify 
              a list of mailboxes rather than having to specifying a valid terminal name.  
              If this parameter is NULL, a valid terminal name must still be provided.
               
            - A new structure, QUERY_EXPORT2, is the counterpart to the original 
              QUERY_EXPORT structure.  It adds one more field: .percentFull.
            - DcxQueryMailboxEx is the new counterpart to DcxQueryMailbox and it must
              be used in order to get back the new QUERY_EXPORT2 structure with the new 
              .percentFull field
            - The .size field of both QUERY_EXPORT and QUERY_EXPORT2 specifies a 
              number of bytes rather than a number of records.

          - In Transaction Connection, the Write_Xact command can take advantage of 
            the new DcxWriteTransactionEx API, allowing you to specify one or more 
            mailboxes for the destination of the transaction record rather than having 
            to specify a valid terminal name.  In this case you can pass what you want 
            for the function group name and terminal name.  Note that TC had always
            ignored the function group parameter in the past because the DCConnect 
            Server would override it based on the specified terminal.

          - TC gives you access to the new adjusted date time fields from the new 
            transaction record structure (TRF2) with addition of the following data 
            parts:

              ADJDATE4  ADJDATE  ADJTIMESTAMP4  ADJTIMESTAMP  ADJYEAR4   ADJYEAR
              ADJMONTH  ADJDAY   ADJTIME        ADJHOUR       ADJMINUTE  ADJSECOND
 
            The regular transaction data parts for date/time (all of the above without
            the leading 'ADJ') will get their values from the original (non-adjusted)
            date/time fields in the transaction record unless the keyword 
            USE_ADJUSTED_XACT_TIME is in effect..  When that keyword is in effect, 
            the regular transaction data parts for date/time will get their values 
            from the adjusted date/time fields in the transaction record.  In all cases 
            you will be able to get the non-adjusted date/time fields by using the 
            following new data parts:

              TERMDATE4 TERMDATE TERMTIMESTAMP4 TERMTIMESTAMP TERMYEAR4  TERMYEAR
              TERMMONTH TERMDAY  TERMTIME       TERMHOUR      TERMMINUTE TERMSECOND

          - The XACT_AGE data part and the Xact_Age command are also affected by the 
            USE_ADJUSTED_XACT_TIME command; when it is in effect the transaction age 
            is calculated using the server adjusted date and time.
          - In TC the Query_Mailbox command now accepts a 6th parameter which lets 
            you receive the percentage full of the mailbox.

          - The newer TC will work with older versions of the Server that do not have 
            the newer APIs needed for longer transactions. Of course in this case, 
            your TC scripts won't be able to take advantage of any of the newer features.  
            (TC tries to load the newer APIs from the DCConnect Server .DLL but if not 
             found, no error is given - unless the scripts try to use a feature that 
             requires the newer APIs).  

          - Older versions of TC will work fine with the newer DCConnect Server as long 
            as no transactions exceed the previous maximum length.
          - Older versions of the DCConnect Client will work properly with the newer 
            DCConnect Server; in this case the Client will ignore a request by the 
            Server to change the transaction logfile size during a download
          - Older versions of the DCConnect Server will work properly with the newer 
            DCConnect Client as long as the Client does not attempt to send transactions 
            that are longer than the previous maximum

10-20-04: PB/SV: Added support for IF, ELSE, { and } block commands.  See the
          documentation for all the details.

10-25-04: PB: DCTPB now always adds a RETURN(uvRC) to the end of every subroutine;
          before this was done only when the last command was not RETURN.  Adding
          the RETURN all the time takes care of the case that the second-to-last
          command caused the final RETURN to be skipped (e.g. CCFR, TEST, VRFY, ...)

11-12-04: TC: Fix for problem where unallocated memory was being accessed when
          the pool to store label references exceeded 65,500 bytes.  The symptom
          is a failure during compilation that results in a message similar to the 
          following being written to the trace file:

            XIS027:The script for internal script ID 0 does not exist

12-01-04: TC: All abnormal shutdowns (made from User Interface) are now logged 
          to c:\abnormal.dat.

12-03-04: SV: Terminals whose polling is disabled on startup are no longer sent
          a message at startup of the Server to check whether the device is there.
          When one server is used as a fail over for another, if messages are sent
          from the backup server on its startup, devices receiving those messages
          switch their allegiance to that backup server temporarily (until the 
          primary server sends messages (e.g. "Are you there") to those devices).

03-18-05: TC: Increased maximum number of subroutines and StartMatch scripts
          allowed.  You can now have over 6000 StartMatch and subroutine scripts
          combined.

03-30-05: TC:Added an entry to RC_DB2.INI for native code -437, SQL01602 which
          tells TC to treat this as "no error".

04-15-05: TC: Fixed problem in trace output where messages logged by the 
          set-terminal-UV thread would use/affect the elapsed time shown for
          commands being executed in the current script.

04-21-05: TC: Fixed problem where a Cycle_Mailbox command issued from a StartTime
          or StartInterval script would not deal with a transaction that had
          already been read from the mailbox and was waiting to be processed.  In
          the past, TC would process that transaction and then go back and reread
          the proper next transaction from the recycled mailbox.  Eventually that
          one transaction would be read again - and would therefore be processed
          twice.

          Now the Cycle_Mailbox command will flag the pending transaction so that
          it is ignored the first time; it will be processed in the proper order       
          from the recycled mailbox.

04-22-05: TC: Fixed cause of "XIS056:Error writing transaction log file" error
          that was being given when TC attempted to log a transaction.

05-13-05: TC: Messages about threads starting and stopping are no longer shown
          by default.  If they need to be shown, add the new command
         
            SHOW_THREAD_MESSAGES

          to your script.

05-13-05: TC: Message XIS123, about invalid start/length, now gives details
          about the specified start, specified length, actual length and the
          data.

05-16-05: PB: Added the optional SHOW_STEPS command line option to DCTPB32.EXE.
          If present, DCTPB will show the program number and assigned step number
          for every command as it compiles your transaction program(s).  This 
          can be useful when trying to cross reference your DCTPB source code
          with DCConnect Client generated messages or error transactions which
          reference a step number.

05-31-05: TC: Corrected indentation in trace output whenever a branch to an error
          label is actually a subroutine call.  Before the indentation was not
          increased at the start of the call even though it was decreased when
          the subroutine ended.

06-02-05: TC: Corrected trace output for the key ID value of the Write_Xact 
          command when the ID is greater than 121.
 
06-02-05: TC: The Submit_Validation command now supports an optional third
          parameter 'DONT_LOAD' which specifies that the file be created but
          should not yet be loaded to any terminal.   

06-02-05: TC: New Capture_Screen command can be used to write to a large 
          user variable, the entire contents of the current emulator screen.
          The parameters are the target user variable and an optional error 
          label.

06-02-05: TC: New Load_Term command can be used to tell the DCConnect Server
          to download all or some of the files to a data collection terminal.

06-04-05: TC: Call_Subroutine can now be used instead of CallSubroutine

06-16-05: TC: Fixed 'invalid start/offset' message that would result when 
          trying to append from the RIC or LINE data parts and the start
          position was not 0.

06-30-05: SV: Fixed problem with DcxQueryDateTime API. Return data started
          at month and went 2 bytes past the seconds.

07-26-05: TC: Fix for Cycle_Mailbox problem introduced with 4-21-05 change.

07-31-05: SV: Replaced use of DAE/CS2 for internal messaging infrastructure
          with implementation using Windows named pipes.

08-05-05: TC: Added support for new data part: CURRENT_MAILBOX

          TC: The Write_Xact command now supports the use of any data part
          for the optional timestamp and/or optional mailbox list.

          TC: The Delay command now supports the keyword "key" in place of
          a numeric value.  If 'key' is used, a "Press OK to continue" popup
          is shown.           

08-15-05: SV: Fixed problem with ARTIC terminal drivers starting up.  This 
          problem was introduced when hostname support was added for the
          TCP/IP terminal driver (5/13/04).

08-19-05: SV: Added the ability to change the default number of retries that
          the server does for each command sent to a terminal.  The default is
          3 but that can be changed by creating a file called \dcconn\data\dcxpo.ini
          and including in it a line similar to the following:

            CMD_RETRY = 5

          This feature was added only for lines that might have wireless devices
          attached - which are the TCP/IP line and a serial line for which RF
          Communications has been enabled.

          By adjusting this new CMD_RETRY value and the Poll Timeout value for
          the line (the latter is set in the DCConnect GUI in the Line Settings
          on the Polling tab) the server can be tuned to better handle 
          intermittent communications problems.

10-25-05: SV: Fixed problems with transaction year for DWTS terminals and for the
          original transaction APIs 

10-28-05: TL: IMBEDSCR.EXE now handles environment variable references in the
          imbed statements and it now defaults to generating 'runnable' output.
          If listing output is preferred, the keyword 'listing' can be specified
          as the second parameter.

-----------------------------------------------------------------------------------
End of fixes in DCConnect/TC/DCTPB version 2.2.0 fix package (October 2005).
-----------------------------------------------------------------------------------

01-12-06: SV: Fix for remote validation problem for requests that were handled by
          TC or other application using the remote validation APIs.  Attempts to 
          handle remote validation requests could result in messages similar to 
          the following and the application would be left hanging in the API call:

            DCR0009E: VAL_READ had error writing to the message path: xxxx,   
                      system error = 6.                                                       
            DCR0031E: VAL_READ had error sending response to waiting process.
            DCR0032E: Response path for previous error is yyyy.

          and on shutdown of the server, the following messages might also appear:

            DCR0031E: VAL_REPLY_ORIGINATOR had error sending response to 
                      waiting process.                                                             
            DCR0032E: Response path for previous error is IBMDCPIPE/TD_W40.                                                            


01-24-06: SV: Workaround for problem where, on certain systems, messages sent on
          the TCP/IP network were reported as having 12 fewer bytes sent than 
          actually were.   No terminals would be able to connect properly 
          with the DCConnect Server and a message similar to the following would 
          be written to the console for each failed attempt to send a message to
          a terminal:

            Only wrote part of the data (1 of 13) for terminal Emulator_7501

          There would also be a lot of "DCR0261E: Received unexpected data..."
          messages for terminals that were actually communicating.

01-27-06: TC: Fixed problem where the XML_Send command would not properly branch
          to the error label when an error occurred with the command.  Instead the
          following message would be logged and the TC session would terminate:

            XIS027:The script for internal script ID 0 does not exist

01-27-06: TC: Added support to the XML_Send command so that "raw" messages can be
          sent, not just those that are XML formatted.   To accomplish this, the 
          keyword RAW should be added as a new parameter in the first parameter
          position, shifting all other parameters back one position.   When using
          this feature, the user variable for the second parameter should contain
          the actual data to be sent - rather than a handle to an XML construct and
          after the command completes, the user variable specified for the third 
          parameter will contain any data received in response to the outgoing 
          message, rather than a handle to an XML construct.

          When the RAW feature is used, TC directly calls the function specified
          by the XML_Sender command - which is typically SendXMLMessage in 
          Adptutil.dll.   That SendXMLMessage function uses the rest of the
          capability in the AdptUtil.dll to facilitate the ability to send the
          message via MQ Series or the TCPIPMgr module. The SendXMLMessage 
          function has been enhanced to support the ability to send the 'raw' 
          messages.   TC actually adds an 8 byte header to the beginning of the 
          data to be sent before calling the send function.  That header has the 
          format:

             RAWnnnnn

          where 'nnnnn' is a 5 digit sequence number that TC increments for every
          message that it sends.   If a confirmation queue is configured (via
          an XML_Configure command or an .INI file, a confirmation message 
          containing the 5 byte sequence number is sent to the confirmation queue
          when a reply is received for the outgoing message.

          The 8 byte header is not part of the data that is transmitted by
          the SendXMLMessage function when it goes to send the outgoing message
          to its destination (via MQ Series or the TCPIPMgr).

02-06-06: SV: Fixed problem where DcxGetTermUserVariable was not null-terminating
          the response data.

02-09-06: TL: IMBEDSCR.EXE was not handling a /* comment at the end of a line
          containing an 'imbed' command.  (Was only looking for // comments).

02-23-06: PB: For the GOTO / GOSUB commands, the first parameter is now optional
          if it would be THIS_PROGRAM and no other parameters except for the
          step/label are provided.  In other words, if THIS_PROGRAM is the
          target program, then only one parameter is needed - the target step or
          label.  For example, the command:

             GOTO ( TRY_AGAIN )

          is equivalent to
 
             GOTO ( THIS_PROGRAM, TRY_AGAIN )

03-08-06: SV: On server startup, a time synch is now scheduled for all 7527 and
          7524/DCClient terminals.  This was done because time synch requests
          are not preserved across server shutdown/startup for these terminal
          types.

03-28-06: TC: Added support for new Format_UV options: ASCII_TO_EBCDIC,
          EBCDIC_TO_ASCII and LOWER_CASE.

04-09-06: TC: Added the folowing RC_DB2.INI:

		-101  , SQL54001, DELAY_AND_RETRY     , OE STATEMENT TOO COMPLEX

04-20-06: SV: New versions of DCCLEVEL.EXE and DCCSERVE.EXE run better with newer
          versions of Windows such as XP and 2003 Server.

05-23-06: SV: Fixed problem with legacy Norand RF (7524 handhelds) terminal driver.

06-30-06: TC: New version of TC is now 'service-aware' so that it can run as a
          service and can respond cleanly to service start/stop commands.

07-12-06: TL: New logtool.exe for recovering transactions from logfiles.  See
          DCConnect User's Guide for the details.

07-25-06: SV: Fixed hostname resolution problem when the resolved name included
          the domain.  Fix for handling aliases as well.  New message shown for
          all IPs that resolve to names.

08-15-06: SV: Fixed problem in dccserve.exe when starting the DCConnect service
          using the NET START command.

10-30-06: TL: The x key can now be used to end the linetrac utility.

01-25-07: UI: Removed arbitrary 256 terminal limit for TCP/IP 75xx and TCP/IP 
          DWTS lines.

02-01-07: PB: Fix for compiling IF statements comparing to a string containing
          imbedded blanks.

02-01-07: PB: Added warnings for subroutine calls that have fewer parameter than
          the subroutine definition (this is allowed but user should verify all
          occurrences are expected).

09-18-07: PB: Fix for buffer overrun that caused an exception to occur when trying 
          to log a message about a subroutine call with too few parameters.

09-18-07: TC: Fix for buffer overrun that caused TC to end abruptly during a
          Check_Color command.

10-14-07: TC: Fix for to gracefully handle shutdown of second TC session when it
          uses a controller ID that is already in use by another running TC session.

10-16-07: TC: Fix to eliminate extra dialog on shutdown when Close_When_Complete
          is not in effect.

10-17-07: TC: Added missing horizontal scroll bars. Errors box now called Messages.
          Fix to prevent window close on compile error when Close_When_Complete is
          in effect.

12-29-07: PB: Added named message support

01-20-08: SV: Fix in DCXUTILS.DLL for the GUI crashing on some machines due to an 
          internal reading past the end of a buffer.

01-30-08: PB: Added check for 0-length string for APNDSTR and SETSTR commands.

02-05-08: SV: Better handling of very long parameters on a message continuation.

02-18-08: PB: MESSAGE commands are now included in output when SHOW_STEPS is used
          on the command line.

01-31-09: TC:Fix for divide-by-zero error for modulo (%) and integer divide (\) 
          operations when a value between 0 and 1 (but not include 0 and 1) were
          in the divisor part of the operation.

-----------------------------------------------------------------------------------
End of fixes in DCConnect/TC/DCTPB version 2.3.0 fix package (January 2009).
-----------------------------------------------------------------------------------

02-01-10: TC: Numerous fixes and enhancements:
          - Title statement fixed to affect the Title on the window
          - Added set of Last-Error Data Parts for several DCConnect API functions
          - During compile, uncalled subroutines and unreferenced labels are listed
          - Fix to alleviate problem with 'empty' compile window from being unendable
          - Fix for various traps during shut down:
            - When Logoff script has Goto into the middle of a subroutine
            - When data request read is hanging
            - Premature thread termination when Make_Data_Request used in Logoff
          - Fix to Open_File_Data when internal file handle happen to be 0
          - Set/Append_UV_File_Data now truncates data read at null, if one is found
          - New REPLACE option for the Format_UV command
          - System command can now timeout and no longer brings up window in foreground
          - Controller IDs can now be 1 or 2 characters
          - Trace infrastructure uses process Id instead of controller ID to avoid conflicts

-----------------------------------------------------------------------------------
End of fixes in DCConnect/TC/DCTPB version 3.0.0 fix package (February 2010).
-----------------------------------------------------------------------------------

03-01-10: TC: Numerous fixes and enhancements:
          - Fix fr startup reporting illegal use of ERPBridge API
          - Added capability for multiple ODBC data sources
          - Begin/End_SQL supports "{Call form of Oracle stored procedure invocation as a 
            type of select statement
          - Fixed initial database connection so it retires recoverable errors
          - Added some new retriable connection error options in rc_odbc.ini: RECONNECT,
            RESET_RECONNECT and DELAY_RETRY.
          - New data part: LAST_DS_ALIAS

03-10-10: TL: In the logtool, the Count (#) operation now stops at the last valid 
          transaction that it encounters rather than giving error when invalid 
          tranaction encountered.

12-03-10: TC 3.2.3: For DB2 native support, cursors are now closed before SQL Prepares are performed.
          This addresses cause of SQL -519 error.

02-17-11: TC 3.2.4: TC now has the ability to cancel an XML send request that is taking too long.
          A new ADPTUtiL.DLL is needed as well.

05-16-11: OD: Added warning when no primary keys are found:

05-16-11: OD: Fraction for seconds always set to 0 to handle the new SQL Server 2008
          data type, datetime2, which can have its scale changed - possibly to 0.


08-10-11: TC 3.2.6: Two fixes:
          - Built with newer PComm libraries in order to fix PComm interface problem
          - Added restoration of calling subroutine's local trace setting

09-23-11: TC 3.2.7: Three enhancements:
          - Begin/End_UV uses max size buffer (32K), rather than smaller SQL buffer (4K)
          - The trace info for XML_Cleanup now logs the handle value
          - Added auto-cleanup of XML handles

11-15-11: TC 3.2.8: Fix for invalid alias in DBUserID and DBPassword commands

11-29-11: PB: Fix for compiling IF commands that reference named messages; prior to
          the fix an "Invalid comparison syntax" error was given.

          SV: The download process now properly handles message number resolution for
          named messages used in IF, CALL/GOSUB and RETURN transaction program commands.

02-01-12: SV: Hostname resolution was enhanced to handle the case where the DCConnect configuration
          has a fully-qualified hostname.domain set for the address when a message from
          the network resolves to the same hostname - but without the domain.   Previously this
          was not considered a match.  Now the server will look for all terminals in the
          DCConnect configuration that have a matching hostname (there may be more than one, each
          with a different domain) and issue a request to resolve the fully qualified hostname.domain
          for each.

          This allows the server to handle actual devices that are configured to use DHCP and 
          whose hostnames are defined after the server is started.   Prior to this fix, the server
          would have to be restarted in order to pick up these newly configured devices.

          Note that the device must be configured with the correct IP address or hostname of the
          DCConnect server in order for the above to work; after the initial startup attempt to
          resolve hostnames for all devices in the configuration, the server does not attempt
          resolution again unless it receives a message from the device itself.

02-15-12: TC 3.2.9: For multiple ODBC connections, only re-connect the DB connection involved in
          an SQL error rather than re-connect all connections.  Force any open result set to be 
          obsoleted if the associated DB connection had to be re-connected between fetches 
          (causes sql error if you do xxx_UV_Select_Data after re-connect)           

          After such a reconnect, Perform_Fetch and Set_UV_Select_Data continue to terminate TC if 
          no optional error label was provided.  With an optional error label you can pretty much
          assume that the reason for the error was a re-connect and react accordingly. 

02-21-12: TC: TCXML.DLL was being built with the function CancelSendXMLMessage being incorrectly
          defined as a C++ function (decorated) instead of a C function (not decorated).

02-23-12: TC 3.3.0: Fixed exception that occurred when Web Service calls fail because the 
          WebServiceHandler service was not registered, was old or not found.

03-09-12: TC 3.3.1: Fixed problem where all messages in the compile window would not show
          when a TC-halting compile error occurred - such as a missing label.

          Also fixed exception that occurred when formatting SQL column data longer than 235 
          characters and the data type was one of the following: SQL_WCHAR (-8), SQL_WVARCHAR (-9), 
          SQL_WLONGVARCHAR (-10) or SQL_UNIQUEID (-11).

03-16-12: TC 3.3.2: Fix for SendWSRequest's timeout function (it would never timeout).  Fix for TC 
          trap if SendWSRequest's optional response text user variable parameter was not provided.  
          Fix for user's guide table describing the WSDL database table. 

-----------------------------------------------------------------------------------
End of fixes in DCConnect/TC/DCTPB version 3.0.8 release (March 2012).
-----------------------------------------------------------------------------------

04-26-12: PB: CMPUV was not allowing 0 for either parameter; it does now.

05-09-12: IN: Fixed installation to create the data, job, val and cfr directories
          on a new installation.

05-31-12: TL: The backup/restore utility now gives the error value when a file copy
          fails and it gives the path when a directory create fails.

06-28-12: TC 3.3.3: Fixed incorrect message in the popup that was shown when an invalid command 
          was used - e.g. Send_Host_UV_Data used when not configured to talk to a host (no EMULTYPE 
          specified).  Before the fix, if a host command was used, the message shown would
          say:

            An attempt was made to use a BOD-related API without the proper configuration.

          but it has now been fixed to say:

            An attempt was made to use a host-interface API without properly specifying 
            the session ID and emulator type.

          And 3.3.2 did not include the first fix from 3.3.1.

07-02-12: TC 3.3.4: Two fixes for the System command: 1) The focus no longer is disturbed
          by TC's execution of the System command.  2) The return code from the executed command was
          not properly being reported by TC in the response user variable (problem introduced in
          02-01-2010 version of TC).
             
08-08-12: UI: The DCConnect User Interface now accepts the command line parameter DONT_MINIMIZE_SERVER 
          which, if provided, tells the GUI not to start the DCConnect Server session minimized.  This
          is necessary when the User Interface (UI) is running as a service and the DCConnect Server
          is started from the UI (e.g. clicking on the blue man).  In this scenario, if the server is
          started as minimized, its screen is not visible.

09-12-12: TC 3.0.8d (follows 3.3.4 after alignment of version number with 3.0.8 CD):

          - TC now automatically remembers its window size and position based on its controller ID.
            Information is stored based on the controller ID in a file whose name is in the format 
            $TCWINa.TXT where 'a' is the controller ID.  Note that the window position is restored 
            after the compile completes - when TC is sure it knows what the controller ID will be.
            This is now the default behavior of TC; if you do not want TC to maintain window positions,
            use the new Dont_Maintain_Window_Position command in your script.

          - TC now resizes both the Execution pane and the Messages pane whenever the TC window is resized.
            The previous behavior was that only the Execution pane was resized and the Messages pane 
            remained a fixed size, just like the Transactions pane.   Which of the panes are resized can
            now be controlled via the 3 new Resize_* script commands described below: Resize_Both_Panes,
            Resize_Messages_Pane_Only and Resize_Execution_Pane_Only.

          - Added support for new TC window-related script commands:
            - Dont_Maintain_Window_Position - Use this command in your script to tell TC not to remember
              the size and location of the TC window - based on controller ID.  
            - Resize_Messages_Pane_Only - By default, TC now resizes both the Execution and Messages
              panes when the TC window is resized.  By using this keyword anywhere in your script, TC 
              will instead resize only the Messages pane whenever the TC window is resized, leaving the 
              Transactions and Execution panes always at the same size.
            - Resize_Execution_Pane_Only - By default, TC now resizes both the Execution and Messages
              panes when the TC window is resized.  By using this keyword anywhere in your script, TC 
              will instead resize only the Execution pane whenever the TC window is resized, leaving the 
              Transactions and Messages panes always at the same size.
            - Resize_Both_Panes - use this command to tell TC to resize both the Messages pane and the
              Execution pane equally whenever the TC window is resized.  The Transactions pane will remain
              a fixed size.  This is now the default behavior if none of the Resize_* commands are used
              in the scripts.

          - Fix for exception that occurs when abnormal shutdown is performed.

          - Better detecting of improper syntax of If/While commands when parentheses are missing.  For
            example, the following syntax is now flagged as an error:

              if (QStatus == "01" or QStatus == "RR")

            because parentheses are needed around each operation as shown below:

              if ((QStatus == "01") or (QStatus == "RR"))

            Prior to the fix, this statement would be allowed, but the logic was performed incorrectly 
            as if the second part of the statement did not exist:

              if (QStatus == "01")

          - Set/Append_UV_Data_Part and Set/Append_Xact_Data no longer require the start and length
            parameters.  If not provided, both are assumed to be 0.  If only one is provided, it is
            assumed to be the starting position.

          - Added 3 new Data Parts related to execution and idle time:

              EXECUTION_TIME_TOTAL - Gives the total execution time, in milliseconds, of the current script

              EXECUTION_TIME_EXTERNAL - Gives the total execution time, in milliseconds, for all operations
              that the current script has made external calls for either database or screen scraping
              operation.

              IDLE_TIME - Gives the total execution time, in milliseconds, for all operations that the
              current script has performed externally - including database and screen scraping operations.

            One example usage:

              Set_UV_Data_Part(UV1, EXECUTION_TIME_TOTAL)
              Set_UV_Kbd_Data(UV2, "Total time: ")
              Append_UV_UV(UV2, UV1)
              Log_Error(UV2)

          - Fix for properly formatting data that starts with a single quote when the specified
            formatting is 'character'.  In this situation, the existing single quote is to be encoded as
            two single quotes and the entire data string is then to be enclosed in single quotes.  Prior
            to the fix, the data was left unchanged.  This fix affects the commands: Begin_SQL / End_SQL,
            Begin_UV / End_UV, Select_Having, Select_Where, Setup_Insert_Field, Setup_Update_Field, and
            Update_Where.

          - The StartInterval, StartTime and other script start information shown in the top and middle
            windows of the TC session now include a timestamp.  The StartInterval and StartTimeout
            commands also show the number of milliseconds of the interval / timeout.

          - Better fix to handle the problem that was attempted to be fixed by the 3-9-2012 change to
            ensure all messages in the compile window are shown when a compile error occurs.
        
09-21-12: TC 3.0.8e: Changes made in conjunction with adptutil.dll to pass session name for better logging
          detail when TCP/IP Manager is used.

          XML_Configure now handles the following logging related options that can be part of a Sync_Logon
          BOD (but these act on the TC machine):

          - LogLevel
          - LogFile
          - LogSize
          - LogCount
          - Debugfile
          - DebugSize
          - DebugCount

10-29-12: OD: LoadODBC now gives more accurate errors when writing to the output table fails.  
	  Previously you might see a non-specific error such as "Function sequence error" rather 
	  than the appropriate error for the actual failure (e.g. Data longer than column size).

11-02-12: TC 3.0.8f: Corrected minor discrepancy in saved window size and position and also now ignore the
          -32000 value that was saved when the TC window was minimized.

01-30-13: TCP 3.0.8e: Fix for duplicate message IDs which caused messages or responses to be ignored.
          Improvements to logged and printed messages.  Fix for one cause of a mutex error.

02-11-13: TCP 3.0.8f: Fix for mutex errors related to ReadQueue or WriteQueue such as the following:

            ReadQueue::GetMutex failed for 'OWMQXA' line 565 because of wait timeout (1000) or failure (258).
            ReadQueue::ReceiveMessage failed, unable to get mutex after 1000 ms wait.

02-25-13: UI: Fix for configurations containing DWTS terminals.  GUI would throw an exception and end or hang
          if loading a configuration containing DWTS terminals or if trying to add DWTS terminals to a
          configuration.

03-07-13: TC 3.0.8g: Added the ability to define web services via an XML file instead of in a database
          table.  To take advantage of this, the following entry must be in your tc2.exe.config file:

            <add key = "WSDLXMLPath" value = "c:\wsdl.xml" />

          where the value can be any path to the .xml file that defines the web services.  Here is an example
          of a complete tc2.exe.config file:

            <?xml version="1.0" encoding="utf-8" ?>
            <configuration>
              <appSettings>
                <add key = "WSDLXMLPath" value = "c:\wsdl.xml" />
              </appSettings>
            </configuration>

          Following is a sample .XML file containing the web service definition for Twitter:

            <?xml version="1.0" encoding="utf-8" ?>
            <configuration>

              <!-- List of Web Services -->

              <!-- "TwitterXML","REST","GET","XML","","",0,0 -->
              <WSDL>
                <NAME>TwitterXML</NAME>
                <WSTYPE>REST</WSTYPE>
                <METHOD>GET</METHOD>
                <RESPONSETYPE>XML</RESPONSETYPE>
                <TARGETNAMESPACE></TARGETNAMESPACE>
                <SOAPACTION></SOAPACTION>
                <PORT>0</PORT>
                <TWCS_RESPONSE_SECS_MAX>0</TWCS_RESPONSE_SECS_MAX>
              </WSDL>

            </configuration>

          The meaning of each attribute for a <WSDL> definition is the same in the XML file as is documented in the 
          TC User's Guide for the database table definition.

          Also updated the termination logic of TC to better handle the management of connection handles in
          the logoff script.
         
          Added support for new data part EXECUTION_TIME_LAST.

          Fix for external execution time not including the time for XML_SendBOD or XML_Send.

03-22-13: TC 3.0.8h - also requiring new versions of TCXML.DLL, CXML.DLL and ADPTUTIL.DLL

          - In the SendXMLMessage function (from adptutil.dll and used by TC to send XML messages) it is no longer
            required that the XML message contain NOUN, VERB and REFERENCEID elements as long as the ConfirmQueue is not defined.
            This can be done via an XML_Configure command similar to the following:

                XML_Configure("ConfirmQueue =")

            Note that if ConfirmQueue is not explicitly defined, it defaults to OneWorld02; so it is necessary to explicitly
            define it to be nothing as shown above in order to remove the requirement to have the NOUN, VERB and REFERENCEID
            elements.   
 
          - Also added an alternative to the NOUN / VERB / REFERENCEID elements: you can instead include the single element 
            CONFIRMRESPONSEID in the XML message and the value for it will be used in the confirm message when the response
            to the XML message is received.

          - When using CommunicationsMode=MQ the AdapterMachine parameter is actually used to specify the MQ QueueManager.
            So the keyword QueueManager is now allowed and is synonymous with AdapterMachine.   

          - Also fixed problem where the creation of MQ response queue used to always specify a blank for the queue manager, 
            indicating the default queue manager, rather than using the queue manager specified by the AdapterMachine 
            parameter (or now the QueueManager parameter) if it was explicitly specified.

          - Added support for the new command:

		XML_AddAttribute(handle_UV, attribute_name, attribute_value)

            in order to add multiple attributes to an existing element.  See the
            documentation for more details:

		XML_AddAttribute
                
          - For the command XML_Create (but not XML_CreateBOD), the second parameter for filename is now optional.  If omitted
            the generated XML will no longer include the second comment element that specifies the DOCTYPE and .DTD file name.

          - New XML_Configure option: IncludeFinalNull now available for controlling whether the final null is added to 
            messages sent by XML_Send and XML_SendBOD.  Some target systems do not want that final null.  Example call:

              
                XML_Configure("IncludeFinalNull = False")

            You can specify False/No or True/Yes.  If this parameter is not explictily configured, it defaults to True/Yes, which
            has always been the default behavior.
              
          - Another new XML_Configure option: UseCorrelationID now available when using Websphere MQ as the transport 
            mechanism (CommunicationMode = MQ).   If this option is set to True or Yes as illustrated here:
              
                XML_Configure("UseCorrelationID = True")

            then when messages are sent, MQ will generate a unique correlation ID in the request message that will be part
            of the corresponding reply message.  This ensures that an old reply, still sitting on the MQ queue from a timed out 
            request, is not considered the reply for a new request.   

            It is recommended to use this option if you do not have any kind of ID already built into your XML messages that 
            uniquely identifies each message and its response.

          - Added support for the new command:

		XML_ToString(handle_UV, target_uv)
              
            which takes the XML structure that is referenced by the handle_uv and generates the 'flattened' or 'serialized' string
            in the target_uv.  If the target_uv is not large enough, the string will be truncated so that it fits in the UV and a
            warning message is logged.  The target_UV is cleared before the string is written to it.

            See the documentation for more details:

		XML_ToString

04-17-13: TC 3.0.8i - Added new Define_Large_UV_Size to allow the default large UV size of 16383 to be anything from 235 to 65534
            bytes.  Like the Define_UVs command, Define_Large_UV_Size must be used in the script files before any UV is referenced 
            by any other command.

          - For the handling of messages received from an MQ queue during the execution of an XML_Send or XML_SendBOD command, a
            terminating null is now added to the received data if that data is not already null-terminated.  (Change actually made
            in ADPTUTIL.DLL).

04-23-13: TC 3.0.8j - Added XML_ToFile and XML_CopyElement commands.  Aliases created for web service commands and WS_Profile now 
          has alias of Workstation_Profile.

04-30-13: TC 3.0.8k - Better flagging of compile error when incorrect command happens to contain a colon.

          Added LDAP support - including the new commands: LDAP_AdminBind, LDAP_ValidateUser, LDAP_Search and LDAP_AdminUnbind.
          
          Fix to properly support the use of -1 as the timeout parameter for the System command.  If specified for the timeout,
          it indicates the OS system command should be invoked as had been done in older versions of TC.

          Compile of IF command with no parameters did not previously given any compile error.

05-31-13: TCP 3.0.8g: Made the following enhancements to logging for both the TCPIP Manager and the adapter:
          - One key enhancement is that the LogLevel can now be set differently for different adapter sessions and even the
            TCPIP Manager - using the .INI file scheme described in the following bullets.
          - The following logging parameters can now be read from an .INI file:  LogLevel, LogFile, DebugFile, LogCount,
            DebugCount, LogSize, DebugSize, Debug, Dont_Print_Pointers, DBG_ALL_JDE_XML and DBG_WARN_JDE_XML.
          - Both the adapter and TCPIP Manager will first look for COMMON.INI in the current directory and if found will
            read and process any of the above listed logging parameters.   It is not an error if the file does not exist.
          - Next the adapter / TCPIP Manager will look for an .INI file specific to itself, based on the input queue name.
            For the adapter this is the first parameter, which defaults to OneWorld01 if not provided (so the .INI file would
            be called OneWorld01.INI.  For TCPIP Manager the queue name is always TCPIPQUEUE.INI.  Again it is not an error if 
            this file does not exist.
          - Parameters in these .INI files should be in the form:

              parameter = value

            such as:

              LogLevel = 8

          - Lines starting with double slashes (//) are treated as comments and ignored.  Blank lines are also ignored.
          - The keywords TraceFile, TraceCount and TraceSize can be used in place of LogFile, LogCount and LogSize - since
            these apply to the trace (*.TRC.*) output files (as opposed to the debug (*.DBG.*) output files.
          - The .INI file is read as soon as the adapter / TCPIP Manager starts and processes its command line parameters -
            which should be before any logging is attempted - unless some error occurs while processing those command
            line options.  
          - When either COMMON.INI or .INI is processed, the parameters that are read will be printed to the
            screen so they can be viewed for validation.
          - After the Adapter / TCPIP Manager are started, the R key can be pressed to trigger the Adapter / TCPIP Manager
            to reread the .INI file. So a parameter could be changed in the appropriate .INI file and the R key pressed to
            affect the logging output for a particular adapter without having to shut down and restart that adapter.  Whenever
            R is pressed, the processed parameters will again be written to the screen.
          - The use of the .INI files and R key should replace the tools DebugOn / DebugOff as the way to change 
            the logging settings for a running adapter / TCPIP Manager.  In fact DebugOn / DebugOff would only affect parameters
            that were being shared between the adapters - such as the loglevel.  But that no longer works.
          - Note that changes to logging parameters that are received by the adapter in SYNC_LOGON or SYNC_ADAPTER BODs
            will still be acted on even if the parameters had previous been read from an .INI file.

06-03-13: TC 3.0.8L - Added LDAP_Encrypt command to encrypt the contents of a user variable using the Blowfish encryption algorithm.  
          The command syntax is:

              LDAP_Encrypt(UV_For_Encrypted_PW, pwToEncrypt, blowfish_key)

          - Fix for password encryption/decryption not properly handling a change in the blowfish key.

          - Added XML_GetField2 to allow for the 'occurrence' and 'error Label' parameters that the original XML_GetField command does
            not have.  The syntax for XML_GetField2 is similar to XML_EnterElement, with the addition of the Target UV parameter:

              XML_GetField2(HANDLE_UV, Field name, [[attribute name,] attribute value,] [occurrence,] Target UV, errorLabel)

          - Fix for XML_SetField.  It was appending to existing data in the field rather than replacing it.

          - Enhancement made to the System() command to launch applications in the true 64-bit environment if it is detected that TC 
            is running on a 64-bit version of Windows.  TC looks for %windir%\sysnative\cmd.exe and uses that if it exists. 
            Otherwise it uses %windir%\system32\cmd.exe. (Note: %windir% is typically c:\windows.)  It is necessary for TC to use the
            'sysnative' syntax to force the 64-bit environment because, since TC is a 32-bit application, Windows will by default, 
            actually redirect references to %windir%\system32 so that they go to %windir%\syswow64 instead (WOW64 = Windows-on-Windows64).  
            Therefore by default the cmd.exe that is start will be the one for the 32-bit environment.  There are certain commands, 
            such as msg.exe, and functions that exist/work only in the 64-bit environment.  When running in the 32-bit environment, a 
            directory listing of %windir%\system32 is redirected by Windows so that you actually see %windir%\syswow64.

06-05-13: SV: Fix in terminal support code to properly put a terminal back into service if the terminal was in service and then 
          quickly restarted before the DCConnect Server detected that the terminal had been unreachable.

06-13-13: TL: Linetrac.exe tool will now keep running when the server shuts down - but it does disconnect and wait to reconnect
          when the server starts up again.

06-14:13: SV: Added support of downloading .PGM files with the new ENCRYPT and/or QUERY commands.

06-17-13: PB: Added support for new QUERY and ENCRYPT commands and other features recently added to DCConnect Client compile of
          text files:
          - Named messages can now be 64 chars
          - The 3rd parameter (length) is now optional for the MESSAGE command
          - Comments are now allowed in the middle of commands that span multiple lines.
          - A single command including white space and spanning multiple lines can now be up to 4000 characters; was 1024.
          - Label resolution is now case-insensitive.

06-28-13: SV: Fixes for text file downloads

07-03-13: SV / PB: Added versioning of text file downloads via VERSION command. DCTPB compiles but ignores this command.

07-05-13: SV: Implemented removal of excess spaces and comments during text file download.  Single file containing text config and 
          transaction programs now sent to client; called SCRIPTS.TXT.

07-08-13: SV: Implemented model parameter for the CFR_FILE script command.

07-16-13: UI: Completed support for new Terminal Model and Settings Source parameters in the terminal notebook.

          In the node / mailbox / function group details view (View as Text) the items are now sorted by
          the names of the terminals / mailboxes / function groups.

          The Node / Mailbox / Function Group screens are now wider to better accommodate larger names of
          terminals, mailboxes / routing groups and function groups.

07-23-13: TC 3.0.8m - Fix for intermittent false positive database fetches that actually had no records returned.  
 
          Also implemented feature where trace logging is disabled if TC detects it is negatively affecting performance.

08-06-13: SV: Added support for terminal name resolution.  In the DCConnect configuration, specify 255.0.0.0 as the IP address
          for any terminal whose IP address / hostname is not known at startup or might change while the server is running.
          Any terminal (DCConnect Client) configured with this address must use the -n command line parameter or TERM_NAME
          keyword in EMULATOR.INI to specify a valid name in the DCConnect configuration - configured with the 255.0.0.0 
          IP address that is its terminal.   This allows clients to connect to the server when a VPN is involved - which is 
          typically a problem because the client's IP address and hostname are usually not known ahead of time in this case.

          UI: In the "Text" view of the Node configuration, the Type column will now show the Terminal Model value (e.g. Win32,
          Intermec_CK30, Symbol_91xx, ...) if one is specified for a terminal, rather than the terminal type (e.g. 7524/Client).

          Note that the Address column of this same screen will always show the address from the configuration; it will not show
          IP addresses that the server resolves via hostname resolution or terminal name resolution.

08-08-13: SV: No longer does the TCP/IP terminal driver try alternate ports if it finds its configured listening port
          (default 7500) is already in use.  Never was useful behavior since all devices expect server to be listening on
          the configured port.

          SV: Fix for intermittent server hang when terminal goes to not responding and then comes back on line with files 
          already stored locally.  Was side-effect of 6-05-13 fix above.

08-22-13: PB: Maximum length allowed by APNDSTR/SETSTR changed from 256 to 999.  Also now properly generate an error if 
          that length is exceeded.  Previously, the data would be truncated without notification.

          SV: Loading of text files now updates the status as "loading programs".

08-30-13: TC 3.0.8n - Changes to indent of trace file to fix problem when trace (off) is used in a called sub

09-06-13: PB: Better detection of missing parenthesis at end of Declare command and better reporting of the line # when 
          parenthesis missing for any command.

          SV: Fixed showing of %d in some newer messages.  Also now insert spaces into any message parameter that exceeds 
          60 characters; an attempt is made to split the parameter on a backslash, slash, comma, dash or underscore, if
          the parameter contains any of those characters.

          SV: Download of text files now accommodates a command that spans multiple lines up to 4000 characters in length.

09-19-13: SV:  now accepted in addition to 255.0.0.0 as the terminal's address
          parameter to indicate terminal-name-resolution should be used for the terminal.


10-04-13: TC 3.0.8o - Added the LDAP_ChangePassword command:

            LDAP_ChangePassword ( LDAP_Connection_Handle_UV, Base_dn*, Search_Scope*, UserID_Search_Criteria*, Encrypted_Old_PW*, 
                                  Encrypted_New_PW*, Blowfish_Key*, Attribute_Name*, Error_label )

          If Encrypted_Old_Pw is blank, then the admin binding is used to change the password.  Otherwise the specified
          user ID is bound to the directory and then the password is changed with that binding.

          Fixed logging of compile error when Begin_SQL / Begin_UV statements are too long.

          LDAP_ValidateUser now accepts the option to retrieve attributes from the user's directory entry.  The new format of
          this command is:

            LDAP_ValidateUser ( LDAP_Connection_Handle_UV, Base_dn*, Search_Scope*, UserID_Search_Criteria*, Encrypted_PW*, 
              Blowfish_Key*, Attribute_List*, Result_XML_Handle_UV, Error_label )

          The new Attribute_List and Result_XML_Handle_UV parameters work the same way as they do for the LDAP_Search command.  In
          addition a new feature for the attribute list allows a function to be performed on the attribute that is returned.  Only 
          one such function has been implemented so far: LDAP_PW_AGE_IN_DAYS to be applied to the pwdLastSet attribute in order to
          determine the number of days it has been since the password was last changed. 

          To use this in the attribute list parameter of LDAP_ValidateUser (or LDAP_Search), put the function name followed by the 
          attribute name in parentheses; imbedded spaces are allowed.  For example:

            LDAP_PW_AGE_IN_DAYS(pwdLastSet)

          When the attribute is retrieved and the XML response message is built, that XML message will include  sections
          for both the original attribute and the function(attribute) sec as illustrated in the example below (the pwdLastSet value 
          represents the number of 100 nanosecond intervals since Jan 1, 1601 in UTC):

            
              
                uid=123456897,c=us,ou=employedir,o=ibm.com
                
                  130255074216183596
                
                
                  1
                
              
            

          Note: When the function(attribute) is put into the XML message there will not be any imbedded spaces, even if when in 
          the attribute list, it did include imbedded spaces.  Therefore when specifying the attribute name in the XML_GetField 
          or XML_GetField2 command do not include any imbedded spaces for a "function(attribute)" value that should be retrieved.

10-29-13: TC 3.0.8.p - TC now retries for -303 and -309 errors (command not allowed and rejected data) when trying to send
          a command to the the terminal such as Send_Term_UV_Data.  

          Also the subroutine level is now written to traces so that finding the end of a subroutine call is easier.  When a call
          to a subroutine is made, the phrase "Entering sub level n" is written to the trace where 'n' is the subroutine level.  
          The first subroutine call is level 1.  For example:

              00000 :      Entering sub level 3
              00000 :      Call MovePallet ( pallet ID )

          Because the MovePallet might have a series of its own nested subroutine calls, despite the indent level, it may be
          hard to find the right matching Return or EndSub statement that corresponds to the completion of the MovePallet
          subroutine call.   To quickly find the completion of the MovePallet subroutine which is at level 3 in the example
          above, search for the next occurrence of 'sub level 3' and you will go right to it:

              00000 :      Leaving sub level 3
              00000 :      Return ( )

10-31-13: SV: Fixed problem with terminal name resolution that required each terminal doing this kind of resolution to use a different 
          port.  In addition if a named terminal request is received for an IP address / port combination that is already associated 
          with another terminal, one of two things is done:

          1. If the terminal already associated with that IP address / port combination is not one that is configured to do
             terminal name resolution (its Terminal Address in the DCConnect Terminal Settings Notebook is either 255.0.0.0 or
              optionally followed by a comma and a port) then an error is logged and the request is ignored.
          2. But if the already-associated terminal is configured for terminal name resolution, the IP address / port combination
             is associated with the terminal from which the new request was received and it is no longer associated with the other
             terminal.

11-07-13: TC 3.0.8.p (continued) - Fixed premature error about variable name storage being exceeded (XIS151).

11-08-13: SV / UI / TL: Added ability to download text script files by themselves (without downloading CFR and
          validation files).  New DCX_DWNLD_SCRIPTS option for testterm.exe.  And new Download Scripts option
          in DCConnect User Interface.

11-11-13: SV: Minor fix to write the correct terminal name to trace log when terminal-name-resolution request is first received.  
          Also "MESSAGE NOT WRITTEN" is now written to the trace log instead of "NETWORK WRITE ERROR" when there is an attempt 
          to write to the network for a terminal whose address is not yet known - whether that terminal is configured for
          hostname-resolution or terminal-name-resolution.

-----------------------------------------------------------------------------------
End of fixes in DCConnect/TC/DCTPB version 3.0.9 release (November 2013).
-----------------------------------------------------------------------------------

2013-12-09: TC 3.0.9a: New SCRIPTS option available for the second 'which_files" parameter of the Load_Term command.  This can only
            be used when the target terminal is loading the text scripts directly.  This option indicates only the scripts should be
            loaded; no CFR or validation files should be loaded.

            For the change in version 3.0.8m that turned off tracing if it was too slow, the threshold for slowness was
            increased from one second to three.

            New command XML_LoadLoggingParameters gives TC sessions the same capability to specify unique logging 
            parameters for XML message processing - that the recently introduced .INI file capability does for the adapter and
            TCP/IP Manager:

              XML_LoadLoggingParameters ( Parameter_File * )

            The Parameter_File can be a literal string or it can specify a variable that will contain the file.  If a literal string
            it can include environment variables which will be resolved when the script is compiled.

            The logging parameters that are supported in the specified file are the same ones that are supported in the adapter / 
            TCPIP Manager .INI file or an XML_Configure command, including:

              LogLevel, LogFile, DebugFile, LogCount, DebugCount, LogSize, DebugSize, Debug and Dont_Print_Pointers

            Note that DBG_ALL_JDE_XML and DBG_WARN_JDE_XML are adapter specific logging parameters and do not apply to TC
            sessions.

            Also supported in the file is an IMBED= or INCLUDE= statement, used to get logging parameters from another 
            file.   You could put a majority of the parameters that will be the same into a single file and then INCLUDE that
            file into the unique logging parameters for each TC session.  

            For example, c:\dcconn\tc\XMLLogging_Common.INI could include the following statements:

              LOGLEVEL = 0
              LOGCOUNT = 50
              DEBUGCOUNT = 50
              LOGSIZE = 2000000
              DEBUGSIZE = 2000000
              DEBUG = N

            and then C:\dcconn\tc\XMLLogging_A.INI could be set up for TC session A, containing the following:
     
              IMBED     = %tc2%\XMLLogging_Common.ini
              LOGFILE   = c:\dcconn\tc\XML_Log_Trc_A.log
              DEBUGFILE = c:\dcconn\tc\XML_Log_Dbg_A.log

            while C:\dcconn\tc\XMLLogging_B.INI could be set up for TC session B, containing the following:
     
              IMBED     = %tc2%\XMLLogging_Common.ini
              LOGFILE   = c:\dcconn\tc\XML_Log_Trc_B.log
              DEBUGFILE = c:\dcconn\tc\XML_Log_Dbg_B.log

            As is shown above, environment variables can be used in the IMBED / INCLUDE statement but they cannot
            be used in the LOGFILE / DEBUGFILE statements.   Environment variables can also be used in the new TC
            command XML_LoadLoggingParameters.

            If the same parameter is encountered more than once when processing the file or any imbedded file, the
            last occurrence of that parameter is the one that will take effect.

            The XML_LoadLoggingParameters command should be part of the StartLogon script to ensure the logging parameters
            are set up before the TC script attempts to do any XML operations that might cause logging to be done.   But
            it should be after the XML_Sender command that is typically used to specify that ADPTUTIL.DLL is the .DLL that
            should be used for the XML_Send / XML_SendBOD functions and other XML functions.  For example:

               XML_Sender (AdptUtil.Dll:SendXMLMessage)

            When the XML_LoadLoggingParameters command is performed, TC remembers the file name that is specified, after
            resolving any imbedded environment variables, so that the logging parameters can be reloaded when the user selects
            the new menu option Trace -> Reload XML Logging Parameters.  If you want to temporarily change a logging parameter,
            such as the loglevel, you could add it to the parameter file for a specific session, such as XMLLogging_A.ini, and
            then use the new menu option to reload the parameters.  When you want the logging level set back to the value in
            XMLLogging_Common.INI, remove it from XMLLogging_A.ini and use the menu option to reload.

            Using this menu option is similar to pressing the R key to reload the parameter file for an adapter or TCPIP Manager
            session.

            Whenever the XML logging parameters are loaded for a particular TC session, a message is logged to the bottom window 
            of the TC session and to the TC error log for that session.  
            
2013-12-09: TC 3.0.9b: Fix so LAST_EXECUTION_TIME data part is properly calculated when Trace is off.              

2014-01-24: TC 3.0.9c: New Trace_Delay_Limit compile-time configuration statement allows configuration of the slow trace
            delay accumulated during a sampling period, and trace will now be re-enabled automatically after a configurable
            delay/stabilization time.

2014-03-01: SV/UI 3.0.9a: Implemented compression of downloaded files for terminals running version 3.0.9b and later of the Client - when
            loading text-based files.  Compressed files, when in text-based mode, includes the CFR and any validation files.  
            This should decrease download size and times to about one fifth or better as compared to non-compressed downloads of 
            the same files.

            Was treating paths in IMBED / LOCAL_VALIDATION statements that start with backslash as relative paths to \dcconn\job and 
            \dcconn\val directories when downloading text or validation files.  Now treat them as absolute paths on the drive where
            the environment variable DCCONN indicates.

            DCConnect Server version and copyright now logged on startup. 
            
2014-03-03: TC 3.0.9d: Fix for trap when run with trace off (Introduced in 3.0.8n).  Trap would occur after a certain number of
            cumulative calls to subroutines during the duration of the TC process. 

            Fix for potential corrupting of the trace file output and possibly a run-time error due to concurrent writing
            to the trace pipe by both the script processing thread and another internal thread.
           
2014-03-14: SV/UI 3.0.9a continued: Also increased the size of CFR download messages that are sent to the DCConnect Client (on a 
            TCPIP/IP line) so that fewer download messages are needed for the CFR download (about 1/4).   But if the DCConnect 
            Client is older than 2.10 (June 2004) the server will adjust to the smaller buffer size because that level of Client 
            had a smaller network read buffer size.  For these older Client versions, there will a few second delay (depending
            on the server's configured Poll Timeout) at the start of the CFR download as the server gets a failure when trying
            the larger message size and then switches to the smaller message size.

2014-03-19: SV/UI 3.0.9b: Fixed the cause for CFR only downloads leaving the terminal in the wrong state for text-based configurations.

            Fix for intermittent download failure of "Start" file command (UD) during text-based file download.  The file name 
            portion of the command could be corrupted.


2014-03-20: TC 3.0.9e: Added new commands XML_DefineNamespace and XML_RedefineNamespaces.

2014-06-08: TC 3.0.9e continued: Fix for native DB2 select of BIGINT column types with values that exceed 32-bit range.

            Added 464 warning to RC_DB2.INI - for 'Result Set Mismatch'.   Returns no error.

2014-08-28: OD: Fixed cause of 22002 SQL error when fetching column information.

2014-10-01: TC 3.0.9f: Added new command WS_GetLastErrorText.  Added WEBSERVICE as possible value for first parameter of
            On_Error_Goto command.   Data part LAST_ERROR now set for all WS_xxx web service commands. 

2014-11-03: SV/UI 3.0.9c: Added ability to have mailbox data persisted in ODBC database tables, in addition to the traditional
            (and still default) file based mechanism.  Copy the ..\data\sample_mbdb.cfg file to mbdb.cfg to set parameters
            for DB access.   See the Users Guide for details on required table design, etc. 

2014-11-10: SV/UI 3.0.9d: Better handling of the logging of very large message parameters (e.g. long path names)

2014-12-03: TC 3.0.9g: Added new commands for web service feature to allow use of XPATH query for navigation (e.g. WS_EnterElementXPATH etc.).  
            Added WS_AddAttribute, WS_GetAttribute, WS_ToFile, WS_ToString.

2014-12-11: TL: The logtool now creates a dump file based on the mailbox name and the current date and time rather than always
            using LOGTOOL.DMP.  

            Also the 0 key can now be used to advance 10 bytes / transactions in the log file.

2015-01-15: SV/UI 3.0.9e: The options for Download -> All Data (Forced Reset) and All Data (Soft Reset) were renamed and move to the end of
            the list to make clear that they are for 7527 terminals only.

2015-02-15: TC 3.0.9h:  Added new RC_xxx.INI handler DELAY_RETRY_INVALIDATE that can be associated with a deadlock-rollback error (e.g. -911).
            This allows TC to know that any use of SELECT data (Perform_Fetch, Set_UV_Select_Data) is invalid, thus preventing 
            possibility of rapid loops logging DB engine errors.  Also, delay 100 ms after logging any SQL error so prevent
            too-rapid issuing of errors that can make the machine hard to control and cause slow-downs.

2015-05-20: TC 3.0.9i:  Added new command Restart_TC() that will do a quick spawn of a replacement TC session (i.e. to clean-up 
            leaked handles or such).   Also added new datapart "COUNT_HANDLES" (the current count of all Windows handles owned by the 
            TC session).

2015-05-29: TC 3.0.9j: Fixed the constant writing of messages similar to the following to trace.log, by TC when it is running as a service:

               ServiceManager::ServiceCtrlHandler (4) 
               ServiceManager::ServiceCtrlHandler done

            This would cause the trace.log file to grow very large if not deleted periodically.

2015-06-26: SV/UI 3.0.9e continued: Reorganized the return codes section of the DCConnect Technical Reference.  And added
            info about the meaning of DCX_DATA_TRUNCATED being returned for the DcxReadTransaction API.

2015-08-12: TC 3.0.9k: Fix for occassional hang of TC if set UV thread happens to be sending API request right when DCConnect Server 
            shutdown is starting.

2015-09-16: SV/UI 3.0.9e continued: Added new variation of API for writing transactions: DcxWriteTransactionEx2 which adds new parameters
            for Serial_Key and Priority which are used when Master-Child mailboxes are set up in order to control how transactions are
            handled by the children of a particular master mailbox.

2015-09-16: TC 3.0.9l: Added support for Write_Xact2 - which correlates to the new DcxWriteTransactionEx2 API available in the 3.0.9.e
            version of the DCConnect Server.  This adds new parameters for Serial_Key and Priority which are used when Master-Child
            mailboxes are set up in order to control how transactions are handled by the children of a particular master mailbox.

2015-10-08: TC 3.0.9l continued: Moved the handling of Restart_TC later in the shutdown process in order to prevent contention for the
            same trace file names between the newly started TC process and the one shutting down.   This helps to prevent getting 
            the 'a', 'b', ... suffix added after the 'x' in the TC2TRCx.nnn trace file name - where 'x' is the controller ID.

            Fixed cause of 233 errors that lead to tracing being turned off, empty trace files and possibly unnecessarily adding an 
            alphabetic suffix to trace files names.  Also TC trace and error log output now includes milliseconds in the timestamp.  
            Trace files are now flushed to disk every 10 seconds rather than every 2 seconds in order to reduce any impact of tracing.

            New data part LAST_WS_COMMAND_INFO for getting a string that indicates the last web service command that was performed along
            with its input parameters.  Intended to be used in conjunction with On_Error_Goto ( WEBSERVICE, ... ) as a way to determine
            which of a series of web service commands caused the branch to the on-error label.

            Fixed tracing of WS_ToFile command; was incorrectly showing 'XML_ToFile'.

            Trace messages about entering/leaving sub-level now use term 'pseudo-level' if level is for goto branching and not a true
            subroutine call.

2015-11-03: SV/UI 3.0.9f: Added ability to change polling and in/out service state from the node level, adapter level or line level of 
            the Node Configuration graphics view.  This now gives a single place to stop/start polling for all terminals.

            Fix for the following error that could occur on server startup if any terminals have queued transactions:

              10/30/15 09:56:21 DCR0009E: DRIVER_COMMON_HANDLE_TXTN had error writing to the message path: %s, system error = %s.

            Fix for problem that caused the unresolved parameters (%s) in the above message.

            Fix for clear mailbox not working properly for the non-DB mailbox implementation in the 3.0.9e fix pack.

            Infinite timeouts for API calls now broken up into infinite calls of 5 second to allow checks for shutdown or other errors that
            should cause the API call to return.

            Fix for problem that could cause transactions to be received on startup from terminals whose startup polling state was turned off.

            Added the API DcxQueryTermList for getting the entire list of valid terminals in the DCConnect configuration.   Similar to 
            DcxQueryJobTerms but not limited to a single job.

2015-12-02: SV/UI: 3.0.9g: The downloading of text-based files now strips out any end-of-file characters it encounters at the
            start or end of a line in the source files.


2016-01-20: TC 3.0.9m: Added the following commands in order to enable a web page working in conjunction with a TC script-based 
            web service to be able to perform all of the runtime functions that the DCConnect User Interface can perform:

              Change_Term_State
              Clear_Mailbox
              Get_Application_List
              Get_DCConnect_Status
              Get_Job_List
              Get_Mailbox_List
              Get_Term_List
              No_Terminate_From_DCConnect
              Report_Term_Status
              Shutdown_DCConnect
              Start_Application
              Sync_Date_Time

            Also, for all commands that have the word TERM in them, synonyms were created with TERM replaced by TERMINAL.   For
            example, both Get_Term_List() and Get_Terminal_List() are valid.

2016-01-29: SV/UI 3.1.0: Fix for messages that were showing single character parameters as 0 instead of their true value.
            
2016-02-16: TL 3.1.0: Fix for logtool.exe; problem creating dump file when mailbox name is longer than 8 characters.

2016-03-03: SV/UI 3.1.0 continued: Fix for transaction logging problem introduced with the feature to prioritize transaction assignment 
            between master and child mailboxes (3.0.9e).

2016-04-12: SV/UI 3.1.0 continued: Completed adding the ability to download new versions of the DCConnect Client to terminals running
            version 3.1.0 or later of the DCConnect Client.

            TC 3.1.0: For support of the ability of the DCConnect Server to download new versions of the DCConnect Client, added commands
            Submit_Client_Files and Report_Terminal_Version and added CLIENT as a new WhichFiles option for the Load_Term command.

2016-04-25: SV/UI 3.1.0 continued: Added some efficiency to the mailbox database code for the transaction release operation.

2016-09-23: SV 3.1.0a: Fix for releasing transactions from a master mailbox.

2016-09-29: SV 3.1.0a continued: Fixed problem determining which terminals need to be downloaded for the DcxSubmitValidation API (and  
            the TC equivalent command, Submit_Validation) when there are function groups / jobs that are set up for text-based downloading.

            Fixed problem returning validation file list for DcxQueryJobInfo for text-based jobs.  Also, for text-based jobs, if there are
            multiple CFRs assigned for different terminal models, only the last one referenced will be returned for this API.

            Fixed possible memory corruption problem handling validation file lists during downloads and certain validation related 
            API calls.

2016-11-08: SV/UI 3.1.0b: Added support for downloading Android CFRs (*.SO) and for including them in the list of available CFRs
            that the GUI shows in the CFR Configuration view and in the CFR Name list on the "Other Objects" page of the General 
            tab in the Terminal Settings notebook.

            Changed max TCP/IP port number from 9999 to 65535.

2017-01-13: SV 3.1.0c: Fix for erroneous showing of the message "Mailbox xxxx is filling up. ..." when the mailbox capacity is 
            greater than 23.8 mb.  The message was harmless but it was corrected nonetheless.

2017-02-19: SV 3.1.0c continued: Added support for downloading of the transaction program script command EMULATOR_INI for including
            EMULATOR.INI in the download.

2017-03-01: SV 3.1.0d: The previous support of the new script command EMULATOR_INI now uses compression during the download and 
            allows for the source file to have any name; it will always be called EMULATOR.INI when the client receives and
            stores it.

2017-03-16: SV 3.1.0e: EMULATOR_INI supports the inclusion of an environment variable in the path.

            The server will now persist with host name resolution attempts if the first attempt fails - for those cases where
            the terminals are not able to initiate contact with the server. 

2017-03-17: PB 3.1.0a: Added MODEL as an option to the QUERY command.  The EMUALTOR_INI command is now ignored, if found, 
            rather than generating an error.

2017-07-27: TC 3.1.0a: Fix for Send_To_Host so it gets escaped "@" literal properly handled by PCOMM.

2017-08-10: SV 3.1.0f: Fix for error "Unable to release transaction for terminal , rc = -501" followed by another
            message that references DRIVER_DOSWIN_HANDLE_WORK_RQST.  This started occurring for transactions sent from DWTS apps
            after the 3.0.9e change to support master-child mailboxes.

            Also fix for unexpected ending of TDDOSWIN.EXE after a close and then open of a dynamically configured DWTS terminal.

            Fixed cause of the following harmless message for DWTS terminals which started to occur after the showing of version 
            info was added to the Node details view "Terminal is in the process of downloading, flushing, performing a time synch
            or is waiting for a failed download to be retried."

            Increased initial width of Node Configuration to account for the version column on the details view.  The scroll bar
            was being hidden on the details view prior to this.

            Fix to inserting transactions from terminals directly into a master mailbox table that has serial keying and priority data.
            Priority was supposed to be the highest (value 0) with no serial key value (columns were getting random values).

2018-01-03: TC 3.1.0b: Expand allowable constant string length for CALL parameters from 127 to 255.  Attempt to compile a too-long 
            string will now give compile error rather than simply truncating the parm without comment. 

2018-02-13: SV 3.1.0g: Some enhancements to the line trace utility and a fix that caused corruption in the output file name and a
            subsequent aborting of the trace.  The main enhancement is the addition of the 'm=memory' parameter to allow the initial
            capture of data to be to memory rather than to file.  During capture, the 'm' key can be pressed to see how much data has
            been captured.  The trace data is written to file when line trace is ended.  The name and size of the output files are based
            on the c= and f= parameters.  The output is always written starting with extension .001 and new files are created until all 
            the data is written - again with each file being around the size specified by the capacity parameter or its default.

            Line trace output has been changed slightly to always encode the angle brackets in their encoded  format so that they
            are not confused with the angle brackets used in that encoding.  The value of the angle brackets are: <3C> and <3E>.

2018-03-12: SV 3.1.0g: Performance enhancements for terminal communications and internal terminal command flow.

2018-04-16: SV 3.1.0h: Added support for new option, TCP_INTERFACE, to tell the DCConnect Server which network adapter it should
            bind to if there is more than one and it is important that the DCConnect network traffic should be directed to one 
            specifically.  This does require that the network adapter to be used has a static IP address.  To enable this feature
            create/update the file DCXPO.INI in the \dcconn\data folder, adding a line similar to the following:

              TCP_INTERFACE = 192.168.1.1

            When the DCConnect Server finds this file with this command and a valid IP address, the server will display the 
            following message on startup: 

              Binding will be to network interface: 192.168.1.1 

2018-04-26: SV 3.1.0h: The message, "DCR0009E: PORT_TASK_TCPIP_1 had error writing to the message path: TCPIP_NETWORK, system 
            error = nnnnn." Now provides the terminal name instead of "TCPIP_NETWORK".  This helps to determine which terminals
            in the configuration that have invalid or unreachable IP addresses.

2018-05-30: TC 3.1.0c: Added master mailbox support for 2nd and 3rd optional serial keys.

2018-06-29: TC 3.1.0d: Start of support for control and monitoring of TC via shared memory - for handling the running of TC 
            sessions as services for Windows OS level where Interactive Services is no longer supported (e.g. Windows Server 2016).

            Trace output for the completion of a script no longer shows the following catch-all line for all script types:

                 EndKey/EndVal/EndMatch/EndTime/EndInterval/EndTimeout/EndInterface/EndWebService ( )

            Instead this line will show the appropriate script-ending command by itself.  For example

                 EndMatch ( )

            or

                 EndInterval ( )

2018-08-11: SV 3.1.0i: Fixed problem introduced in last line trace update - where a new output file would be
            generated for each new message, after the total number of lines in all output files equalled the 
            number of bytes specified for the capacity of each file (default = 1 million bytes).

2018-10-22: TL: Fix for TxTCAge tool determining the TC timestamp.

2019-02-14: TC 3.1.0d continued: Added new commands for monitoring and controlling other TC sessions: TC_GET_ACTIVE_SESSIONS,
            TC_GET_SESSION_VALUES and TC_SEND_SESSION_COMMAND.  Handles only single character controller IDs.

2019-06-04: SV 3.1.0j:  Fixed problem with dispatching transactions from a master mailbox -- all pool mailboxes could be blocked
            by a single pool sesssion not releasing a transaction. 

2019-06-21: SV 3.1.0k: Change to API internal communications that now allows API calls to be made to the DCConnect Server running
            as a service from an application not running as a service - as long as both are logged on with the same Windows user ID.

2019-06-24: TC 3.1.0d continued: The new TC_GET_... commands now handle 2 character controller IDs.

            Increased the maximum literal string length that can be used in If or While commands to 128 characters from 64 characters.

            Fix for WS_SetElement / SetWSElement; when a variable is used for the occurrence parameter, the occurrence parameter
            overwrote the value parameter.

            Fixed memory leak for the following commands: WS_SetElement/SetWSElement when element value is a variable, WS_SetElementXPATH 
            when element Value is a variable, WS_AddAttribute if attribute value is a variable and WS_DefineNamespace if the namespace URI
            is a variable.

2020-05-01: TC 3.1.0e: New web service commands: WS_SetHTTPParameter, WS_SetHTTPBody, 
            and WS_AddHTTPHeader.

            New Set and Append commands as short versions of Set_UV_Kbd_Data and Append_UV_Kbd_Data.

            New way to control how trace reenabling works: Reenable_Trace_Via_Restart

            Fix for "Create TC shared mem failed" error and proper handling of shutting down related to the shared
            memory when two sessions try to use the same controller ID.

2020-06-03: SV 3.1.0k continued: Fix for the download of CCFR commands that use a variable for the parameter string.  Prior to the fix, 
            a message similar to the following might be given during the download, causing it to fail:

               In file C:\DCCONN\JOB\TESTBEEP.PGM, invalid attempt to access element 355 of message array.

2020-07-21: TC 3.1.0e continued: Better handling of literal strings that are too long for the If and While commands.

2020-09-23: TC 3.1.0e continued: New commands Begin_Select / Begin_Select2 and End_Select / End_Select2 were added that are similar to 
            the Begin_SQL / Begin_SQL2 and End_SQL / End_SQL2 except that the *Select* commands assume the SQL statement should be
            treated like a SELECT that is attempting to return a result set - as opposed to an INSERT or UPDATE operation.  This
            allows the use of a WITH clause at the beginning of a SELECT statement.  The *SQL* commands assume the SQL is a SELECT
            statement only if the statement starts with the word SELECT or CALL.

            The commands Insert_DB_Table, Select_From_DB_Table and Update_DB_Table now all accept a user variable for the parameter
            in addition to a constant string value for the Qualifier.TableName

2020-10-21: TC 3.1.0f: Changed the error handling for the TC_Get_Session_Values command so that TC no longer terminates if the specified
            controller ID is invalid.  Both this error situation and an invalid attribute name error will now be handled more like the
            TC_Send_Session_Command which sets the LAST_ERROR data part to -501 (DCX_DOES_NOT_EXIST) if the controller ID is invalid 
            or sets it to -534 (DCX_STR_NOT_FOUND) if an invalid attribute name is found.  In either case, an empty set of attribute values 
            will be returned.