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.