***** WARNING: COMPATIBILITY CHANGE *****
We are now reverting back to the way these keys were handled prior to 5.1.1133 (when a change was made such that the XTF_HOME and XTF_END flags causes HOME and END to exit (without requiring the Control key to be pressed). Although that change seemed like a good idea at the time, it has apparently caused a major problem in at least one app that was counting on the old behaviour and just discovered the new behaviour. After lengthy and heated debated, we made the decision to roll back the behavior and introduce a pair of new flags to allow the behavior from 5.1.1133 thru 5.1.1145.5 to be continued.
Note that if you don't use the XTF_HOME or XTF_END flags, this change will not affect you.
Also note that for ATE environments, the change is only on the ATE side.
To implement the new flags, since we were out of bits in the XTREE FLAGS parameter, we now support a new expanded form of the parameter:
MAP1 XFLAGS'X
MAP2 XFLAGS,B,4 ! original XTF_xxx flags
MAP2 XFLAGS2,B,4 ! new XTF2_xxx flags
If you don't care about the new XTF2_xxx flags, you can continue to use the original form of the FLAGS parameter (passing it as a B,4 or F,6). But if you want to use the new XTF2_xxx flags, you must switch to the new format as shown above.
The new flags are defined in the updated XTREE.DEF as:
define XTF2_HOME_CTRL = &h00000001
define XTF2_END_CTRL = &h00000002
(The XTF2_ prefix is meant to remind you that the above flags relate to the second flags longword, i.e. XFLAGS2 in the map above.)
The XTF_xxx_CTRL flags, as their names hopefully suggest, affect the behavior or need for the combination of the Control key with the xxxx (HOME or END) key. When set, and assuming that the corresponding XTF_HOME and/or XTF_END are also set, then these bits reverse the behavior of the Control key in conjunction with the HOME / END keys. Thus, HOME and END without the Control+ will be interpreted as exit keys, while Control+HOME/END will be interpreted as a navigation request to the first/last row.
WARNING: Older versions of A-Shell will not recognize this new format of passing XFLAGS as an unformatted structure, causing XTREE to fail to understand any of your flags. If that presents a problem, the workaround is to map the FLAGS argument as an array of 2 B,4 elements, e.g.
MAP1 XFLAGS(2),B,4
In that case, pass XFLAGS(1) for the flags argument and XTREE will just assume that you passed an array of 2 elements, with the 2nd element containing the XTF2_xxx flags.
ATE, however, does not present any particular compatibility issues. Versions prior to 1146 simply won't see the XTF2_xxx flags. So, if you have only one or a few servers to update, but uncountable ATE clients, then it may be better to update those servers and use the XFLAGS'X format, since it is more extensible and A-Shell doesn't have to assume that there are at least 2 elements in the array.