Est. 1969 Beginner

Easytrieve

The mainframe report generator that let analysts pull a formatted, subtotaled report out of a VSAM file in a dozen lines - a fourth-generation language built around declaring data, filtering it, and letting the compiler write the report.

Created by Ribek Corporation (Robert I. Beckler); later developed by Pansophic Systems, Computer Associates, and Broadcom

Paradigm Procedural, declarative report specification; fourth-generation data retrieval and reporting language
Typing Static, positional - fields are declared by start position, length, and type (A alphanumeric, N zoned numeric, P packed decimal, B binary) against a record layout
First Appeared Around 1969-1972; sources differ, with the product commonly dated to 1969 and the earliest documented commercial releases from Ribek Corporation placed around 1971-1972
Latest Version Easytrieve Report Generator 11.6 (Broadcom), per Broadcom TechDocs as of 2026

Easytrieve is a report generator and data-retrieval language for IBM mainframes, and one of the longest-lived commercial programming products still being shipped. Its premise is in the name: retrieving data should be easy. Instead of writing a COBOL program with an IDENTIFICATION DIVISION, a FILE SECTION, an explicit read loop, an at-end condition, page-break logic, and accumulator handling, an Easytrieve programmer declares where the fields sit in the record, states which records to keep, and describes the report they want. The compiler generates the loop, the sorting, the control breaks, the totals, the headings, and the pagination.

That trade - a narrow problem domain in exchange for a very short program - is what a fourth-generation language was supposed to be, and Easytrieve is one of the few 4GLs from the era that is still commercially supported today. Its lineage runs from a small independent software firm through Pansophic Systems, then Computer Associates, and now Broadcom, spanning roughly five decades of continuous product life.

History and Origins

Easytrieve was not a Pansophic invention, though Pansophic is the name most associated with it. The product came from Ribek Corporation, a small firm named for its owner Robert I. Beckler, and was written for IBM System/360 and System/370 machines and the RCA Series 70. Dating the first release precisely is difficult and sources disagree: the product is widely dated to 1969, while other accounts describe it as developed by a handful of people in Maryland around 1970-71 with an initial release around 1971 or 1972. What is not disputed is that it was on the market and selling well by the early-to-mid 1970s.

The commercial history is clearer. Pansophic Systems - founded in 1969 in Oak Brook, Illinois by Joseph A. Piscopo with four employees and $150,000 of startup capital - became the exclusive North American reseller of Easytrieve in 1973, and bought the product outright from Ribek in 1979 for a figure reported at around $8 million. Alongside Panvalet, Pansophic’s source code management system, Easytrieve became one of the two products that carried the company through its rapid growth in the 1970s and 1980s. It has been described as one of the most successful software products of the 1970s.

Pansophic reportedly tried and failed to replace it once. Around 1979 the company is said to have introduced a more ambitious product, Pro/Grammer, which did not succeed commercially. By these accounts the technology behind that effort resurfaced as Easytrieve Plus, distributed to the existing customer base, and Plus went on to supersede the original product - now called Easytrieve Classic - during the 1980s. Crucially, Plus was a redesign, not a superset: the two are not runtime-compatible, and moving programs between them requires recompilation and, usually, source changes. That single decision shaped decades of migration work at Easytrieve sites.

Computer Associates acquired Pansophic in 1991 - the price is variously reported at approximately $290 to $300 million - at a point when Easytrieve was reportedly installed at more than 10,000 IBM mainframe sites. Under CA the product was rebranded CA-Easytrieve Plus and later CA Easytrieve Report Generator, and was extended off the mainframe onto PCs, Windows, and UNIX. Broadcom acquired CA in 2018 and continues to publish and maintain the product.

Design Philosophy

Easytrieve is built on three commitments that were unusual for its era and that explain both its longevity and its limits.

Declare the data, do not parse it. There is no record parsing code in an Easytrieve program. A field is declared by its starting byte position within the record, its length, and its type - A for alphanumeric, N for zoned decimal, P for packed decimal, B for binary - and from that point on it is simply a name. This maps exactly onto the fixed-format, positionally-defined record layouts that dominate mainframe data, and it means an Easytrieve field declaration is often a direct transcription of a COBOL copybook entry.

The loop is implicit. JOB INPUT filename means: for every record in that file, execute the following statements. There is no open, no read, no end-of-file test, no close. This removes the single most common source of boilerplate - and of bugs - in file-processing COBOL.

The report is a specification, not a procedure. A REPORT block states the sort order (SEQUENCE), the grouping (CONTROL), the page headings (TITLE, HEADING), and the detail line (LINE). Subtotals at each control break, grand totals, page breaks, page numbering, and column headings are generated. The programmer never writes the accumulator arithmetic or the break-detection logic that this implies.

The cost of these commitments is generality. Easytrieve is excellent at “read records, select some, summarize, print” and progressively less comfortable the further a task moves from that shape. It is not a general-purpose language and was never marketed as one.

Program Structure

An Easytrieve program has up to three sections, in a fixed order.

SectionRequiredPurpose
EnvironmentOptionalPARM statements that set compiler and runtime options for the program - debugging aids such as FLOW, Db2 integration parameters, and similar switches. Must come first if present.
LibraryUsually presentFILE and DEFINE statements describing input and output files, their record layouts, and working-storage fields.
ActivityRequiredThe executable part. Activities come in four kinds - PROGRAM, JOB, SORT, and SCREEN - and REPORT subactivities are coded at the end of a JOB.

JOB activities read files, examine and manipulate data, write files, and initiate reports. SORT activities produce sequenced files. SCREEN activities handle terminal-oriented transactions. PROGRAM is a straightforward top-down sequence of statements with no implicit file loop.

A representative program

* Library section - describe the file and where the fields live
FILE PERSNL FB(150 1800)
   EMP-NAME     17  16  A
   DEPT         98   3  N
   GROSS       127   4  P 2

* Activity section - the loop is implicit
JOB INPUT PERSNL NAME PAYROLL-EXTRACT
   IF DEPT = 911
      PRINT PAYRPT
   END-IF

* Report subactivity - a specification, not a procedure
REPORT PAYRPT LINESIZE 80
   SEQUENCE DEPT EMP-NAME
   CONTROL  DEPT
   TITLE 1 'PAYROLL REPORT BY DEPARTMENT'
   LINE     DEPT EMP-NAME GROSS

Everything a COBOL version of this would spell out - opening the file, the read loop, the end-of-file flag, sorting into department order, detecting when the department changes, accumulating and printing a department subtotal, printing a grand total, counting lines and starting a new page with repeated headings - is generated from those last six lines. CONTROL DEPT alone is responsible for the break logic and the subtotals.

Field types

The positional type system is small and closely tied to mainframe storage formats:

  • A - alphanumeric, plain EBCDIC characters
  • N - zoned decimal (display numeric), the format numbers usually arrive in on flat files
  • P - packed decimal, the mainframe’s native business arithmetic format, with an optional decimal-place count
  • B - binary
  • U - unsigned/numeric variants depending on release and platform

A field declaration is therefore a statement about bytes on disk, not an abstract type. This is a limitation in the abstract and an enormous convenience in practice, because the data really is bytes at fixed offsets.

Evolution

The product’s evolution splits cleanly into three phases.

Classic (1970s). The original Ribek product: a mainframe report generator, batch-oriented, aimed squarely at System/360 and System/370 shops.

Plus (1980s-1990s). A redesign that broadened the language considerably - more statements, procedures, macro libraries, online and CICS integration, and eventually editions off the mainframe. Reported milestones - drawn from secondary product histories rather than vendor release notes - include a DOS workstation edition around 1990, a PC compiler version around April 1992, and a debugger and an online edition around 1994. Because Plus is not runtime-compatible with Classic, CA maintained Classic compilation paths so that sites could migrate incrementally rather than all at once.

CA / Broadcom releases (1990s-present). Release 6.4 was the mainframe workhorse for a long stretch and has since been through an end-of-service announcement; the current documented release is 11.6, and Broadcom publishes a dedicated 6.4-to-11.6 migration path, including a “new function mode” for behavior changes in input and output handling.

Release 11.6 shows what modernization looks like for a language of this age. According to Broadcom’s own documentation, it adds installation in a Linux PC environment; a Windows-based Workbench IDE and a Visual Studio Code extension for editing and testing programs; XML report output alongside the traditional print format; ODBC SQL processing on Windows and UNIX; C-ISAM file handling on UNIX including variable-length and relative record formats; multiple Db2 subsystem ID support through the PAN/SQL feature; 8-byte binary field support so Db2 BIGINT columns are read without data loss; character comparison against a custom collating sequence via CMPUSINGALTSEQ; a workfile option for intermediate report data instead of virtual files; and file activity I/O statistics.

The through-line is notable: the language a 1975 programmer wrote is still the language in the manual, and the additions are almost entirely about what it can connect to rather than how it expresses computation.

Current Relevance

Easytrieve is dormant as a language - nobody is starting new projects in it, there is no open source implementation, no package ecosystem, no Docker image, and no community of the kind that has grown up around younger languages - but it is not abandoned as a product. Broadcom ships release 11.6 and its documentation carries recent revision dates. That combination, actively supported and effectively frozen as a design, is characteristic of the mainframe software market.

Where it survives, it survives in volume. Batch reporting estates built in the 1980s tend to contain hundreds or thousands of small Easytrieve programs, each one doing something narrow and each one still correct. The economics of rewriting them are poor, which is why a visible conversion industry exists offering Easytrieve-to-COBOL, Easytrieve-to-Java, and Easytrieve-to-SQL translation for organizations leaving the platform, and why Broadcom’s own documentation devotes substantial space to migration between releases.

Two practical realities dominate its present. The first is skills: the population of programmers who can read Easytrieve fluently is aging out, and the language is rarely taught. The second is that it is generally reported to be easy to learn - the surface area is small and the semantics are direct, so a developer already familiar with mainframe file layouts typically comes up to speed quickly. That asymmetry is why Easytrieve programs are so often kept rather than rewritten.

Why It Matters

Easytrieve is worth studying as the clearest surviving example of a design philosophy that has largely disappeared: the domain-specific commercial language, sold as a product, aimed at a business problem rather than at a computational model.

Its report specification anticipates ideas that later became mainstream elsewhere. SEQUENCE and CONTROL are, in effect, ORDER BY and GROUP BY with automatic aggregate rollups, expressed years before SQL was widely deployed and applied to flat files rather than tables. The implicit record loop is the same move that makes SQL, awk, and modern dataframe libraries concise - the programmer describes the per-record transformation and the runtime owns the iteration. The declarative report block does for output formatting what a templating language does for HTML.

It also stands as evidence about what makes software live a long time. Easytrieve outlasted the company that created it, the company that made it famous, and the company that bought that company. It did so not by growing into a general-purpose language but by refusing to - by being small enough that programs written in it stay readable and stay correct, and by being narrow enough that the vendor’s job across five decades has mostly been connecting it to new data sources rather than redesigning it. That is a rarer achievement than it sounds, and most languages that tried to be everything have not managed it.

Timeline

1969
Easytrieve originates as a commercial report generator. Accounts of the exact date differ - the product is commonly dated to 1969, while other histories place its development by Ribek Corporation, named for owner Robert I. Beckler, at around 1970-1972. It targeted IBM System/360 and System/370 mainframes and the RCA Series 70.
1973
Pansophic Systems - founded in 1969 in Oak Brook, Illinois by Joseph A. Piscopo, and already successful with the Panvalet source management system - becomes the exclusive North American reseller of Easytrieve
1979
Pansophic buys Easytrieve outright from Ribek, reported at around $8 million, converting a distribution arrangement into full ownership of what would become one of its two flagship products
1980s
Easytrieve Plus supersedes the original product, which is retroactively known as Easytrieve Classic. Plus is a redesign rather than an extension - it is not runtime-compatible with Classic - and Pansophic published Easytrieve Plus reference and application manuals in 1984.
1990-1994
Easytrieve is extended beyond the mainframe batch world, first under Pansophic and then under CA. Reported milestones from this period include a DOS workstation edition around 1990 (before the CA acquisition), a PC compiler version around April 1992, and a debugger and an online (CICS-oriented) edition around 1994. These dates come from secondary product histories rather than vendor release notes.
1991
Computer Associates acquires Pansophic Systems; the price is variously reported at approximately $290-300 million. Contemporary accounts describe Easytrieve as installed at over 10,000 IBM mainframe sites. The product is rebranded CA-Easytrieve Plus.
2018
Broadcom completes its acquisition of CA Technologies, taking over Easytrieve along with the rest of the CA mainframe portfolio. The product is now published as Easytrieve Report Generator.
2020s
Release 11.6 is the current documented version. Broadcom documentation describes installation on z/OS as well as Windows, UNIX, and Linux PC environments, a Windows Workbench IDE, a Visual Studio Code extension, XML report output, ODBC access on Windows and UNIX, and 8-byte binary field support for Db2 BIGINT columns. Release 6.4 - the long-lived earlier mainframe release - has been through an end-of-service announcement, and 11.6 documentation includes a dedicated 6.4-to-11.6 migration guide.

Notable Uses & Legacy

IBM mainframe batch reporting

Easytrieve's core job was always the same: read a sequential, VSAM, or ISAM file on an IBM mainframe, select records, sort them, and print a headed, subtotaled, page-numbered report. Broadcom documentation for release 11.6 covers file access across QSAM/sequential, VSAM, and indexed formats, plus Db2 SQL and IMS/DL-I database access, which is the shape of the workload it has served for five decades.

Analyst and end-user reporting

The product was marketed and used as a language that data-processing staff outside the COBOL programming group could learn quickly. Because a working report needs only a FILE declaration, a JOB statement, and a REPORT block, business analysts and auditors could produce ad hoc extracts without going through an application development queue - the fourth-generation-language promise, delivered narrowly and effectively.

Db2 and SQL extraction

The PAN/SQL feature lets Easytrieve programs issue SQL against Db2 and format the results with the same REPORT machinery used for flat files. Release 11.6 adds support for multiple Db2 subsystem IDs and 8-byte binary handling so BIGINT values are processed without data loss, and ODBC-based SQL access is documented for the Windows and UNIX editions.

Legacy modernization and conversion projects

A visible secondary industry exists around translating Easytrieve programs into COBOL, Java, or SQL as part of mainframe migration work, and Broadcom itself publishes migration guidance between Easytrieve Classic, Easytrieve Plus, and current releases. Easytrieve source is common enough in long-lived enterprise batch estates that it routinely shows up in modernization inventories.

Running Today

Run examples using the official Docker image:

docker pull
Last updated: