Est. 1975 Intermediate

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)

Paradigm Procedural and non-procedural: report specification, data manipulation, and a macro-style Dialogue Manager
Typing Static, declared externally in Master File Descriptions rather than in program source
First Appeared 1975
Latest Version ibi FOCUS for Mainframe 9.3.x (documentation for 9.3.7 published around 2025)

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 &REGION = 'EAST'
-IF &REGION EQ 'ALL' GOTO ALLREGIONS ;
TABLE FILE SALES
SUM AMOUNT BY PRODUCT
WHERE REGION EQ '&REGION'
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:

EraDevelopment
1975-1981IBM mainframe product, sold heavily through time-sharing bureaus
1982-1985PC/FOCUS, network edition, and the host-language interface
1986-1990Ports to VAX, Wang VS, HP, Tandem and AS/400; peak of the 4GL market
1991-1996EDA/SQL middleware; MAINTAIN replaces MODIFY for new application work
1997-2000sWebFOCUS moves the reporting language to the browser; the mainframe product settles into versions 7.x
2010s-presentThe 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

Timeline

1975
Gerald D. Cohen, previously a principal developer of RAMIS at Mathematica, leaves that company in October 1975 and incorporates Information Builders in New York City with Peter Mittelman and Martin Slagowitz. FOCUS is written as a mainframe fourth-generation language whose syntax closely follows the RAMIS product Cohen had helped build
1977
Information Builders signs its first international contract, with the Swedish firm Datema, beginning the overseas distribution that would later account for a large share of FOCUS revenue
1979
The FOCUS user group FUSE is formed, with its first branch in Palo Alto, California; by 1990 the company counted 53 user groups in the United States
1982
Development begins on an IBM PC version of FOCUS, funded largely out of revenue from mainframe time-sharing licensees; an earlier attempt to put the product on the Apple II had not succeeded
1983
A PC version of FOCUS is ready when the IBM PC XT reaches the market, the beginning of the product line later sold as PC/FOCUS
1985
A single-user PC release, a network version, and a host-language interface (allowing COBOL, FORTRAN, PL/I and other programs to call FOCUS data services) are introduced
1986
FOCUS is ported beyond the IBM mainframe to Digital VAX and Wang VS minicomputers
1988
Versions for Hewlett-Packard, Tandem, and the IBM AS/400 follow, making FOCUS one of the most widely ported 4GLs of the era
1990
FOCUS is reported as the most widely used 4GL product in the world. Information Builders claims roughly 600,000 users, about 100,000 PC/FOCUS licences sold and around 5,000 mainframe and minicomputer installations, on 1990 revenues of about $191 million
1991
The EDA (Enterprise Data Access) product line is introduced, generalising the data-adapter layer that FOCUS had grown into a standalone middleware product for reaching many databases from one interface
1997
WebFOCUS is released, carrying the FOCUS reporting language onto the web with a thin-client, browser-based front end; company histories date the first WebFOCUS announcement to 1996
2006
FOCUS for Mainframe Version 7.6 is the current mainframe release of this period; its manuals were redistributed by customer sites such as California State University, and 7.6 reportedly remained in production use at large sites for many years afterward
2021
TIBCO Software completes its acquisition of Information Builders, announced in October 2020 and closed in January 2021; the analytics line is rebranded ibi and later falls under Cloud Software Group
2024
The ibi Platform is launched on 25 July 2024 with ibi Mainframe as one of its offerings, bundling ibi FOCUS, WebFOCUS for mainframe, FOCUS Studio and a set of read/write adapters. Release levels from FOCUS 7.0.8R forward remain supported

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

Language Influence

Influenced By

RAMIS

Influenced

WebFOCUS

Running Today

Run examples using the official Docker image:

docker pull
Last updated: