| Commit | Date | |
|---|---|---|
|
[r13090]
by
mikeaubury
Add an INTERVAL fidelity probe Checks INTERVAL qualifiers against the C runtime, and in particular what the Three INTERVAL cases are deliberately left out because the C runtime is wrong run.sh no longer writes its own entry point: the generator emits a static Main |
2026-09-05 12:35:31 | Tree |
|
[r13089]
by
mikeaubury
C# runtime: INTERVAL qualifiers, LOAD/UNLOAD, PUT, and missing builtins INTERVAL now carries its qualifier as a value. FglIntervalQualifier holds the Also on the temporal types: arithmetic on DATETIME and INTERVAL, DATE plus or LOAD and UNLOAD are implemented, following Informix's delimited format - one Missing builtins added: writeln, FGL_LASTKEY and FGL_KEYVAL (using the STATUS is assignable, routed through a setter that keeps the status fields The client/server call layer still throws, but with the signatures its |
2026-09-05 12:35:17 | Tree |
|
[r13088]
by
mikeaubury
Put the whole C# runtime in one directory The runtime was split across two trees: four files under lib/liblex/lex_cs/ The four move to where the rest of them are: FglStrings, FglEnvironment and No code change - the files move as they are, with their history. |
2026-09-05 12:34:24 | Tree |
|
[r13087]
by
mikeaubury
C# back end: type fidelity, INTERVAL qualifiers, LOAD/UNLOAD SMALLINT was collapsed onto INTEGER in three places, each producing an int? - the cast fallback switch fell DTYPE_SMINT through into DTYPE_INT INTERVAL qualifiers are now built rather than spelled out. The leading field's LOAD and UNLOAD were A4GL_assertion(1, "Not implemented yet"), so any module Also here: |
2026-09-05 12:32:40 | Tree |
|
[r13086]
by
mikeaubury
C# back end: report group breaks compile without an ORDER BY ordGroup was declared inside "if (cnt)" - only when the report has ORDER BY |
2026-09-05 12:32:36 | Tree |
|
[r13085]
by
mikeaubury
C# back end: escape identifiers that are C# keywords A 4GL variable is emitted with an L_/M_/G_ prefix and cannot collide with a C# public int? ref; which will not compile. bad_idents.c already had the mechanism for this and its word list was empty, so Applied at the use site and at all four declaration sites - flat members, |
2026-09-05 12:32:11 | Tree |
|
[r13084]
by
mikeaubury
C# back end: resolve decode_cmd_type locally libLEX_CSNEW.so shipped with an unresolved symbol. decode_cmd_type is only libLEX_CSNEW.so: undefined symbol: decode_cmd_type leaving a half written output file behind. fgl_enums.c and fgl_enums.h are copied here from lex_esqlc rather than linked |
2026-09-05 12:31:55 | Tree |
|
[r13083]
by
mikeaubury
Bound the prototype parameter and return lists add_bolton splits a prototype's parameter and return lists into char *p_params[200]; with no bounds check, so a prototypes file listing more than 200 of either *** stack smashing detected *** : terminated A prototypes file is input data. No input should be able to smash the Prototype for <name> has more than 199 return values - ignoring the rest |
2026-09-05 12:31:40 | Tree |
|
[r13082]
by
mikeaubury
Coerce SMALLINT properly, and let make_cast be forced ensure_smint tested for DTYPE_SMINT and then cast to DTYPE_INT. It was the only Also: 4GL says SMALLINT minus a literal is still SMALLINT, so no conversion was make_cast took a "force" flag and never consulted it, so a cast that is a no-op No change to the C back end's output on the example suite. |
2026-09-05 12:31:28 | Tree |
|
[r13081]
by
mikeaubury
Fix INTERVAL YEAR TO MONTH arithmetic Two bugs in the same function, both of which threw away the month part of a v1 = data_a[0] + data_a[1] / 12; data_a is an int array, so dividing by an int truncated - every YEAR TO MONTH double yd, md; y is declared, initialised to zero and never assigned; the months are what is Together these make subtraction correct where the result is positive and |
2026-09-05 12:30:53 | Tree |