It's like functional programming in that everything useful an RPG program does is a side effect. A side effect of creating a report, in its case.
RPG is an abomination. It's a paradigm of the old plugboard tabulators from the 40's.
No indentation. Cryptic op codes. Rigid fixed-column OP1/OP2/operation/result. Assembler without the power.
"Repulsive Programming Garbage".
The latest version of RPG in current versions of IBM i is fully freeform! It's pretty wild how much they've evolved the language while still calling it "RPG". If you're maintaining old code you'll mostly run into the fixed-column stuff, but for writing new code at least you can make it somewhat readable now.
Do you still have to add every field in every table you use for your program to work?
yeah, it's pretty nasty. Free looks pretty java-centric. What's weird is you can in-line RPG. Makes for some crazy looking code.