RPG

IBM's database development language or "Report Program Generator", the use of the full name is discouraged since the remit of the language has grown immensely since it was first conceived and is now a full programming language with emphasis on business applications. Best known as the main application development language behind the AS/400.

The main reason RPG lives on in the modern world is how well it is integrated into some IBM operating systems, particularly System i, but also that combined with available RAD tools it is a considerably more productive and less complex environment than the C++/Java + SQL + Application frameworks environments most people put forward as modern replacements.

RPG history
RPG was originally developed in 1959 as the Report Program Generator and was then a utility that replaced some of the punched card processing on the IBM 1401, RPG II was introduced for the IBM System/3 in the mid/late 1960s and had by that time started to resemble a programming language more.

RPG II
Introduced on IBM mainframe systems but was made famous when it was shipped with the IBM "small systems" System/3 and later with the incredibly popular System/34 and System/36 but it also showed up on the relatively obscure System/32 PC, in modern IBM parlance these systems are now referred to not as small systems but as "midrange systems". Something like 80% of all software written for the System/3x machines was written in RPG II with the rest split between COBOL and object systems (effectively assembler).

RPG II is by far the most supported variant of the language as manufacturers like Unisys, DEC, GE and so on all made RPG II compatible system available on their mainframe and minicomputer systems. Development systems were available for microcomputers running CP/M, DOS and OS/2. Even today you can get RPG II support for most mainframe and what remains of the minicomputer industry in addition to a number of UNIX systems, later variants are however only supported on IBM hardware with at few exception. But even IBM itself does not support RPG III or IV on mainframes, only RPG II is supported on modern z/OS systems.

RPG III
RPG III was available for IBM System/38 from 1978.

RPG IV
RPG IV was introduced on OS/2 and AS/400 in 1995.

OS/2 Implementations
(Commercial - Discontinued)
 * Baby/36
 * Baby/38
 * Baby/400
 * Code/400
 * IBM PS/2 RPG II Application Platform
 * VisualAge for RPG


 * Foreign libraries with RPG bindings
 * LibcURL - Internet URL (WWW, FTP, etc) access - Open Source - Current


 * RPG related utilities and toolkits
 * IBM PS/2 RPG II Application Toolkit - Commercial - Discontinued
 * Visual Tools/400 - Commercial - Discontinued


 * IDEs
 * IBM WorkFrame/2 - Supports Code/400 and older DOS tools - Commercial - Discontinued

DOS Implementations
(Commercial - Discontinued)
 * Baby/36
 * Baby/400
 * IBM DOS RPG II
 * Lattice RPG II
 * Lattice RPG 400D
 * PC RPG II

(Commercial - Discontinued)
 * DOS RPG utilities
 * Lattice CodePRobe
 * Lattice DFE/DFU

Win-OS/2 Implementations

 * Baby/36 - Commercial - Discontinued
 * Baby/400 - Commercial - Discontinued
 * Lattice RPG 400W - Commercial - Discontinued


 * RPG related utilities
 * Visual Tools/400 - Commercial - Discontinued

Publications

 * Books
 * Robert Cozzi: The Modern RPG IV Language 4th edition - MC Press 2006, ISBN 1583470646
 * Robert Cozzi: Introduction to RPG - MC Press 1997, ISBN 1883884462
 * Robert Cozzi: The Modern RPG Language: With Structured Programming - MC Press 1996, ISBN 0962182508
 * Manuals
 * Report Program Generator (RPG) Programming Reference Manual (Unisys)

Links

 * Brian Kelly: RPG: A Great Language with a Greater History
 * Jim Staton: Being a Better RPG Programmer - 2012


 * Introductory articles
 * RPG - on America Pink


 * Tutorials and other learning material
 * Jay Moseley's RPG II tutorial
 * RPG logic flow
 * Enskill online RPG tutorials


 * Mailing list
 * RPG400-l - Dedicated to RPG on the System i, but amenable to answering other RPG related questions.