ROUND/TRUNC/MOD/POW/EXP/LOGN/LOG10 were "not implemented" stubs and
failed to link. Implemented in builtin_d.c. ROUND and TRUNC work on the
decimal text rather than the double, so ROUND(1.005,2) gives 1.01 and
agrees with LET onto a DECIMAL(10,2); rounding the double gave 1.00.
Not added to std_funcs.c - that would reserve the names and break
programs defining their own, as tools/misql/coxxc04.4gl does.
CHAR(n) truncation could cut a UTF-8 character in half and leave invalid
bytes in the field. A4GL_trim_partial_char blanks a partial trailing
character; the field keeps its width and ASCII is unaffected.
UI protocol field names made consistent: MOVEWINDOW sent x/y, OPTIONS
sent option/value and WAITFOREVENT sent context, against uppercase
everywhere else. MOVEWINDOW was also emitting a malformed tag on both
XML paths (a stray / mid-tag). The Angular OPTIONS handler now accepts
the old and new names, so it works against either runtime.
dotnet/: .NET 8 runtime - 4GL types (CHAR/NCHAR as one character-counted
type, decimal for DECIMAL and MONEY, DateOnly for DATE, qualified
DATETIME and INTERVAL), SQL over a pluggable driver chosen by
A4GL_SQLTYPE with no provider dependency in the core, and the UI
protocol channel. 71 tests, plus a harness that runs the same probe
through both runtimes and diffs them.
Also adds 24 ExtJS command handlers that were never committed.