ubb / Unique Business Basic Free report

Compatibility · What runs today

What runs today.And what we build for you.

Everything on this page was measured against the runtime you license today — the same program, the same file and the same arithmetic, executed on both engines and compared. Then we do it again on your corpus, free, and scope exactly what your migration involves. If you are the person who has to stand behind this decision, this page was written for you.

Your corpus is the spec. Not our feature list.

How this gets scoped
The free compatibility report reads your actual programs and scopes exactly what your migration involves — before you commit to anything.

01 What we've verified

Measured on a real production corpus. Not on a benchmark suite.

Every number here comes from differential testing: the same program, the same file and the same arithmetic executed on both engines and compared. Not sampled, not extrapolated, and not rounded in our favour.

5,079

Programs parsed, 100%

An entire production corpus — the whole directory, not a curated subset. Nothing set aside as "unsupported syntax".

536,000

Lines of Business Basic source

Four decades of accumulated business rules read by the front end without a single exception thrown.

3.63M

Records read byte-exact

3,631,827 records across ten production files, read on both runtimes and compared record for record against the incumbent.

245/245

Arithmetic cases penny-exact

Decimal conformance including PRECISION rounding. Financial software: every case has to match, so every case is a test.

2ms

Keyed lookup on that same file

Native SQL using the file's own key index — against 3,665 ms for the full sequential scan of the identical query.

0%

CPU per idle session

A signed-on user who isn't typing costs nothing. The naive implementation busy-loops, and that is how servers get sized wrong.

The write path is gated, not assumed

Reading is the easy half. Records our engine writes are read back in the incumbent runtime and compared byte for byte — on real multi-level B-tree keyed files with node splits, deletions and free-list reuse, not on a toy fixture. If a written record differs by one byte, the build doesn't ship.

A real distribution ERP runs end to end today

Not a demo program and not a test harness: sign-on, master menu, customer inquiry, item maintenance and reports, on unmodified source against real data files. Our own company's orders go through this engine, which means the first phone call about a wrong number comes from our warehouse, not from yours.

  • SIGN-ON
  • MENU
  • INQUIRY
  • MAINTENANCE
  • REPORTS

That chain, on unmodified source and real data files, is what "runs end to end today" means here. It is also the order we demonstrate it in, because it is the order your own people would go through it.

02 The language surface

Roughly 60 verbs, 50 functions, 30 mnemonics.

Below is a scannable sample of what's implemented, so you can go looking for the specific thing you're worried about. If it isn't listed, that means it isn't in this sample — not that it isn't implemented. The parser answers the question properly in an afternoon.

Verbs

Control flow, program flow, file declaration and file I/O. A sample of the implemented set:

  • LET
  • PRINT
  • INPUT
  • READ
  • WRITE
  • EXTRACT
  • FIND
  • REMOVE
  • OPEN
  • CLOSE
  • ERASE
  • DIM
  • IF
  • THEN
  • ELSE
  • ENDIF
  • FOR
  • NEXT
  • WHILE
  • WEND
  • GOTO
  • GOSUB
  • RETURN
  • ON
  • SWITCH
  • CASE
  • SWEND
  • CALL
  • ENTER
  • EXIT
  • EXITTO
  • ESCAPE
  • SETERR
  • RETRY
  • STOP
  • END
  • RUN
  • PRECISION
  • LOCK
  • UNLOCK
  • BEGIN
  • CLEAR
  • RELEASE
  • WAIT
  • DIRECT
  • INDEXED
  • SERIAL
  • STRING
  • SORT
  • RENAME

Functions

String, numeric, conversion, bitwise, and the file and key introspection functions your utilities lean on:

  • STR()
  • NUM()
  • LEN()
  • POS()
  • FILL()
  • PAD()
  • CVS()
  • DEC()
  • BIN()
  • ATH()
  • HTA()
  • MSK()
  • NOT()
  • AND()
  • OR()
  • XOR()
  • MOD()
  • ABS()
  • INT()
  • SQR()
  • SGN()
  • MIN()
  • MAX()
  • RND()
  • DATE()
  • TCB()
  • FIN()
  • FID()
  • IND()
  • LST()
  • KEY()
  • KEYF()
  • KEYL()
  • KEYN()
  • KEYP()

Terminal mnemonics

Passed through raw by the incumbent, so these are an interface rather than an implementation detail. Cursor addressing, clearing, attributes, color, line draw and windows:

  • '@(c,r)'
  • 'CS'
  • 'CL'
  • 'CE'
  • 'CR'
  • 'LF'
  • 'BR'
  • 'ER'
  • 'BU'
  • 'EU'
  • 'BB'
  • 'EB'
  • 'SB'
  • 'SF'
  • 'LD'
  • 'LE'
  • 'WINDOW'
  • 'POP'
  • 'SCROLL'

The I/O option set

The options that turn a read into control flow. All of them branch and behave the way the incumbent does, including a branch to a line number that doesn't exist rounding up to the next one that does:

  • KEY=
  • DOM=
  • ERR=
  • END=
  • SIZ=
  • TIM=
  • SRT=
  • TBL=

File types: multi-level B-tree keyed files, fixed-record direct files, serial and string files — all opened in place, in their existing format, with their existing keys and their existing alternate key segments.

Alternate keys, descending key segments, segment offsets and padding are handled the way each file's own header describes them, not the way the manual summarises them. A wrong alternate key doesn't crash anything — it quietly finds the wrong record — so this is one of the places we test hardest.

Whatever your shop does that nobody else does. That is the part we build.

Forty years of a business writing its own software means forty years of things no product anticipated. Custom print paths, an integration somebody wrote in 1998, a report the whole company runs on. None of that is an exception here — it is the work.

03 Built to your corpus

Custom is not an upsell here. It is the method.

We do not hand you a product and a list of remediation items. Your assessment reads your actual programs and your actual files, and what it finds is what we build against — by the engineers who wrote the engine, not by a partner network.

Printing and output, your way

Every shop's print story is its own — forms, spoolers, pre-printed stock, the label printer in the back. We engineer output against what you actually run, rather than inheriting forty-year-old constraints and calling that compatibility.

Reporting built against your data

Native SQL over your own keyed files, key-index aware, so a lookup stays a lookup at 2 ms. The query shapes your business depends on come out of your assessment and get built into your migration.

Third-party and legacy code

Integrations written decades ago by people who have long since left. The assessment inventories every one of them and tells you exactly what each needs — before you have committed to anything.

Every terminal, everywhere

Your people sign on over SSH exactly as they do today, or in a browser with nothing to install — branch counter, warehouse, home. Same screens, same F-keys, same muscle memory, and neither method is a price lever.

The free compatibility report is the front door to all of it: upload your source, and it comes back with your corpus inventoried program by program. Nothing about your migration is guessed at, and nothing is quoted before it is scoped.

04 Find out for certain

Stop guessing at your own compatibility.

The numbers above are ours. The only ones that matter to you are yours — and we'll produce them from your actual source, free, with no call and no salesperson attached to the download.

Free · automated · yours to keep

Send your program directory. Get the real answer back.

We run your corpus through the same parser that produced the 100% figure above and hand back exactly which of your programs run, which need attention and why, and what your migration actually involves — including the custom work your shop needs, scoped and priced before you commit to anything. As far as we know, nobody has ever been able to give you that answer before.

Get your free report

01Tar it up

Programs only. No data.

One archive of your program directory. We do not want your data files, your customer list or your general ledger to answer this question — the parser only reads source. A full corpus is typically only a few megabytes.

02Send it

Email it, or we'll give you an upload.

Small archives go by email. Larger ones get a private upload link. If your counsel wants a mutual NDA in place first, ask for one and we'll sign it — your source is yours, we claim no license to it, and it is deleted on request.

  • Mutual NDA on request
  • Deleted on request
  • No license claimed

03Read the report

What runs, what needs attention, what it takes.

Program by program, with the reasons named rather than summarised — every third-party and legacy integration inventoried, with what each one needs. Then a plain-language description of what your migration actually involves, scoped before you have committed to anything.

  • Runs today
  • Needs attention
  • Integrations named
  • Migration shape

Start here · Free, and yours to keep

Find out where you actually stand.

The report is automated, it costs nothing, and you keep it whether or not you ever speak to us again. At minimum you learn something concrete about a system nobody has been able to describe to you in years — program by program, in your own source.

or read the detail

Platform covers how the engine, the terminal and the SQL layer actually work. Migration covers the parallel run and the cutover weekend. Or email hello@uniquebb.com and one of the people who wrote this will answer you.