Continuing to work through what a large real application needs. This
takes it from 430 compile errors to 164.
DATETIME and INTERVAL fetches carry their qualifiers - 99 of the errors.
A DATETIME's precision is part of its type in 4GL, so the generator
emits the from/to units at every fetch, and ASqlResult had no overload
taking them.
SQLCA answers to its 4GL spelling. Generated code writes sqlca.sqlcode,
not SqlCode, so both are there now; sqlerrp is empty rather than
invented, since a managed driver has no routine name to report.
CURRENT comes in two shapes. Bare, it is a value - so a property, using
YEAR TO FRACTION(3), which is what a bare CURRENT means. With a
qualifier the generator passes the clause as text, and that form is now
CurrentQual, because a property and a method cannot share a name.
INT_FLAG and QUIT_FLAG are int? rather than int. They are INTEGER
variables in 4GL and generated code assigns AsInt(...) to them, which
is int?; declaring them int meant every such assignment wanted a cast
the generator does not emit.
One thing worth recording, because it will happen again: adding Current
to FglModule collided with a member of that name in the test example,
and would collide with any 4GL program that has its own. The example is
renamed, but every unqualified builtin added to the base class narrows
the space of names a 4GL program may use. It is the price of the
generator emitting these unqualified, and it argues for keeping that
surface no larger than it has to be.
203 runtime tests pass and all six end-to-end programs still agree with
the C runtime.