Focus
A 1975 fourth-generation language for IBM mainframes that let non-programmers write English-like report requests against a self-describing database, and which still ships today as ibi FOCUS for z/OS.
Created by Gerald D. Cohen, with Peter Mittelman and Martin Slagowitz (Information Builders)
FOCUS is a fourth-generation language and database system produced by Information Builders, first sold in 1975 for IBM mainframes. Its premise was that a manager, analyst, or clerk should be able to get a report out of a corporate database without filing a request with the programming department and waiting three months. Instead of writing a COBOL program to open files, loop over records, accumulate totals and format a page, a FOCUS user wrote what looked like an English sentence — TABLE FILE SALES / SUM AMOUNT BY REGION BY PRODUCT / END — and FOCUS worked out the file access, the sorting, the breaks, the subtotals and the page layout. That idea was not unique to FOCUS, but FOCUS is the product that carried it furthest: by 1990 it was reported as the most widely used 4GL in the world.
History and Origins
The story starts one company earlier. Gerald D. Cohen was a principal developer of RAMIS at Mathematica Products Group, a system usually credited as the first fourth-generation language. In October 1975 Cohen left Mathematica and, with Peter Mittelman and Martin Slagowitz, incorporated Information Builders in New York City. He then rebuilt the idea as FOCUS, and the resemblance was not subtle — the syntax has been described as almost a direct clone of RAMIS syntax. The two products, along with NCSS’s NOMAD, competed head to head through the late 1970s and early 1980s in what was then a new category: software you sold to end users rather than to programmers.
Information Builders had no mainframe of its own. FOCUS was written on leased IBM machine time and sold initially to customers who reached it through commercial time-sharing services, which suited the product: a language whose whole point was that you could type a request and see a report was a natural fit for an interactive terminal session. Revenue from those time-sharing licensees funded the next expansion.
That expansion was the personal computer. An early attempt on the Apple II went nowhere, but work on an IBM PC version began in 1982 and a PC release was ready when the IBM PC XT launched in 1983. PC/FOCUS mattered enormously to the company’s numbers — by 1990 Information Builders claimed roughly 100,000 PC licences against about 5,000 mainframe and minicomputer installations. Ports to Digital VAX and Wang VS arrived in 1986, and to Hewlett-Packard, Tandem and the IBM AS/400 in 1988. For a stretch in the late 1980s and early 1990s FOCUS was one of the few products that let an organisation write essentially the same report request on a mainframe, a minicomputer and a desktop.
Design Philosophy
Three convictions run through the design.
The data description belongs outside the program. A FOCUS application does not hard-code record layouts. It reads a Master File Description — a separate metadata file naming each field, its format, its alias, and the segment structure it belongs to. Several different Master Files can describe the same physical data in different ways, which is how FOCUS could present a hierarchical IMS database, a VSAM file, a DB2 table and its own native FOCUS database through one uniform reporting language. Later releases split the physical connection details into a companion Access File.
The common case should be non-procedural. In a report request the user states what is wanted, not how to get it. There is no explicit open, no read loop, no close, no sort invocation; FOCUS supplies the implicit record loop, the sort, the control breaks and the totals. In this respect it is a close relative of RPG, which also wraps user code in an implied cycle — but FOCUS presents the idea in English-like verbs rather than a column-oriented specification form.
Procedural escape hatches when you need them. Reporting alone does not build an application, so FOCUS pairs the non-procedural report language with genuinely procedural facilities: Dialogue Manager for control flow and parameters, MODIFY and later MAINTAIN for transaction processing, and a host-language interface so COBOL, FORTRAN or PL/I programs can call into FOCUS data services.
Key Features
The report language: TABLE
TABLE is the heart of FOCUS. A request opens with the file, lists display verbs and fields, adds sort phrases, filters, and formatting directives, and closes with END:
TABLE FILE CAR
SUM SALES AND COMPUTE
AVG_SALE/D12.2 = SALES / UNITS ;
BY COUNTRY
BY CAR
WHERE COUNTRY NE 'ENGLAND';
ON COUNTRY SUBTOTAL
ON TABLE COLUMN-TOTAL
END
The vocabulary is small and consistent: PRINT and LIST show detail lines, SUM and COUNT aggregate, BY sorts vertically and creates control breaks, ACROSS pivots values into columns, WHERE and IF filter, COMPUTE derives a value at display time, and ON ... SUBTOTAL inserts break totals. DEFINE adds virtual fields that behave like real ones for the whole request, and JOIN links files through common keys so a single request can span data sources.
Output is not limited to a printed page. ON TABLE HOLD writes the answer set to an intermediate file — including the native FOCUS format, complete with an automatically generated Master File — so multi-pass reporting becomes a chain of requests, each reading the previous one’s HOLD file. Companion facilities cover the rest of the reporting surface: GRAPH for charts, MATCH FILE for set-style merges of two answer sets, and FML, the Financial Modeling Language, for row-oriented financial statements where the rows are named line items rather than data values.
Dialogue Manager
Dialogue Manager is the procedural wrapper. Its lines begin with a hyphen and are processed before FOCUS sees the surrounding request, making it a macro and control language layered over the report language. Variables are prefixed with & for local scope and && for global:
-DEFAULT ®ION = 'EAST'
-IF ®ION EQ 'ALL' GOTO ALLREGIONS ;
TABLE FILE SALES
SUM AMOUNT BY PRODUCT
WHERE REGION EQ '®ION'
END
-RUN
-TYPE Rows retrieved: &LINES
-GOTO DONE
-ALLREGIONS
TABLE FILE SALES
SUM AMOUNT BY REGION BY PRODUCT
END
-DONE
-SET assigns, -IF ... GOTO branches, -PROMPT asks the user, -TYPE writes to the terminal, -READ and -WRITE handle sequential files, -INCLUDE pulls in another procedure, and -RUN forces accumulated FOCUS commands to execute so that system variables such as &LINES and &RECORDS become available. Because substitution happens textually, a Dialogue Manager procedure can assemble an entire report request at run time from parameters — the standard way FOCUS applications gave users a menu instead of a syntax manual.
Data maintenance: MODIFY and MAINTAIN
MODIFY is the original transaction language, and it is where FOCUS looks least like a query tool. A MODIFY procedure walks the segment hierarchy with MATCH and reacts to whether the key was found:
MODIFY FILE EMPLOYEE
PROMPT EMP_ID
MATCH EMP_ID
ON NOMATCH REJECT
ON MATCH PROMPT SALARY
ON MATCH UPDATE SALARY
DATA
END
Input can come from PROMPT (interactive), FIXFORM or FREEFORM (external transaction files), or inline DATA. MAINTAIN, added in later releases, replaced this record-at-a-time model with a more conventional procedural language featuring stacks of records in memory, functions, and screen handling — a response to the fact that MODIFY’s implicit cycle, like RPG’s, is elegant for simple updates and awkward for anything else.
Full-screen work was handled by FIDEL, the Full-screen Data Entry Language, which painted 3270 forms; FSCAN provided a full-screen editor for browsing and patching data directly; and FOCCALC offered a spreadsheet-style view over FOCUS data.
The FOCUS database
FOCUS ships its own database engine as well as adapters to everyone else’s. A FOCUS data source is hierarchical: segments arranged in parent-child relationships, addressed through the Master File. It supports multiple key structures and cross-references, and files carry their own description, which is why a HOLD file in FOCUS format can be reported on immediately without anyone writing metadata by hand. On the mainframe, FOCUS reads DB2, IMS, VSAM, Adabas, CA Datacom, CA IDMS and SQL/DS alongside its native format, with the adapter layer hiding the differences from the report request. That adapter layer was successful enough on its own that Information Builders spun the idea out as the EDA product line in 1991.
Evolution
FOCUS grew by absorbing platforms and data sources rather than by changing its language. The core TABLE FILE ... END idiom a user learned in 1978 still works. What changed underneath:
| Era | Development |
|---|---|
| 1975-1981 | IBM mainframe product, sold heavily through time-sharing bureaus |
| 1982-1985 | PC/FOCUS, network edition, and the host-language interface |
| 1986-1990 | Ports to VAX, Wang VS, HP, Tandem and AS/400; peak of the 4GL market |
| 1991-1996 | EDA/SQL middleware; MAINTAIN replaces MODIFY for new application work |
| 1997-2000s | WebFOCUS moves the reporting language to the browser; the mainframe product settles into versions 7.x |
| 2010s-present | The mainframe line goes 64-bit at release 8207, and continues as ibi FOCUS 9.x under TIBCO and then Cloud Software Group |
The 8207 release is the sharpest technical break in the product’s later life: it is a fully 64-bit, Language Environment application, and its libraries must be installed in PDSE format, so sites upgrading from 7.6 could not simply reuse the older installation tooling.
Ownership changed too. Information Builders stayed private and family-run for 45 years under Cohen, who died in December 2020. TIBCO announced its acquisition in October 2020 and completed it in January 2021 — reportedly TIBCO’s largest deal at the time — rebranding the analytics business as ibi. The ibi Platform launched on 25 July 2024, with ibi Mainframe carrying FOCUS, WebFOCUS for mainframe, FOCUS Studio and a set of adapters.
Current Relevance
Calling FOCUS dormant is fair as a language and wrong as a product. Nobody is starting new FOCUS applications, there is no open-source implementation, no package ecosystem, no Docker image, and no meaningful hobbyist community; you cannot download an interpreter and try the examples above on a laptop. On the other hand, the vendor documents supported mainframe releases stretching back to FOCUS 7.0.8R with no announced end-of-life, publishes current documentation for the 9.3.x line, and publishes a z/OS compatibility matrix that, as of its September 2024 revision, certified releases through z/OS V3R1. That combination — no new adoption, no retirement either — is the classic profile of enterprise mainframe software.
What keeps it alive is the same thing that keeps COBOL alive: the reports work, they have been reconciled against the general ledger for thirty years, and the data they read still lives in IMS and VSAM. Rewriting a decade of accumulated FOCUS report requests into a modern BI tool is a project with real cost and no visible benefit until the last one is converted. So the requests keep running, and third-party tooling — BMC’s iStrobe performance analyser has a FOCUS-specific module — still treats FOCUS CPU consumption as a problem worth measuring.
Note that documented platform support today is narrow: the current ibi FOCUS release is documented and certified primarily for z/OS, and it is sold as part of a mainframe bundle. Third-party and legacy vendor materials still list other environments such as z/VM, so treat any single-platform statement as approximate. The VAX, Wang, HP, Tandem and AS/400 ports, and PC/FOCUS, belong to the product’s history rather than its current catalogue.
Why It Matters
FOCUS is the commercial high-water mark of an argument the industry has now had several times: that the bottleneck in getting value out of corporate data is the programmer, and that the fix is a language ordinary users can write. The 4GL wave of the late 1970s and 1980s made that argument first, and FOCUS won it commercially — 600,000 claimed users, a reported million machines by 1993, and a private software company that company histories put at roughly $191 million in 1990 revenues on the strength of it.
The argument has kept coming back in new clothes. Business intelligence suites, self-service dashboards, spreadsheet pivot tables, semantic layers, and natural-language query interfaces all rest on the same premise FOCUS shipped in 1975, and several of them recapitulate its architecture. The Master File Description — a governed, reusable description of what the data means, kept separate from both the storage and the query — is the direct ancestor of the semantic layer in every modern BI product. TABLE FILE ... SUM ... BY ... ACROSS is a pivot table specified in text a decade before the spreadsheet pivot table existed.
FOCUS also demonstrates the durable limitation of the idea. The declarative core is genuinely learnable in an afternoon, but real applications needed parameters, so Dialogue Manager appeared; they needed updates, so MODIFY appeared; MODIFY’s implicit cycle proved too rigid, so MAINTAIN appeared. Each layer moved the product back toward being a programming language that programmers maintain. Every subsequent generation of end-user tooling has walked the same path, which is the most useful thing a 1975 4GL still has to teach.
Sources
- FOCUS - Wikipedia
- Information Builders - Wikipedia
- History of Information Builders, Inc. - FundingUniverse
- What Is FOCUS? - ibi FOCUS documentation
- ibi FOCUS mainframe compatibility information
- TIBCO Completes Acquisition of Information Builders (Business Wire, January 2021)
- FOCUS documentation, Campus Information Retrieval System, California State University
- FOCUS module - BMC AMI iStrobe documentation
Timeline
Notable Uses & Legacy
California State University - Campus Information Retrieval System
The CSU system's CIRS reporting environment ran FOCUS on an IBM S/390 mainframe and published Information Builders' FOCUS 7.6 manuals to its own users, a well-documented example of a large public institution writing FOCUS report requests against administrative and human-resources data
Commercial time-sharing bureaus
FOCUS was itself developed on leased IBM mainframe time and originally sold to be reached remotely through time-sharing services, which put an English-like reporting language in front of customers who never had a machine of their own
Fortune 1000 mainframe reporting shops
Through the 1980s FOCUS reportedly became a standard ad hoc reporting tool in large corporate MIS departments; by 1993 the company reported the product running on roughly one million computers across mainframe, minicomputer and PC installations
ibi Mainframe (Cloud Software Group)
FOCUS is still a shipping, supported product: ibi FOCUS runs report requests on z/OS against DB2, IMS, Adabas, CA Datacom, CA IDMS and VSAM data, and is sold as part of the ibi Mainframe bundle
BMC AMI iStrobe
BMC's mainframe performance analyser ships a dedicated FOCUS module that attributes CPU time inside FOCUS report requests, evidence that FOCUS workloads remain significant enough on production z/OS systems to need tuning tools