IBM RPG card compiler (5701-RG1)

Introduction:
I have been collecting IBM System/3 hardware and software for almost 45 years.

On my most wanted list is the IBM System/3 cards software, SCP and the RPG compiler for the System/3 model 10.
Early 2025 I was lucky and spotted on eBay two boxes with IBM S/3 96 column cards.  

When arrived, I digitized all 4000 cards with my modified IBM 5496.
After verifying all the checksums on all these cards, the compiler was ready to run on my S/3 emulator.


Some RPG History:
RPG is one of the few languages created for punched card machines that  are still in common use today.
This is because the language has evolved  considerably over time.
It was originally developed by IBM in 1959. The name Report Program Generator was descriptive of the purpose of the language: generation of reports from
data files, including matching record and sub-total reports.

FARGO (Fourteen-o-one Automatic Report Generation Operation) was the predecessor to RPG on the IBM 1401. Both languages were intended to facilitate ease of
transition for IBM tabulating machine (Tab) unit record equipment technicians to the then new computers.

Tab machine technicians were accustomed to plugging wires into control panels to implement input, output, control and counter operations (add, subtract, multiply, divide).
Tab machines programs were executed by impulses emitted in a machine cycle;  hence, FARGO and RPG emulated the notion of the machine cycle with the program cycle.
RPG was superior to and rapidly replaced FARGO as the report generator program of choice.

The alternative languages generally available at the time were Assembler, COBOL or FORTRAN.
COBOL was a natural language-like business oriented language and FORTRAN was a language that facilitated mathematical applications.
Other languages of the era included ALGOL and Autocoder and a few years later PL/I.
Assembler and COBOL were more common in mainframe business operations (System/360 models 30
and above) and RPG more commonly used by customers who were in transition from tabulating
equipment (System/360 model 20).

When the System/3 was developed, RPG was the language chosen because it was small and fit the wiring board metaphor.  Many small shops still used
407 accounting machines and were familiar with wiring boards.  The System/3 announce included a 4kbyte (!) machine. That box never saw the light
of day because the RPG compiler simply wouldn't fit into 4k.  After supreme efforts, the smallest box ever shipped in quantity had 8k.
An acquaintence from 20 years ago worked on that compiler and told me that story.  RPG was improved on the mainframe boxes but never
achieved any real use for workstation.  It took a while before CICS support was available and COBOL and PL/I had very strong hold in that
area.  Rochester ran with RPG because it worked, they had it, and no one else wanted to "help them out" with it - they could do their own
thing with interference from standards bodies or other elements with IBM trying to change it or hold it back.

Seems to me that RPG 1 had no subroutines and no read.  RPG 2 had subroutines, EXCPT output, CHAIN, maybe read ahead, and a few other
nifty things.  RPG 3 was a big change for the language - IF/ELSE/END, DO, EXFMT, READE, FEOD, and RETRN all came in RPG 3.  RPG/400
brought us SELEC and all of that stuff.  ILE RPG has some new language functionality but allowing the language to use the ILE foundation is the big deal.

RPG was originally designed as a conversion tool from the hard wired accounting machines to computers. It was primarily
used for tabulating and report writing. The RPG cycle was an emulation of the hard wired card reading and MR and level breaks provided the
support for handling the merging of cards from different hoppers and providing iterim totals. Early compilers were on S-360/20 and later on
System/3. RPGII is still used under DOS VSE and supports CICS. The early S/3 systems (1969) were card systems and the compiler
support was RPG I. RPG II came with the support for disk and some explicit I/O. S/32 brought us some changes for CONSOL and
KEYBORD and was the first workstation type system. Prior to S/32 System/3 started to support and online environment, initially with
SUBRHH (Hansestad Hamburg) a geman development which really originated in the UK (Bob McGreadie) but was bootlegged and further developed
by Germany. It used a symbolic 3270 datastream. After that CCP was developed for S/3, as very CICS like product which required 32 K to
run. The latest S/3 (Model 15D) was announced the same time S/34 was announced. All CCP I/O was done using device type SPECIAL and SUBR92
to deal with workstations.