Binary mode is what BLT produces when the only inputs are a compiled Informix4GL executable and (optionally) the schema DDL — no source on disk. Source-tree extraction is skipped; BLT inspects the binary directly.
mode: recovery
inputs:
binary:
paths: [examples/Printers.4ge]
schema_ddl:
paths: [examples/printers.sql]
output:
directory: ./report/
BLT emits the recovered behavioural specification as a structured JSON document suitable for handing to a code-writing tool (Claude, GPT, Cursor, &c.) for downstream rewrite or analysis. In binary mode the source-derived sections (functions, workflows, transactions) are empty by design — the binary inspector carries the load instead via two binary-derived sections: binary_functions (per-function rollup with the call graph resolved to names) and sql_fragments (heuristic SQL strings recovered from the executable). The full file ships as examples/printers_binary_code_spec.json — ~7.5 KB.
{
"format": "ble-code-spec-v1",
"application": "Printers",
"database": null,
"tables": [
{
"name": "printers",
"schema": "informix",
"columns": [
{ "name": "id", "type": "SERIAL", "nullable": false },
{ "name": "name", "type": "CHAR(20)", "nullable": false },
{ "name": "desc", "type": "CHAR(60)", "nullable": false },
{ "name": "cmd", "type": "CHAR(20)", "nullable": false },
{ "name": "dest", "type": "CHAR(1)", "nullable": true },
{ "name": "active", "type": "CHAR(1)", "nullable": true }
],
"constraints": [
{ "kind": "check", "predicate": "active IN ('Y', 'N')" },
{ "kind": "check", "name": "printers_dest",
"predicate": "dest IN ('E', 'S', 'P', 'D', 'T')" }
],
"indexes": [ { "name": "iu_printers", "unique": true,
"columns": ["id"], "method": "btree" } ]
}
],
"functions": [],
"screens": [],
"workflows": [],
"transactions": [],
"binary_functions": [
{
"name": "add_det",
"name_origin": "symtab",
"block_count": 65,
"instruction_count": 930,
"calls": [
{ "callee": "init_buf", "count": 3 }
],
"calls_out_unresolved": 106,
"calls_in_count": 1
},
{
"name": "update_det",
"name_origin": "symtab",
"block_count": 96,
"instruction_count": 1381,
"calls": [
{ "callee": "begin_work", "count": 1 },
{ "callee": "dowork", "count": 3 },
{ "callee": "init_buf", "count": 1 }
],
"calls_out_unresolved": 171,
"calls_in_count": 1
},
{
"name": "delete_det",
"name_origin": "symtab",
"block_count": 44,
"instruction_count": 489,
"calls": [
{ "callee": "init_buf", "count": 1 }
],
"calls_out_unresolved": 70,
"calls_in_count": 1
}
],
"sql_fragments": [
{ "anchor": "DELETE", "tables": ["printers"],
"value": "delete from printers where rowid = ?" },
{ "anchor": "INSERT", "tables": ["printers"],
"value": "insert into printers ( id , name , desc , cmd , dest , active ) values ( ? , ? , ? , ? , ? , ? )" },
{ "anchor": "UPDATE", "tables": ["printers"],
"value": "update printers set ( name , desc , cmd , dest , active ) = ( ? , ? , ? , ? , ? ) where rowid = ?" },
{ "anchor": "SELECT", "tables": [],
"value": "select count(*) from " }
]
}
A binary-mode run on Printers.4ge yields 17 binary-function entries (the 12 source-level CRUD / navigation functions plus 5 runtime helpers like main and _start) and 7 SQL fragments (the three full DML statements plus four fragmented SELECT heads the runtime concatenates with table names at execution).
The calls list per function names only the calls the inspector resolved to other defined functions in the binary (init_buf, begin_work, dowork); the calls_out_unresolved count covers the remaining edges — calls into the Informix4GL runtime, libc, and other external symbols that are real call sites but don't resolve to a function the inspector recovered. The two together give a complete density picture without claiming to know what we don't.
Binary mode is the path you take when the source has been lost, when you are auditing a deployed application without rebuilding it, or when you want a second independent derivation to corroborate the source-mode output. Even without source, the recovered evidence is rich: every function entry, every embedded SQL fragment, and every call into the Informix4GL runtime is captured and indexed by virtual address so a reviewer can walk findings against the binary.
To discuss how Oninit ® can assist please call on +1-913-732-8892 or alternatively just send an email specifying your requirements.
You get all this for free.. think about what you get if you pay us