• Greg (unregistered)

    I'm assuming RPG neither stands for Role Playing Game nor for Rocket Propelled Grenade?

  • (nodebb)

    It's Report Program Generator. See https://en.wikipedia.org/wiki/IBM_RPG

    It was one of the very early attempts at "easy" report generation. Essentially the app contained an engine that knew how to do multi level reports and you just had to describe tur data layout, report layout, totalling requirements, etc. But this was all in the era of punch cards and sequential files (card, tape, or newfangled disk) as "databases".

    To say the old syntax was idiosyncratic is a huge understatement.

    Addendum 2025-12-08 07:21: Every geezer in the audience has memories of it. You either did a bit of it, or knew people who had & still bore the scars.

    Addendum 2025-12-08 07:22: It really was a bit of a mindf**k.

  • Rob (unregistered) in reply to Greg

    I had to look it up, so the following link in the article would have been useful: https://en.wikipedia.org/wiki/IBM_RPG

  • (nodebb) in reply to Greg

    My first thought was, "What do roleplaying games have to do with this weird ancient-looking syntax?"

  • (nodebb) in reply to Greg

    I'm assuming RPG neither stands for Role Playing Game nor for Rocket Propelled Grenade?

    Indeed, as noted, although "rocket-propelled grenade" (with the hyphen) is an English-language backronym (less contrived than most, by convenient coincidence) from the romanisation of a Russian-language term, or so quoth the Unreliable Source:

    The term "rocket-propelled grenade" is a backronym from the Russian acronym РПГ (ручной противотанковый гранатомёт, tr. ruchnoy protivotankovy granatomyot), meaning 'hand-held anti-tank grenade launcher', the name given to early Soviet designs

    • https://en.wikipedia.org/wiki/Rocket-propelled_grenade
  • (nodebb)

    I worked at a Fortune 50 company until 2013, they were still writing new RPG code when I left. They converted to RPG Free some time while I was there, probably around 2010.

    One of my favorite "features" was that columns were treated as local variables, so if you needed to access the columns from two tables, all the column names had to be globally unique. This combined with an eight character column name limit (I don't know the reason or if that was a local WTF), led them to have every table use a two character prefix for all of its columns, leaving six characters for the actual column name.

  • DQ (unregistered)

    We still write new RPG code and programs every day. Our entire company runs on it. And because a lot of the code dates from the late eighties and nineties it is a mix of RPG III, IV , free and full free. New code is still written in all these formats, depending on who is coding and what style is used in the program you modify. And column names are suffixed with a two character code to make the names unique across the database

  • Anonymous') OR 1=1; DROP TABLE wtf; -- (unregistered)

    Back when I was a teenager, I was trying to teach myself game development in C++. I was a big fan of the Final Fantasy series, and so I wanted to make a Role-Playing Game.

    I was googling around (or perhaps I was Yahoo!'ing around?) for websites on "RPG programming", and I was very confused when I found all these books about the RPG programming language. Fortunately, I managed to avoid accidentally buying any of those books.

  • Jaloopa (unregistered)

    or so quoth the Unreliable Source

    This seems like a bad name for Wikipedia since the stochastic goldfish that are ChatGPT and its peers have become the go-to unreliable sources for millions of people worldwide

  • (nodebb)

    I was introduced to RPG in the 1980s. I learned a little bit, but all the "programming" I ever did in RPG was mostly cosmetic, making columns wider when the numbers got bigger or adding a column that was the sum or the difference of two or three columns.

    I always regarded RPG as a poor man's COBOL in the way that MINIX's employs a poor man's fstab.

  • (nodebb) in reply to Jaloopa

    You're not wrong about LLM generative "AI" doodads, but Wikipedia remains the original informatic fount of large-scale(1) unreliability, and I've called it "the Unreliable Source" almost since the beginning, long before ChatGPT and its foul kin got started.

    (1) Yes, I know, almost anything to do with informatics might be considered a fount of unreliability, but Wikipedia has that extra thing of being "the encyclopedia that anyone can edit", with the additional proviso that I add, "and frequently does".

  • (nodebb) in reply to WTFGuy

    Wow thanks, never heard about that one before :-O

  • Argle (unregistered)

    I'm a geezer who should know better (professional programmer since '78) but I have the heart of a 13 year old boy.* For me, RPG = Role Playing Game.

    • Per Stephen King, I keep it in a jar on my desk.

    Crazy aside: Did anyone but me notice that the source-code in "The Martian" was Lisp?

  • (nodebb) in reply to Jaime

    (...) all the column names had to be globally unique. This combined with an eight character column name limit (...)

    Sometimes I feel really lucky that I dodged a bullet there. I managed to never got stuck on ol' IBM classic host "stuff" and could always play with the newer toys :-).

  • (nodebb)

    To be fair, it IS easy compared to the brain-twisting mess of programming accounting machines. See Bitsavers for a taste!

    https://bitsavers.org/pdf/ibm/punchedCard/AccountingMachine/224-1614-13_402-403-419.pdf

    Page 6 has a picture of a control panel. To make a report, you place physical wires from one socket to the next. And yes, version control was a mess.

  • (nodebb)

    I worked for a trucking company in 1985 that had a computer that ran RPG II. I looked at books on how to program it, but ran out of weed and gave up.

    "This combined with an eight character column name limit (I don't know the reason..." Everything (IDs, passwords, filenames) had an eight character limit. I don't know the reason, but Octal may be related.

  • Betsy (unregistered)

    I'm the OP. I forgot I'd even sent this in; it's been a year or more since I last worked on that program.

    We use The IBM Midrange Formerly Known as AS/400. IBM does keep adding features to ILE RPG, believe it or not. (ILE = Integrated Language Environment)

    The code was written in 2004.

    Stephen's idea of converting RPG IV fixed-format to free-format, when I insisted on it, was to manually remove the C (for "calculation") from the beginning of the line and stick a semicolon on the end of the line, without changing the spacing or indentation.

  • (nodebb) in reply to Argle

    the source-code in "The Martian" was Lisp?

    If you mean the movie, it's actually PVS (Prototype Verification System), which is indeed implemented in Common Lisp.

    Knowing Hollywood rules of drama, they probably picked it because it looks weird, as that would not make any sense to run that in the Hab.

  • Betsy (unregistered) in reply to Jaime

    RPG was originally limited to 80 characters per line, one line per punch card. So space was at a premium. Opcodes were no more than 5 chars, file and field names and program-defined variables no more than 8. Most of the field names in our tables were 5 or 6 chars.

    I won't go into numbered indicators (their version of Boolean variables), or how variables were defined inline in the code instead of grouped near the top of the program.

  • (nodebb)

    So I guess you might need RPG (the software) to keep track of the RPGs (weapons) in your RPG (video game).

  • Bill T (unregistered)

    OMG. RPG was my first "programming" language, took courses through the local community college while in high school back in the late 70's (took Cobol and Fortran as well). Ah the good old days with keypunch machines and batch processing...

  • Jmm (unregistered)

    The reason for the 8 character name limit was 80 column punch cards. The first 5 columns were for sequence numbers. In case you dropped a box of cards, and you meticulously kept the sequence numbers up to date, you could just drop them in the card sorter and were none the worse for it. The next column was for the card spec. H-program header, F-file, I-input, C-calculation, O-output. There were others, but the C spec was the limiter. The next 11 columns were for option indicators. These indicated whether to execute the line or not, these blocks got quite ugly in RPG II.then 10 for Factor 1, 5 for the op code, and 10 more for factor 2, then 6 for the result column. Yes, that is 6, and in RPG II, if a variable name ever had to appear in the result column, it had to be 6 characters or less. The next 5 columns allowed you to give the result field a definition if it wasn't already defined in the program. 3 columns for length, 1 for type, and 1 for decimal places. Following this were 6 columns for resulting indicators. That left 21 characters on the far right end for a comment. If this all seems a little Assembly language like, it was. No algebraic or logic expressions. Just opcodes like add, move, if, and, or. To process data in a file, it was read, write, chain, and a few others. All in all it was a very simple language to learn. Except for the cycle, matching records, and level break processing. Those things could make you pull your hair out. But very powerful. RPG 4 **free format, changed the language a lot. Got rid of the field limitations,made it easy to call procedures written in another language, C even, and made reading RPG much like reading a language like Pascal.

    BTW, RPG was not last updated in 2020. It receives updates twice a year, including new built in functions and opcodes. It can call procedures out of IBM's version of .dll, called service programs on IBM I. And these shared procedures can be written in any ILE language. Currently, these are RPG, C, CL, and Cobol.

  • (nodebb) in reply to cellocgw

    Ideally, you would use an RPG (rocket-propelled grenade) to destroy RPG (the language) and RPG (the games).

    No, I don't know why I am feeling violent this morning hahaha

  • Fizzlecist (unregistered) in reply to Mr. TA

    RPG would definitely be one of the more destructive footguns

  • (nodebb) in reply to Mr. TA

    Hey now, what do you have against the game style?

    Thanks to all the folks for the interesting tidbits of computing history. As an aside: The original developer's name immediately reminded me of this old post from the days when I still hadn't retired from the internet: https://imgur.com/phteven-is-that-you-phteven-w94k4VY

  • Westy (unregistered) in reply to Argle

    "Per Stephen King, I keep it in a jar on my desk."

    Thought that was Robert Bloch.

  • (nodebb)

    Ouch. I heard of this RPG thing but considered it a relic. And I learned COBOL in college and 360 assembler.

  • TV John (unregistered)

    I'm not sure if I dodged a bullet or not; for my sins, I have to write a lot of reports using Crystal Reports. This is not only idiosyncratic, it is also very buggy and frequently crashes, so you soon learn to save changes often. Just for fun, it also occasionally crashes so badly it brings down the PC - although, come to think of it, it's been a while since that happened.

  • (nodebb)

    Yeah. having done some professional RPG II, my reaction 15 years later to encountering Crystal Reports was mostly: "Prettier to write, not really more powerful, much less reliable."

  • Dommas (unregistered)

    This brings back memories. I stumbled into RPG programming at my first job back in the 90s. I even wrote CGI scripts in RPG, using some weird web server API as OS/400 has no concept of stdin/stdout. Fun times.

  • (nodebb)

    Back in '88, I worked at IBM Rochester. My department made I/O boards for the AS/400, including embedded code, device drivers and file systems. There was a lot of Rexx and RPG and a bit of C, but I was assigned 68000 assembly. Rather think I lucked out on that one.

  • John (unregistered)

    Way back as a university student I took on a job that required a template to read and fix an RPG program. I think the others in the shop were afraid of it.

  • Officer Johnny Holzkopf (unregistered)

    The funny (or at least a little bit interesting) thing about RPG is that it was intended as a report PROGRAM GENERATOR, i. e., a tool that created programs for you, instead of you creating the program. Non-programmers should be able to use it, so they used the language specification to turn their problems (like accounting, report generation, checklists etc.) into a column-oriented stack of RPG cards, have them fed into the computer, and a program comes out that they can then run to solve their problem (that's why we call that a "problem program"). Those inteded users of RPG were normal clerks, administrative staff, even accountants and their assistants. The idea was that the abstraction provided by RPG should lower the entry barrier: they didn't have to know assembly, input and output unit characteristics, machine operations, control flow or instruction sets; all they needed was an understanding of what they were supposed to do and, with the help of the language manual, how to turn that into a RPG card deck, maybe a little JCL enclosure (sometimes just a template provided by the installation's friendly operators). They got work done. And being able to do all that "complicated stuff" wasn't even considered "exceptional performance", "ninja-rockstar 100x devops coder engineer" or "app wizardry", it was a normal part of a normal job. Hard to imagine this today...

Leave a comment on “The Magic Array”

Log In or post as a guest

Replying to comment #688199:

« Return to Article