Est. 1983 Intermediate

APPX ILF

APPX ILF is the small, keyword-driven procedural language embedded in APPX, a commercial fourth-generation business application environment descended from 1970s Wang minicomputer tooling - a language you never write a whole program in, only the exceptions to one that was generated for you.

Created by APPX Software, Inc. - previously TOM Software, Inc. (originally The Office Manager), Seattle, Washington

Paradigm Procedural and event-driven. ILF routines are short statement sequences attached to predefined event points inside a generated APPX process; each statement is one keyword plus operands, with a leading true/false indicator rather than nested blocks. There are no user-defined types, no first-class functions and no free-standing programs - ILF exists only inside the surrounding 4GL
Typing Static and declaration-driven, but the declarations live in the APPX data dictionary rather than in the code. Every field an ILF statement touches is a dictionary-defined field with a known type, length and edit mask, and the ILF editor validates references against the dictionary as they are typed
First Appeared Circa 1983 (approximate - the vendor dates the product lineage to SPEED II on Wang VS in the early 1980s without naming a specific year)
Latest Version Ships as a component of APPX; APPX Server 6.2.1 released January 6, 2026

APPX ILF - the Integrated Language Facility - is the procedural language embedded inside APPX, a commercial fourth-generation environment for building and running business applications. It is not a language you use to write an application. It is the language you use to write the parts of an application that APPX could not generate for you.

That distinction is the whole point. In APPX you describe your data in a dictionary, describe your processes as menus, inputs, outputs, updates, queries and jobs, and the environment generates the screens, the file handling, the reporting and the navigation. When the generated behaviour is not quite what the business needs - a total that must be accumulated conditionally, a field that must be disabled for one class of user, a validation that spans three files - you attach a short ILF routine to a specific event point in the generated process. Most ILF routines are a handful of lines. Very few are more than a screenful. The language is deliberately incapable of being anything else.

History and Origins

The lineage runs back further than the APPX name. The original developer was The Office Manager - abbreviated T.O.M., later TOM Software, Inc. - founded in Seattle, Washington in the mid-1970s by a group of college students and their professor. Their product, first called the TOM Utilities and then SPEED, was a design environment that used structured programming techniques and subroutine calls to produce custom software in the Basic-2 language on Wang 2200 series minicomputers.

SPEED II, rewritten for the newer Wang VS architecture, was introduced in the early 1980s and, by the vendor’s own account, became one of the most popular software products in the Wang VS community. This is the generation in which the shape of modern APPX - a data dictionary, generated processes, and a small embedded language for the exceptions - was established. The year 1983 is commonly attached to APPX ILF in language catalogues; the vendor’s own history places the SPEED II era in the early 1980s but does not name a specific year, so the date here should be read as approximate rather than documented.

What saved the product was a well-timed retreat from proprietary hardware. As Wang’s market position declined through the late 1980s, the company began porting to non-proprietary platforms, and the resulting platform-independent product took the name APPX - a contraction of APPlication eXcellence. APPX Software, Inc. was incorporated in March 1988; TOM Software licensed marketing rights to Kennedy and Company of Richmond, Virginia in 1991; Kennedy was sold to Tredegar Industries in December 1992; and in 1993 the company took the APPX name, Tredegar funded R&D, and the vendor’s history records the initial Windows and Linux ports as completed. In January 1998 three former resellers bought the company, installed Steve Frizzell of C-Side Systems as president, and moved the headquarters to Jacksonville, Florida, where it has remained.

The commercial history matters more than usual here, because ILF has no existence outside the product. There is no standard, no independent implementation, no open-source reimplementation, and no community compiler. The language survives exactly as long as the company selling the environment does.

Design Philosophy

The language is the exception handler, not the program. APPX generates the ordinary parts of a business application from declarations. ILF exists to override, extend and interrupt that generated behaviour at defined moments. A designer who finds themselves writing hundreds of lines of ILF is, by the environment’s own logic, using it wrong.

Event points, not entry points. An ILF routine is never invoked by name from the top. It is bound to a predefined chronological point during the execution of a process - before a child process is invoked, after it returns, when a frame is entered, when a field is validated, and so on. Each kind of process component - menu, input, frame, image - exposes its own set of event points. The unit of composition is “when does this run”, not “who calls this”.

One keyword per line, columns not parentheses. Each ILF statement is a single keyword (SET, IF, READ, COMPUTE) followed by operands laid out in fixed positions: field names qualified by application, file names, constants, relational operators like EQ and GT, arithmetic operators. There is no expression nesting to speak of and no punctuation-heavy syntax. The result reads more like a filled-in form than like code - which is the intent, since the audience was business application designers, not systems programmers.

The dictionary is the type system. ILF has no type declarations because it does not need them: every field is defined once in the APPX data dictionary with a type, length and edit mask, and the ILF editor is fully integrated with that dictionary. Field references are cross-checked against it as you type, and syntactically invalid entries are refused at entry time rather than at compile time.

Portability by indirection. Because ILF talks to the dictionary rather than to a file format, the vendor’s claim is that the same routines run against ISAM files or against Oracle, Microsoft SQL Server, MySQL, PostgreSQL and ODBC-compliant back ends, and across the operating systems it supports, without modification. Persuading a language to outlive its hardware was the founding problem of this product line, and the answer was to keep the language from knowing anything concrete.

Key Features

The shape of a routine

A short, illustrative ILF fragment, in roughly the column layout the editor produces:

SET      TAP WORK COUNT                 =      10
IF       1EX MONTH                      GE     10
T     COMPUTE  1EX WORK TOTAL AMOUNT          +  TAP WORK AMOUNT
F     END

Four statements, and three things worth noticing. Field names carry a qualifier (TAP, 1EX) identifying which application and file the field belongs to - names are dictionary paths, not local variables. Comparison uses word operators (GE), not symbols. And the T and F in the left margin are true/false indicators: rather than opening a block, an IF sets a condition, and each following statement declares whether it runs when that condition is true or false. Control flow is expressed as a column, not as nesting.

Statement categories

The documented statement set groups into seven functional categories:

CategoryPurposeRepresentative keywords
Field-relatedModify and compute field valuesAPPEND, CALC, COMPUTE, SET
Date/timeDate arithmetic and comparisonDATE ADD, DATE BTW, SET DATE, SET DAY, SET MNTH
ControlFlow control and invoking non-APPX programsBEG LOOP, END LOOP, CALL, COPY, EXIT, GOSUB, GOTO, JOB, LABEL, MENU, RETURN, RUN, SUBR
Condition-testingLogic tests feeding the true/false indicatorsIF, AND, OR
Image-relatedOverride screen and report presentationAT FIELD, BLINK, BOLD, COLOR, DISABLE, DISPLAY, ENABLE, FONT, INVERSE, NO INPUT, PICTURE, POSITION, REFRESH, ULINE
File-relatedRecord and transaction operationsOPEN, CLOSE, READ, READNEXT, WRITE, REWRITE, DELETE, CREATE, BEG READ, END READ, BEG AT, END AT, IF EXIST, COMMIT, ROLLBACK, SAVEPNT, SCRATCH, RELEASE
Text-relatedMessages and comments*, **, MESSAGE, WARNING

The list is a fair portrait of what the language is for. There is a full transaction vocabulary - COMMIT, ROLLBACK, SAVEPNT - sitting next to statements for making a field blink. Both are things a business application designer needs at three in the afternoon; neither is something a general-purpose language would put in its core.

SUBR invokes an APPX subroutine process from inside a routine, which is how reusable logic is factored: the reusable unit is a process in the application, not a function in the language.

Compilation

ILF is compiled, but lazily and invisibly. APPX checks at run time whether a process has been changed since it was last compiled, and if so compiles it into an executable module before running it - so verification and compilation happen when an end user first executes a process, not when the designer saves a change. First run after an edit is slower; subsequent runs use the compiled module. Designers who would rather find out about errors before their users do can trigger a syntax check manually from the Toolbox menu in Application Design.

The debugger

The ILF debugger is unusually good for a language this small, and it is the tool most APPX designers would name first. It opens when a TRAP statement is reached during testing, or automatically on a run-time error such as numeric overflow. It shows the statements around the current line with the next one highlighted, a field-value window, and tooltips giving a field’s value when you hover over it in the source. The toolbar covers Go, Cancel, Single Step, Step Into, Step Return, Toggle Trap, Edit Values and Watchpoint; watchpoints re-enter the debugger when a monitored field changes, and a process stack view shows the ancestor processes that led here.

From Release 5.0.0 the original character-mode debugger was replaced by this GUI version. Characteristically for a product with a thirty-year installed base, the old one did not go away - setting APPX_OLD_DBG=1 in appx.env brings it back.

Evolution

ReleaseDateChange of note
APPX 3.5.2February 19, 1999Oldest release in the vendor’s public download archive
APPX 4.2.0December 17, 2003Opens the long-lived 4.2 line
APPX 4.2.aJanuary 3, 2007Last 4.x release in the archive
APPX 5.0.xfrom 2012 in the archiveGUI ILF debugger replaces the character-mode debugger as of 5.0.0
APPX 5.5.0April 4, 2020Line numbers in the ILF editor; new verbs EXITREAD, SQL, DEL ALL; two-factor authentication in the runtime
APPX Desktop 6.2.0October 31, 2023JSON parsing (.JSON PARSE, .JSON PARSE FILE), XML writing, .CONVERT TO BASE64 / .CONVERT FROM BASE64, revised regex relational operators in IF, ILF editing and debugging from the HTML client
APPX Server 6.2.1 (Windows)January 6, 2026Current server release; the 5.5.x line also continues to receive maintenance releases

Read across four decades, the additions tell a consistent story: the language keeps acquiring verbs for whatever the outside world has started speaking. A SQL escape hatch in 2020 and JSON and Base64 in the 6.2 generation are not language design in any deep sense - they are a dictionary-driven environment conceding, verb by verb, that its applications now have to exchange data with systems that know nothing about APPX dictionaries. The core - keyword statements, true/false indicators, event points, dictionary-resolved fields - has not changed in any way a 1990s designer would find disorienting.

Platform Support and Availability

APPX is commercial software; there is no free implementation and no way to run ILF outside a licensed APPX installation, which is why there is no Docker image listed on this page. The vendor organises its server releases under five platform families - IBM AIX, HP-UX, Sun Solaris, Microsoft Windows and Linux - and states that applications run unchanged across them; the specific OS versions and processor architectures listed on those pages vary by release and some of them refer to hardware and operating systems long out of support, so treat the list as the vendor’s rather than as a current compatibility matrix. Back-end storage can be APPX ISAM files or a relational database through the dictionary layer - the vendor names Oracle, Microsoft SQL Server, MySQL, PostgreSQL and ODBC-compliant systems. Clients come in character, desktop GUI and HTML flavours, with the 6.2 generation adding ILF editing and debugging to the HTML client.

Documentation is public even though the software is not: the APPX Application Design Manual, including the full ILF keyword reference, is on the vendor’s wiki and documentation site across many product versions, which is a better historical record than most commercial 4GLs of this era left behind.

Current Relevance

APPX ILF is, by any measure of visibility, invisible. It has no package ecosystem, essentially no conference or Stack Overflow presence, few if any jobs advertised by the language’s name, and no open-source projects written in it that are easy to find. The mainstream language popularity indices do not appear to track it. If you have not worked at a site that runs APPX, you will never encounter it.

It is also not dead. APPX Server 6.2.1 shipped on January 6, 2026, the 5.5.x maintenance line is still being updated alongside it, and the vendor continues to sell both the environment and vertical applications built on it - archives management, Medicaid payment reconciliation for Florida counties, student exchange administration, summer food program administration. That combination - continuous commercial maintenance, essentially zero public mindshare - is the normal end state for a successful 4GL, not an anomaly. The customers are organisations that bought a business system in the 1980s or 1990s, have modified it steadily ever since by editing ILF at event points, and have never had a reason severe enough to justify rewriting it.

Why It Matters

APPX ILF is a clean specimen of an idea that dominated commercial software development in the 1980s and then largely lost: that application programming should be declaration plus exceptions. You declare your data and your processes, the environment generates the application, and you write code only where the generated behaviour is wrong. Everything about ILF follows from that premise - the tiny statement set, the absence of user-defined types, the event-point binding, the fact that a routine is a fragment rather than a program.

The premise did not survive contact with the general-purpose languages, and the reasons are visible in the language itself. Code that only exists as fragments attached to points inside a proprietary environment cannot be diffed usefully, cannot be tested outside the environment, cannot be shared, and cannot be searched for by a developer who has not been trained on the product. The industry chose ecosystems, and ecosystems require code that is a file.

But it is worth noticing what the model bought, because current tooling is busy rediscovering pieces of it. Portability across five platform families and a range of relational back ends without touching the code. A data dictionary that, the vendor says, creates and restructures tables from the design records themselves. A debugger with watchpoints and a process stack for a language whose typical routine is a handful of lines. And an application whose source ships with it, in a form a customer can modify at defined extension points instead of forking. Low-code platforms sell exactly this arrangement today, generally with less rigour about where the code goes.

The other thing ILF illustrates is how strange the survival curve is for commercial languages. This one began as a code generator for Wang 2200 minicomputers written by students and a professor in mid-1970s Seattle, outlived its hardware, its architecture, its company name, its owners and its user interface, and acquired a JSON parser in 2023. Almost nothing about it is remembered, and it is still shipping.

Timeline

1970s
The Office Manager (T.O.M., later TOM Software, Inc.) is founded in Seattle, Washington by a group of college students and their professor. Their first product, the TOM Utilities - later renamed SPEED - is a design environment that uses structured programming techniques and subroutine calls to generate custom software in Basic-2 on Wang 2200 series minicomputers. This is the ancestor of everything that follows
Early 1980s
SPEED II, rewritten for the newer Wang VS architecture, is introduced in the early 1980s and, according to the vendor's own history, becomes one of the most popular software products in the Wang VS community. The design-time/run-time split and the embedded procedural language that later became APPX ILF belong to this generation of the product. The commonly cited 1983 date for APPX ILF falls in this window but is not confirmed by a primary source
Late 1980s
With Wang's market position declining through the late 1980s, the company begins porting the product to non-proprietary hardware and operating systems, creating the platform-independent product named APPX - a contraction of APPlication eXcellence. This is the decision that turns a Wang-specific tool into the portable environment APPX became
1988
APPX Software, Inc. is incorporated in March 1988, though the product line and its user base considerably predate the company name
1991
TOM Software licenses marketing rights to Kennedy and Company, a reseller based in Richmond, Virginia
1992
Kennedy and Company is sold to Tredegar Industries in December 1992
1993
The company is renamed APPX Software, Inc., Tredegar invests in R&D, and the vendor's history records the initial Windows and Linux ports as completed - the point at which ILF code written for Wang hardware starts running on commodity machines
1998
In January 1998 APPX Software is purchased by three of its former resellers, Steve Frizzell of C-Side Systems is named president, and the headquarters moves to Jacksonville, Florida
1999
APPX 3.5.2 is released on February 19, 1999 - the oldest release the vendor still lists in its public download archive, and the practical start of the documented release record
2003
APPX 4.2.0 is released on December 17, 2003, opening the 4.2 line that runs through 4.2.a in January 2007 and remains in service at many sites for years afterward
2012
The 5.x line reaches the public archive with APPX 5.0.4 on February 27, 2012. Effective with Release 5.0.0 the original character-mode ILF debugger is replaced by a GUI ILF debugger offering single step, step into, step return, watchpoints, editable field values and a process stack display
2020
APPX 5.5.0 is released on April 4, 2020, adding line numbers to the ILF editor, a multi-widget editor, and the new ILF verbs EXITREAD, SQL and DEL ALL - the SQL verb being a notable concession that not everything fits the dictionary-driven file model
2023
APPX Desktop Products 6.2.0 is released on October 31, 2023. The 6.2 generation adds JSON parsing APIs (.JSON PARSE and .JSON PARSE FILE), XML writing, Base64 conversion verbs, revised regular-expression relational operators in IF statements, and ILF code creation and debugging from the HTML client
2026
APPX Server 6.2.1 for Microsoft Windows is released on January 6, 2026, with the 5.5.x line also still receiving maintenance releases - a product quietly alive roughly four decades after its Wang-era ancestor

Notable Uses & Legacy

AXAEM (archives and records lifecycle management)

AXAEM is a records lifecycle management system for archivists - retention schedules, accessioning, microfilm and scanner equipment tracking, finding aids, catalog records, preservation and patron services, compliant with MARC, EAD, EAC, DACS and OAI-PMH. It is built on the APPX engine, was developed for the Utah State Archives - which documents its own use of it - and the State Archives of North Carolina runs a public AXAEM catalog. It is the most substantial publicly visible system whose business logic is written in ILF.

APPX Business Applications (accounting and distribution suite)

APPX ships a full source-available business suite written in its own environment - General Ledger, Accounts Payable, Accounts Receivable, Inventory Control, Purchase Orders, Order Entry, Commission Accounting, Sales Analysis and Budget Analysis, with published user manuals for each. Because the source is delivered as APPX application design records, customers routinely modify the shipped logic by editing ILF routines at event points rather than forking a codebase.

Medicaid Payment Reconciliation System

A vertical solution offered by APPX Software for reconciling Medicaid client payments for Florida counties - a representative example of the long-lived, regulation-driven, low-visibility government systems that make up much of the installed base.

YEAH! - Youth Exchange Administration Hub

Enterprise management software for international student exchange programs, sold by APPX Software as a packaged vertical application built on the APPX environment. Rotary International has publicly described the tool as supporting Rotary Youth Exchange administration across its districts.

Summer Food Manager

A vertical application for administering summer food service programs, another of the packaged solutions APPX Software builds and sells on top of its own development environment.

Running Today

Run examples using the official Docker image:

docker pull
Last updated: