DMX Change Log


This is a running summary of changes made to the DMX programs. These may, or may not, be reflected in the issue of the documentation that you have. Some of the changes may be highly technical, and may not necessarily have significance for the user. For the benefit of those browsing online the most recent changes are first.Changes which occurred more than a few years ago will be recorded in OLDCHNGE.RTF.


Homepage | Homepage frame



WINTASKS 2016-08-20


Extension of ~~ operator for both wildcards and regular expressions


The fuzzy matching ~~ operator in Wintasks has been enhanced so that it has the same capability of evaluating regular expressions as the equivalent operator in DMXEFAX below. Whilst there was no immediate operational requirement for this change we felt that the ~~ operator should have the same behaviour in both programs.


DMXEFAX 2016-08-16


Extension of ~~ operator for both wildcards and regular expressions


Previously fuzzy matching was made against a wildcard pattern. Now if the first character of the match pattern is an open square bracket '[' then it will be ignored, but the remainder of the pattern will be used for regular expression evaluation rather than wildcard. For example if you have three parners who require special handling then you could script:


!IF %customerid~~"[\b(5060043303952|5013546028017|5025831027009)\b"

!THEN

...special stuff

!ENDIF


and save yourself several script commands.to simulate OR logic. The use of regular expressions was introduced for Code Conversion.



DMXSETUP 2016-07-21


Overdue Installation Change (prompted by Windows 10)


We finally accepted that UAC problems from Vista onwards which have sometimes stopped the DMXSETUP registering components (and caused it to break off before running the installation customisation) were here to stay. DMXSETUP no longer tries to register key components. Instead we provide a batch file (slightly different for 64 and 32 bit systems) which we ask you to run as administrator.



DMXGWAY 2016-07-12


UDID logging from DMXEFAX and Wintasks


In the special case where a log is generated by DMXEFAX or Wintasks, and the 'element' is specified as UDIDVAL, then the data value from the log will be taken as the UDID immediately without matching up against Partner and Document profile specifications.



DMXEFAX 2016-05-13


Bugfix: !INTERPOLATE mode withdrawn


The substantially untested !INTERPOLATE mode has been withdrawn. It turned out that without the additional handling associated with XML and JSON modes the character handling could be quixotic. Since we merely introduced it, not because it was needed, but because it seemed to fall out as an option when the interpolation function was generalised to add JSON output handling, we do not intend to debug it until it is actually needed.


DMX WebView 2016-04-29


File download


In addition to viewing the files involved in a transaction you can now download them for storage and further examination on your local machine. Changed items are webview4.htm and dmxvbcg3.exe.


DMXEFAX 2016-04-28


Bugfix: Quote enclosed tags


When processing delimited input DMXEFAX traditionally would ignore doublequotes around a three-character initial record tag. This was seldom activated, so we failed to notice that in all our enhancements for handling quoted fields we had broken the capability. It has now been reinstated, and will work for any length of quote enclosed initial tag.


DMXEFAX 2016-04-23


Bugfix: Code conversion buffer overrun


When DMXEFAX was extended to deal with very large fields we inadvertently failed to protect against buffer overrun if the code file was large. This problem has only just become apparent, and we have corrected the relevant code.


WINTASKS 2016-04-10


CLOG command to generate a 'converter' log


The converters, and the reformatters, can generate a log file which can be imported by the Gateway to generate a traffic record. To enable the Gateway to record data traffic which is not conventional EDI, WINTASKS has been given a new command which enables it to write Gateway compatible log entries. The basic format is CLOG log_type log_text although there are some variations to support specialised log records.



DMXEFAX 2016-03-31


/T command line option for character conversion.


To handle the problems which can be caused for applications by the presence of 'foreign' characters in data fields you can now specify a command line option of form /T=conversion_matrix.bin . This turns on character conversion according to the conversion matrix specified. You can convert from any character to up to four others, so that for example æ becomes ae, and ¾ becomes .75. The conversion matrix is generated by the utility EFAXMKTR, which transforms lines in a from=to format to specify characters for which you want to be conversion.


EZEJOIN: Flag to ignore header lines


The /I=nn command line option now instructs EZEJOIN to skip the first nn records of the master file. This allows you to skip unwanted headers. It can now handle the syntactically valid occurrence of linefeeds within fields delimited by doublequotes.


WINTASKS 2015-12-10


THEN / ELSE / ENDIF nesting bug


We think we have removed a bug which, under certain logic combinations, could lead to a false report of a nesting error.


DMXEFAX 2015-11-12


Force a program abort


!ABORT errorlevel "error message"

This command forces a program abort, with the specified integer errorlevel and the specified text (which must be enclosed in doublequotes), for example !ABORT 72 "Missing SKU value". The error text appears in the DMXEFAX.ERR file which is generated when there is an abort. Normally DMXEFAX aborts if there is an operational problem, but this command allows the template script to force an abort if it considers the data or processing to be compromised (e.g. missing mandatory values). The returned errorlevel and the content of DMXEFAX.ERR then allow the task which has invoked DMXEFAX to react appropriately.



WINTASKS 2015-09-07


EXTRACT destination pattern


A rather unusual feature to extract individual items; typically from JSON or XML data. Before it is used you must have used OPEN (or OPEN #0) to open the file to be examined. The first time you subsequently use EXTRACT the contents of that file will be read into a memory buffer. Until the file has been closed (a further OPEN or OPEN #0 statement) that buffer remains in memory for examination. The pattern is a wildcard matching pattern (which cannot start or end with a wildcard). The file is searched for a sequence of characters which match the pattern and then the data after it, up to most common delimiters, is copied to the destination variable location.:



WINTASKS 2015-09-02


Expansion of IF, MATHS, OPEN and READ


Two unrelated changes. The IF # and MATHS commands worked with integers. They can now also use floating point (decimal numbers). IF #f ...whatever .. will now convert the operands to floating point and then make the comparison. A new optional first argument for the MATHS command, /F="format", not only says that the operation is to be floating point, but the format string (standard C printf format code, as in DMXEFAX) determines the format and precision of the result.


The OPEN and READ commands can now have an optional first parameter of form #n where n is a digit from 0 to 4 (since #0 is what is used if no #n parameter is given n is effectively 1 to 4). This allows you to have up to 5 files open for simultaneous reading. For example READ #2 will read lines from the file opened with OPEN #2


These changes are backwards compatible with existing wintasks.


DMXEFAX 2015-08-09


!FILTER command to cleanse data


!FILTER source "from"="to" destination

Thus is used to remove undesirable characters from data in a working variable. Each character in the source is examined and checked against the characters in the from field. If there is a match then the corresponding character from the to field is substituted. If, however, the substitution character is the axe character ( ¬ decimal 172) then instead of replacement the offending character is removed completely. The source and the destination can be the same working variable.


DMXEFAX 2015-07-07


!STACK and !UNSTACK commands for transient storage


A difficulty with DMXEFAX has been if you have two separated repeating sections which need to be combined into a single repeating output. Previously this could only be done by storing in global working variables, and was laborious for a small repetition count and VERY laborious if the count was variable. We have now implemented FIFO (first in first out) lists to enable you to push variables to a stack and later symmetically retrieve them, There are currently 5 stacks you can use (0 to 4), stack 0 is five times larger than the others, and the allocation size for all is increased if you specify a /B=buffersize on command line.


!STACK stackno %variable ........

!UNSTACK stackno %working_variable ........


You can use multiple instances of !STACK and !UNSTACK with diffeent numbers of variables specified in each. The restriction is that in a logical cycle the number of variables stacked and unstacked must be the same. All five stacks are independent.



DMXEFAX 2015-06-28


!PARSE command to extract sub-fields


!PARSE destination source delimiter count

Although DMXEFAX handles two levels of delimiters it is occasionally necessary to extract data items from a compound field which is further delimited. The parse command looks at the source field and, using delimiter to indicate the field divisions, extracts the subfield number count (starting at 1 for the first field) and places it in the destination. Destination is a working %nnn, source is a %nnn, delimiter is a single character, and count can be either a number or a %nnn. For example if %source contains "one|two|three" then


!PARSE %dest %source | 2


will cause %dest to contain "two". If the count exceeds the number of subfields then the last subfield will be returned.



JSON2XML 2015-06-26


Utility to convert JSON to XML


In e-commerce JSON is increasingly used as the transport standard for product data. This utility converts a file containg JSON to a syntactically valid (for DMXEFAX) XML file. There are some wrinkles, such as avoiding the <tag/> shorthand for a field without data, to make the XML easier for DMXEFAX to process under some specialised circumstances.


JSON2XML input.json output.xml



DMXSPOP3,WINTASKS 2015-05-28


Filemask change, minor Wintasks PARSE bugfix


If the extension on a mailbox specification record is .*, the file created will have the same extension as the attachment, or .xxx if there is no attachment extension. This simplifies later processing when DMXSPOP3 is used in an e-commerce context for multiple file types.


A minor bug in the Wintasks PARSE command, which could cause a final trailing delimiter to be appended to the returned data under some circumstances, has been corrected.


DMXROUTE 2015-03-15


Enhanced splitter for TGMS use


Users of Tradanet who are switching to TGMS (Trading Grid) are faced with the problem that selective extractions cannot be made to work reliably when using DMXIFTPS. Rather than requiring them to make significant operational changes to run translation under a profile we have re-worked the old DMXXNET2 splitter so that it can extract interchanges selected by partner and/or APRF (Message Class) to named files. This gives the same operational capability as the Extraction Grid under DMXTRADA. This program is still in alpha evaluation.


DMXEFAX 2015-02-25


RFC4180 compliance problem


Strict compliance with RFC4180 meant that we had to handle linefeeds within quoted strings by escaping them. However we have never actually encountered a quoted string containing a linefeed, but we do get examples of missing quotes which cause the linefeed which terminates a record in a CSV file to be interpreted as lying within a quoted field. This can eventually lead to buffer overrun, since the records no longer seem to terminate. Consequently we now treat all linefeeds as record terminators.

...later...

Since it was the use of " rather than "" to indicate inches within quoted strings which was usually the problem, we have put in specific code to handle this and reinstated RFC 4180 compatibility. The issue is still in beta stage.


DMXEFAX 2014-12-16


Bug in > operator


If a field pushed to global was less than 36 characters in the first iteration encountered, and greater in any subsequent one, we were failing to change the storage allocation method to 'large field'. This could corrupt the local global storage. We have corrected this bug,


DMXCONST 2014-12-01


SQn! bug corrected


If an uncommitted sequence counter is incremented as part of segment processing then it should be decremented again if nothing subsequently is output for the segment. We have corrected the code so that this behaviour is observed.


DMXEFAX DMXFAXC 2014-09-10


%Gn counters augmented


Although DMXEFAX now allows 30 sections, the %Gn counters only went up to %G19. This has now been increased to %G29. Since few jobs ever require more than about five sections this change should be of little consequence. However, if you have templates which use the %INFILE, %OUTFILE or %L parameters you should recompile your matching .fxs files.


DMX WebView 2014-07-01


Multi-user support


WebView now supports the little-used multi-user capabilities of the DMX system. A hidden field in webview1.htm now contains the relevant user number. System administrators can make the field visible and change the relevant user number. If the user number field is empty then all traffic is selectable, as at present.


DMXEFAX 2014-05-18


Use of Regular Expressions in code conversion


A special version of DMXEFAX has been produced which allows the use of regular expression matching to perform code conversion. The presence of an initial open square bracket ( [ ) on a line in a code file signals that the Regex engine is to be invoked; this is a marker to switch to the comparison method and is not part of the Regex itself. In the absence of the initial [ the matching is performed using absolute or wildcard matching as in previous DMXEFAX versions. A simple example could be:


[\b(beans|lentils|peas)\b=pulses


Since this is a very specialised requirement, and its use also requires installation of the matching PCRE.DLL file, a separate version of DMXEFAX has been generated which can be obtained from us, together with the DLL, if needed.

Update 2014-05-19: We have found a work-around for the problem which prevented us from loading PCRE dynamically. The standard DMXEFAX now supports regex code conversion; you only need PCRE.DLL to be installed if you want to use it.


EZEJOIN 2014-04-28


Relaxed key comparisons


When the key fields in master and secondary records are compared, they are now stripped of leading and trailing blanks first and a case-insensitive match is made.


WINTASKS, WEBKGEN 2014-04-16


File timestamps & DST


Unfortunately the way the timestamp on a file is modified for DST (Summer Time) varies across the many operating systems that DMX can be run on. The IFOLDER command in Wintaks can fall foul of this. The only reliable universal way of handling this is to create a file, and then use its timestamp immediately as the current time for a DST compatible comparison. We have introduced this rather clumsy method into Wintasks, and also into the WEBKGEN utility used by agents.


DMXEFAX 2014-03-28


!LEN Function available for !SET


The ability to use functions in a !SET directive has been introduced Currently there is only one.


!SET %dest=!LEN(%variable)


will place the length of the string contained in %variable into %dest. You can only use it in a simple !SET. No code conversion. No concatenation. Not supported in any other statement. In the future we will probably be generalising the use of functions, and the range of them available, although this does violate our 'No Brackets' design rule.


DMXSPOP3 2014-03-18


Bugfix and import mailbox flags


A bug which meant that EDI extracted from mail body on import would not trigger a specified external task has been corrected.


The import mailbox definition grid has been enhanced with a further field flags. This allows you to overwrite the settings of the edi_in_body and content_check states for each mailbox polled. The field can for example contain body=Yes check=Yes to turn on the processing for that mailbox. Allowable settings are Yes True On No False Off. In the absence of a flags definition the .ini file settings are used.


To use this enhancement you will require a new dmxspop3.mdb database with the flags field defined in it.


DMXEFAX 2014-03-02


Quiet Mode


We have introduced a new command line parameter /Z=Q which will set a 'quiet mode' in which no error message is generated if an undefined variable is encountered in a template, and the field will be output as an empty string rather than as the text UNDEFINED_VARIABLE. This is a convenience when working with boilerplate templates for which the .fxs for a particular implementation may be under-defined.


We have also corrected a bug in the handling of the ^b escape sequence. It will now only be transformed to "" if part of doublequote enclosed field. In other cases it will merely transform to " See CSV handling from 2013-10-29.


DMXEFAX DMXGWAY 2013-11-14


Multiple Users


Although DMX has had the capability to support multiple independent users sharing the same system, but with independent views, for many years; the logging capability of DMXEFAX was introduced more recently. We have modified the system so that it is possible to run DMXEFAX as a defined user, and have the resultant logs imported into the Gateway database only for that user. To preserve backward compatibility the DMXEFAX /L command line parameter has been extended rather obscurely. Where you would have used /L you can now use /LUnnn. and where you would have used /LR you can use /LRnnn, where nnn is the 3-digit user number.


DMXGWAY has been modified so that when it is run in User mode (Nnnn command line parameter) it will only import DMXEFAX logs if they have been generated using the same user number.


WINTASKS 2013-11-11


Variable interpolation change


This is a small and rather technical change which will probably affect few users. The internal routine dotbuf(), which is used by the SAY, DISPLAY, and external command invocation logic to interpolate variables into the string provided, has been modified so that %!nnn variables do not have to be followed by one or more blanks. This means that, for example:


SET 0 "PicFile"

MYPROG %!0in.jpg %!0out,jpg


will now resolve to


MYPROG Picfilein.jpg PicFileout.jpg


Internal variables such as %!DATE still have to be blank terminated, since otherwise the parser will not recognise them. Other internal commands, which use resolved arguments, still expect internal variable designations to be blank terminated.


DMXEFAX 2013-11-04


Wildcard code conversion


You can now use wildcards (* and ?) in the from fields of code files. If you specify an * in any section of a code file, that section will be marked as needing pattern matching rather than direct lookup. A section without any asterisks is processed as before, since this has a lower computational load. The matching is case-insensitive, unlike conventional code lookup. Two successive asterisks are not allowed in a matching pattern, and thus will not trigger the wildcard mode for the section. This enhancement was introduced for ecommerce transformations where several similar phrases need to be resolved to the same category code, and thus reduces the effort required to create the code file..


EZEJOIN 2013-11-02


Simple JOIN utility


A utility which gives a simplified database Join capability using two key linked CSV files. It reads a master and secondary file and, if the designated ley fields in the two files match, appends designated fields from the secondary file record to the master file record and outputs it. If there is no key match the master record is output with a matching number of empty fields appended. Any doublequotes in key fields are stripped out before the comparison.


EZEJOIN /M=masterfile,keyfield /S=secondaryfile,keyfield /O=outputfile /T=transferfield,..... [/J] [/D=x]


fields are given as decimal numeric numbers, where 1 is the first field in a record. You can have any number of transfer fields comma separated in the specification, but they must be in ascending order (/T=1,9,13 is OK; /T=1,13,9 is not). Examination of the secondary file will stop after the first match unless the /J command line parameter is present, since normally there is only one secondary record per master record and this speeds up processing.


If, in a /T= specification, you specify a non-numeric character, then that character will be appended to the output record if a match is found. For example /T=3,5,@ would mean that any output record for which a match had been found would conclude with ,@. This can act as a flag to identify records for which a match has been found.


The default field delimiter is the comma. You can vary this by giving the /D=delimiter_character parameter. Caret escaping is recognised, so for a tab delimited file you would specify /D=^I


DMXEFAX 2013-10-29


CSV Handling


The CSV handling on input and output has been modified to match RFC 4180 more closely; particularly in the handling of double-quote enclosed fields which themselves contain double-quote or linefeed. Internally the characters are converted to their caret escaped equivalents.


DMXEFAX 2013-10-16


Bugfix: Permute


A minor bug introduced as a consequence of long field logic on 2013-03-17, which prevented a Permute target from being being updated if it had previously been used, has been corrected.


DMXTRANS 2013-10-06


Bugfix: EXPN Flag


The EXPN=N flag was not working for incoming Tradacoms messages. Since the only Tradacoms messages which do not use explicit nesting are Polaris insurance ones this has only just come to light during internal testing. We have, hopefully, corrected the logic.


DMXEFAX DMXPRINT 2013-10-03


Nested IF constructs


You can now nest IF/THEN/ELSE/ENDIF constructs. Previously this was not supported. You can follow the commands by a space and then a comment if you wish to keep track of what belongs to what!


DMXCONST 2013-10-01


CFIX flag


By default DMXCONST did not remove empty fixed length fields from the generated EDI. Fixed length fields were rare in EDIFACT, and this behaviour undoubtedly had a reason, although after 20 years we cannot quite remember what it was. In some message standards fixed length fields are much more common, and so we have introduced the CFIX flag. If you set FLAG CFIX=Y then empty fixed length fields will be compressed away unless the No-Vanish flag is set in the table. By default, or with CFIX=N, DMXCONST behaves as it did previously.


WINTASKS 2013-09-28


MOVE changes, and more


The MOVE command has been modified so that a hash parameter after the command verb will cause it to select only matching folders:


MOVE # foldername older$$$


will rename 'foldername' to 'older' followed by three unique random characters. This mirrors the capability introduced for the FOR command recently.


The IF ~~ pattern matching operator is now case insensitive.


A bug in the IF command which failed to take account of blanks in quoted strings when positioning the pointer for the next command to be executed has been corrected.


DMXEFAX 2013-09-09


Escape character processing


At the point of output DMXEFAX will now handle the caret escape character convention for conventional and delimited output. SDF output and @....@ constants in delimited output are not processed. This is a slightly controversial change introduced to make it easier to use CSS in templates which generate HTML. We shall monitor it closely and, if necessary, introduce a command line switch to toggle the behaviour.


WINTASKS 2013-08-28


FOR and IF changes


You can now nest FOR and IF/THEN/ENDIF statements. FOR can be nested up to a depth of ten levels. IF/THEN/ELSE/ENDIF can have any level of nesting, but the logic is in terms of their physical order in the task, and could be confused by GOTO or GOSUB which terminate an IF/THEN construct elsewhere. FOR has always worked on files only. If instead of FOR whatever you now put FOR # whatever then only subdirectories will match (note that even an empty folder always has the two subdirectories "." and ".."). Some internal cleanup has also been done, including removing a bug in the CD command which could cause script lines to 'vanish' if the CD was in a subroutine.


D32ALLOW 2013-08-24


Changes for 64-bit systems


DMX programs are 32-bit. They access the registry. Windows has a special registry node for 32-bt programs. It is supposed to handle the use of this node seamlessly. There can, however, be glitches. We have modified the security module used by all DMX programs in order to bypass these glitches when establishing the machine code to be used for enabling key validation. Substituting the new D32ALLOW for the old one on a 64-bit system where the modules are already registered may, or may not, require you to obtain and apply new enabling keys.


This change forces D32ALLOW to look at the primary registry information which identifies the Windows system, rather than the, sometimes incorrect, copies maintained for 32-bit programs. On a 64-bit system you also need to use the 32-bit version oof regedit (c:\Windows\syswow64\regedit.exe) to install enabling keys since ootherwise the 32-bit DMX programs will look in the wrong place for them.


DMXGWAY 2013-08-01


Mail Menu enhancement


You now have a chance to cancel a Mail request made inadvertently, and if you have failed to select a document you will now be informed and no further action will be taken.


DMX WebView2 2013-08-01


XML files now displayed correctly


The cgi will now examine a file before it is displayed, and if it contains XML it will be sent with a text/xml header to enable modern browsers to display it satisfactorily.


WINTASKS 2013-07-28


PARSE command


PARSE destination source separator count


This is used to extract individual fields from a delimited string. The source is the string to be analysed, the separator is the delimiter character (typically a comma), count is the field number to extract (1 will pick up the first field), and destination is the string buffer position into which the extracted string is to be stored. For example:


set 0 123,"234,xxx",345,456

parse 100 %!0 , 2

say 20 %!100


will display "234,xxx". Had we specified a count of 4 it would have displayed 456 .



DMXEFAX 2013-07-10


Escape characters in /U= definition


If you wish to specify odd characters then the caret escape convention is now honoured. ^^ is interpreted as a single ^, otherwise decimal 64 is subtracted from the character following the caret. Escaped characters are physically two characters but they only 'count' as one. For example to process a tab delimited file you could use /U=#^I.### .


WINTASKS 2013-07-10


Increased variable pool size


We have increased the size of the variable buffer pool from 2048 to 16000 characters to cope with operations on massive fields.



DMXEFAX 2013-07-04


PREVIEW command bugfix


The PREVIEW command was unable to 'find' a section whose level tag was defined using advanced matching (this can happen for XML). This has been corrected. This was a very obscure bug, which is why it has taken ten years to identify.


PNMATCH 2013-06-15


Utility to identify files by content pattern matching


This is a utility which reads the first part of a file, compares it to a wildcarded match string, and returns True (1) or False (0) to indicate whether there has been a match. It is surprisingly useful. The command line is:


PNMATCH file_to_examine "pattern match string" [seek_depth]


The wildcard characters you can use in the match string are the conventional * to match zero or any number of characters, and ? to match any one character. The string has an escape character, the caret (^), such that if you precede any character by a caret then it will be transformed to the character which has an ASCII value decimal 64 less. This means, for example, that ^J is a newline, ^b is a doublequote, ^M is a carriage return, ^I is a tab character. There are three exceptions to this rule; ^^ will be interpreted as a single caret character, and ^* and ^? cause matching on asterisk and question mark as data characters which are not considered to be wildcards. It is documented in UTILITY.RTF



HTMBLEND 2013-05-04


Utility to merge command line data into a report


This is a utility which allows you to merge data from its command line into an HTML template (or other files) to generate an output page for web display or as the body/attachment for an email. The command line is


htmblend template_file output_file param0 param1 param2 ......... param9


The template contains HTML comments of the form <!--$$N--> where N is 0 through 9. Whenever such a comment is encountered it is removed from the output but the value of paramN is substituted in the output. Remember that any paramN which contains spaces should be enclosed in quotes e.g. "Format Error". If you specify a $$N for which there is no corresponding paramN then the word MISSING will be used. It is documented in UTILITY.RTF.


DMXEFAX 2013-04-01


CDATA extraction


When processing incoming XML DMXEFAX can now extract from CDATA tags. In the fxs you define somrthing like:


%mytag "![CDATA[*'" 0:1 A ;extract data from a CDATA tag


The 0:1, rather than the 0:0 usual for XML, indicates that the data is to be extracted from the tag itself. No escape processing is applied to the data.. You will probably need to use offset indication in the TPL since there may well be more than one CDATA occurrence at different parts of the XML hierarchy e.g. %mytag<anothertag.


DMXEFAX 2013-02-28


Long data fields re-visited


A month ago we posted about changes to DMXEFAX to cope with data fields up to 4kb in length. It seems we were living in the past; this is an era of Big Data, and now fields of 500kb and greater can be handled. A new command line switch /B=nnn has been introduced, where nnn is the maximum field size in kb, for fields longer than 4kb. When this switch is used you do not have to worry about padding template lines to cope with long field interpolation.


Update: On 2013-03-17 we changed the way global variables were handled so that long fields no longer used the internal memory pool but were allocated independent memory regions. Again this was to support the use of very long data fields.


DMX Generic 2013-02-12


Wildcard matching


Many DMX programs feature the ability to compare a field against a wildcard pattern (this does not apply to Advanced Matching capabilities, which use a special 'EDI Aware' algorithm). The subroutine used to implement this is being changed to a non-recursive form which is considerably faster. The new implementation will not handle multiple successive asterisks in the pattern but, since these were purposeless anyway, this should not have any practical consequences. As before, matching is case-sensitive. The change will be applied when affected programs are re-compiled for other reasons


DMXSPOP3 2013-02-02


Additional argument options for external task


In addition to the %F parameter on the arguments field in the mailbox grid, a number of other %x parameters are now available to pass header information from the email to the called program. Some internal changes have been made to allow connection for secure mail through the Stunnel proxy, and to use case-insensitive matching when checking for allowable strings.


DMXEFAX 2013-01-29


Long data fields


In the good old days DMXEFAX was never expected to encounter a data field longer than 70 characters, and so it had 'generous' allocation of internal buffers to cover longer fields 'just in case'. When used to process delimited files it can potentially encounter fields much, much larger. It has been modified so that it should be OK for fields up to 4k. There is a directive, buried deep in the documentation, telling you that if you use a %nnn on a template line that can represent a large variable then the line should be blank extended until it can accommodate the variable, and ended with a non-blank character to prevent blank stripping when the template is read. This was generally ignored with impunity, but for a data field of over 200 characters you HAVE to do it! We also brought DMXEFAX into line with the other re-formatters to handle delimiters in quoted strings correctly; we must have forgotten it fifteen years ago!


WINTASKS 2013-01-05


Select trailing variable characters


The reference %!-4R100 will return the final four characters of the string variable stored at location 100. The general expression is %!-nRy where n is the number of characters at the right of the string to select, and y is the offset into the variable storage area. The 'R' can actually be any non-numeric character.


DMX Enabling Keys 2012-12-31


Possible problem establishing Machine Code


DMX programs use a security module in which a 'machine code' is established for the PC they run on, and then checks to see if enabling keys have been registered which match the program and the machine code. Amongst other things this requires reading some registry values from HKLM\Software\Microsoft\Windows NT\CurrentVersion. If the account under which DMX is run does not have permissions to read these values then the machine code may be indeterminate, and appear to vary. This means that the programs cannot have stable enabling keys. This is an unusual problem, but if you have problems applying working enabling keys then you should check using Regedit that the DMX account has the necessary Read permission.


WINTASKS 2012-12-18


SIZE command introduced


The command "SIZE n filename" will now place the size of the named file into the string buffer at offset n


DMXGWAY 2012-12-12


GROSS_ERROR flag changed


This is a very minor alteration. Previously when the Gateway processed a converter log which contained no message information it created an entry in the traffic view with the UDID defined as GROSS_ERROR. This is rather too dramatic, so such entries are now defined as NO_CONTENT, which is a more accurate description.


DMXEFAX 2012-12-07


Logging change


DMXEFAX can be set with filters, so that only EDI which matches its templates will be processed. If there was no match in a file then when the log was imported by the Gateway it would be flagged as a GROSS_ERROR, since there were no messages logged. This could be unsightly when multiple passes were made over the same file to extract different possible message types. The logging has been altered so that no record is kept in the log if no matching messages are found. When used for non-EDI files (using the /X or /U modes) the log is not suppressed, since the data in it is under template script control.


WINTASKS 2012-11-18


Weird apparent 'bug'


We recently had a very strange 'bug'. Wintasks refused to run any external process if the original task had been specified with command line arguments (which is unusual); the CreateProcess call failed with a memory access violation. After many hours of investigation it turned out that the behaviour was almost certainly caused by a DLL which had been injected by an external process. We looked at the usual suspects (ZoneAlarm and Avast antivirus) and it was caused by Avast. Setting the particular copy of Wintasks as a trusted program in the Avast behaviour shield cured the problem. Not really a DMX issue, but worth recording. We only switched to Avast from AVG recently, so we had not seen this previously.


DMXCONST/TRANS 2012-10-24


MTOK flag bug fixed


Setting the flag MTOK=N (default =Y) caused non-zero input files to be moved to Trashcan after processing, since the file length for input files was not set and defaulted to zero. This has been corrected. This bug had been around for many years, since in our installations we never set MTOK=N because even an empty file can carry information in a Gateway environment (name, location and timestamp).


WEB KEY GENERATOR 2012-10-08


Bug in .reg file name fixed


If agents used Customer Names which contained special characters an anomaly in Windows stopped the stored .reg file being accessed from the key generator. The cgi for the Key Generator has been modified to create acceptable names when the file is stored locally at EDIMatrix.


DMX WebView 2012-08-15


Ability to view files used by any transaction


The form used to view the traffic selection has been enhanced with javascript and more cgi to allow you to bring up a panel showing the files involved in a transaction, and from there view the relevant files.


Additionally, we are changing the supplied web server from Tinyweb to Mongoose. Tinyweb has proved quixotic in the way it responds to cgi. Mongoose appears more predictable, and also offers more features for security if these are desired.


DMXEFAX DMXPRINT 2012-06-04


Interactive interface change


The interactive interface for DMXPRINT and DMXEFAX does not have input fields for some of the more specialised command line parameters, such as /U= and /X=. The operational kludge was to give an output filename followed by a blank and then the parameter. This meant that output could not be to screen. Now if the 'output filename' is given as a single exclamation mark then no output file wil be opened, but the following parameter is still accepted.


DMXCONST DMXTRANS 2012-05-30


Data logging for X12


X12 segments may be only two characters long. When elements from such segments are logged the log now contains an underscore instead of a null for the third character, thus facilitating its identification as a UDID by DMXGWAY. If B1:0145 is logged then the Gateway should search for B1_0145.


DMXTRADA 2011-12-13


Postbox List spurious logs


The change made on 2011-09-22 stopped DMXTRADA from recording the spurious logs, or trying to reconcile them into the traffic database, but until very recently they were still being sent, and thus creating traffic volume charges. To alert users if this is occurring we now post an entry in the network log saying how many spurious logs have been ignored.


WINTASKS 2011-12-06


Bugfix: JOIN


A bug which caused quoted strings containing blanks to be incorrectly parsed by the JOIN command has, hopefully, been fixed


DMXGWAY 2011-10-29


More Grid Views


The Database Functions panel has been enhanced with buttons to give grid views of the Messages, Interchanges, Files and Admin database tables. Changes made in these grid views are not validated, and if saved may make the Gateway unusable. Use with extreme caution.


DMXGWAY 2011-10-28


Bugfix: Archiving problem on 64-bit systems


DMXGWAY used to run the LHA archiving program using an ancient PIF file from Win16 days! It turned out it referenced COMMAND.COM, which cannot run on 64-bit Windows. We have altered the Gateway to use CMD.EXE directly.


DMXIFTPS 2011-10-27


LCD implemented as parsed command


Until now local directory change (LCD) was handled as an external command, and was performed by code in the FTP client. In the old DMXIFTP the client code was part of the network interface, and the interface 'knew' about the new local folder. In DMXIFTPS the FTP client is external, and whilst the client changed its local folder, the interface did not. This made no difference until you used an unmirror command. We have now introduced "lcd,pathname" which changes directory in the interface and then sends an equivalent external command to the FTP client. LCD without a following comma is still a valid external command.


DMXSETUP 2011-09-28


Installation on Win8-64 Developer Preview


As usual with 64-bit systems DMXSETUP fails before completion because it is not allowed to modify the registry. You then need to run dmx\bin\instl32.exe manually. and to use regsvr32 to register in the dmx\bin folder DAO350.dll, COMDLG32.ocx, THREED.ocx and DBGRID32.ocx Everything should be done as administrator.. The system then appears to work. We believe that there will be no problems with installation on Win8-32. Note: We have now found that providing DMXSETUP.EXE is explicitly 'Run as Administrator' that it works successfully on 64-bit systems.


DMXTRADA 2011-09-22


Postbox List bloat


Tradanet now appears, when a postbox list is requested, to include lines reflecting the extraction requests which have been made. These should not be present, and cause both the postbox and network log files to become bloated. DMXTRADA has been altered to ignore these lines. Note 2011-12-07 It has now been established that this occurs because GXS have switched the user to TGMS using a TIP protocol interface. This interface does not replicate Tradanet behaviour exactly. The switch appears to be made without notification or permission. Note 2011-12-21 GXS seem to have fixed the problem.


DMXEFAX/PRINT/REFRM 2011-09-14


!PREVIEW problem with UNIX files


The converters DMXCONST/TRANS treat their input files as binary streams. The re-formatters open them in text mode, and use the FTELL/FSEEK functions to move around the file when the !PREVIEW command is used. These functions expect that lines be terminated using CR/LF in the input file. Sometimes files generated using the UNIX convention of using LF alone as a terminator are submitted. Most of the time these are compatible, but unfortunately FTELL returns a false position indicator for them. This means that !PREVIEW will not work correctly. Normally files received from UNIX systems are FTP'd over, and the transfer can be set to convrt LF to CR/LF, so this is a very occasional problem. If you touch a file using our FROMUNIX utility then it will be converted to use CR/LF. To change the re-formatters to treat input files as binary would require numerous small changes, and we do not feel the problem justifies the effort.


DMXGWAY 2011-08-17


Grid Views


Buttons have been added to the Partner and Document forms to allow you to view and manipulate the underlying database tables directly. Use with caution. In particular if creating new entries 'blank' fields must contain a single blank; the database design does not allow null fields.


CDLSPLIT 2011-06-21


Automatic delimiter identification


By default CDLSPLIT used to assume that the field delimiter was a comma character. It will now search the first line of the delimited file to find the most frequently occurring character which is neither alphanumeric nor a quote (") and assigns this as the field delimiter. This works well for most delimited files. You can still set the delimiter explicitly from command line. Note: If the fields contain HTML then you may need to set the delimiter explicitly, since the special character used as a delimiter becomes more difficult to identify.


Network Interfaces 2011-05-16


Eliminate Win7 scrolling problem


Under Vista and Win7, unless UAC is disabled, the method used to scroll the list window in all the network interfaces causes a permission denied error 70, and the interface is terminated. We have changed the scrolling method to one which does not cause this problem.


Tradanet Dial-up Access 2011-03-29


GXS closure of DialPlus link


GXS are going to withdraw X.25 access to Tradanet (i.e. the use of BT DialPlus). Since DMX users who dial up for Tradanet access go via DialPlus, we have created a 'kit' available from <www.edmxtech.co.uk/download/> called Tradanet_dial_changes.zip which tells you what to do. You have to switch to TCP/IP use, either by dial-up, or over your existing broadband using VPN software available from GXS.


It has subsequently become apparent that this is part of a strategy by GXS to migrate clients to Trading Grid by using an interface to simulate Tradanet. Until the end of 2011 there were some inconsistencies with this interface.


WINTASKS 2011-03-29


Buglet eliminated


When Wintasks was changed to include label table handling it created a sensitivity to empty lines in the script immediately after the label. Now Wintasks are not supposed to contain empty lines, but in the normal sequential script processing they were ignored. Not so after a label, and Wintasks tried (and failed) to execute the empty line as a command. We have modified the label table creation code to point the label to the first 'real' line after the label.


DMXALARM/DEMON 2011-03-17


Detection of scheduling problems


As a result of the experience of a client whose regular backup procedures potentially could cause the scheduler table DMXWCRON.TAB to be locked, we have altered DMXALARM and DMXDEMON to run the task SCHEDERR.TSK if they detect any problem. This task can then take appropriate steps to alert those responsible for the EDI system.


DMXEFAX 2011-03-08


Bugfix and wildcard input files


A bug has been corrected which stopped the reading of second and subsequent interchanges in a file if the EDI was not a stream. The wildcard input file capability which has been in DMXPRINT for at least a decade has now been added to DMEFAX.


DMXGWAY 2011-03-01


Cassette key logic


The paging logic in the Gateway Traffic Display originated in the days when there was a limit on the amount of data which could be displayed in a list box. It has not been touched in fifteen years, although the option to turn off paging was introduced on 2007-07-18, and few clients have a traffic volume which activates it. We noticed recently that it was broken, and have made changes to correct this, although the logic for determining a final short page appears never to have worked correctly. Thus there is now an improvement, and we will try to sort out the final page problem (which can be bypassed by clicking the >| key when it occurs).


WEBKGEN 2011-02-20


Agent key generator enhancement


A link is now generated on the results screen which allows you to download the .reg file directly.


DMXVBSES 2011-02-05


Log viewing using DMX WebView


A new cgi process has been introduced to let you view the last few days of the session and network logs using a browser. The template WEBVIEW3.HTM has been introduced to allow you to invoke this capability.


DMXCONST/TRANS 2011-01-06


Control file buglet eliminated


Not really worth a change log entry, but we wanted to mark the New Year. The final line of a control file will not now cause problems if you forget the newline terminator.


DMX 16-bit Software


Formal withdrawal notice


This announcement is a formality, since there has been no demand for the 16-bit software (DOS and Win16) for at least a decade, and to our knowledge no client is still using it. With the exception of DMXTEDIT all 16-bit software for DOS or Windows will no longer be available (development ended in 2000). References to Win16 will be progressively removed from all documentation except for the change log. The 'DOS' features are still relevant if the software is run under Unix, which we still support even though there has not been a demand for it for some years.


WINTASKS 2010-11-21


Performance enhancement


We have introduced a label table into Wintasks which speeds up label handling, particularly in large tasks. Depending on your task size and command usage this can give up to 30% better performance.


DMXEFAX 2010-11-20


Bugfix: tilde tag stop character


DMXEFAX and DMXFAXC have been corrected so that the use of a tilde ('~') as the final character in a faxlist tag specification is interpreted as meaning that in the interchange a separator is expected in that position. This means that you can now successfully distinguish between DTM+2 and DTM+200, for example. The behaviour now matches the documentation!


DMXSPOP3 2010-03-20


Option to empty mailbox


If the {SMTPPOP3] key empty_mbox in the dmxgway.ini file is set to 'True' (or one of the other recognised positives) then after the mailbox content has been analysed all messages will be deleted. If True then delete_done is not relevant.. This capability was added to deal with the situation when an EDI mailbox was subject to incoming spam., and should not be used unless all non-EDI messages are irrelevant and unwanted.


DMXBTEDI 2010-02-24


Network interface withdrawn


BT EDI*NET ceased service today, and so the DMXBTEDI module has been withdrawn. Clients have transferred to other networks.


DMXEFAX/PRINT/REFRM 2010-02-20


Codelist inclusion files


Code conversion files can now specify files for inclusion, so that code sections common to several files can now be maintained as a single list which can be included in each of the files by a line of type:


<file_to_include.kod


In addition any line starting with two asterisks is treated as a comment, and not read into the memory code image.


DMXIFTPS 2010-02-19


Ifexist command implementation


The ifexist command was failing to work correctly if the FTP server did not deliver Unix style directory listings (e.g. IIS server in MS-DOS mode). We have altered the analysis of the return data to better detect when there are no matching files. Ifexist is not guaranteed to work for SFTP over SSH sessions, since this is 'pseudo FTP' and the responses may be non-standard.


DMXEFAX/FAXC 2009-11-25


%L inbuilt identifier


A new internal symbol, %L, has been introduced. This returns the number of lines written by DMXEFAX. Any reference to %L in a template resets this count to zero. If existing users of DMXEFAX wish to upgrade to use this capability then both DMXEFAX and DMXFAXC must be upgraded, relevant faxlists re-compiled, and any existing template use of %L changed (this is unlikely!). Please note that the other re-formatters do not as yet have this internal symbol.


DMXCONST/TRANS 2009-11-22


FNDX Flag Verb


FNDX is optionally used to set an index number pattern for output files whose control file specification ends with ".*". Usage is described in DMXCTL.RTF


DMX Windows 7 Installation 2009-10-22


Test under Win 7 32-bit


Providing the account under which the installation is run has full privileges then DMX installs and runs without any apparent problems. Installation on a 64-bit OS is trickier. The installation process often terminates when all necessary files have been installed at the point where it tries to register certain dll's if the account does not have the necessary permissions. You then need to run bin\instl32.exe independently, and then use regsvr32 to register, in the bin\ folder, DAO350.dll, COMDLG32.ocx, THREED.ocx and DBGRID32.ocx .Note: We have now found that providing DMXSETUP.EXE is 'Rnn as Administrator' then installation succeeds directly on 64-bit systems.


DMXSCOMP/TCOMP/TDUMP 2009-10-17


Enhanced listing


DMXSCOMP now displays the generated script code as part of the display it creates. All three programs have had buffer size increases to handle filenames up to 120 characters


DMX Systems No Date!


Problems with Network File Systems


A DMX system typically runs by execution of a series of processes, which communicate with one another through the use of a series of files. The implicit assumption is that the files created by one process are available for subsequent ones. If these processes access files across an NFS then there can be occasions, depending on the way the network is specified, when a file created by one process is not available for another until several seconds have elapsed. At EDIMatrix we specify our tasks so that all core processing occurs with files in folders under the DMX root folder, and this avoids the potential problem. If this is not possible, and a network introduces delays, then you may have to introduce wait periods into your wintasks.


This is a very occasional problem, but it is nothing we can 'fix' directly, since when it happens it is a feature of your network. Network administrators can normally reduce the latency, but may not be able to eliminate it.


DMXGWAY 2009-09-12


Message record commit changes


The Gateway will now not mark a message (document) record as being writeable until both the message reference and message type logs have been processed in a database update run. This addresses the problem in which different programs wrote these two logs in a different order, and could lead to an initial message being marked as undefined or with the wrong message type.


DMXEFAX 2009-08-28


/LR reversed conversion sense logging


If logging is specified DMXEFAX generates a log as for a translation. In specialised circumstances you may wish the log to appear to the Gateway as a construction log. Using /LR rather than /L will activate this behaviour. A deficiency in the logged info for this sense of conversion was corrected on 2009-09-11.


DMXEFAX 2009-06-22


Autotag for delimited files


Previously, if DMXEFAX was used to process delimited files which were not tagged, a pre-processor had to be run to place a dummy tag at the start of each line. It has now been modified so that, if a final T is placed immediately after the six 'UNA' characters of th /U directive (e.g. /U=#,.###T) then every line read will be prefaced by the letter T followed by a data delimiter. The faxlist can then be defined using 'T' as the segment tag.


DMXGWAY 2009-06-18


Changed handling of empty session files


There have been minor changes to the behaviour when an empty session log is imported. We now apply a default datestamp of the import time to the GROSS_ERROR flag line, and the offending log is now indicated so that its actual date and time can be determined. It still cannot be viewed since it is empty! An empty session file can occur if the converter generating it has crashed.


DMXCONST/TRANS 2009-06-05


Default commit to disk for log file


The log file created by the converters is now by default opened as commit to disk. The behaviour is also covered by the DISK flag. There was a suspicion that Windows might be losing the file content if the log was read too soon after it had been created.


DMXCONST/TRANS 2009-05-13


Buffer size for path names


The converters were originally coded for DOS, where the maximum length of a filename with full path could not exceed 80 characters. Under modern Windows longer names are possible. We have increased this size to 120 characters (larger internal name buffers caused strange problems which we have yet to analyse). Using a normal DMX installation with the DMX folder under the root there should be no problems, but be aware that if you access files with a full pathname greater than 120 characters you may well have problems. We recommend staying with the old 8.3 format for filenames themselves. Many DMX programs convert to short filenames internally, but not DMXCONST/TRANS.


DMXCONST 2009-04-29


X12 syntax character in data errored


Previously no searching was done for releasable characters in outgoing X12 data, since X12 does not have a release mechanism. Now if syntax xharacters are found in X12 data fields a warning is generated, and a blank is substituted for the offending character.


DMXTRANS 2009-01-24


Profile advanced matching corrected


The changes on 2008-10-03 introduced a potential error into the handling of advanced matching, which could appear for some forms of match string. This has (hopefully) been corrected.



DMXEFAX 2009-01-05


Extended use of mserial.no


When the rarely-used %0 is referenced as the source for an assignment in a !SET directive, the underlying number which has been read in from the mserial.no file is now incremented after use. Previously the presence of a message marker in the input file would cause incrementing, but with the increasing use of Efax to process non-EDI files this was not ideal when a global unique reference number was needed.


DMXGWAY 2008-12-11


Cosmetic change


The Gateway was originally designed so that its main display would fit onto a VGA monitor. Nowadays this is a bit restrictive, so we have daringly altered the size of the form so that it will fit on an SVGA monitor, and used the extra screen real estate to give a larger traffic view window.


DMXCONST/TRANS 2008-10-31


MOVE behaviour


Based on suspicions that some Windows versions under some circumstances could object to a filename ending with a period, we now create destination filenames ending in ".ok" or ".bad" when moving files. If a file move fails the error code is now logged. The seeding of the random number generator was also rationalised to avoid risk of using the same seed if the converters are run at very short intervals.


DMXPCOMP was also changed slightly to avoid an internal error if there were more than a thousand partners - a situation which has not yet occurred to our knowledge - the most we have heard of is around 650.


DMXGWAY 2008-10-29


Auxiliary file linking


Since the Gateway can legitimately create multiple file table entries for a single file in some circumstances, the linking of an auxiliary file to a destination file now searches for all instances of the destination file name, rather than just the first.


DMXTRANS 2008-10-03


Profile read-ahead buffer increased


DMXTRANS now pre-reads 512 rather than 256 characters into an interchange/message when performing an advanced matching multiple segment search. This enables you to drill deeper for difficult matches.


DMXIFTPS 2008-07-03


Trading Grid compatability


We can now provide a full interface to GXS Trading Grid when accessed using conventional FTP over a VPN. If the SSH SFTP sccess method is used then, whilst files can be sent and received successfully, we currently can find no mechanism for feeding back sent file status information to the Gateway database. This limitation is imposed by the access method.


DMX WebView 2008-05-03


TinyWeb capability


The TinyWeb server (TINY.EXE) from RitLabs is now available in the external folder of installation CD's to allow simple enabling of the Web Traffic Viewing capability. The cgi programs have been altered very slightly to be compatible with this server. An installation text is available as Tinyweb.txt. Note; TinyWeb can truncate the end of pages generated by cgi; however it is still functional for WebView use.


DMXSPOP3 2008-05-02


Import bug corrected


A bug which caused the reading of the list of mailboxes to terminate if one with no mail available was encountered has been corrected.


DMXEFAX DMXPRINT 2008-04-18


Nested !CALL directives


!CALL directives can now be nested without losing the memory of the original calling section. Bug in !PERMUTE $$$ handling in DMXEFAX corrected.


DMXGWAY 2008-01-22


Menu option to mail files to EDIMatrix


The menu item Maintain -> Mail has been added. Providing the Mailer has been installed this will create an archive of the files associated with the currently selected document and email it to support@edimatrix.co.uk.


DMXCONST DMXTRANS 2007-12-01


File movement weakness


After many years we have discovered that the range of filenames generated when files were moved was restricted to about 65,000. This meant that there was a very small chance for high volume users, who had many files in the destination area, of having a move fail. We have now amended the name generation so that there can be 2**31 different names. Theoretically there is still a chance that a unique name would not be found in a thousand attempts but it is now very, VERY small!


DMXIFTPS 2007-11-25


New network interface for secure FTP


This is a new network interface which supports both conventional and secure FTP. It is functionally very similar to the original DMXIFTP interface, but certain script commands have changed syntax. It uses the MOVEitFreely FTPS client from Standard Networks, which will now be part of a DMX distribution, for SLS/TLS secure transfers. We also have available a compilation of the PuTTY PSFTP client which can be used to allow DMXIFTPS to use the SFTP (FTP over a SSH secure shell) standard; this can be used to access GXS Trading Grid mailboxes. This interface supersedes DMXIFTP, which will no longer be developed.


DMXIFTP 2007-11-17


Zones for export scripts


Export scripts can now contain zone identifiers to enable excecution of different sections of the script for different types of export file to the same partner. A zone identifier is an exclamation mark followed by one or more characters which must match the initial characters of the export filename for the script commands following it to be executed.



DMXIFTP 2007-11-14


Enhanced scope for fstatus FTP script command


The fstatus script command can now be used to set a file status which will be recorded in the Gateway database even if the script subsequently fails. You can now stop a file from reverting to NEW status if the error occurred after the main file PUT stage. In the absence of any fstatus commands the file status behaviour of DMXIFTP is as before (mark as Submitted if script is error-free, New if it is not).


WINTASKS 2007-11-01


Pattern matching operator


Wintasks now implements the "~~" pattern matching operator introduced into DMXEFAX/PRINT on 2007-07-05


DMXEFAX 2007-10-25


XML attribute handling


By setting a non-zero subelement counter in the .fxs specification you can now pick up values of element attributes as well as the actual element value.


DMXMLCUT 2007-10-18


/NOX command line flag


If an initial /NOX command line parameter is present the requirement for an initial XML declaration is suppressed. If one is not found the first thing that looks like a tag is used as document start.


DMXEFAX 2007-09-02


Bugfixes - Advanced Matching, !SET Code Conversion


Advanced matching now works correctly in @PARTNER and @MESSAGE lines. !SET code conversion now works in DMXEFAX (and is now documented for both DMXEFAX and DMXPRINT),


DMXGWAY 2007-07-18


No paging option for traffic list view


By default the Gateway will only list 800 documents at a time, with a paging option to see more. In the Options Menu we have added a checkable 'No Page' item. If this is checked then all available documents will appear in the traffic list view. The default is unchecked, which corresponds to the previous Gateway behaviour.


DMXEFAX DMXPRINT 2007-07-05


Pattern matching operator


The comparison operators in the !IF statement have been extended to include a double tilde (~~) operator. This is used with a %nnn to the left of the operator and a quoted string to the right. The quoted string can contain the normal wildcard characters '?' and '*'. If the variable matches the string then the condition is true. For example !IF %invno~~"*X*" will be true if ther is an 'X' anywhere in %invno


DMXGWAY 2007-02-01


Filerror.upd enhancement


If you wish to clear the message status markers (the + or - in the gateway main view) you can place a line in FILERROR.UPD of the form:


#filename


where 'filename' is the name of the destination file they appear in. The file status of 'filename' is not altered.


DMXEFAX DMXPRINT 2006-08-27



STREAM keyword for !XMLMODE


If the keyword STREAM appears on the !XMLMODE line then output will be generated without linefeeds, and leading blanks will be stripped from output lines.


DMXSPOP3 2006-05-05


Multiple mailbox support


The DMX internet mail interface now supports import from multiple mailboxes, with mail handling options specifiable for each mailbox. The features are implemented using the data grid approach common to many of the other network interfaces.


DMXCOMMS 2006-04-21


Tradanet script change


TRADANET.SCR now allows dial up PPP connection to AT&T to allow TCP/IP connection for those not using the VPN software


DMXEFAX 2006-04-18


XML input files CFJ07


DMXEFAX can now process XML input files. A command line parameter of format /X=<>.### will turn on this behaviour. The approach used involves advanced matching on tags and is described in the DMXEFAX documentation.


DMXIBMIE 2006-01-19


Extract filemasks


We now support the use of the $ wildcard character in extraction filemasks. This reduces the risk that a file downloaded in a previous session, but not processed, be overwritten by fresh data. Each occurrence of $ will be replaced by a random digit when the fileid is submitted to IBM IE.


DMXIBMIE 2006-01-10


Password maintenance


When using Expedite Base for Windows 4.7 the normal way to communicate with IBM IE is over the Internet. This no longer requires the SM password management facilities present in DMXIBMIE. It does require that the file BASEIN.PRO be present for each connection. This file was previously used for dynamic changes and deleted after each session. When using iebase 4.7 you will be issued with an EXPEDITE.TSK file which copies BASEIN.RAW to BASEIN.PRO before iebase is invoked. Your original BASEIN.PRO should therefore be copied to BASEIN.RAW before you first use DMXIBMIE.


DMXEFAX 2005-12-28


XML closure tag CFJ06


In XMLMODE where the data field is absent, the XML convention of expressing <tag></tag> as <tag/> is now applied. This takes effect both for template tags and AUTOTAG tags. When using template tags this assumes that the opening and closing tags are on the same template line.


Bugfix: A bug very similar to that corrected in DMXXNET2 on 2005-06-20 has been identified and removed. It could cause interchanges in a mixed EDI standard file to be skipped.


DMXEFAX 2005-07-02


CSV file handling, Message skipping


Bugfix: When used to analyse CSV files (/U= mode) DMXEFAX was failing to recognise field delimiters in a quote-enclosed data field as being part of the data. This has been corrected. An entirely unrelated bug was also corrected; when in message skip mode the mode was not being reset when a new interchange was detected, leading to potential loss of envelope information.


DMXCOMMS


Tradanet Script 2005-06-27


This is a very technical change. The script TRADANET.SCR has been modified to use MODE 8 (substitute for incoming NULL characters) except when receiving a binary file (revert to MODE 9 for the duration of the receive). This follows the discovery that the TIP File Header can contain an illegal NULL, which was never a problem until very fast connection over a VPN combined with a short received file caused the NULL to act as a stop character for the normal WAITFOR trigger string handling.


DMXXNET2


Short Interchange problem 2005-06-20


Bugfix: A bug has been identified which could affect the processing of short interchanges (<2000 bytes) in a file which contained a mixture of different EDI standards. If the forward search logic intended to pass over non-EDI data encountered two interchanges in its buffer it chose one by a priority (Tradacoms > EDIFACT > X12) rather than taking the first one which occurred. This could lead to the short initial interchange being treated as noise. The program has now been altered to detect the first interchange present in the buffer.


DMXSETUP 2005-06-14


Installation Package changed


The DMX installation is now distributed as a single executable rather than several 1.44Mb files. Few people now use diskettes!


DMXCONST 2005-04-20


CSVF/ignore string mismatch fixed *137


Bugfix: Previously if ignore strings were used actively with a delimited inhouse file then warnings about missing tags would be generated. This was an uncommon situation and there was a work-around. Recognition of tagged records to ignore has now been introduced at the level of delimited to SDF record resolution.


DMXCONST/TRANS 2004-11-17


Icon in SysTray for DOZE mode *136


If the converters are run in DOZE mode they will be minimised to the system tray. Right clicking on the icon there will toggle the normal taskbar presence.


DMXALARM 2004-11-10


Icon in SysTray


DMXALARM now places an icon on the SysTray by default instead of appearing minimised on the taskbar. The taskbar presence can be toggled by right-clicking on the SysTray icon. The Tooltip text can be toggled by left-clicking on the SysTray icon. The tooltip text corresponds to the taskbar legend in earlier versions. This change is purely cosmetic; there is no change to the programs functionality.


DMXCONST/TRANS 2004-10-14


Empty file deletion


BUGFIX: A situation in which empty files were not deleted when the flag MTOK=N had been set has been corrected.


DMXGWAY/Network Interfaces 2004-10-06


Problem with Win XP Service Pack 2


Application of SP2 broke the logical linkage amongst the .dlls which support database access, thus rendering the Gateway and Network Interfaces unusable. A quick fix is to move the affected executables from dmx\bin to dmx, and ensure that the required VB5 runtime modules are installed in the Windows system32 folder. We have a separate installation available for the VB5 runtimes required. In some cases all that is required is to re-register a dll using REGSVR32 c:\dmx\bin\dao350.dll .


DMX WebView Released 2004-10-01


Browser access to EDI Gateway database


A CGI interface to allow web browser access to traffic information in the DMXGWAY database. The facilities are similar to the Gateway 'Criteria Select' form. Requires that you have a web server either on, or with network access to, the EDI PC. Documented in DMXWEBVU.RTF.


DMX Online Key Generator 2004-09-07


Browser access to Enabling Keys


Agents and OEMs can now link to a URL on our technical support web server to generate their own .reg files to register the client installations they make. Access to this facility requires a password.


DMXTRANS 2004-07-08


Advanced Matching Profile bug


Bugfix: A bug introduced in Nov. 2002 has been identified and corrected. It stopped advanced matching in a profile at message level from searching beyond the UNH/MHD/ST segment.


DMXCOMMS 2004-06-17


Socket Error handling MXC029


When using TCP/IP if DMXCOMMS now encounters persistent winsock problems during data transmission (100 or more successive attempts fail) it will simulate a carrier loss condition. TCP/IP scripts may need modification to take advantage of this. Winsock problems are now logged, and a possible overrun problem removed. Previously DMXCOMMS did not attempt to monitor the status of an internet connection which it had not established itself.


D32ALLOW 2004-06-15


Datagram sent when Registration screen appears


The security module D32allow will now send a short datagram to EDIMatrix when the registration 'nag' screen appears. This allows us to have your enabling keys ready for you before you request them! The datagram contains no information which is not visible on the registration form (which is concerned entirely with the DMX installation) and does not compromise the security of your system in any way. We use UDP protocol on port 3048. If the EDI machine has no internet connectivity, or your firewall blocks the outgoing message, no harm is done.


SEQNUM 2004-06-08


Minor enhancement for partner names


The Seqnum utility now supports an additional column in which you can put a name to identify the trading partner for a .sqn file. The names are stored in SEQTITLE.TXT in the DMX folder as lines of the form nnnnnn.sqn=nickname.


DMXIFTP 2004-04-19


Improved reliability


The BASP21 object is now deleted and re-created for each FTP connection. This gives greater reliability when a session requires multiple connections.


DMXMLCUT 2004-03-25


XML Data Splitter


This is a new DMX module which identifies and extracts XML documents from a file or group of files according to a profile, and stores them in files which are optionally despatched for further processing. It is documented in DMXMLCUT.RTF


DMXCONST 2004-02-27


Tradacoms File Generation Number


Traditionally we have mirrored the Interchange Reference number as the Tradacoms File Generation Number. This simplifies Gateway tracking, since we track by ICRF, not FLGN. Unfortunately when the ICRF exceeded 9999 this gave problems, since FLGN is only 4 digits. For Tradacoms interchanges only we have made two modifications to behaviour. If the field length of any data element is exceeded then it will be left truncated if numeric and right truncated if alphanumeric. In addition, if a General Sequence Number (table *SQn!) is used to maintain a data element then, if the data element is called FLGN, the sequence number will flip over to 1 if it was previously 9999. If you continue to mirror ICRF for FLGN (table *CA3) then 9999 will increment to 0, which some partners do not accept as a File Generation Number.


DMXEFAX DMXPRINT 2004-01-23


!XMLMODE [AUTOTAG]


This command, which should be used as the first command of the first executed section (i.e. ####1, or the section called by a !INIT) will change the way DMXEFAX/PRINT interpolate data into the template. Conventionally the template is assumed to represent a printed report, and fixed text strings in it will appear in the output starting at the same column as in the template. This means data can overwrite fixed text. If %data was 12345678 then <tag>%data</tag> would be written as <tag>12345678ag> . When !XMLMODE is used the output appears as <tag>12345678</tag> . This command also causes escaping of the XML syntax characters so that if %data was Marks&Spencer the out put would appear as <tag>Marks&amp;Spencer</tag> .


If the parameter AUTOTAG is given, then if you terminate the %nnn tag with a greater than (>) sign it will be automatically wrapped by XML tags. In the example above, in AUTOTAG mode, %data> in the template will appear as <data>Marks&amp;Spencer</data> . This requires that the %nnn names that you use for this feature must be the XML tag names. You can mix tags which you specify yourself and automatically generated tags by the presence and absence of the terminating > character. If you wanted to put in attributes you could write <data id="supplier">%data</data> to generate

<data id="supplier">Marks&amp;Spencer</data> .


This command is ignored if you are in CD or SDF mode. DMXREFRM will also soon be enhanced with this command.



D32ALLOW 2004-01-06


Nag-free running


Irrespective of the expiry date in the D32ALLOW module, unregistered DMX programs will run for a period after initial DMX installation without generating a nag screen. This 'period of grace' has now been increased to two months. This is primarily intended for clients who re-install the system on a new PC. During the final fortnight of this period a reminder box is displayed for the duration of the program run, but no operator acknowledgement is required (since DMX programs are fast you may not be aware of the reminder for many of them). Thereafter the normal nag screen, which does require operator intervention, will appear.


DMXGWAY 2004-01-05


File Numbers & Bookmarks


The Gateway assigns a file number to each file it keeps track of. Previously this number was reset to 1 when it exceeded 99,990 (thus assuming that a user would archive before he had a hundred thousand files stored locally in the DMX subdirectories. This has worked fine for normal usage, but it gave problems if a high-volume user was using the Bookmark function to generate reports, because the presence of earlier files with a higher file number upset the simple bookmark logic. We have now increased the reset value to 9,999,990. This should mean many years of operation before Bookmarking could potentially work anomanously. If it occurs the cure is to archive the whole database, which means that new entries always will have a higher file number than existing ones. Bookmarking is so rarely used that the problem has not been noticed before.


The last vestiges of the old yyyy.mm.dd date format have now been changed. They were lurking in little-used functions and causing sorting problems.


DMXGWAY/Network Interfaces 2004-01-02


Screen Saver Problem


DMXGWAY and the Network Interfaces are written in Visual Basic. Unfortunately this can give problems under some operating system configurations if the programs are run in background mode as part of a scheduled task. When a screen saver (or lock out) is active the VB programs cannot complete their loading process. This is a characteristic of the language, and we cannot program around it. If you MUST run on a locked server or workstation then consider running the scheduler as a service; this seems to avoid the problem. Note: on 2004-09-24 the utility KILLSSVR was introduced (documented in Utility.rtf) which can often turn off a screen saver programmatically,


DMXCONST/TRANS/PCOMP 2003-12-15


Large Compiled Profiles *135


The compiled profile files generated by DMXPCOMP now use 32-bit integers internally for their linkage pointers, thus allowing a much larger profile. The source profile is now pre-read by DMXPCOMP to allocate its internal arrays dynamically. There are thus no longer any restrictions on numbers of partners and messages, or profile size. DMXCONST and DMXTRANS have been modified to expect the new .CPR format, and will reject any not generated in the new format.


This corresponds to version 1.9 of the converters and version 2 of DMXPCOMP. You must install all 3 of the new modules if you want any one of them. Old versions of Const and Trans will crash if used with the new compiled profile. These changes are still in Beta mode.


** OLD PROFILES MUST BE RE-COMPILED WHEN THIS UPDATE IS MADE **




Earlier Change Log entries can be found in the file oldchnge.rtf


D


T


S