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.