dotnet/examples/ pairs a 4GL program with the C# the generator should
produce for it, hand-written so the target shape is settled before the
generator is pointed at it. It covers the cases the 2012 output got
wrong: MONEY (which emitted "unknown_8"), CHAR padding, a NULL that has
to survive the round trip, a cursor loop, and NOTFOUND as a status
rather than an error.
End-to-end tests run it against SQLite with a recording UI channel, a
JSON channel, and no channel at all - proving a generated program needs
neither a screen nor Informix to run or be tested. The session now
carries the UI channel alongside SQL and status.